提高 mdadm RAID-6 写入速度

Bar*_*ter 8 raid mdadm

我的 5x1Tb WD Green HDD 家庭服务器中有一个 mdadm RAID-6。读取速度绰绰有余 - dd 为 268 Mb/s。但写入速度仅为 37.1 Mb/s。(均通过 dd 在 48Gb 文件上进行测试,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: <none>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

诸如回写、屏障、nobh 之类的事情没有帮助。DD blocksize=1M, 8M 没有任何改变。看起来 mdadm 会物理读取扇区来计算奇偶校验,即使这无关紧要......对吗?

更新:更改条带缓存后速度下降实际上是因为 1 个 HDD 在测试期间可能出现故障,很好 :-D

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

j-g*_*tus 9

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

根据此论坛帖子(在挪威语中,抱歉)“您拥有的磁盘越多,系统越快,调整此参数就越重要”:

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

引用他的速度进行比较:

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

CPU: Intel X3430 (4x2.4GHz, 8GB DDR3 ECC RAM)

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

我的家庭服务器和你有几乎一样的磁盘,使用 RAID 5:

磁盘:RAID 5 中的 4x1.5TB WD Green(stripe_size_cache=256 - 默认值)

CPU:英特尔 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,但写入性能更差。