我已经安装了 Ubuntu 11.10,并使用 btrfs 作为 / 文件系统(有点混乱,如果有人感兴趣我会解释的),这样我就可以将主文件系统扩展到系统上的第二个驱动器(*)。
安装系统后,我运行btrfs device add /dev/sdb1 /
并添加了新设备并在其上扩展了文件系统,一切正常。但根据我读的(错误的)手册,我还必须运行,btrfs filesystem balance
这显然将我的文件系统转换为“raid1”模式,因此所有内容都冗余存储两次 - 每个驱动器一次,我只能使用总容量的 50%:
$ btrfs filesystem df /
Data, RAID0: total=78.00GB, used=41.57GB
System, RAID1: total=8.00MB, used=16.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=3.75GB, used=355.06MB
这是个不错的功能,但我有点想使用“raid0”(剥离)。我尝试删除新设备以便重新添加它,但当我尝试这样做时,我收到错误,系统日志显示以下内容:
btrfs: unable to go below two devices on raid1
所以我的问题是:如何将我的文件系统转换回 raid0,以便我可以使用两个磁盘的总空间?
(*) 类似于可以使用 LVM 完成的操作,但是使用 btrfs,您可以在同一个“文件系统”上托管多个“分区”,并且可以在需要的地方动态分配空间 - 与 LVM 不同。
答案1
btrfs balance start -dconvert=raid0 /
这就是您需要做的全部工作。系统将忙着将现有数据移动到 raid0(条带化,无奇偶校验)中,并且任何进一步的数据也将以这种方式写入。
METAdata 仍将重复写入。如果您想要更危险地生活,-mconvert raid0
也可以随意在上述命令中添加一个参数,然后 / 阵列上的数据和元数据都将转换为 raid0。
答案2
您阅读的手册是正确的;添加驱动器后,您确实需要运行 balance,以便将数据重新划分到新磁盘上。它还会将任何 DUP 块转换为 RAID1,并且默认的 mkfs 选项使用 RAID1 或 DUP 作为元数据,具体取决于您是否有多个磁盘。目前不支持转换回来的方法,但 btrfs 邮件列表中有一些重新划分补丁,最终将允许这种事情。