ZFS 使用硬件 RAID 的最佳实践

ZFS 使用硬件 RAID 的最佳实践

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

关闭硬件 RAID 功能后,基于硬件 RAID 的 SATA2 和 SAS 控制器是否比非硬件 RAID 控制器更容易或更不容易隐藏读写错误?

对于非定制服务器,如果硬件 RAID 控制器实际上成本中性(甚至降低预制服务器产品的成本,因为它的存在提高了托管公司提供补充 IPMI 访问的可能性),是否应该避免使用硬件 RAID 控制器?但是否应该追求硬件 RAID 控制器?

答案1

ZFS 的理念是让它尽可能地了解磁盘的行为方式。然后,从最差到更好:

  • 硬件 raid(ZFS 对真实硬件一无所知),
  • JBOD 模式(问题更多是关于任何潜在的扩展器:带宽较少),
  • HBA 模式是理想的(ZFS 了解磁盘的所有信息)

由于 ZFS 对硬件相当敏感,隐藏的东西越少,它就越能应对任何硬件问题。正如萨米奇,RAID 控制器配置和 ZFS 在出现故障(即硬件故障)时可能很难恢复或重新配置。

关于标准化硬件中带有一些硬件 RAID 控制器的问题,只需注意硬件控制器是否具有真正的直通或 JBOD 模式。

答案2

问:如果碰巧有一些服务器级硬件,那么在基于硬件的 RAID1 或类似硬件上运行 ZFS 是否可取?

答:强烈建议直接在磁盘上运行 ZFS,而不使用任何形式的 RAID。一个实际上要求您使用 RAID 卡的系统是否排除使用 ZFS,与 ZFS 的其他优势关系更大,而不是数据弹性。坦率地说,如果有一个底层 RAID 卡负责为 ZFS 提供单个 LUN,则 ZFS 不会提高数据弹性。如果您选择 ZFS 的唯一原因是数据弹性改进,那么您就失去了使用它的所有理由。但是,ZFS 还提供 ARC/L2ARC、压缩、快照、克隆和您可能还想要的各种其他改进,在这种情况下,也许它仍然是您的首选文件系统。

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

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

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

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

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

答:这个问题和第一个问题很像。同样,如果您使用 ZFS 的唯一目的是提高数据弹性,而您选择的硬件平台需要 RAID 卡为 ZFS 提供单个 LUN(或多个 LUN,但 ZFS 跨它们进行条带化),那么您并没有采取任何措施来提高数据弹性,因此您选择的 ZFS 可能并不合适。但是,如果您发现任何其他 ZFS 功能有用,那么它可能仍然有用。

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

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

答案3

我经常在 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)

块设备列表

[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

zpool 配置

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

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

zfs 文件系统列表

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -

答案4

每个人都说在 RAID 上使用 ZFS 是个坏主意,甚至没有提供链接。但 ZFS 的开发者——Sun Microsystems 甚至推荐在 HW RAID 上以及在 Oracle 数据库的 ZFS 镜像池上运行 ZFS。

反对 HW RAID 的主要论点是它无法像 ZFS 镜像那样检测位衰减。但这是错误的。T10 PI 可以解决这个问题。您可以使用支持 T10 PI 的控制器(至少我使用的所有 LSI 控制器都是这样的)大多数企业磁盘都支持 T10 PI。因此,如果它适合您,您可以构建支持 T10 PI 的阵列,在其上创建没有冗余的 ZFS 池,并且只需确保您遵循文章中与您的用例相关的指导原则。虽然它是为 Solaris 编写的,但恕我直言,它也适用于其他操作系统。

对我来说,好处是在 HW 控制器中更换磁盘确实更容易(特别是在我的情况下,因为出于性能原因,我不会将整个磁盘用于 zpool)它根本不需要干预,可以由客户的员工完成。

缺点是您必须确保所购买的磁盘确实已格式化以支持 T10 PI,因为其中一些磁盘虽然能够支持 T10 PI,但出售时格式化为常规磁盘。您可以自行格式化它们,但这并不简单,而且如果您中断该过程则可能存在危险。

相关内容