mdadm raid6恢复从一个驱动器读取更多?

在恢复期间,我刚刚更换了raid6arrays(由8个驱动器组成)中的故障驱动器,但是在iostat中发现了一些奇怪的东西。 所有驱动器获得相同的速度(如预期),除了一个驱动器(sdi)不断读取比其他更快。

它也读了大约八分之一的速度,这可能与数组中共有八个驱动器有关,但是我不知道为什么…

在整个恢复期间(总是相同的驱动器读取速度比其他所有驱动器都快),并且查看所有驱动器的统计数据,所有驱动器读取/写入的数据几乎相同,除了读取了八分之一以上的sdi。

一些iostat统计平均为100s:

Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn sdb 444.80 26.15 0.00 2615 0 sdb1 444.80 26.15 0.00 2615 0 sdc 445.07 26.15 0.00 2615 0 sdc1 445.07 26.15 0.00 2615 0 sdd 443.21 26.15 0.00 2615 0 sdd1 443.21 26.15 0.00 2615 0 sde 444.01 26.15 0.00 2615 0 sde1 444.01 26.15 0.00 2615 0 sdf 448.79 26.15 0.00 2615 0 sdf1 448.79 26.15 0.00 2615 0 sdg 521.66 0.00 26.15 0 2615 sdg1 521.66 0.00 26.15 0 2615 sdh 443.32 26.15 0.00 2615 0 sdh1 443.32 26.15 0.00 2615 0 sdi 369.23 29.43 0.00 2942 0 sdi1 369.23 29.43 0.00 2942 0 

任何人都可以提供一个合理的解释? 当我发现它比我快了1/8时,我觉得这与平价有关,但是确实没什么意义(我不知道mdadm中具体的raid实现,但是对于其中的一个,它肯定可以在一个驱动器上存储所有的奇偶校验…)。

更新:那么,我刚刚replace另一个驱动器(相同的数组),我看到完全相同的结果,但这次与不同的驱动器读取速度更快(实际上,这是我为最后一次恢复添加的驱动器已决定它想要做更多的工作)。

 Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn sdb 388.48 24.91 0.00 2490 0 sdb1 388.48 24.91 0.00 2490 0 sdc 388.13 24.91 0.00 2491 0 sdc1 388.13 24.91 0.00 2491 0 sdd 388.32 24.91 0.00 2491 0 sdd1 388.32 24.91 0.00 2491 0 sde 388.81 24.91 0.00 2491 0 sde1 388.81 24.91 0.00 2491 0 sdf 501.07 0.00 24.89 0 2489 sdf1 501.07 0.00 24.89 0 2489 sdg 356.86 28.03 0.00 2802 0 sdg1 356.86 28.03 0.00 2802 0 sdh 387.52 24.91 0.00 2491 0 sdh1 387.52 24.91 0.00 2491 0 sdi 388.79 24.92 0.00 2491 0 sdi1 388.79 24.92 0.00 2491 0 

这些是4k驱动器(但所有的驱动器(或者至less是这样),他们仍然报告512字节的扇区)。 所以我想我可能会以某种方式错误地alignment分区(我可能不知道的含义取决于mdadm是如何工作的,而且我猜的是分区大小,不pipe怎么样都很容易检查):

 debbie:~# fdisk -l -u /dev/sd[bcdefghi] | grep ^/dev/sd /dev/sdb1 2048 3906988207 1953493080 fd Linux raid autodetect /dev/sdc1 2048 3906988207 1953493080 fd Linux raid autodetect /dev/sdd1 2048 3906988207 1953493080 fd Linux raid autodetect /dev/sde1 2048 3906988207 1953493080 fd Linux raid autodetect /dev/sdf1 2048 3907024064 1953511008+ fd Linux raid autodetect /dev/sdg1 2048 3907024064 1953511008+ fd Linux raid autodetect /dev/sdh1 2048 3906988207 1953493080 fd Linux raid autodetect /dev/sdi1 2048 3906988207 1953493080 fd Linux raid autodetect 

f和g是新的驱动器,看起来稍微大一些,但是它们都是从同一个扇区开始的(所有的驱动器都是相同的模型(在同一个控制器上),但是新的驱动器是比〜rest)。

好奇。 RAID6当然不会将所有内容都存储在一个驱动器上,所以通常没有理由让一个驱动器被读取得比其他驱动器更多。 我注意到在这一个驱动器上的TPS也有相应的下降 。 我的猜测是, sdi是一个不同的驱动模型或技术,或连接到不同的控制器模型,因此可以不同的读取(每个事务更大的读取)。