ZFS 硬件 RAID 最佳实践

cns*_*nst 33 hardware zfs sata sas hardware-raid

如果碰巧有一些服务器级硬件可供使用,是否建议在基于硬件的 RAID1 或类似硬件之上运行 ZFS?是否应该关闭基于硬件的 RAID,并在 amirror或 a上运行 ZFS raidz zpool

关闭硬件 RAID 功能后,基于硬件 RAID 的 SATA2 和 SAS 控制器是否比非硬件 RAID 控制器更可能或更少地隐藏读取和写入错误?

就不可定制的服务器而言,如果硬件 RAID 控制器实际上是成本中性的(甚至降低了预建服务器产品的成本,因为它的存在提高了托管公司提供补充 IPMI 的可能性)访问),应该完全避免吗?但它应该被追捧吗?

Ouk*_*uki 20

ZFS 的想法是让它尽可能多地了解磁盘的行为。然后,从最坏到更好:

  • 硬件突袭(ZFS 完全不知道真正的硬件),
  • JBOD 模式(问题更多是关于任何潜在的扩展器:更少的带宽),
  • HBA 模式是理想的(ZFS 了解有关磁盘的一切)

由于 ZFS 对硬件非常偏执,隐藏的越少,它就越能应对任何硬件问题。正如Sammitch所指出的,RAID 控制器配置和 ZFS 在发生故障(即硬件故障)时可能很难恢复或重新配置。

关于其中包含一些硬件 RAID 控制器的标准化硬件的问题,请注意硬件控制器具有真正的直通或 JBOD 模式。

  • 还值得注意的是,如果您使用的是 HW RAID 并且您的控制器死机 [发生的情况比您想象的要多] 如果您无法获得相同或完全兼容的替代品,那么您将陷入困境。另一方面,如果您将原始磁盘提供给 ZFS,您可以将这些磁盘插回任何机器上的任何控制器,ZFS 可以重建阵列并像什么也没发生一样继续。 (12认同)
  • 这个答案没有回答任何问题。它只是表达了一种有偏见的观点,即服务器硬件供应商和 ZFS 程序员比 RAID 控制器供应商和 RAID 固件程序员做得更好。FreeNAS 社区充满了因服务器内存故障或电源不合适而杀死 Zpool 的人。大事失败的几率比小事高。 (4认同)
  • 高端服务器通常具有板载 RAID 控制器。例如,我从来没有更换过 HP 或 Dell 系统上的控制器。 (2认同)

Nex*_*ex7 15

问:如果碰巧有一些服务器级硬件可供使用,是否建议在基于硬件的 RAID1 或类似硬件之上运行 ZFS?

A. 强烈建议直接在磁盘上运行 ZFS,而不要在两者之间使用任何形式的 RAID。有效地要求您使用 RAID 卡的系统是否排除使用 ZFS 与 ZFS 的其他好处有关,而不是与数据弹性有关。坦率地说,如果有一个底层 RAID 卡负责为 ZFS 提供单个 LUN,则 ZFS 不会提高数据弹性。如果您最初使用 ZFS 的唯一原因是提高数据弹性,那么您就失去了使用它的所有理由。但是,ZFS 还提供 ARC/L2ARC、压缩、快照、克隆以及您可能还需要的各种其他改进,在这种情况下,它可能仍然是您选择的文件系统。

问:是否应该关闭基于硬件的 RAID,而是在镜像或 raidz zpool 上运行 ZFS?

A. 是的,如果可能的话。某些 RAID 卡允许直通模式。如果有,这是最好的做法。

问:关闭硬件 RAID 功能后,基于硬件 RAID 的 SATA2 和 SAS 控制器是否比非硬件 RAID 控制器更可能或更少地隐藏读取和写入错误?

A. 这完全取决于所讨论的 RAID 卡。您必须仔细阅读手册或联系 RAID 卡的制造商/供应商以找出答案。有些确实如此,是的,特别是如果“关闭”RAID 功能实际上并没有完全关闭它。

问:就不可定制的服务器而言,如果硬件 RAID 控制器实际上是成本中性的(甚至降低了预建服务器产品的成本,因为它的存在提高了托管公司提供的可能性)补充 IPMI 访问),是否应该完全避免?但它应该被追捧吗?

