ZFS:镜像与 RAID-Z

Joh*_*ton 16 zfs opensolaris

我计划使用 OpenSolaris 和 ZFS 构建一个文件服务器,它将提供两个主要服务 - 成为 XenServer 虚拟机的 iSCSI 目标和成为通用家庭文件服务器。我正在查看的硬件包括 2 个 4 端口 SATA 控制器、2 个小型引导驱动器(每个控制器上一个)和 4 个用于存储的大型驱动器。这允许每个控制器有一个空闲端口,用于升级阵列。

我有点困惑的是如何设置存储驱动器。对于性能,镜像似乎是王道。我很难看出使用 RAIDZ 而不是镜像会有什么好处。通过此设置,我可以看到两个选项 - 一个条带中的两个镜像池,或 RAIDZ2。两者都应该防止 2 个驱动器故障和/或一个控制器故障……RAIDZ2 的唯一好处是任何2 个驱动器都可能发生故障。在这两种情况下,存储都应该是容量的 50%,但第一个应该具有更好的性能,对吧?

我想解决的另一件事是具有两个以上设备的镜像阵列的好处。对于数据完整性,如果有的话,RAIDZ 比三向镜像有什么好处?由于 ZFS 维护文件完整性,RAIDZ 带来了什么……ZFS 的完整性检查不是否定 RAIDZ 奇偶校验的值吗?

duf*_*703 18

RAID-Z 消除了大部分写入损失和 RAID 5/6 卷遭受的数据完整性问题,但代价是一些 CPU 时间。通常,系统有 CPU 周期可以空闲,因此花费 CPU 时间来提高 IO 性能和数据完整性是与镜像相比的一个很好的折衷方案。

这里是RAID-Z的详细解释,可以回答其他问题。

另外,请记住RAID 是一种容错解决方案。您没有实施 RAID-Z2 来防止数据丢失——您执行备份或复制来做到这一点。您选择实施 RAID-Z2 与 RAID-Z 或 RAID-10 与 RAID-6 与 RAID-5,以在发生硬件故障时保持系统正常运行。


dot*_*fle 15

简单的答案是,镜像某些东西几乎不需要处理能力——它只是第二次写入磁盘。对于 RAID-Z2,您必须计算一个全新的奇偶校验块,当您必须快速写入大量数据时,尽管它很小 CAN 会使 CPU 陷入困境。

镜像始终是高速数据的首选解决方案,如果它只是没有快速写入速度的大容量存储,RAID-Z2 是一个很好的替代方案,它允许任何两个驱动器死掉,正如您所提到的。

另一个优点是镜像池可以用更多的镜像设备扩展——而 RAID-Z2 不能扩展——虽然可以向池中添加更多的 RAID-Z2 存储,它将是串联的两个 RAID-Z2 存储池(在效果)而不是在所有存储和条带之间平均分配。

  • RAID-Z 的奇偶校验是 ZFS 内置校验和的超集。校验和所做的就是确保从磁盘读取的数据是正确的。它旨在以很少的开销进行快速检查。RAID-Z 的奇偶校验为您提供了在驱动器丢失(或 RAID-Z2 为 2)的情况下*重建*损坏数据的能力。但是生成此奇偶校验数据的计算比简单的块校验和更占用 CPU,并且必须在整个条带上计算,即使您只写入 4KB 块。 (5认同)
  • @John Clayton:冗余级别取决于您如何配置存储。您可以创建 N 路镜像,这意味着您的数据容量是一个驱动器的大小,但您可以丢失 N-1 个驱动器而不会丢失任何数据。例如,如果您有一个 3 路镜像,则所有 3 个驱动器都包含相同的数据,您可以丢失 2 个驱动器而不会丢失任何数据。不同之处在于,将驱动器添加到 N 路镜像会增加冗余(但您的容量始终为 1 个驱动器的大小),而将驱动器添加到 raidz2 会增加容量(但您的冗余始终为 2 个驱动器)。 (4认同)
  • RAID-Z 允许一个驱动器失效 - 如果您有 10 个驱动器,您将获得 9 个驱动器的数据。使用 RAID-Z2,您可以让任意两个驱动器死亡,并拥有 8 个驱动器的数据。使用镜像,您可以让一半的驱动器死亡,但每组只有一个。我怀疑您已经知道这一点,但正是这种 4 个驱动器的边缘案例提供了两个驱动器失败的两种解决方案 - RAID-Z2 和镜像模式。没有在正常情况下“有用”的额外数据完整性允许。 (2认同)