1卷组中2个磁盘的加载量不均匀

我们有一台带有2个Fusion-IO SSD的应用服务器放入一个卷组中形成一个卷。 在这个卷内有128个通过内存映射访问的40GB的文件。

在查看iostat时,我们发现工作负载不是均匀分布在两个磁盘上。 差距是25%。

这个问题的可能原因是什么? 我应该如何调查这样的问题?

>lsblk NAME MAJ:MIN RM SIZE RO MOUNTPOINT ... fioa 253:0 0 2.9T 0 └─instvg-instant (dm-17) 252:17 0 5.8T 0 /instant fiob 253:16 0 2.9T 0 └─instvg-instant (dm-17) 252:17 0 5.8T 0 /instant >iostat -xk -d fioa -d fiob Linux 3.0.101-0.47.52-default (...) 08/10/2015 _x86_64_ Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util fioa 0.00 0.00 1295.05 3116.02 65326.45 16359.80 37.04 0.29 0.07 0.01 3.82 fiob 0.00 0.00 1847.35 4090.05 88087.96 21608.44 36.95 0.42 0.02 0.01 5.98 

我需要lvs -o +devices,segtype的输出lvs -o +devices,segtype来证实这一点,但我最好的猜测是,你刚刚在两个PV上线性地喷射LV。 从负载平衡angular度来看,这是一个坏主意,因为文件系统往往会从头到尾填满,文件系统的前半部分在一个PV上,而后半部分在另一个PV上。 所以,直到文件系统已经满了,几乎所有的I / O都会进入第一个PV。

要解决这个问题,需要将LV创build为striped体积,而不是linear 。 这可以通过-i 2传递给lvcreate来完成。 将LV转换为条纹是可能的,但前提是你有一堆空余的空间,而这些空间在这里并没有出现。 这样做的方法是在两个PV上交替使用LV,这样(例如)第一个8KiB的数据将在第一个PV上,第二个PV上的下一个8KiB,第一个PV上的下一个8KiB,以及等等。

这就是说,你的I / Oconfiguration文件不是非常失衡。 你永远不会在两个PV上获得相同的I / O,仅仅是因为到PV的请求不会被完美平衡。