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

Its*_*tMe 84 raid performance lsi

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

我一直认为硬件 RAID 卡即使没有缓存也能提供更好的性能。我的意思是,你有专门的硬件来执行任务。如果是这种情况,获得没有缓存的 RAID 卡(例如 LSI 9341-4i 之类的并不便宜)有什么好处。

此外,如果只有缓存才能提高性能,是否有缓存配置可以立即写入磁盘但将数据保留在缓存中以进行读取操作,从而使 BBU 不是优先事项?

sho*_*hok 157

简而言之:如果使用低端RAID卡(无缓存),帮自己一个忙,改用软件RAID。如果使用中高端卡(带 BBU 或 NVRAM),那么硬件通常(但不总是!见下文)是一个不错的选择。

长答案:当计算能力有限时,硬件 RAID 卡在卸载涉及它们的 RAID 方案(RAID 3/4/5、RAID6、ecc)的奇偶校验/综合计算方面具有显着优势。

然而,随着不断增加的CPU性能,这种优势基本消失:连我的笔记本电脑的古CPU(酷睿i5中号520,Westmere的一代)具有超过4 GB / s的XOR性能和超过3 GB RAID-6综合征性能/ s的每单执行核心

今天硬件 RAID 保持的优势是存在断电保护的 DRAM 缓存,以 BBU 或 NVRAM 的形式存在。这种受保护的缓存为随机写入访问(以及命中的读取)提供了非常低的延迟,并且基本上将随机写入转换为顺序写入。没有这种缓存的 RAID 控制器几乎毫无用处。而且,一些低端的RAID控制器不仅没有缓存,而是强行禁用磁盘的私有DRAM缓存,导致性能比没有RAID卡更慢。戴尔的 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)是非常先进的,但如果配置不正确,可以给你非常差眼压; 另一方面,镜像+条带化表现相当不错。无论如何,它需要一个快速的 SLOG 设备来进行同步写入处理 (ZIL)。

底线:

  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(美光 M500/550/600 有部分保护 - 不是真的足够但总比没有好 - 而 Intel DC 和 S 系列有完全断电保护,企业级三星 SSD 也是如此)
  5. 如果您需要 RAID6 并且您将使用普通的机械 HDD,请考虑购买具有 512 MB(或更多)WB 缓存的快速 RAID 卡。RAID6 具有很高的写入性能损失,适当大小的 WB 缓存至少可以为小型同步写入(例如:文件系统日志)提供快速的中间存储。
  6. 如果您需要带 HDD 的 RAID6 但您不能/不想购买硬件 RAID 卡,请仔细考虑您的软件 RAID 设置。例如,Linux MD Raid 的一个可能解决方案是使用两个阵列:一个用于日志写入/DB 日志的小型 RAID10 阵列,以及用于原始存储(作为文件服务器)的 RAID6 阵列。另一方面,带有 SSD 的软件 RAID5/6 速度非常快,因此对于全 SSD 设置,您可能不需要 RAID 卡。

  • OP 正在谈论管理程序。RAID5 应该是不可能的,写缓存将是必须的。 (2认同)
  • 事实上,即使在 2016 年,6 驱动器软件 RAID 5/6 的写入速度也低于 25 MB/s,而 2010 年的适当硬件 RAID 卡的写入速度则超过 500 MB/s。这适用于 Intel RSTe 和 Windows 存储空间。我只是不明白现代CPU 的瓶颈是什么。 (2认同)
  • 软件 RAID 5/6 的问题在于写入通常会触发读取-修改-写入,这反过来会显着降低磁盘速度。启用 BBU 的硬件 RAID 控制器可以在单个磁盘访问/事务中合并多个写入,从而大大提高性能。 (2认同)

eww*_*ite 7

您需要为您购买的任何硬件控制器配备电池或闪存支持的缓存解决方案。最后悔没有这样做

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

我无法解决您的软件 RAID 问题,因为这取决于。Linux MD RAID与 Windows 软件 RAID 不同,后者不同于ZFS 之类的东西。像ZFS解决方案可以,因为他们充分利用服务器的内存和CPU资源进行比硬件更好。


小智 7

你眼中的 RAID 控制器是一个便宜的,基本上是一个 fakeraid。它甚至取决于您的主板提供一些功能,例如内存,并且没有多少主板支持它导致您无法加载驱动程序。

关于 HW 与 SW-RAID 本身。我不再使用 HW-RAID,除非它是一个带有 EMC 标志的盒子,例如。对于其他一切,我只是出于一些非常简单的原因再次切换回 SW-RAID 很多卫星。

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

  2. 额外的硬件很昂贵,因此您可以使用额外的 1000 美元(具有两个/三个磁盘的体面控制器)来更好地构建小型解决方案。投资于更多磁盘和标准控制器、ECC 内存、更快的 CPU。如果您计划运行时间超过保修期或不想支付隔夜运输的快递费用,则可以使用现场备用磁盘。

  3. 升级很痛苦,因为您需要跟踪磁盘和控制器的操作系统补丁和固件。这可能会导致无法再进行升级/更新的情况。

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

  5. 这是一个 SPOF 和瓶颈。只有一个 PCI 桥接器后面只有一个控制器并不能提供您真正需要的性能和冗余。这也导致不存在将数据迁移到控制器无法到达的另一个磁盘集的迁移路径。

这些问题中的大部分都已通过新一代 SW-RAID 软件或 ZFS 和 BtrFS 等解决方案得到解决。请记住,最终您希望保护您的数据,而不是快速访问,而是多余的垃圾。

  • 我不同意。许多人对戴尔、惠普、IBM 和更高端的 LSI RAID 控制器感到满意。但老实说,大多数现代优质服务器已经具有板载 RAID 解决方案,因此购买单个控制器的想法有点过时。软件 RAID 解决方案还需要考虑低延迟写入工作负载。ZFS 具有 ZIL,但在这方面缺乏许多其他软件 RAID 实现。 (4认同)
  • 我也与你的最后一段不同,RAID 是可用性而不是保护。保护需要备份而不是 RAID。 (2认同)