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

我一直在阅读RAID控制器/设置,而且有一点非常重要,那就是没有caching的硬件控制器如何提供与软件RAID相同的性能。 这是真的吗?

我一直认为即使没有caching,硬件RAID卡也能提供更好的性能。 我的意思是,你有专门的硬件来执行任务。 如果是这样的话,获得没有caching的RAID卡的好处是什么,就像LSI 9341-4i那样不便宜。

另外,如果性能增益只能用于caching,那么是否有cachingconfiguration立即写入磁盘,但将数据保存在caching中用于读取操作,从而使BBU不是优先级?

简而言之:如果使用低端RAID卡(没有高速caching),请自己帮忙,然后切换到软件RAID。 如果使用中高端卡(BBU或NVRAM),那么硬件通常(但并不总是如下所示)是一个不错的select。

长的回答:当计算能力受到限制时,硬件RAID卡在涉及RAIDscheme的RAIDscheme(RAID 3/4/5,RAID6,ecc)上有明显的优势。

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

硬件RAID今天保持的优势是存在以BBU或NVRAMforms的功率损失保护的DRAM高速caching。 这个受保护的caching给予随机写入访问的非常低的延迟(以及读取命中),并且基本上将随机写入转换为顺序写入。 没有这种caching的RAID控制器几乎是无用的 。 而且,一些低端RAID控制器不仅没有caching,而且强制禁用磁盘的私有DRAMcaching, 导致性能比没有RAID卡时慢。 一个例子是DELL的PERC H200和H300卡:如果新的固件没有改变,他们完全禁用磁盘的私有caching(并且当磁盘连接到RAID控制器时不能重新启用)。 自己做个好事,永远不要买这样的控制器。 而更高端的控制器往往禁用磁盘的私有caching,他们至less有自己的受保护的caching – 使HDD(而不是SSD!)专用caching有点多余。

虽然这不是结束。 即使有能力的控制器(具有BBU或NVRAM高速caching的控制器)也可能在与SSD一起使用时产生不一致的结果,这主要是因为SSD真的需要快速的专用高速caching来进行高效的FLASH页面编程/擦除。 而一些(大多数?)控制器让你重新启用磁盘的私有caching(例如:PERC H700 / 710 / 710P让用户重新启用它),如果私有caching不被写保护,你可能会丢失数据的电力损失。 确切的行为实际上是控制器和固件的依赖(例如:在具有256 MB WBcaching和启用磁盘caching的DELL S6 / i ,我在多次计划的功率损耗testing中没有损失),给出了不确定性和更多关注。

另一方面,开放源代码软件RAID更具可控性 – 它们的软件不是封装在专有固件中,而是具有明确定义的元数据模式和行为。 软件RAID假定磁盘的私有DRAM高速caching没有被保护,但同时它对可接受的性能也是至关重要的 – 所以它们通常不会禁用它,而是使用ATA FLUSH / FUA命令来确定关键数据稳定存储。 由于它们经常从连接到芯片组SB的SATA端口运行,因此它们的带宽非常好,并且驱动程序支持非常好。

但是,如果与机械硬盘一起使用,与具有WBcaching的硬件RAID控制器相比,同步的随机写入访问模式(例如:数据库,虚拟机)将会受到很大的影响。 另一方面,当与SSD一起使用时,它们通常比硬件RAID卡所能达到的效果更高,效果更好。

还要考虑软件RAID并不都是一样的。 Windows软件RAID的信誉不错,性能明智,甚至存储空间似乎没有太大的不同。 Linux MD Raidexception快速且多function,但是Linux I / O堆栈由多个独立的部分组成,您需要认真理解以提高性能。 ZFS ZRAID是非常先进的,但如果configuration不正确,它会给你很差的IOP。 而且,它需要一个用于同步写入处理(ZIL)的快速SLOG设备。

底线:

  1. 如果你的工作负载没有同步随机写入敏感,你不需要RAID卡
  2. 如果您需要RAID卡,请不要购买没有WBcaching的RAID控制器
  3. 如果您打算使用SSD,则首选软件RAID。 我最好的select是Linux MD Raid。 如果您需要ZFS高级function,请使用ZRAID,但仔细想想您的vdev设置!
  4. 即使使用SSD,也需要一个硬件RAID卡,使用带有写保护caching的SSD(Micron M500 / 550/600具有部分保护function – 并不足够,但总比没有效果好),而Intel DC和S系列则具有完全的功耗保护,同样可以说企业三星SSD)
  5. 如果您需要使用RAID6,并使用普通的机械硬盘,请考虑购买带有512 MB(或更多)WBcaching的快速RAID卡。 RAID6具有较高的写入性能损失,适当大小的WBcaching至less可以为小型同步写入(例如文件系统日志)提供快速的中间存储。
  6. 如果你需要RAID6与硬盘,但你不能/不想购买硬件RAID卡,仔细想想你的软件RAID设置。 例如,使用Linux MD Raid的可能解决scheme是使用两个arrays:用于日志写入/数据库日志的小型RAID10arrays和用于原始存储(作为文件服务器)的RAID6arrays。 另一方面,使用SSD的软件RAID5 / 6速度非常快,所以您可能不需要使用RAID卡进行全SSD设置。

