我有两台服务器A和B,具有以下configuration:
我在单个RAID分区上运行以下基准testing: iozone -a -s 10240 -r 4 -+r
A的结果(摘录):
random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 10240 4 108 474 4193564 6667334 6556395 701 4058822 475 3653175 2303202 2616201 6785306 6101840
B的结果(摘录):
random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 10240 4 3332 46961 5478410 6836065 4994841 2951 2853077 728 2299133 1722202 2008983 4549365 4712594
两个服务器都启用了直写caching,但是我无法解释为什么服务器A(108kB / sec)的写入吞吐量性能与服务器B(3332 kB / sec)相比非常慢,假设我正在解释结果正确。
可能是什么原因? 两台服务器具有相同的其他文件系统选项(ext4 /相同的默认选项)。
对于涉及大量同步写入的工作负载,制造商B的磁盘是否优于来自A的磁盘呢?
谢谢。
关于testing结果之间的33倍差异,我们在评论中进行了讨论,结果发现, MegaCli64 -LDGetProp -DskCache -Lall -aAll显示出setup B在默认情况下启用了磁盘驱动器caching,而在禁用on 设置A。
使用MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll导致两个系统显示类似的性能。
运行启用了磁盘驱动器caching的RAID实际上类似于在启用了写入caching(强制写回模式)的情况下运行带有非BBU支持的易失性caching的RAID控制器。 它增强了性能,但同时增加了在发生电源故障时数据丢失和数据不一致的可能性。
如果你想避免这个机会,虽然仍然有一个体面的I / O性能,build议有一个BBU支持caching的控制器,并configuration您的卷写回模式禁用磁盘caching。
我不知道你是否已经知道,但是在软件和硬件RAID之间还有更多( 这是一个有趣的文章 )。
最后, MegaRAID SAS 2008或多或less地是增加了RAIDfunction的HBA或IO-控制器,而MegaRAID SAS 3108则是一个真正的RAID控制器 (也称为ROC或RAID-on-Chip),它具有专用处理器用于处理RAID计算。
SAS 2008尤其以一些OEM固件(如我在评论中提到的PERC H310中的DELL一个)出现可怕的写入性能而闻名。
特别是与您select的logging长度和文件大小相结合的同步模式似乎导致软件/假RAID的结果非常糟糕。
作为参考,这是我在我的工作站上使用软件RAID1中的10k WD Velocity Raptors:
random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 10240 4 182 181 1804774 2127084 2110984 167 1673159 153 1760968 954589 1203989 2022512 2062824
如果你在同步模式(O_SYNC)下运行,你的结果A似乎是合理的,可以通过软/假RAID来传递。
我不这么认为。 通过激活的写入caching,控制器可以执行某些操作来优化未决写入操作。
例如,有关caching操作的说明摘自HP Smart Array控制器的白皮书 :
写高速caching通常会在高负载环境中填满并保持大部分时间。 控制器利用这个机会分析待处理的写入命令以提高其效率。 控制器可以使用写入合并,将小写入与相邻的逻辑块合并为一个较大的写入,以加快执行速度。 控制器还可以执行命令重新sorting,重新排列高速caching中写入的执行顺序,以减less总体磁盘等待时间。
正如你所看到的那样,caching被用来进一步增强数组的写入性能 ,但是这对于任何后续的写或读操作的性能似乎都没有任何影响。
关于磁盘碎片,这是文件系统/操作系统级别的问题。 RAID控制器(在块级别上运行)根本无法优化文件系统碎片,因此,如果以write-trough或write-back模式运行,则不会有任何区别。