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

Sev*_*gun 9 zfs storage storage-area-network hardware-raid

我有 36*4TB HDD SAN 机架。RAID 控制器不支持 RAID60 且一个 RAID 组中不超过 16 个 HDD。所以我决定制作 2 个 RAID6 组 16 个硬盘或 4 个 8 个硬盘。我想将所有存储作为一个分区。

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

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

And*_*nle 5

所以我决定制作 2 个 RAID6 组 16 个硬盘或 4 个 8 个硬盘。

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

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。最佳性能最好的情况是为 RAID5/6 阵列使用 128kB 的条带大小,但最好的情况在通用文件系统中并不经常发生 - 通常是因为文件系统不存储与它们相同的元数据存储文件数据。

我建议设置 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 模式是最好的 - 但这不是您拥有的硬件。 使用硬件提供的功能。


Tob*_*ker 1

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