软件与硬件RAID性能和缓存使用情况


73

我已经阅读了很多有关RAID控制器/设置的文章,其中有很多内容是没有缓存的硬件控制器如何提供与软件RAID相同的性能。真的是这样吗?

我一直认为,即使没有缓存,硬件RAID卡也会提供更好的性能。我的意思是,您具有专用的硬件来执行任务。如果真是这样,获得没有缓存的RAID卡有什么好处,例如LSI 9341-4i并不便宜。

另外,如果仅通过高速缓存才能获得性能提升,是否有一种高速缓存配置可立即写入磁盘,但将数据保留在高速缓存中以进行读取操作,从而使BBU不再成为优先事项?


我注意到有利于硬件RAID的一些事情:根据我的经验,如果您正在运行软件RAID,并且系统执行除干净关机以外的任何操作,您将对阵列进行故障处理并必须进行重建。如果系统停机时未进行写操作,则HW raid不会出错。
Loren Pechtel 2015年

Answers:


146

简而言之:如果使用低端RAID卡(无缓存),请帮个忙,并切换到软件RAID。如果使用中高端卡(带有BBU或NVRAM),则通常是硬件的选择(但不总是如此!请参见下文)。

长答案:当计算能力受到限制时,硬件RAID卡具有显着的优势,可以减轻涉及它们的RAID方案(RAID 3/4/5,RAID6,ecc)的奇偶校验/综合症计算的负担。

但是,随着CPU性能的不断提高,这种优势基本上消失了:即使是我的笔记本电脑的旧CPU(Core i5 M 520,Westmere一代)的XOR性能也超过4 GB / s,RAID-6综合症性能超过3 GB / s 。单一执行核心

如今,硬件RAID保持的优势是以BBU或NVRAM的形式存在掉电保护的DRAM缓存。这种受保护的缓存为随机写入访问(和命中的读取)提供了非常低的延迟,并且基本上将随机写入转换为顺序写入。没有这种缓存的RAID控制器几乎是无用的。而且,一些低端RAID控制器不仅没有缓存,而且强行禁用了磁盘的专用DRAM缓存,这导致性能比完全没有RAID卡时要慢。一个例子是DELL的PERC H200和H300卡:如果较新的固件没有更改,它们将完全禁用磁盘的专用缓存(并且在将磁盘连接到RAID控制器时无法重新启用它)。帮自己一个忙,做永远不要购买此类控制器。尽管甚至更高端的控制器也经常禁用磁盘的专用缓存,但它们至少具有自己的受保护的缓存-使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)非常先进,但是如果配置不正确,可能会给您带来非常差的IOP;另一方面,镜像+条带化效果很好。无论如何,它需要一个用于同步写入处理(ZIL)的快速SLOG设备。

底线:

  1. 如果您的工作负载对同步随机写入不敏感,则不需要RAID卡
  2. 如果您需要RAID卡,请不要购买没有WB缓存的RAID控制器
  3. 如果您计划使用SSD软件,则首选RAID,但请记住,对于高同步随机写入,您需要一个受功耗保护的SSD(例如:Intel S4600,Samsung PM / SM863等)。为了获得纯性能,最好的选择可能是Linux MD Raid,但如今,我通常使用带区卷的ZFS镜像。如果由于镜像而无法损失一半的空间,并且您需要ZFS高级功能,请选择ZRAID,但请仔细考虑您的VDEV设置。
  4. 如果您即使使用SSD也确实需要硬件RAID卡,请使用具有写保护高速缓存的SSD(Micron M500 / 550/600具有部分保护-确实不足,但总比没有好-而Intel DC和S系列则具有全部功率损耗)保护,对于企业三星SSD来说也是如此)
  5. 如果需要RAID6,并且将使用普通的机械硬盘,请考虑购买具有512 MB(或更多)WB缓存的快速RAID卡。RAID6具有较高的写入性能损失,并且适当大小的WB缓存至少可以为小型同步写入(例如:文件系统日志)提供快速的中间存储。
  6. 如果您需要带有HDD的RAID6,但又不能/不想购买硬件RAID卡,请仔细考虑软件RAID设置。例如,使用Linux MD Raid的可能解决方案是使用两个阵列:用于日志写入/数据库日志的小型RAID10阵列,以及用于原始存储(作为文件服务器)的RAID6阵列。另一方面,带有SSD的软件RAID5 / 6速度非常快,因此您可能不需要RAID卡即可进行全SSD设置。

非常感谢您的出色解释,我不知道RAID卡会禁用HDD上的缓存。这种类型的服务器无法吸引近800美元以上的投资,因此我将进一步研究Software RAID设置,并可能会采用它。
ItsJustMe,2015年

