硬件 RAID 和 ZFS 之间的差异

Mat*_*kin 4 zfs hardware-raid dell-poweredge dell-perc

背景

我在带有Dell PowerEdge RAID 控制器 (PERC) H730 迷你硬件 RAID 控制器和八个 3TB 7.2k 3.5" SAS 硬盘的Dell PowerEdge R730上安装Proxmox 虚拟环境。我正在考虑使用 PERC H730 配置六个物理磁盘作为一个 RAID10 虚拟磁盘,其中两个物理磁盘保留为热备驱动器。但是,ZFS和 HW RAID之间似乎存在相当多的混淆,我的研究给我带来了混淆而不是清晰。

问题

  • 硬件 RAID 与 ZFS 的优缺点是什么?
  • 硬件 RAID 和 ZFS 之间有什么区别?
  • HW RAID 和 ZFS 技术是互补技术还是互不兼容?
  • 由于 Proxmox VE 是基于 Debian 的 Linux 发行版,与将 H730 设置为 HBA 模式并使用 ZFS 相比,将H730 用于带有LVM 的RAID10 是否更有意义?

如果这些应该是单独的 ServerFault 问题,请告诉我。

类似的服务器故障问题

我发现了以下类似的 ServerFault 问题,但这些问题似乎并没有直接解决上述问题。虽然,我完全承认我不是全职系统管理员,所以也许他们解决了我的问题,而我只是超出了我的深度。

额外研究

Sim*_*ter 5

从原始吞吐量的角度来看,硬件 RAID 与 ZFS 没有太大区别——任一系统都需要将数据分布在多个磁盘上,这需要对缓存数据运行一些位移操作,并安排对底层磁盘的写入。您使用哪种处理器几乎不重要,而像运行这样的合成工作负载dd在这里不能告诉您太多。

区别在于功能:

硬件 RAID 通常只是一个块层,可能在顶部有一些卷管理,而 ZFS 还包括一个文件系统层(即在 ZFS 中没有关注点分离)。这允许 ZFS 提供压缩和重复数据删除,虽然这在块层上很难实现,但对于您只需要一组简单的 1:1 映射的用例,额外的复杂性仍然存在。

另一方面,硬件 RAID 可以提供对操作系统(几乎)透明的电池备份写入缓存,因此它可以轻松补偿日志文件系统的开销,并且数据只需要从 CPU 传输一次, 在添加冗余信息之前。

两者都有自己的用例,在某些地方,甚至可以将它们组合起来,例如,与提供电池后备缓存的硬件 RAID 控制器一起使用,但控制器设置为 JBOD 模式,并且仅将组成磁盘重新导出到操作系统,然后将 ZFS 放在首位。

一般来说,单独的 ZFS 适合“专业消费者”设置,您不想在硬件上花钱,但仍希望实现合理的容错和一些压缩,并且随机访问性能不是您的主要关注点。

JBOD 之上的 ZFS 非常适合容器和 VPS 托管——重复数据删除使每个容器的占用空间很小,即使它们升级已安装的程序,因为安装了相同升级的两个容器合并回一个数据副本(然后再次以冗余方式保存)。

单独的硬件 RAID 适用于您想要在现有堆栈外部添加容错和一些缓存的设置——电池支持的写入缓存的优点之一是它们在操作系统控制之外进行维护,因此控制器可以在数据到达缓存后立即确认传输已完成,如果稍后写入被取代,则可以跳过它,并且可以在系统范围内调度磁头移动而忽略依赖性。

日志文件系统的工作方式是,它们首先提交一个日志条目,然后在确认后立即提交数据,在确认之后,另一个日志条目将第一个标记为完整。这是大量的磁头移动,尤其是当磁盘在多个 VM 之间共享时,每个 VM 都有自己独立的日志文件系统,并且在繁忙的系统中,缓存允许您跳过大约一半的写入,但是从从内部系统来看,journal还是正常的,依赖的写是按顺序进行的。

方面安全地重新排序相关写入了更优化的头部运动就是为什么你要在底部的硬件RAID。ZFS 自身生成相关写入,因此它也可以从硬件 RAID 中获益,但这些只是有限用例集的性能瓶颈,主要是应用程序之间很少协调的多租户设置。

