在这个视频作者说,他从四磁盘 BTRFS raid 10 阵列升级到五磁盘 RAID 10,大约花了一周时间。但我很困惑,五磁盘 RAID 10 如何工作? Raid 10 是条带化在一起的两组或多组(两个驱动器)镜像。五驱动器 RAID 10 是什么意思?
答案1
在 Btrfs 中,“RAID”是块级的,而不是磁盘级的,因此可以拥有比常规数量更多的磁盘,因为每个 1GB 块都可以 RAID 到不同的磁盘组合。
我相信理解 Btrfs 'raid1' 的工作原理是理解 'raid10' 的基础。
例如,raid1
配置文件并不意味着整个磁盘都被镜像 - 它意味着“该块的两个副本”。无论阵列中实际有多少磁盘,始终如此二其中一个被选择来保存任何特定块的副本:如果您有一个三磁盘“raid1”文件系统,那么一个块可能会复制到 A+B,另一个块复制到 B+C,下一个块复制到 A+C,等等在。 (同样raid1c3
意味着正好三份并且raid1c4
正好四份。)
因此,与此类似,raid10
意味着“两个条带副本”:对于每个新块,选择四个磁盘,该块的一个副本在两个磁盘上条带化,第二个副本在另外两个磁盘上条带化。在您的情况下,第五个磁盘未使用;当。。。的时候下一个不过,块已分配,很可能会选择第五个磁盘来保存它,并且总体而言文件系统应该大致平衡(即您可能拥有 4 个磁盘的所有可能组合)
微软的存储空间“列”也以同样的方式工作(该博客文章有一个形象的以说明布局)。
为什么平衡操作需要这么长时间?
在视频中,磁盘大小相同(每个 4 TB)。让我们假设最坏的情况,即在添加第五个磁盘之前,btrfs 文件系统上几乎没有剩余空间。 (需要少量可用空间来运行平衡操作。)这意味着需要重新分配 16 TB 数据,btrfs filesystem balance
以便每个磁盘保存大致相同的数据量,即每个磁盘 3.2 TB。原则上,应该可以通过将每个磁盘的 0.8 TB 复制到新磁盘来实现此目的,但这将涉及就地修改每个 RAID10 块集。 Btrfs 不会实现这一点,而是将每个集合重新分配到所有选定磁盘上的新位置,直到实现平衡。这需要移动大约 80% 的数据,即 16 TB 中的大约 12.8 TB。