![将 mkfs.btrfs 与 raid10 一起使用时的磁盘顺序](https://linux22.com/image/165169/%E5%B0%86%20mkfs.btrfs%20%E4%B8%8E%20raid10%20%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E6%97%B6%E7%9A%84%E7%A3%81%E7%9B%98%E9%A1%BA%E5%BA%8F.png)
我需要使用 btrfs 创建一个 raid10 阵列。 raid 将由 btrfs 直接处理(而不是 mdadm),因为我相信,它为 btrfs 层提供了更多信息来检测和处理故障(我是对的吗?)。
所以,这很简单:到处都有大量的文档。我只需要使用:
mkfs.btrfs -m raid10 -d raid10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
等等:我明确购买了不同制造商的两套硬盘,因为这。所以我需要知道如何mkfs.btrfs
将驱动器分组到集群中。
那么,如果我使用上面的命令示例,我会得到一个
- (RAID0 超过 (/dev/sdb + /dev/sdc RAID1) 和 (/dev/sdd + /dev/sde RAID1)),或者
- (RAID0 超过(/dev/sdb + /dev/sdd RAID1)和(/dev/sdc + /dev/sde RAID1)),
- 或者,正如我开始怀疑的那样,以上都不是,raid10 配置文件只是保证每个块在两个不同的驱动器上复制,但驱动器的选择有些随机(因为显然 raid10 btrfs 允许奇数个驱动器,它的行为肯定不像常规突袭 10)。
这在文档中不太清楚,包括在适当的手册页。
答案1
所以我查了一下,确实,BTRFS raid10 配置文件实际上与常规 raid 10 不同。所有驱动器都受到同等对待,没有 raid 1 的底层集群组合在一起形成一个大 raid 10。
BTRFS 提供的保证(这使它看起来像常规 raid 10)是保证每条数据都存在于两个不同的驱动器上,因此文件系统将在单个驱动器发生故障时幸存下来。与常规 raid 10 相比,它没有提供的是,如果两个驱动器发生故障,您很可能会丢失文件系统,而如果两个故障驱动器位于不同的集群中,则常规 raid 10 可以幸存。
因此,驱动器来自两个不同制造商的事实并没有真正为 BTRFS raid10 增加任何价值。
然而,好处是(引自系统管理员指南):
RAID 分组内的块不一定总是分配给相同的设备。这使得 Btrfs 可以在不同大小的块设备上进行数据复制,并且仍然使用尽可能多的原始空间。对于 RAID-1 和 RAID-10,无论文件系统上实际使用了多少个块设备,每个数据字节仅写入两个副本。
因此,不同大小的设备可以比常规 raid 更灵活地使用。
另外,我意识到,从 4 个磁盘的阵列开始,BTRFS raid1 和 raid10 配置文件之间实际上似乎没有太大区别。两者似乎在可靠性和灵活性方面提供完全相同的保证。我能发现的唯一区别是在 raid10 中,“数据在磁盘之间进行负载平衡“。无论这到底意味着什么,它只是提供了额外的性能(这让我质疑为什么你想要一个具有 4 个或更多磁盘的 raid1,但我离题了)。