我在两个分区上都有 btrfs,使用 btrfs 的 raid1 模式:
/dev/sda3
/dev/sdb3
现在我计划运行btrfs device add /dev/sda2 /dev/sdb2
,所以我将有四个分区:
/dev/sda2 /dev/sda3
/dev/sdb2 /dev/sdb3
我的问题是:btrfs 是否知道 sda2 和 sda3 是同一个磁盘,所以它不应该在两者之间镜像数据?
(我意识到在每个磁盘上有两个分区有点愚蠢,但是我的文件系统上已经有数据,这似乎是增加空间的最快方法。)
我能找到最接近答案的是一个来自 wiki 的项目想法,涉及同一控制器上的设备:https://btrfs.wiki.kernel.org/index.php/Project_ideas#Chunk_allocation_groups。这几乎似乎意味着这已经发生在设备上,但这也许只是我的一厢情愿。
编辑:我忘了说了,这些都将使用 luks 加密,因此实际的 btrfs 设备将是 /dev/dm-[0123] 或类似的。但我很想知道有或没有加密层的答案。
答案1
当你创建具有多个设备的 Btrfs 或稍后添加更多设备时,无论分配配置文件是什么(即raid{0,1,10,5,6,...},dup,single) 你用。
如果你添加/dev/sd{a,b}2
到现有的文件系统设置,然后RAID1无法有效实现冗余,因为镜像块可以写入 的任意组合 /dev/sd{a,b}{2,3}
。如果将它们写入同一存储设备,则写入将花费约 2 倍的时间,并且单个存储设备故障将导致两个好的副本都丢失。
在 Btrfs 上创建dm-隐窝设备不影响冗余。
查看Btrfs 手册欲了解更多信息和警告:不建议使用袭击具有相同存储设备分区的配置文件,冗余度和性能都不会提高。