硬件 RAID 6 上的 ZFS 条带。可能出现什么问题?

硬件 RAID 6 上的 ZFS 条带。可能出现什么问题?

我有 36*4TB HDD SAN 机架。RAID 控制器不支持 RAID60,并且一个 RAID 组中最多只能有 16 个 HDD。因此,我决定制作 2 个 16HDD 的 RAID6 组或 4 个 8HDD 的 RAID6 组。我希望将所有存储作为一个分区。

那么,如果我在硬件 RAID6 上使用 zfs 池,可能会出现什么问题?是的,我知道强烈建议使用本机 HDD 或直通模式。但我没有这个选项。

或者在这种情况下我应该远离 ZFS 和软件突袭?(我最感兴趣的是压缩和快照)

答案1

因此我决定制作 2 个 16HDD 的 RAID6 组或 4 个 8 HDD 的 RAID6 组。

这不是最好的做事方式。它可能工作得很好,但根据你的性能要求,也可能不行。

RAID5/6 阵列的理想大小是,跨越该阵列的数据量的精确倍数与构建在其上的文件系统的块大小相匹配。

RAID5/6 阵列以块设备的形式工作 - 单个数据块跨越阵列中的磁盘,并且该块还包含奇偶校验数据。大多数 RAID 控制器会将 2 的幂大小的数据块写入每个阵列中的磁盘 - 在更好的 RAID 系统中,其确切值是可配置的 - 并且您的 Dot Hill 单元是这些“更好的 RAID 系统”之一。这很重要。

因此,需要 N x(每个磁盘块存储的数据量)来跨越阵列,其中 N 是数据磁盘的数量。5 磁盘 RAID5 阵列有 4 个“数据”磁盘,10 驱动器 RAID6 阵列有 8 个数据磁盘。

因为当数据写入 RAID5/6 阵列时,如果数据块足够大,可以覆盖整个阵列,则会计算该数据的奇偶校验(通常在控制器的内存中),然后将整个条带写入磁盘。简单又快速。

但是,如果写入的数据块不够大,无法覆盖整个阵列,那么 RAID 控制器需要做什么才能计算新的奇偶校验数据呢?想想看 - 它需要全部的条纹重新计算新的奇偶校验数据。

因此,如果您创建一个 16 驱动器 RAID6 阵列,并且每个磁盘的默认块为 512kb,则意味着需要 7 MB 来“跨越”该阵列。

ZFS 通常以 128kb 块为单位工作。

因此,ZFS 将 128kB 块写入 16 驱动器 RAID6 阵列。在您建议的配置中,这意味着 RAID 控制器需要从阵列中删除近 7 MB 并重新计算这 7 MB 的奇偶校验。然后将整个 7 MB 重新写入磁盘。

如果幸运的话,所有内容都在缓存中,因此不会对性能造成太大影响。(这是“不要使用 RAID5/6”的立场受到如此多追随者的主要原因之一 - RAID1[0] 不会受到此影响。)

如果您运气不好,没有正确对齐文件系统分区,那么该 128kB 块将跨越两个不在缓存中的 RAID 条带,控制器需要读取 14 MB,重新计算奇偶校验,然后写入 14 MB。全部写入一个 128kB 块。

现在,这就是需要发生的事情逻辑上。优秀的 RAID 控制器可以采取很多优化措施来减少此类 IO 模式的 IO 和计算负载,因此可能不会那么糟糕。

但是在将 128kB 块写入随机位置的高负载下,条带大小为 7 MB 的 16 驱动器 RAID6 阵列的性能很有可能会非常糟糕。

对于 ZFS,“理想”的底层 RAID5/6 LUN对于大多数访问都是随机的通用文件系统条纹大小均匀除数128kB,例如 32kB、64kB 或 128kB。在这种情况下,这会将 RAID5/6 阵列中的数据磁盘数量限制为 1(这毫无意义 - 即使可以配置,最好也只使用 RAID1[0])、2、4 或 8。在最佳情况下,最佳性能是使用 128kB 条带大小作为 RAID5/6 阵列,但最佳情况在通用文件系统中并不常见 - 通常是因为文件系统存储元数据的方式与存储文件数据的方式不同。

