为什么 mdadm 在同步安装时写入速度慢得无法使用?

chr*_*and 6 raid ubuntu debian mdadm disk-cache

我有一个 6 磁盘 raid6 mdadm 阵列,我想对写入进行基准测试:

root@ubuntu:~# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid6 sda[0] sdf[5] sde[4] sdd[3] sdc[2] sdb[1]
      1953545984 blocks level 6, 64k chunk, algorithm 2 [6/6] [UUUUUU]
Run Code Online (Sandbox Code Playgroud)

由于缓存,基准可能不准确 - 例如,注意这里的写入速度高于应有的速度:

root@ubuntu:/mnt/raid6# dd if=/dev/zero of=delme bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.276026 s, 380 MB/s
Run Code Online (Sandbox Code Playgroud)

现在我们可以很容易地禁用每个磁盘缓存:

root@ubuntu:~# hdparm -W0 /dev/sd*

/dev/sda:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

/dev/sdb:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

/dev/sdc:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

/dev/sdd:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

/dev/sde:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)

/dev/sdf:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)
Run Code Online (Sandbox Code Playgroud)

但仍然有 Linux 缓存:

root@ubuntu:/mnt/raid6# dd if=/dev/zero of=delme bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00566339 s, 1.9 GB/s
Run Code Online (Sandbox Code Playgroud)

要禁用 Linux 缓存,我们可以同步挂载文件系统:

mount -o remount,sync /mnt/raid6
Run Code Online (Sandbox Code Playgroud)

但在此之后的写入成为这样慢于他们应该是:

root@ubuntu:/mnt/raid6# dd if=/dev/zero of=delme bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 23.3311 s, 449 kB/s
Run Code Online (Sandbox Code Playgroud)

就好像 mdadm 需要异步安装才能运行一样。这里发生了什么?

Nil*_*ils 0

您能告诉我们您的 6 个磁盘是如何组成的吗?在我看来,它们似乎是 SAN/DAS 的一部分,无论目标如何 - 可能由相同的物理磁盘组成(因此,如果所有 6 个磁盘都驻留在同一磁盘上,与单个磁盘相比,性能会降低 6 个)。

查看 anwerleaks.com 的链接。

那么你是如何设置位图的呢?