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

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

我刚刚更换了 raid6 阵列(由 8 个驱动器组成)中的一个故障驱动器,在恢复过程中,我确实注意到 iostat 中有些奇怪。所有驱动器的速度都相同(符合预期),但有一个驱动器(sdi)的读取速度始终快于其他驱动器。

它的读取速度也快了约八分之一,这可能与阵列中总共有八个驱动器有关,但我不知道为什么......

在整个恢复过程中都是如此(同一个驱动器的读取速度总是比其他驱动器快),从恢复的总体统计来看,所有驱动器的读取/写入量都差不多,除了 sdi 的读取量多八分之一。

一些 iostat 统计数据的平均值持续 100 秒:

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

有人能给出合理的解释吗?当我发现它快了大约八分之一时,我认为这与奇偶校验有关,但这真的没有多大意义(我不知道 mdadm 中具体的 raid 6 实现,但它肯定不能将所有奇偶校验存储在一个驱动器上...)。

更新:好吧,我刚刚确实更换了另一个驱动器(相同的阵列),我看到了完全相同的结果,但这次使用不同的驱动器读取速度更快(实际上,这是我为上次恢复添加的驱动器,它决定要做更多的工作)。

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 驱动器(但和所有驱动器一样(或至少曾经如此)它们仍报告 512 字节扇区)。因此我认为我可能以某种方式错误地对齐了分区(我不知道这可能有什么影响,取决于 mdadm 的工作方式和条带大小,我猜,无论如何很容易检查):

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 是新驱动器,看起来稍微大一些,但它们都从同一扇区开始(所有驱动器都是同一品牌和型号(并使用相同的控制器),但新驱动器的购买时间比其他驱动器晚约 6 个月)。

答案1

好奇。RAID6 当然不存储任何事物都在一个驱动器上,所以一般来说,没有理由让一个驱动器比其他驱动器读取得更多。我注意到有一个相应的减少在那个驱动器上的 TPS 中;我的猜测是,那sdi是不同型号或技术的驱动器,或者连接到不同型号的控制器,因此可以进行不同的读取(每个事务的读取次数更大)。

相关内容