我已经阅读了很多有关RAID控制器/设置的文章,其中有很多内容是没有缓存的硬件控制器如何提供与软件RAID相同的性能。真的是这样吗?
我一直认为,即使没有缓存,硬件RAID卡也会提供更好的性能。我的意思是,您具有专用的硬件来执行任务。如果真是这样,获得没有缓存的RAID卡有什么好处,例如LSI 9341-4i并不便宜。
另外,如果仅通过高速缓存才能获得性能提升,是否有一种高速缓存配置可立即写入磁盘,但将数据保留在高速缓存中以进行读取操作,从而使BBU不再成为优先事项?
我已经阅读了很多有关RAID控制器/设置的文章,其中有很多内容是没有缓存的硬件控制器如何提供与软件RAID相同的性能。真的是这样吗?
我一直认为,即使没有缓存,硬件RAID卡也会提供更好的性能。我的意思是,您具有专用的硬件来执行任务。如果真是这样,获得没有缓存的RAID卡有什么好处,例如LSI 9341-4i并不便宜。
另外,如果仅通过高速缓存才能获得性能提升,是否有一种高速缓存配置可立即写入磁盘,但将数据保留在高速缓存中以进行读取操作,从而使BBU不再成为优先事项?
Answers:
简而言之:如果使用低端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设备。
底线:
您将需要电池或闪存支持的高速缓存解决方案来购买任何硬件控制器。最遗憾的是没有这样做。
但是要回答您的问题,大多数控制器都具有可配置的缓存比率...因此100%的读取缓存和0%的写入缓存消除了对BBU保护的需要。您的写入性能会很糟糕。
我无法解决您的软件RAID问题,因为这取决于。Linux MD RAID与Windows Software RAID不同,后者与ZFS之类的东西不同。ZFS之类的解决方案可以比硬件更好地执行,因为它们利用了服务器的RAM和CPU资源。
您可以看到的RAID控制器很便宜,基本上是假货。它甚至依赖于您的主板来提供一些功能,例如内存,并且没有很多主板对此提供支持,这导致您无法加载驱动程序。
关于硬件与软件RAID本身。除非是带有EMC徽标的包装盒,否则我不再使用HW-RAID。对于其他所有事情,出于一些非常简单的原因,我又切换回了SW-RAID许多卫星。
您需要其他硬件,并且需要匹配它们。您还需要匹配固件并使之保持同步。许多磁盘将无法正常工作,并且您会毫无原因地增加IO延迟。
额外的硬件价格昂贵,因此您可以使用额外的$ 1000(带有两个/三个磁盘的体面的控制器)来获得更好的小型解决方案。将其投资于更多磁盘和标准控制器,ECC内存,更快的CPU。如果您打算将其运行的时间超过保修期限,或者不想为通宵运送支付快递费用,则可以使用现场备用磁盘。
升级非常麻烦,因为您需要跟踪磁盘和控制器的OS补丁程序和固件。这可能会导致无法再进行升级/更新的情况。
磁盘格式。足够多的供应商使用一些内部布局来存储与您的硬件和固件组合的修订版相关的数据。这可能导致替换零件使您无法访问数据的情况。
这是一个SPOF和一个瓶颈。仅在一个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 =直接将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进行了详尽的研究,测试和调整之后,这些都是我的结果。
这里的大多数作家只是对“ 写洞 ” 一无所知。这是允许对硬件RAID的备用备份单元大喊大叫,而对于软件RAID则缺少这样的基础。好吧,例如,Linux软件RAID实现要么支持写操作的位图,要么在不干净关机的情况下进行完整的“奇偶校验”重新计算。ZFS始终努力进行全条纹写入,以避免这种不一致或推迟重新检查。因此,总而言之,当今足够智能的软件RAID通常足以使用而不是代替“谁知道里面有什么”的所谓“硬件RAID”。
至于问题的缓存部分,实际上并没有太大关系,因为OS本身的写入缓存可能比“硬件”适配器的缓存大得多。