我对如何配置我的 zfs 池有点困惑。向 raidz1 池添加 8 个磁盘和向具有 2 个 raidz1 组的池添加 2x4 磁盘之间究竟有什么区别。示例
zpool create testPool raidz1 d1 d2 d3 d4 raidz1 d5 d6 d7 d8
zpool status 显示相同数量的可用磁盘空间,但是运行 zfs list testPool 时,具有 2 个 raidz 组的磁盘显示可用磁盘空间是所有磁盘都在一个组中的磁盘的 1/2。
此方法是否定义了 2 个奇偶校验磁盘?奇偶校验磁盘的数量是如何定义的?如果我使用 raidz2 创建以下池,它会显示几乎相同的可用空间。
zpool create testPool raidz2 d1 d2 d3 d4 d5 d6 d7 d8
对此有什么提示吗?
多谢
答案1
如果您熟悉传统 RAID,那么基本上就是在比较 RAID6(双奇偶校验)和 RAID 50(条带 raid5 集)。8 磁盘 RAID-z2 设置可能是更好的选择,因为这样 8 个磁盘中的任意两个磁盘发生故障都不会丢失所有数据,而条带化的 4 磁盘 raidz1 集只能容忍每组一个磁盘发生故障(同一组中的两个磁盘发生故障,您将丢失所有数据)。
2x4disk RAIDz1 组在某些情况下可能会提供更高的 IOPS,因为较小的读/写可能由一半或另一半提供服务,而每个 IO 都会命中 8disk raidz2 设置中的每个磁盘,但如果性能是您的主要考虑因素,那么您绝对应该考虑镜像您的磁盘(ala RAID 10)。
答案2
第一种方法定义了两个“虚拟设备”,每个设备都有自己的奇偶校验磁盘。第二种方法创建一个虚拟设备,两个奇偶校验磁盘。两者的可用空间量相同,如果任何地方都没有控制器瓶颈,那么我猜它们的性能会相同。
答案3
在两个例子中,您都提供了 2 个磁盘以实现冗余。因此,可用的磁盘空间将是相等的。
第一个创建 raidz 条带化(实际上是 raid50),它的速度更快,因为系统会尝试平衡第一组和第二组磁盘之间的负载。每组都有 1 个设备的冗余,因此如果 2 个驱动器发生故障并且它们都来自不同的组,您不会丢失数据。如果 2 个驱动器发生故障并且它们都来自同一组,您的数据将被损坏。
第二个实际上创建了 raid6。速度较慢,但如果任何 2 个驱动器发生故障,您的数据仍可保留。