提高mdadm RAID-6写入速度

我的5x1Tb WD Green HDD家用服务器上有一个mdadm RAID-6。 读取速度绰绰有余 – 达到268 Mb / s。 但写入速度仅为37.1 Mb / s。 (两者都通过48Gb文件上的dd进行测试,RAM大小为1Gb,测试中使用的块大小为8kb)

你能否建议为什么写入速度如此之低,有没有办法改进它? 写入期间的CPU使用率仅为25%(即Opteron 165的1核心的一半)没有业务关键数据,服务器是UPS支持的。

mdstat是:

Personalities : [raid6] [raid5] [raid4] md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1] 2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU] bitmap: 0/8 pages [0KB], 65536KB chunk unused devices:  

有什么建议?

回写,障碍,nobh等事情没有帮助。 DD blocksize = 1M,8M没有改变任何东西。 看起来mdadm物理读取扇区来计算奇偶校验,即使它无关紧要……这是正确的吗?

更新:改变条带缓存后的速度降级实际上是因为1个硬盘可能在测试期间失败了,很好:-D

解决:增加条带缓存并切换到外部位图后,我的速度为160 Mb / s写入,260 Mb / s读取。 😀

您是否尝试过调优/ sys / block / mdX / md / stripe_cache_size?

根据这篇论坛post (挪威语,对不起)“调整此参数对于更多磁盘和更快的系统更为重要”:

在我的系统上,我使用值8192获得最佳性能。如果我使用默认值256,则写入性能下降66%。

引用他的速度进行比较:

磁盘:mdadm RAID6(-n 512)中的8xSeagate 2TB LP(5900RPM)(stripe_size_cache = 8192)。

CPU:Intel X3430(4×2.4GHz,8GB DDR3 ECC RAM)

速度:387 MB / s顺序写入,704 MB / s顺序读取,每秒669次随机搜索。

我的家庭服务器与您使用RAID 5的磁盘几乎相同:

磁盘:RAID 5中的4×1.5TB WD Green(stripe_size_cache = 256 – 默认值)

CPU:Intel i7 920(2.66 GHz,6 GB RAM)

速度:60 MB / s顺序写入,138 MB / s顺序读取(根据Bonnie ++)

因此,顺序写入性能约为读取性能的50%。

为了达到预期的性能, Linux Raid Wiki谈到RAID 5:

读取与RAID-0读取几乎相似,写入可能相当昂贵(需要在写入之前读入,以便能够计算正确的奇偶校验信息,例如在数据库操作中),或类似于RAID-1写入(执行较大的顺序写入时,可以直接从要写入的其他块计算奇偶校验)。

关于RAID 6:

读取性能与RAID-5类似,但写入性能更差。

尝试

echo 32768 > /sys/block/md0/md/stripe_cache_size

并检查;)