我一直认为硬件RAID卡即使没有缓存也可以提供更好的性能。我的意思是,您拥有专用的硬件来执行任务。如果是这样的话,获得没有高速缓存的RAID卡有什么好处,例如LSI 9341-4i并不便宜。
如果仅通过高速缓存,是否有一种高速缓存配置可以立即写入磁盘,但将数据保留在高速缓存中以进行读取操作,从而使BBU不再优先?
#1 楼
简而言之:如果使用低端RAID卡(无缓存),请帮个忙,然后切换到软件RAID。如果使用中高端卡(带有BBU或NVRAM),则硬件通常(但并非总是如此!)是一个不错的选择。长答案:当计算能力受到限制时,硬件RAID卡具有显着的优势,可以减轻涉及它们的RAID方案(RAID 3/4/5,RAID6,ecc)的奇偶校验/综合症计算的负担。
随着CPU性能的不断提高,优势基本消失了:即使是我的笔记本电脑的旧CPU(Core i5 M 520,Westmere一代)在单个执行内核上的异或性能也超过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设备。
底线:
如果您的工作负载对同步随机写不敏感,那么您不需要RAID卡
如果需要RAID卡,请不要购买没有WB缓存的RAID控制器
如果计划使用SSD软件,则首选RAID,但请记住,对于高同步随机性写您需要一个受功率损耗保护的SSD(例如:Intel S4600,Samsung PM / SM863等)。为了获得纯性能,最好的选择可能是Linux MD Raid,但是如今,我通常使用带区卷的ZFS镜像。如果由于镜像而无法损失一半的空间,并且您需要ZFS高级功能,请选择ZRAID,然后仔细考虑您的VDEV设置。
如果即使使用SSD,也确实需要硬件RAID卡,请使用SSD具有写保护的缓存(Micron M500 / 550/600具有部分保护-确实不够用,但总比没有要好-而Intel DC和S系列具有全面的断电保护,对于企业三星SSD来说也是如此)
如果需要RAID6,并且将使用普通的机械硬盘,请考虑购买具有512 MB(或更多)WB缓存的快速RAID卡。 RAID6具有较高的写入性能损失,并且适当大小的WB缓存至少可以为小型同步写入(例如:文件系统日志)提供快速的中间存储。
如果您需要带有HDD的RAID6,但又不能/不想购买硬件RAID卡,请仔细考虑软件RAID设置。例如,使用Linux MD Raid的可能解决方案是使用两个阵列:用于日志写入/数据库日志的小型RAID10阵列,以及用于原始存储(作为文件服务器)的RAID6阵列。另一方面,带有SSD的软件RAID5 / 6速度非常快,因此您可能不需要RAID卡即可进行全SSD设置。
评论
OP正在谈论管理程序。 RAID5应该是不可能的,写缓存将是必须的。
–ewwhite
15年4月24日在19:02
实际上,即使在2016年,六驱动器软件RAID 5/6的写入速度也低于25 MB / s,而2010年推出的合适的硬件RAID卡的写入速度则高于500 MB / s。这是在Intel RSTe和Windows Storage Spaces上。我只是不了解现代CPU的瓶颈。
–先生
16-3-15在5:29
软件RAID 5/6的问题在于,写入操作通常会触发读取-修改-写入操作,从而大大降低了磁盘的速度。启用BBU的硬件RAID控制器可以在单个磁盘访问/事务中合并多次写入,从而大大提高了性能。
–shodanshok
16 Mar 15 '16 at 9:28
“与SSD一起使用时,[随机读取]常常会出类拔萃”-如果SSD不是企业级SSD(通常这意味着它没有用于断电保护的电容器)并且不会说谎,那么即使SSD也可以对于像顺序fsync()这样的操作,IOPS极低。请参阅本文,该文章显示了不带电容器的Samsung NVMe SSD每秒只能完成约250 fsync(我也已经测量过)。带有电容器的SSD可以使fsyncs / s提高约30倍,而硬件RAID控制器的电池则可以提高100倍。
– nh2
18年6月6日在2:05
可能添加到您的答案中的可能情况:如果需要对由HDD支持的软件RAID进行顺序写入,请考虑在RAID层顶部使用LVM,并将一对小型SSD引入RAID1,使用该存储作为“写回” “ LVM缓存位于HDD的LVM卷的顶部。一旦SSD恢复成功,这将使OS能够快速恢复写入成功,并且LVM层可以在以后的某个时间使用备用IOP将写入推送到HDD。 (需要镜像SSD,因为如果高速缓存中有未写入的数据,高速缓存的丢失将破坏基础卷。)
– cdhowie
19 Sep 5'3:33
#2 楼
您将需要电池或闪存支持的高速缓存解决方案来购买任何硬件控制器。最遗憾的是没有这样做。但是要回答您的问题,大多数控制器具有可配置的缓存比率...因此100%的读取缓存和0%的写入缓存消除了对BBU保护的需要。您的写入性能会很糟糕。
我不能解决您的软件RAID问题,因为这取决于。 Linux MD RAID与Windows Software RAID不同,后者与ZFS之类的东西不同。 ZFS之类的解决方案可以比硬件更好地执行,因为它们利用了服务器的RAM和CPU资源。
评论
所谓“写性能会很烂”,是指与没有缓存的软件RAID或硬件RAID差不多?还是如果卡将高速缓存专用于读取,则写入性能是否会受到惩罚?
–ItsJustMe
15年4月24日在11:26
这取决于您在做什么。如果您没有写密集型应用程序,那么性能下降可能不是问题。
–ewwhite
15年4月24日在11:34
这是Proxmox主机,带有用于邮件和Web托管的Windows VM。数据库使用率不高,但是电子邮件服务可能确实有很多写活动。目前,我只是在争论是否拥有一个只读缓存卡是否比软件RAID值得。
–ItsJustMe
2015年4月24日11:37
使用支持Flash的RAID控制器进行虚拟化。
–ewwhite
15-4-24在11:38
我们使用软件RAID运行了一个有大约4000个帐户的cyrus邮件服务器。活跃帐户每天要达到300到600个。性能明显比我们的带有硬件RAID和BBU的主要cyrus邮件服务器差。 BBU和RAID控制器高速缓存可确保数据安全,但同时也可提高性能。这是因为一旦数据到达控制器,它就可以告诉OS写入已完成。否则,它将不得不等待硬盘驱动器发出写入完成的信号。这样可以节省大量的时钟周期。移至硬件RAID并解决。
–拉布拉多
2015年5月14日17:56
#3 楼
您可以看到的RAID控制器很便宜,而且基本上是假货。它甚至取决于您的主板来提供一些功能(例如内存),并且没有很多主板对此提供支持,这导致您无法加载驱动程序。关于硬件vs SW-RAID本身。除非是带有EMC徽标的包装盒,否则我不再使用HW-RAID。对于其他所有事情,出于一些非常简单的原因,我又切换回了SW-RAID,许多月亮。
您需要其他硬件,并且需要与之匹配。您还需要匹配固件并使之保持同步。许多磁盘将无法正常工作,并且您将在没有明确原因的情况下增加IO延迟。
其他硬件价格昂贵,因此您可以使用额外的$ 1000(带有两个/三个磁盘的体面的控制器)作为小型解决方案更好。将其投资于更多磁盘和标准控制器,ECC内存,更快的CPU。而现场备用磁盘可能是如果您计划将其运行超过保修期,或者不想为通宵运送支付快递费用。
升级非常麻烦,因为您需要跟踪磁盘和控制器的操作系统补丁和固件。可能会导致无法再进行升级/更新。
在磁盘格式上。足够多的供应商使用一些内部布局来存储与您的硬件和固件组合的修订版相关的数据。这可能导致替换零件使您无法访问数据的情况。
这是SPOF和瓶颈。仅在一个PCI桥后面仅安装一个控制器并不能提供您真正需要的性能和冗余。这样一来,就不存在将数据迁移到控制器无法访问的另一磁盘集的迁移路径。
这些问题中的大多数已经通过新一代的SW-RAID软件或ZFS和BtrFS之类的解决方案得到了解决。请记住,最后您要保护数据,而不是快速访问而是冗余的垃圾。
评论
我不同意。许多人对Dell,HP,IBM和高端LSI RAID控制器感到满意。但老实说,大多数现代高质量服务器已经具有板载RAID解决方案,因此购买单个控制器的想法有些陈旧。软件RAID解决方案还需要考虑低延迟的写工作负载。 ZFS有一个ZIL,但是在这方面缺少许多其他软件RAID实现。
–ewwhite
2015年4月24日12:30
我也将与您的最后一段有所不同,RAID是可用性而不是保护。保护需要备份而不是RAID。
–Rowan Hawkins
18年1月4日在23:35
@ewwhite你们都谈论Linux SW-RAID。你们中的任何人都对特定于供应商的SW-RAID有反馈,例如HPE的Smart Array S100i SR Gen10软件RAID?当涉及到数据时,这是您要依靠的东西吗?据我所知,Hyper-V Server 2019支持该功能,这是我感兴趣的领域。对于Linux,有些不确定的软件包是否是顶级软件包,但是我的管理程序仍然不会基于Linux ... h20195.www2.hpe.com/v2/gethtml.aspx?docname=a00019427enw
– NoOne
20 Mar 15 '20 at 19:17
#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。请注意,这是完全符合SAS3(12Gbps)的配置。我浏览了有关调优软件的文章,并且使用Linux软件RAID已有10多年了。在运行基本I / O测试(dd-oflag =将5k定向到100G文件,hdparam -t等)时,软件RAID似乎可以很好地堆叠以进行硬件突袭。通过单独的HBA镜像的软件RAID。我已经尽力使用标准CentOS 6内核,kernel-lt和kernel-ml配置进行测试。我还尝试了各种mdadm,文件系统,磁盘子系统以及各种关于Linux软件RAID的在线文章所建议的o / s调整。尽管进行了调优,测试,调优和测试,但是在读取环境中运行事务处理系统(具有MySQL或Oracle数据库)时,我发现运行硬件RAID控制器可以使性能提高50倍。我将其归因于硬件RAID优化的缓存控制。
许多月以来,我一直不相信硬件RAID会好得多,但是,在对Linux软件RAID进行了详尽的研究,测试和调整之后,那是我的结果。
#5 楼
这里的大多数作家只是对“写洞”一无所知。这是允许对硬件RAID的备用备份单元大喊大叫,而对于软件RAID则缺少此类备份的基础。好吧,对于e。例如,Linux软件RAID实现要么支持写操作的位图,要么在不干净关机的情况下进行完整的“奇偶校验”重新计算。 ZFS始终努力进行全条纹写入,以避免这种不一致或推迟对其进行重新检查。因此,总而言之,如今足够智能的软件RAID通常足以使用而不是代替“谁知道里面有什么”所谓的“硬件RAID”。关于缓存的一部分问题,这真的无关紧要,因为OS本身的写入缓存可能比“硬件”适配器的缓存大得多。
评论
这是避免没有适当的受保护WB缓存的硬件RAID卡的另一个原因。关于Linux MD Raid的注释:它不能完全避免写入漏洞。由于它没有断电保护功能,因此在突然断电的情况下,最终将丢失数据(请考虑传输中的数据和/或部分写入)。即使在单磁盘方案中也可以肯定会发生这种情况,但是奇偶校验性质或RAID5 / 6会放大这种情况。在最坏的情况下,关键的文件系统元数据可能会损坏,但是现代文件系统具有足够的弹性,可以很好地恢复。但是,某些数据可能会丢失。
–shodanshok
15年4月24日在21:51
@shodanshok,你完全错了。认为
– poige
15年4月25日在9:16
如果保持良好状态,许多电池可以为WB缓存供电24-96小时,这是充足的时间来恢复供电,除非真正的极端情况。此外,现代控制器已将NVRAM(读取:闪存)存储器用作长期存储,因此,在电源故障的情况下,较小的电池/超级电容将刷新NV存储器中的缓存内容,从而可以将数据保留数月或数年。一句话,BBU RAID控制器将在几乎所有情况下防止RAID5 / 6漏洞。
–shodanshok
2015年4月26日在6:36
你说写洞是免疫的。开发人员说不是,尽管他们说在现实世界中使用它并不重要。
–shodanshok
15年4月27日在7:41
抱歉,但是您写道:“这是允许为硬件RAID的备用备份单元大声疾呼的基础,而对于软件RAID的此类备份则不存在”。这是错误的。正确的硬件RAID卡可提供额外的保护,我多次告诉您,这是同一批LSR开发人员的看法。现在我问一个问题:您的说法是对还是错?错了,请编辑您的答案,否则其他用户可能会被这个废话蒙骗。
–shodanshok
2015年4月28日在18:33
评论
我注意到有利于硬件RAID的一些事情:根据我的经验,如果您正在运行软件RAID,并且系统执行除干净关机以外的任何操作,您将对阵列进行故障处理并必须进行重建。如果系统停机时没有写入,则HW raid不会出错。