2
OP正在谈论管理程序。RAID5应该是不可能的,写缓存将是必须的。
ewwhite

1
实际上,即使在2016年,六驱动器软件RAID 5/6的写入速度也低于25 MB / s,而2010年推出的合适的硬件RAID卡的写入速度则高于500 MB / s。这是在Intel RSTe和Windows Storage Spaces上。我只是不了解现代CPU的瓶颈。
Monstieur

1
软件RAID 5/6的问题在于,写入操作通常会触发读取-修改-写入操作,从而大大降低了磁盘的速度。启用BBU的硬件RAID控制器可以在单个磁盘访问/事务中合并多次写入,从而大大提高了性能。
shodanshok '16

1
“与SSD一起使用时,[随机读取]通常会出类拔萃” -如果SSD不是企业级SSD(通常这意味着它没有用于断电保护的电容器)并且不会说谎,那么即使SSD也可以对于顺序操作之类的IOPS极低fsync()请参阅本文该文章显示了不带电容器的三星NVMe SSD每秒只能执行约250 fsync(我也已经测量过)。带有电容器的SSD可以使fsyncs / s提高约30倍,而硬件RAID控制器的电池则可以提高100倍。
nh2

7

您将需要电池或闪存支持的高速缓存解决方案来购买任何硬件控制器。最遗憾的是没有这样做

但是要回答您的问题,大多数控制器都具有可配置的缓存比率...因此100%的读取缓存和0%的写入缓存消除了对BBU保护的需要。您的写入性能会很糟糕。

我无法解决您的软件RAID问题,因为这取决于。Linux MD RAID与Windows Software RAID不同,后者与ZFS之类的东西不同。ZFS之类的解决方案可以比硬件更好地执行,因为它们利用了服务器的RAM和CPU资源。


所谓“写性能会很烂”,是指与没有缓存的软件RAID或硬件RAID差不多?还是如果卡将高速缓存专用于读取,则写入性能是否会受到惩罚?
ItsJustMe,2015年

这取决于您在做什么。如果您没有写密集型应用程序,那么性能下降可能不是问题。
ewwhite

这是Proxmox主机,带有用于邮件和Web托管的Windows VM。没有太多的数据库使用情况,但是电子邮件服务可能确实有很多写活动。目前,我只是在争论是否拥有一个只读缓存卡是否值得通过软件RAID。
ItsJustMe,2015年

使用支持Flash的RAID控制器进行虚拟化。
ewwhite

1
我们使用软件RAID运行了一个有大约4000个帐户的cyrus邮件服务器。活跃帐户每天要达到300到600个。性能明显比我们的带有硬件RAID和BBU的主要cyrus邮件服务器差。BBU和RAID控制器高速缓存可确保数据安全,但同时也可提供性能。这是因为一旦数据到达控制器,它就可以告诉OS写入已完成。否则,它将不得不等待硬盘驱动器发出写入完成的信号。这样可以节省大量的时钟周期。移至硬件RAID并解决。
labradort

7

您可以看到的RAID控制器很便宜,基本上是假货。它甚至依赖于您的主板来提供一些功能,例如内存,并且没有很多主板对此提供支持,这导致您无法加载驱动程序。

关于硬件与软件RAID本身。除非是带有EMC徽标的包装盒,否则我不再使用HW-RAID。对于其他所有事情,出于一些非常简单的原因,我又切换回了SW-RAID许多卫星。

  1. 您需要其他硬件,并且需要匹配它们。您还需要匹配固件并使之保持同步。许多磁盘将无法正常工作,并且您会毫无原因地增加IO延迟。

  2. 额外的硬件价格昂贵,因此您可以使用额外的$ 1000(带有两个/三个磁盘的体面的控制器)来获得更好的小型解决方案。将其投资于更多磁盘和标准控制器,ECC内存,更快的CPU。如果您打算将其运行的时间超过保修期限,或者不想为通宵运送支付快递费用,则可以使用现场备用磁盘。

  3. 升级非常麻烦,因为您需要跟踪磁盘和控制器的OS补丁程序和固件。这可能会导致无法再进行升级/更新的情况。

  4. 磁盘格式。足够多的供应商使用一些内部布局来存储与您的硬件和固件组合的修订版相关的数据。这可能导致替换零件使您无法访问数据的情况。

  5. 这是一个SPOF和一个瓶颈。仅在一个PCI桥后面仅安装一个控制器并不能提供您真正需要的性能和冗余。随之而来的是,没有迁移路径可以将数据迁移到控制器无法访问的另一个磁盘集。