A. 这和你的第一个问题很相似。再次 - 如果您使用 ZFS 的唯一愿望是提高数据弹性,并且您选择的硬件平台需要一个 RAID 卡为 ZFS 提供单个 LUN(或多个 LUN,但您在它们之间有 ZFS 条带),那么您正在做没有什么可以提高数据弹性,因此您选择的 ZFS 可能不合适。但是,如果您发现任何其他 ZFS 功能有用,它可能仍然有用。

我确实想添加一个额外的问题 - 上述答案依赖于这样一种想法,即在 ZFS 下使用硬件 RAID 卡除了消除其提高数据弹性的能力之外不会对 ZFS 造成任何损害。事实是,这更像是一个灰色地带。在处理多磁盘 LUN 而不是原始磁盘时,ZFS 中的各种可调参数和假设不一定能很好地运行。大多数情况可以通过适当的调整来抵消,但开箱即用,在大型 RAID LUN 之上的 ZFS 上的效率不会像在单个主轴之上那样有效。

此外,有一些证据表明,与更传统的文件系统相比,ZFS 与 LUN 对话的非常不同的方式通常会调用 RAID 控制器中的代码路径和它们不习惯的工作负载,这可能会导致奇怪的问题。最值得注意的是,如果您还没有提供单独的日志设备,那么您可能会通过在放置在单个 LUN 之上的任何池上完全禁用 ZIL 功能来帮自己一个忙,当然我强烈建议您务必为池提供一个单独的原始日志设备(如果可能,它不是来自 RAID 卡的 LUN)。


eww*_*ite 10

我经常在 HP ProLiant Smart Array RAID 配置之上运行 ZFS。

为什么?

  • 因为我喜欢 ZFS 用于数据分区,而不是引导分区。
  • 因为 Linux 和 ZFS 引导现在对我来说可能还不够万无一失。
  • 因为 HP RAID 控制器不允许RAW 设备直通。配置多个 RAID 0 卷与 RAW 磁盘不同。
  • 因为服务器背板通常不够灵活,无法将驱动器托架专用于特定控制器或在两个控制器之间分配职责。如今,您最常看到 8 和 16 托架设置。并不总是足以按照事情应该的方式进行细分。
  • 但我还是喜欢 ZFS 的卷管理功能。zpool 允许我动态地划分内容并充分利用可用磁盘空间。
  • 压缩、ARC 和 L2ARC 是杀手级功能!
  • 在硬件 RAID 之上正确设计的 ZFS 设置仍然提供良好的警告和故障警报,但优于纯硬件解决方案。

一个例子:

RAID 控制器配置。

[root@Hapco ~]# hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50014380233859A0)

   array B (Solid State SATA, Unused Space: 250016  MB)
      logicaldrive 3 (325.0 GB, RAID 1+0, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)
Run Code Online (Sandbox Code Playgroud)

块设备列表

[root@Hapco ~]# fdisk  -l /dev/sdc

Disk /dev/sdc: 349.0 GB, 348967140864 bytes
256 heads, 63 sectors/track, 42260 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       42261   340788223   ee  GPT
Run Code Online (Sandbox Code Playgroud)

zpool 配置

[root@Hapco ~]# zpool  list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   324G  84.8G   239G    26%  1.00x  ONLINE  -
Run Code Online (Sandbox Code Playgroud)

zpool 详细信息

  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013
config:

        NAME                                      STATE     READ WRITE CKSUM
        vol1                                      ONLINE       0     0     0
          wwn-0x600508b1001cc25fb5d48e3e7c918950  ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

zfs 文件系统列表

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -
Run Code Online (Sandbox Code Playgroud)


小智 6

通常,您永远不应在 RAID 阵列中配置的磁盘上运行 ZFS。请注意,ZFS 不必在 RAID 模式下运行。您可以只使用单个磁盘。然而,几乎 99% 的人都为它的 RAID 部分运行 ZFS。您可以只以条带模式运行磁盘,但这对 ZFS 的使用很差。就像其他海报所说的那样,ZFS 想了解很多关于硬件的信息。ZFS 应该只连接到可以设置为 JBOD 模式的 RAID 卡,或者最好连接到 HBA。跳转到 IRC Freenode 频道 #openindiana ;频道中的任何 ZFS 专家都会告诉您同样的事情。如果他们不提供 HBA,请要求您的托管服务提供商提供 JBOD 模式。