我的大部分工作都是将带有 lvm 的 raid1 mdadm 转换为 btrfs 系统。涉及的两个磁盘/分区位于/dev/sdb
和/dev/sdc
。
在原始配置中,两个磁盘都有 3 个分区,设备由和/dev/md1
组成。转换过程如下/dev/sdb3
/dev/sdc3
- 失败然后删除 /dev/sdb3
- 使用 fdisk 将 /dev/sdb 重新分区为 4 个分区 - 我无法将内核同步到新的分区布局,因此重新启动
- 在大小 1.7TB上创建了一个 btrfs 文件系统
/dev/sdb4
(也在这里,/dev/sdb2
但这并不重要) - 在创建的子卷上创建了一个挂载点
/mnt/sdb4
,以对应于我的(现已降级的)raid 设备上的每个逻辑卷。其中之一(vbox
)是保存虚拟框图像,所以我这样做了chattr +C /mnt/sdb4/vbox
- 用户 rsync 将 raid 设备上的每个逻辑卷复制到 btrfs 上的相应子卷。每次完成后,我都会卸载 raid 卷,调整
/etc/fstab
为现在使用 btrfs 子卷挂载,然后挂载它。当这一切完成后,我重新启动以确保一切正常。 - 然后,我从 raid 阵列中删除了所有逻辑卷,最后删除了卷组,然后停止并删除了 raid 设备。再次重启
- 用于
fdisk
重新分区到 我制作的独立 btrfs 文件系统/dev/sdc
上的类似 4 个分区/dev/sdb
/dev/sdc2
- 我安装
/dev/sdb4
(subvol=/)/mnt/sdb4
然后发出以下命令btrfs device add -f /dev/sdc4 /mnt/sdb4
- 最后我发出了这个命令
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/sdb4
,但是失败了,并显示“错误:平衡‘/mnt/sdb4’期间出错:设备上没有剩余空间,系统日志中可能有更多信息 - 尝试 dmesg | tail”
我尝试按照建议查看系统日志,但这没有帮助
[ 634.536221] BTRFS info (device sdb4): disk added /dev/sdc4 [ 671.472167] BTRFS info (device sdb4): relocating block group 12582912 flags 1 [ 671.934540] BTRFS info (device sdb4): found 946 extents [ 672.622029] BTRFS info (device sdb4): found 946 extents [ 672.913928] BTRFS info (device sdb4): 379 enospc errors during balance
输出btrfs fi show
是
``` 标签:'raid' uuid:c3356f85-4b40-409d-a775-72e9c6735ed8 设备总数 2 个 FS 字节使用 377.08GiB devid 1 大小 1.71TiB 使用 379.02GiB 路径 /dev/sdb4 devid 2 大小 1.00KiB 使用 0.00B 路径 /开发/sdc4
标签:'debianb' uuid:94a949e0-b815-4dce-812d-7000f4654a10 设备总数 1 FS 字节使用 285.25MiB devid 1 大小 100.00GiB 使用 3.02GiB 路径 /dev/sdb2
标签:'debianc' uuid:02ed1d78-8501-4940-ac61-fa9dcf084b56 设备总数 1 个 FS 字节使用 112.00KiB devid 1 大小 100.00GiB 使用 2.02GiB 路径 /dev/sdc2 ```
这表明有足够的空间。
我正在做这一切debian stretch
那么为什么会报告设备上没有剩余空间,我该怎么做才能将此文件系统正确转换为 raid1?
答案1
我想是我的错。我搞砸了分区,/dev/sdc
所以第四个分区的长度为零。