这些问题中的大多数已经通过新一代的SW-RAID软件或ZFS和BtrFS之类的解决方案得到了解决。请记住,最后您要保护数据,而不是快速访问而是冗余的垃圾。


3
我不同意。许多人对Dell,HP,IBM和高端LSI RAID控制器感到满意。但老实说,大多数现代质量的服务器已经具有板载RAID解决方案,因此购买单个控制器的想法有些陈旧。软件RAID解决方案还需要考虑低延迟的写工作负载。ZFS有一个ZIL,但是在这方面缺少许多其他软件RAID实现。
ewwhite

2
我也将与您的最后一段有所不同,RAID是可用性而不是保护。保护需要备份而不是RAID。
罗恩·霍金斯

4

去年(从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。请注意,这是完全符合SAS​​3(12Gbps)的配置。

我浏览了有关调优软件的文章,并且使用Linux软件RAID已有10多年了。当运行基本的I / O测试(dd-oflag =直接将5k转换为100G文件,hdparam -t等)时,软件RAID似乎可以很好地堆叠以进行硬件突袭。通过单独的HBA镜像的软件RAID。我已经尽力使用标准CentOS 6内核,kernel-lt和kernel-ml配置进行测试。我还尝试了各种mdadm,文件系统,磁盘子系统和o / s调整,这些调整是关于Linux软件RAID的各种在线文章提出的。尽管进行了调优,测试,调优和测试,但在读取环境中的事务处理系统(具有MySQL或Oracle数据库)中运行时,我发现运行硬件RAID控制器可使性能提高50倍。

很多月以来,我都不敢相信硬件RAID会好得多,但是,在对Linux软件RAID进行了详尽的研究,测试和调整之后,这些都是我的结果。


2

这里的大多数作家只是对“ 写洞 ” 一无所知。这是允许对硬件RAID的备用备份单元大喊大叫,而对于软件RAID则缺少这样的基础。好吧,例如,Linux软件RAID实现要么支持写操作的位图,要么在不干净关机的情况下进行完整的“奇偶校验”重新计算。ZFS始终努力进行全条纹写入,以避免这种不一致或推迟重新检查。因此,总而言之,当今足够智能的软件RAID通常足以使用而不是代替“谁知道里面有什么”的所谓“硬件RAID”。

至于问题的缓存部分,实际上并没有太大关系,因为OS本身的写入缓存可能比“硬件”适配器的缓存大得多。


1
这是避免没有适当的受保护WB缓存的硬件RAID卡的另一个原因。关于Linux MD Raid的注释:它不能完全避免写入漏洞。由于它没有断电保护功能,因此在突然断电的情况下,最终将丢失数据(请考虑传输中的数据和/或部分写入)。即使在单磁盘方案中也可以肯定会发生这种情况,但是奇偶校验性质或RAID5 / 6会放大这种情况。在最坏的情况下,关键的文件系统元数据可能会损坏,但是现代文件系统具有足够的弹性,可以很好地恢复。但是,某些数据可能会丢失。
shodanshok

@shodanshok,你完全错了。Think
poige 2015年

1
如果保持良好状态,许多电池可以为WB缓存供电24-96小时,这是充足的时间来恢复供电,除非真正的极端情况。此外,现代控制器已将NVRAM(读取:闪存)存储器作为长期存储,因此,在电源故障的情况下,较小的电池/超级电容将刷新NV存储器中的缓存内容,从而可以将数据保留数月或数年。也就是说,BBU RAID控制器在几乎所有情况下防止RAID5 / 6漏洞。
shodanshok

1
你说写洞是免疫的。开发人员说不是,尽管他们说在现实世界中使用它并不重要。
shodanshok

1
抱歉,但写道:“这是允许为硬件RAID的备用备份单元大声疾呼的基础,而对于软件RAID的此类备份则不存在”这是错误的。正确的硬件RAID卡可提供额外的保护,我多次告诉您,这是同一批LSR开发人员的看法。现在我问一个问题:您的陈述是对还是错?错了,请编辑您的答案,否则其他用户可能会被这个废话蒙骗。
shodanshok

0

我一直在工作。这在很大程度上取决于您的工作以及团队的支持水平。SW控制器针对操作系统运行Raid 0或1,没有什么特别的办法。在数据库上运行带有Raid 5的SW控制器很麻烦!某些硬件控制器确实可以为您提供更好的性能,但这取决于它是否可以缓存以及RAID卡的处理器芯片组。同样,并非每个操作系统都支持所有软件控制器。因此,有时您可能必须购买硬件才能运行ESXi ...除非使用SATA连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.