对于 SSD,重新排序显然不那么重要,因此使用硬件 RAID 的动机主要是批量性能——如果您已经达到主板上的内存和 I/O 接口速度是相关因素的地步,那么卸载校验和生成和仅以一种方式传输单个副本与从 RAM 到 RAM 的多次传输(需要与同一一致性域中的所有其他控制器同步)绝对值得。达到这一点是一个很大的“如果”——到目前为止我还没有做到。

  • 十年或更长时间之前,有必要将 RAID 卸载到控制器,因为除了实际的业务工作负载之外,当时的 CPU 无法很好地(或根本无法)处理它。如今,CPU 使用率通常不是问题。 (3认同)
  • CPU 工作负载在这里从来都不是一个大问题,即使在今天,同时具有 CPU 和 I/O 负载的工作负载也很少,并且您无论如何也不会在校验和 RAID 上运行这些工作负载(更可能的是:RAID1 上的数据库)。在 SATA 出现之前,热插拔是人们购买硬件 RAID 的原因之一 - 软件 RAID 的常见故障模式之一是磁盘在电源循环期间发生故障,并从降级的 RAID 重新启动,您需要更换 IDE 驱动器,这就是软件 RAID 不可靠的名声由此而来。不过,它仍然[设置起来很烦人](https://serverfault.com/a/1053425/66021)。 (2认同)

eww*_*ite 3

简短的回答...您可以在有意义的地方使用硬件 RAID。

这实际上取决于您希望 RAID 保护来自何处以及您希望卷管理来自何处。

例如,我使用 HPE ProLiant 服务器...

  • 我今天正在构建一个 100TB 的存储阵列。
  • 这将进入一个没有常规 IT 员工或知识渊博的支持的环境。
  • 我使用 HPE SmartArray RAID 将其构建为跨 24 个磁盘的 RAID 60 设置。
  • 我将设置智能阵列为操作系统划分出 100GB RAID 60 卷,并将其余部分划分为数据卷。
  • ZFS 将安装在提供给操作系统的 RAID 块设备之上(例如单个 VDEV ZFS zpool)

这种设计的原因是 HPE SmartArray 硬件 RAID 运行可靠且一致。指导某人更换磁盘或在该设置中构建自动备件很容易。考虑到该地点没有配备 IT 资源,出于可管理性的原因,这是有意义的。

我仍然受益于 ZFS 卷管理和缓存、压缩、性能等。

在更受控制的环境中,我可能会将控制器设置为 HBA 模式并为 ZFS 使用原始磁盘。

  • @AndrewHenle,你对位根的理解充其量只是部分的。虽然我同意“纯”位根(即:未检测到的更改位)非常罕见,但电缆/连接器/DRAM 缓存故障*将*导致数据损坏。我本人发现 HDD 损坏是由于电源故障造成的,这导致*在 MDRAID 镜像的单个驱动器上*出现虚假 HDD DRAM 缓存损坏。XFS 被损坏的数据毁掉了。镜像 ZFS 阵列将更难以这种方式进行垃圾处理(旁注:ZFS 再次发生这种情况,并且没有任何戏剧性地幸存下来)。 (5认同)
  • @MrDrMcCoy *将 ZFS 放在 HW RAID 上会否定位腐烂保护* **胡言乱语** 你真的认为如果位腐烂保护很重要,那么它现在还没有直接内置到硬盘驱动器中吗?您在不使用 ZFS 的企业 Windows 网络上看到了多少位衰减?*您仍然可以指导员工更换单个磁盘,并通过 SSH 自行执行最终的驱动器更换。*这完全忽略了企业磁盘更换是由供应商技术人员在没有与您协调的情况下完成的事实,以及硬件 RAID 磁盘更换不'不需要您通过 SSH - 新磁盘插入,完成。 (3认同)
  • @AndrewHenle你不明白我写的东西。在我的具体问题中,主 RAM 100% 正常,没有记录任何应用程序/内核错误。该问题与*HDD 自己的私有 DRAM 缓存*有关,该缓存由于不稳定的电源轨而损坏。数据损坏不仅仅与磁性位根相关。虽然企业设备对此类错误的恢复能力更强,但校验和仍然是一个重要的安全网。但请不要相信我;相反,请阅读 SAS T10 规范或“dm-integrity”文档,以了解为什么数据 CRC/校验和如此重要。 (2认同)