你需要一个电池或闪存支持caching解决scheme为您购买的任何硬件控制器。 最遗憾的是没有这样做 。

但是为了回答你的问题,大多数控制器具有可configuration的高速caching比率……所以100%的读取高速caching和0%的写入高速caching不需要BBU保护。 你的写作performance会很糟糕。

我不能解决你的软件RAID问题,因为它取决于。 Linux MD RAID不同于Windows软件RAID,与ZFS不同。 像ZFS这样的解决scheme可以比硬件执行得更好,因为它们利用服务器的RAM和CPU资源。

你有你的眼睛RAID控制器是一个便宜的,基本上是一个fakeraid。 它甚至取决于你的主板提供一些function,如内存,而不是很多主板支持它,导致您无法加载驱动程序。

关于硬件与SW-RAID本身。 例如,我不再使用HW-RAID,除非它是带有EMC徽标的盒子。 对于其他所有事情,我只是为了几个非常简单的原因,再次将SW-RAID切换回了许多卫星。

  1. 您需要额外的硬件,并且需要匹配它们。 您还需要匹配固件并保持同步。 许多磁盘将无法正常工作,并且无法清除您的IO延迟。

  2. 额外的硬件是昂贵的,所以你可以使用额外的$ 1000(体面的控制器与两个/三个磁盘)更好的小解决scheme。 投资更多的磁盘和标准控制器,ECC内存,更快的CPU。 如果您计划运行时间长于保修期,或者不想支付隔夜运费的快递费用,则可能还有现场备用磁盘。

  3. 需要跟踪磁盘和控制器的操作系统修补程序和固件,因此升级是一件痛苦的事情。 这可能导致无法再升级/更新的情况。

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

  5. 这是一个SPOF和一个瓶颈。 只有一个控制器在一个PCI桥后面不会给你真正需要的性能和冗余。 由此也不存在将数据迁移到控制器外部的另一个磁盘集的迁移path。

这些点大部分已经被新一代的SW-RAID软件或ZFS和BtrFS等解决scheme所照顾。 请记住,最终你想保护你的数据,而不是快速访问,但冗余的垃圾。

我花了去年(从2014年到2015年),使用2个LSI 9300 HBA或2个LSI 9361-8i RAID控制器testing几个并行的CentOS 6.6 RAID 1(镜像)configuration,系统构build如下:2U Supermicro CSE- 826BAC4-R920LPB机箱,一块华硕Z9PE-D16主板,2块Intel Xeon E5-2687W v2八核3.4 GHz处理器,镜像希捷ST6000NM0014 6TB SAS 12Gbs,512 GB RAM。 请注意,这是完全符合SAS​​3(12Gbps)的configuration。

我浏览了一些关于调优软件的文章,我已经使用Linux软件RAID超过10年了。 当运行基本的I / Otesting(dd-oflag =直接5k到100G文件,hdparam -t等)时,软件RAID似乎有利于硬件RAID。 软件RAID通过单独的HBA进行镜像。 我已经尽可能使用标准的CentOS 6内核,kernel-lt和kernel-mlconfiguration进行testing。 我还尝试了各种关于Linux软件RAID的在线文章所build议的各种mdadm,文件系统,磁盘子系统和o / s调音。 尽pipe在读取世界,事务处理系统(具有MySQL或Oracle数据库)中运行时进行了调优,testing,调优和testing,但我发现运行硬件RAID控制器会使性能提高50倍。 我将其归因于硬件RAID优化caching控制。

对于很多很多个月,我都不相信硬件RAID可以做得更好,但是经过对Linux软件RAID的详尽研究,testing和调整之后,这些都是我的结果。

这里的大部分作者都只是无知的“ 写洞 ”。 这是允许为硬件RAID的battey备份单元而哭泣的基础,而不是软件RAID的这种缺乏。 那么,例如,Linux软件RAID实现要么支持写操作的位图,要么在非干净closures的情况下进行完全的“奇偶校验”重新计算。 ZFS总是努力进行全条带写入以避免这种不一致或推迟重新检查。 所以,总而言之,现在的智能型软件RAID往往足以胜任所谓的“硬件RAID”,而不是“谁知道什么是内部”。

至于问题的caching部分,确实没有太大关系,导致操作系统本身的写入caching比“硬件”适配器要大得多。

我一直在工作。 这很大程度上取决于你的行为和团队的支持程度。 一个SW控制器为操作系统运行Raid 0或1,没什么特别的。 在数据库上运行一个带有Raid 5的SW控制器是很麻烦的! 有些硬件控制器确实给你提供了更好的性能,但这取决于它是否可以caching以及RAID卡的处理器芯片组。 并不是所有的操作系​​统都支持所有的软件控制器。 所以有时你可能不得不购买硬件来运行ESXi …除非你使用sata连接。