背景
我正在安装Proxmox 虚拟环境在戴尔 PowerEdge R730和Dell PowerEdge RAID 控制器 (PERC) H730 Mini 硬件 RAID 控制器和八个 3TB 7.2k 3.5 英寸 SAS 硬盘。我考虑使用 PERC H730 将六个物理磁盘配置为 RAID10 虚拟磁盘,并将两个物理磁盘保留为热备用驱动器。然而,似乎存在很多混淆虚拟文件系统和 HW RAID,我的研究给我带来的是困惑而不是清晰。
问题
- HW RAID 与 ZFS 相比有哪些优点和缺点?
- HW RAID 和 ZFS 之间有什么区别?
- HW RAID 和 ZFS 是互补技术还是互相不兼容?
- 由于 Proxmox VE 是基于 Debian 的 Linux 发行版,因此使用 H730 进行 RAID10 是否更有意义?逻辑卷管理器与将 H730 设置为 HBA 模式并使用 ZFS 相比?
如果这些应该是单独的 ServerFault 问题,请告诉我。
类似的 ServerFault 问题
我找到了以下类似的 ServerFault 问题,但这些问题似乎并未直接解决上述问题。不过,我完全承认我不是全职系统管理员,所以也许它们解决了我的问题,而我只是力不从心。
- ZFS 使用硬件 RAID 的最佳实践
- 企业 RAID 直通上的 ZFS 和 FreeBSD 根上的 ZFS
- 我应该使用 HW Raid 还是 ZFS 作为 Citrix XenServer 的文件系统?
- HW RAID1 或 ZFS 镜像
进一步研究
- 这Wikipedia ZFS 避免使用硬件 RAID 控制器文章让我相信我应该将 H730 设置为 HBA 模式,然后使用 ZFS。
- 虽然我目前还没有尝试实现高可用性,埃德蒙·怀特的ZFS 高可用性 NAS这篇文章有很多有用的信息。尽管如此,阅读它还是让我感到力不从心。
答案1
从原始吞吐量的角度来看,硬件 RAID 与 ZFS 并没有太大区别——这两种系统都需要将数据分布在多个磁盘上,这需要对缓存数据运行一些位移操作,并安排写入底层磁盘。你使用哪种处理器几乎无关紧要,而像运行这样的合成工作负载dd
在这里不能告诉你太多信息。
差异在于特点:
硬件 RAID 通常只是一个块层,可能上面有一些卷管理,而 ZFS 还包括一个文件系统层(即 ZFS 中没有关注点分离)。这允许 ZFS 提供压缩和重复数据删除,虽然这在块层上很难做到,但对于只需要一组简单的 1:1 映射的用例,额外的复杂性仍然存在。
另一方面,硬件 RAID 可以提供对操作系统几乎透明的由电池支持的写缓存,因此它可以轻松补偿日志文件系统的开销,并且在添加冗余信息之前,数据只需要从 CPU 中传输出一次。
两者都有各自的用例,并且在某些地方,将它们结合起来甚至更有意义,例如,使用提供电池备份缓存的硬件 RAID 控制器,但控制器设置为 JBOD 模式并且仅将组成磁盘重新导出到操作系统,然后将 ZFS 置于顶部。
一般来说,ZFS 本身适合“专业消费者”设置,您不想在硬件上花钱,但仍希望实现合理的容错和一定程度的压缩,而随机访问性能不是您的主要关注点。
JBOD 之上的 ZFS 非常适合容器和 VPS 托管 - 重复数据删除可以使每个容器的占用空间保持较小,即使它们升级已安装的程序,因为安装了相同升级的两个容器会合并回一个数据副本(然后再次以冗余方式保存)。
单独的硬件 RAID 适用于您想要在现有堆栈外部添加容错和一些缓存的设置 - 电池支持的写入缓存的优点之一是它们不受操作系统控制,因此控制器可以在数据到达缓存后立即确认传输已完成,并且如果稍后写入被取代,则可以跳过它,并且可以在整个系统范围内安排磁头移动而忽略依赖关系。
日志文件系统的工作方式是,它们首先提交一个日志条目,然后在确认后立即提交数据,确认后再提交另一个日志条目,将第一个日志条目标记为已完成。这需要大量的磁头移动,尤其是当磁盘在多个虚拟机之间共享时,每个虚拟机都有自己独立的日志文件系统,并且在繁忙的系统中,缓存允许您跳过大约一半的写入,但从内部系统的角度来看,日志仍然正常运行,相关写入按顺序执行。
方面安全地重新排序依赖写入以实现更优化的磁头移动是您需要在底部使用硬件 RAID 的原因。ZFS 本身会生成依赖写入,因此它也可以从硬件 RAID 中获益,但这些只是在有限的一组用例中成为性能瓶颈,主要是应用程序之间很少协调的多租户设置。
对于 SSD,重新排序显然不那么重要,因此使用硬件 RAID 的动机主要是提高性能——如果您已经达到内存和主板上的 I/O 接口速度是相关因素的程度,那么卸载校验和生成并只向单向传输单个副本,而不是从 RAM 到 RAM 进行多次传输(需要与同一一致性域中的所有其他控制器同步),这绝对是值得的。达到这一点是一个很大的“如果”——到目前为止我还没有做到。
答案2
简短的回答...您可以在合理的范围内使用硬件 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。
答案3
如果您使用硬件 raid 而不是 ZFS raid,您将失去一些功能。让我们想象一下这篇文章其余部分的简单双磁盘镜像。
ZFS 不会意识到有两个磁盘,因此每个块都有两个副本。因此,如果它检测到校验和错误,它所能做的就是通知您有一个文件包含损坏的块。您需要从备份中恢复此文件才能修复。** 另外**:您正在阻碍它检测损坏的能力。在上述场景中,当 ZFS 请求读取一个块时,实际上有两个磁盘,每个磁盘都有相同的副本,并且硬件控制器将从其中一个磁盘向 ZFS 提供数据。ZFS 无法控制哪个磁盘,甚至不知道有多个磁盘。因此,ZFS 无法单独检查每个磁盘,因此很可能需要多次连续读取才能最终读取坏块甚至检测到损坏。那时你甚至不知道它是哪个磁盘。
因为 ZFS 也是文件系统,所以它知道 FS。所以如果我有一个镜像,其中 95% 是可用空间,并且我更换了一个驱动器,ZFS 知道只复制 5% 的实际数据。HW Raid 控制器对 FS 视而不见,无法区分可用空间(或以前使用过但后来释放的空间)和数据。因此 HW raid 将盲目阻止将磁盘 A 的所有内容复制到磁盘 B。
答案4
- HW RAID 与 ZFS 相比有哪些优点和缺点?
硬件 RAID 有时可以从基本配置中获得更好的性能,但 ZFS 功能更强大,扩展性更好,并且经过适当调整后,可以获得更好的性能。
- HW RAID 和 ZFS 之间有什么区别?
ZFS 提供许多其他 RAID 所不具备的功能,例如快照、写时复制、发送和接收、压缩、重复数据删除、缓存、位衰减保护、嵌套卷和文件系统,以及独立于特定制造商的硬件 RAID 实现。ZFS 也更加灵活,可以同时满足多种用例。
- HW RAID 和 ZFS 是互补技术还是互相不兼容?
它们是完全不同的技术。您可以在其他 RAID 上运行 ZFS,但这样您将失去位腐烂保护。
- 由于 Proxmox VE 是基于 Debian 的 Linux 发行版,将 H730 用于带有 LVM 的 RAID10 是否比将 H730 设置为 HBA 模式并使用 ZFS 更有意义?
LVM 提供了 ZFS 的一些功能,除了位衰减和文件系统支持之外,性能也不太好。ZFS 内置于 Proxmox 中是有原因的。
我强烈建议你阅读Ars Technica 对 ZFS 的介绍,因为它将更详细地解释这一点。