我已经阅读了很多关于 RAID 控制器/设置的内容,其中经常出现的一件事是没有缓存的硬件控制器如何提供与软件 RAID 相同的性能。真的是这样吗?
我一直认为,即使没有缓存,硬件 RAID 卡也会提供更好的性能。我的意思是,你有专门的硬件来执行这些任务。如果是这种情况,那么获得没有缓存的 RAID 卡有什么好处,比如 LSI 9341-4i,它并不便宜。
此外,如果性能提升只能通过缓存实现,是否有缓存配置可以立即写入磁盘但将数据保留在缓存中以进行读取操作,从而使 BBU 不是优先事项?
我已经阅读了很多关于 RAID 控制器/设置的内容,其中经常出现的一件事是没有缓存的硬件控制器如何提供与软件 RAID 相同的性能。真的是这样吗?
我一直认为,即使没有缓存,硬件 RAID 卡也会提供更好的性能。我的意思是,你有专门的硬件来执行这些任务。如果是这种情况,那么获得没有缓存的 RAID 卡有什么好处,比如 LSI 9341-4i,它并不便宜。
此外,如果性能提升只能通过缓存实现,是否有缓存配置可以立即写入磁盘但将数据保留在缓存中以进行读取操作,从而使 BBU 不是优先事项?
简而言之:如果使用低端 RAID 卡(无缓存),请帮自己一个忙并切换到软件 RAID。如果使用中高端卡(带有 BBU 或 NVRAM),那么硬件通常(但并非总是!见下文)是一个不错的选择。
长答案:当计算能力有限时,硬件 RAID 卡在卸载涉及它们的 RAID 方案(RAID 3/4/5、RAID6、ecc)的奇偶校验/综合症计算方面具有显着优势。
然而,随着 CPU 性能的不断提高,这个优势基本消失了:即使是我笔记本电脑的古老 CPU(Core i5 M 520,Westmere generation),XOR 性能也超过 4 GB/s,RAID-6 综合性能超过 3 GB/s 。执行核心。
今天,硬件 RAID 保持的优势是存在断电保护的 DRAM 缓存,以 BBU 或 NVRAM 的形式。这种受保护的缓存为随机写入访问(和命中的读取)提供了非常低的延迟,并且基本上将随机写入转换为顺序写入。没有这种缓存的 RAID 控制器几乎是无用的。此外,一些低端的RAID控制器不仅没有缓存,还会强制禁用磁盘的私有DRAM缓存,导致性能比没有RAID卡时更慢。一个例子是 DELL 的 PERC H200 和 H300 卡:它们完全禁用磁盘的私有缓存并且(如果更新的固件没有改变它)主动禁止重新激活它。帮自己一个忙,永远不要购买这样的控制器。虽然甚至更高端的控制器经常禁用磁盘的私有缓存,但它们至少有自己的受保护缓存 - 使得 HDD(但不是 SSD!)私有缓存有些多余。
不过,这还不是结束。即使是功能强大的控制器(具有 BBU 或 NVRAM 缓存的控制器)在与 SSD 一起使用时也会产生不一致的结果,这主要是因为 SSD 确实需要一个快速的私有缓存来进行高效的 FLASH 页编程/擦除。虽然一些(大多数?)控制器允许您重新启用磁盘的私有缓存(例如:PERC H700/710/710P),但如果该私有缓存是易失性的,您可能会在断电时丢失数据。确切的行为确实取决于控制器和固件(例如:在具有 256 MB WB 缓存和启用磁盘缓存的 DELL S6/i 上,我在多次计划中的断电测试期间没有任何损失),带来了不确定性和很多担忧。
另一方面,开源软件 RAID 是更可控的野兽——它们的软件不包含在专有固件中,并且具有明确定义的元数据模式和行为。软件 RAID 做出(正确的)假设,即磁盘的私有 DRAM 缓存不受保护,但同时它对于可接受的性能至关重要 - 因此,他们没有禁用它,而是使用 ATA FLUSH / FUA 命令将关键数据写入稳定存储。由于它们经常从连接到芯片组 SB 的 SATA 端口运行,它们的带宽非常好,并且驱动程序支持非常好。
但是,如果与机械 HDD 一起使用,同步的随机写入访问模式(例如:数据库、虚拟机)与具有 WB 缓存的硬件 RAID 控制器相比将受到很大影响。另一方面,当与企业级 SSD 一起使用时(即:具有断电保护的写缓存),软件 RAID 通常会表现出色,并提供比硬件 RAID 卡更高的结果。不幸的是,消费级 SSD 只有易失性写入缓存,在同步写入工作负载中提供非常低的 IOPS(尽管在读取和异步写入方面非常快)。
还要考虑软件 RAID 并非都是平等的。Windows 软件 RAID 在性能方面名声不佳,甚至存储空间似乎也没有太大区别。Linux MD Raid 异常快速且用途广泛,但 Linux I/O 堆栈由多个独立的部分组成,您需要仔细了解这些部分以获取最大性能。ZFS 奇偶校验 RAID (ZRAID) 非常先进,但如果配置不正确,IOPS 可能会很差;另一方面,镜像+条带化的表现相当不错。无论如何,它需要一个用于同步写入处理 (ZIL) 的快速 SLOG 设备。
底线:
您购买的任何硬件控制器都需要电池或闪存支持的缓存解决方案。最后悔没有这样做。
但是要回答您的问题,大多数控制器都具有可配置的缓存比率......因此 100%读取缓存和 0%写入缓存否定了对 BBU 保护的需要。您的写入性能将很糟糕。
我无法解决您的软件 RAID 问题,因为它取决于。Linux MD RAID与 Windows Software RAID 不同,后者与ZFS 之类的不同。ZFS 等解决方案的性能优于硬件,因为它们利用了服务器的 RAM 和 CPU 资源。
你眼中的 RAID 控制器是一个便宜的,基本上是一个 fakeraid。它甚至取决于您的主板提供一些功能,例如内存,并且没有很多主板支持它,导致您无法加载驱动程序。
关于硬件与软件 RAID 本身。我不再使用 HW-RAID,除非它是一个带有 EMC 标志的盒子。对于其他所有事情,出于一些非常简单的原因,我只是再次切换回 SW-RAID 很多卫星。
您需要额外的硬件并且需要匹配它们。您还需要匹配固件并保持同步。许多磁盘将无法正常工作,并且您将在没有明确原因的情况下增加 IO 延迟。
额外的硬件很昂贵,因此您可以将额外的 1000 美元(带有两个/三个磁盘的体面控制器)用于更好的小型解决方案。投资于更多磁盘和标准控制器、ECC 内存、更快的 CPU。如果您打算将其运行时间超过保修期,或者不想支付隔夜运输的快递费用,则可以使用现场备用磁盘。
升级很痛苦,因为您需要跟踪磁盘和控制器的操作系统补丁和固件。这可能会导致无法再升级/更新的情况。
关于磁盘格式。足够多的供应商使用一些内部布局来存储与您的硬件和固件组合的修订相关的数据。这可能会导致更换部件使您无法访问您的数据的情况。
这是一个单点故障和一个瓶颈。只有一个控制器位于一个 PCI 桥后,并不能提供您真正需要的性能和冗余。这也导致不存在将数据迁移到控制器范围之外的另一个磁盘集的迁移路径。
新一代的 SW-RAID 软件或 ZFS 和 BtrFS 等解决方案已经解决了这些问题中的大部分问题。请记住,最终您要保护数据,而不是快速访问,而是冗余垃圾。
去年(从 2014 年到 2015 年)我使用 2 个 LSI 9300 HBA 和 2 个 LSI 9361-8i RAID 控制器测试了几个并行的 CentOS 6.6 RAID 1(镜像)配置,系统构建于以下:2U Supermicro CSE- 826BAC4-R920LPB 机箱,ASUS Z9PE-D16 主板,2 个 Intel Xeon E5-2687W v2 八核 3.4 GHz 处理器,镜像 Seagate ST6000NM0014 6TB SAS 12Gbs,512 GB RAM。请注意,这是完全符合 SAS3 (12Gbps) 的配置。
我浏览了有关调优软件的文章,并且使用 Linux 软件 RAID 超过 10 年。在运行基本 I/O 测试(dd-oflag=direct 5k to 100G files、hdparam -t 等)时,软件 RAID 似乎比硬件 RAID 更有利。软件 RAID 通过单独的 HBA 进行镜像。我已经用标准的 CentOS 6 内核、kernel-lt 和 kernel-ml 配置进行了测试。我还尝试了各种关于 Linux 软件 RAID 的在线文章所建议的各种 mdadm、文件系统、磁盘子系统和 o/s 调整。尽管进行了调优、测试、调优和测试,但当在读取世界、事务处理系统(具有 MySQL 或 Oracle 数据库)中运行时,我发现运行硬件 RAID 控制器会导致性能提高 50 倍。
很多很多个月以来,我都不相信硬件 RAID 会变得更好,但是,在对 Linux 软件 RAID 进行了详尽的研究、测试和调整之后,这就是我的结果。
这里的大多数作家只是对“写洞”一无所知。这是允许硬件 RAID 的电池备份单元与软件 RAID 缺乏此类备份单元的基础。好吧,例如,Linux 软件 RAID 实现要么支持写操作的位图,要么在不干净关闭的情况下进行完整的“奇偶校验”重新计算。ZFS 总是努力进行全条带写入以避免这种不一致或推迟重新检查。所以,总而言之,现在足够智能的软件 RAID 往往已经足够好用,而不是“谁知道里面有什么”所谓的“硬件 RAID”。
至于问题的缓存部分,真的没那么重要,因为操作系统本身的写入缓存可能比“硬件”适配器大得多。
我一直在工作。这在很大程度上取决于你在做什么以及你支持的团队水平。为操作系统运行 Raid 0 或 1 的 SW 控制器,没有什么特别的。在数据库上运行带有 Raid 5 的 SW 控制器是自找麻烦!某些硬件控制器确实可以为您提供更好的性能,但这取决于它是否可以缓存以及 raid 卡的处理器芯片组。也不是所有的操作系统都支持所有的软件控制器。因此,有时您可能必须购买硬件才能运行 ESXi……除非您使用 sata 连接。