常见的RAID性能杀手:一致性检查

更新1/1/2022

在这里张信哲代言博彩 欧宝娱乐,我们用了很多LSI MegaRAID控制器这是市面上一些比较流行的控制器。虽然LSI技术在2014年被Avagotech收购,但每个人仍然将其称为LSI控制器,所以我们也会这样做。抛开语义不谈,在这篇文章中,我们想讨论一个常见的性能杀手,你可能会在你的RAID阵列中遇到:计划一致性检查。

我们在运行Supermicro基于SAS LSI 3108的控制器的服务器上遇到了一些I/O瓶颈后发现了这个问题。与Supermicro服务器配套的LSI 3108相当于LSI MegaRAID 9300系列控制器,例如9361 - 4 - i而且9361 - 8.我们的配置总共有36个8TB HGST氦气填充12Gb/s SAS硬盘,分成3个12驱动器的RAID-6虚拟磁盘(MegaRAID虚拟磁盘,不是VMWare/Hyper-V),总共有240TB可用容量。每周,控制器都尽职尽责地一致性检查我们所有240TB的数据。这个检查大约需要24小时,所以大约15%的时间我们是在减少I/O容量的情况下运行的。这完全没有必要,因为服务器位于高质量的数据中心中,没有遇到任何问题。

一致性检查

为了提供手头问题的更多背景信息,我们将讨论一点一致性检查。LSI MegaRAID控制器默认每周对所有RAID进行一次后台一致性检查。一致性检查会梳理你的数据,以确保它是正确的一致的.这意味着它会检查您的虚拟驱动器是否有奇偶校验或块错误。如果它发现错误或坏块,就可以用正确的数据重写它。

当运行一致性检查时,一定百分比的容量用于执行检查,默认为30%(您可以更改此值)。您还可以运行两种类型的一致性检查,并发的或顺序的。Concurrent是默认设置,同时或并发地检查每个驱动器。顺序是指当它逐个地按顺序检查每个驱动器时,因此理论上对您的阵列的压力较小。

一致性检查如何影响性能?

从理论上讲,一致性检查是一个很好的工具,在您认为RAID可能出现问题的情况下非常有用,但是一致性检查的默认时间间隔是每168小时一次,或者一周一次。如果您正在运行一个大型阵列,有一大堆磁盘和块要检查,它可以从任何地方- 24小时。这意味着为了一次可能根本没有必要的检查而牺牲了一整天的缓慢性能,就像我们的RAID所发生的情况一样。

结论

除非您遇到异常事件,如断电、设备未检测到错误,或者有其他原因认为RAID有问题,否则确实没有理由经常运行一致性检查。每隔几个月(8到12周)或甚至一年几次就足够了,如果您觉得有什么问题,就在周六安排一次,这样用户就不会抱怨性能变慢了。

下面的图片提供了关于如何使用StorCLI命令检查和更改其中一些值的更具体的信息:

运行StorCLI命令

在这里你可以看到运行StorCLI的命令,然后显示一致性检查的信息:/c0 show cc。在下面的信息中,我们可以看到当前的一致性检查模式是Concurrent,执行延迟(当它运行时)是每168小时一次,或每周一次,以及下一次检查将在什么时候运行,在本例中是2月26日上午12:00。

命令自动关闭一致性检查

如果需要完全关闭自动一致性检查,使用/c0 set cc=off命令。以下信息应该显示CC Mode为“OFF”。

命令集一致性检查

在上图中,我们展示了如何将一致性检查设置为按顺序运行,每1344小时(8周)运行一次,以及何时开始下一次一致性检查并因此开始计划。执行命令为/c0 set cc=seq delay=1344 starttime=2016/02/27 04。注意,延迟必须以小时为单位设置,最终值“04”设置检查在27日凌晨4:00运行。必须选择数值“>24”来设置运行小时。我们只选了27号,因为那天是星期六。此外,为了让检查同时运行,命令是相同的,只是将“cc=seq”替换为“cc=conc”。

命令show一致性检查速率

使用StorCLI命令/c0 show ccrate显示检查设置的运行容量。图中显示的值是默认率,即30%。

命令集一致性检查速率

最后,要设置一致性检查使用的容量率,命令是/c0 set ccrate=15。显然,您可以将数字更改为您想要检查使用的任何%,但在本例中,我们只使用了15%,因此检查使用的容量并不像默认的30那么多。

gwadmin
gwadmin
文章:34
Baidu