RAID1 – mdadm镜像 – 不按预期执行并行读取?

我们有一个由mdadm驱动的三路RAID 1镜像。 我想我读了mdadm应该采取多个同时读取请求,并分布在镜像中的不同驱动器(并行化读取),以提高读取性能,但在我们的testing和观察iostat -xm 1的输出,它只出现/ dev / sda正在被使用,即使该设备的I / O从5个不同的md设备饱和。

我误解了什么? mdadm是否需要configuration不同? 我们的版本(CentOS 6.7)不支持这个吗? 我不确定为什么这样做。

基准设置 – 同时运行以下命令:

 dd if=/dev/md2 bs=1048576 of=/dev/null count=25000 dd if=/dev/md3 bs=1048576 of=/dev/null count=25000 dd if=/dev/md4 bs=1048576 of=/dev/null count=25000 dd if=/dev/md5 bs=1048576 of=/dev/null count=25000 dd if=/dev/md6 bs=1048576 of=/dev/null count=25000 

而那些正在观看iostat -xm 1的输出(样本输出包括在下面 – 镜像由sda,sdb和sdc组成)。

 Device: rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 100669.00 0.00 10710.00 0.00 435.01 0.00 83.18 33.28 3.11 0.09 100.00 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 md1 0.00 0.00 19872.00 0.00 77.62 0.00 8.00 0.00 0.00 0.00 0.00 md2 0.00 0.00 18272.00 0.00 71.38 0.00 8.00 0.00 0.00 0.00 0.00 md5 0.00 0.00 18272.00 0.00 71.38 0.00 8.00 0.00 0.00 0.00 0.00 md7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 md6 0.00 0.00 18240.00 0.00 71.25 0.00 8.00 0.00 0.00 0.00 0.00 md4 0.00 0.00 18208.00 0.00 71.12 0.00 8.00 0.00 0.00 0.00 0.00 md3 0.00 0.00 18528.00 0.00 72.38 0.00 8.00 0.00 0.00 0.00 0.00 md0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

再次执行testing,但改变它,所以你有五个读取在同一个MD设备上执行(例如/ dev / md2),你应该看到他们正在分发。

一次读取操作只能从镜像中的一个驱动器读取。 它将从分配给镜像的第一个磁盘开始,在这种情况下,该镜像是/ dev / sda。 由于您configuration了5个以上的MD设备,并且正在从每个设备执行一次读取操作,所以它们都从/ dev / sda中拉出。

我build议不要configuration多个MD设备,只使用跨越整个SSD的单个设备。

或者,改变你的testing方法,强制它执行几个不同的驱动器。 看看bonnie ++ ,这很漂亮。