我建议设置 5 磁盘 RAID5 阵列或 10 磁盘 RAID6 阵列,并将每个磁盘的块大小设置得足够小,以便跨越整个阵列条带的数据量为 64kB(是的,我之前对 ZFS 做过很多次)。这意味着对于具有 4 个数据磁盘的 RAID 阵列,每个磁盘的块大小应为 16kB,而对于 8 数据磁盘的 RAID 阵列,每个磁盘的块大小应为 8kB。

然后允许 ZFS 使用全部的数组——执行不是对其进行分区。ZFS 将正确地将自身与整个驱动器对齐,无论该驱动器是简单的单个磁盘还是 RAID 控制器提供的 RAID 阵列。

在这种情况下,在不知道您的确切空间和性能要求的情况下,我建议设置三个 10 驱动器 RAID6 阵列或六个 5 驱动器 RAID5 阵列,条带大小为 64kB,配置几个热备盘,并保留四个磁盘以备将来发生的情况。因为总有可能发生。

我绝对不会在 JBOD 模式下使用该磁盘系统 - 这是一个完全符合 NEBS 3 级标准的设备它提供了内置在硬件中的高可靠性和可用性保护。不要因为“ZFS!!!!”而放弃它。如果它是你用零件组装起来的廉价商品硬件?是的,使用 ZFS 处理 RAID 的 JBOD 模式是最好的 - 但那是不是您拥有的硬件。 使用硬件提供的功能。

答案2

好的,我会咬...

对于该应用程序来说,这是错误的硬件。DotHill 设置与 HP StorageWorks MSA2000/P2000 具有相同的限制,即单个阵列分组中只能使用 16 个驱动器。

虚拟文件系统位于硬件 RAID 或导出的 SAN LUN 之上不一定是个问题。

但是,跨扩展底盘通过未知互连对 ZFS LUN 进行条带化可能会带来一些风险。

  • 例如,您是否在具有双控制器的环形拓扑中运行多路径 SAS?
  • 您是否有冗余电缆连接服务器?
  • 您是否已将驱动器垂直分布在机箱之间,以减轻单个机箱/电缆/控制器的故障并防止其破坏 RAID0 条带的一部分?

认真地讲,可能值得评估一下是否需要将所有这些存储放在单个命名空间中……

如果你确实需要这种容量的单个安装座,你应该使用专用的连接 HBA 的 JBOD 机箱以及可能的多个主机采用弹性布线和更智能的布局。

答案3

您应该将所有驱动器直接连接到运行 ZFS 的盒子。获取 SAS HBA 并将驱动器连接到支持 ZFS 的盒子(例如运行 OmniOS 或 SmartOS)。然后您可以通过 NFS、SMB、iScsi 共享空间...

答案4

ZFS 位于 HW RAID 逻辑卷之上的原因是很坏这个想法是因为 ZFS 需要块级访问才能真正正常运行。是的,它将可用,但直到您通过 HBA 或直接 SATA 连接将驱动器直接连接到操作系统时,功能才会完整。一个例子是,在您提出的配置中,ZFS 无法合理地保护您的数据免受下面(在 HW RAID 控制器的另一侧)数据的更改,因此无法保证您的数据安全。这是使用 ZFS 的主要原因之一,此外它的速度也非常快。

ZFS 是一项很棒的技术,我强烈推荐它。但您需要重新审视您的结构,以便能够正确使用它。即让 ZFS 直接从磁盘创建逻辑卷 (vdevs)。

听起来,在您能够准确理解您所提出的内容之前,您需要阅读大量有关 ZFS 如何运行的内容,而不是真正应该做的事情。

相关内容