为什么一个 LVM 卷上的延迟始终较高?

为什么一个 LVM 卷上的延迟始终较高?

我有一台使用 LVM 和 RAID1 的服务器。其中一个卷的 IO 延迟(由 diskstats_latency munin 插件测量)始终高于同一组中的其他卷。

相关图表

如您所见,深橙色 /root 卷的 IO 延迟始终较高。实际上是物理设备平均延迟的十倍。它还具有最高的最小值和最大值。我主要担心的不是在高负载下出现的峰值,而是(半)空闲时的恒定负载。

该服务器运行带有 VServer 内核的 D​​ebian Squeeze,并具有四个 VServer 容器和一个 KVM 客户机。

我正在寻找方法来解决(或至少了解)这种情况。

以下是系统配置的一些部分:

root@kvmhost2:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/system--host-root
                       19G  3.8G   14G  22% /
tmpfs                  16G     0   16G   0% /lib/init/rw
udev                   16G  224K   16G   1% /dev
tmpfs                  16G     0   16G   0% /dev/shm
/dev/md0              942M   37M  858M   5% /boot
/dev/mapper/system--host-isos
                       28G   19G  8.1G  70% /srv/isos
/dev/mapper/system--host-vs_a
                       30G   23G  6.0G  79% /var/lib/vservers/a
/dev/mapper/system--host-vs_b
                      5.0G  594M  4.1G  13% /var/lib/vservers/b
/dev/mapper/system--host-vs_c
                      5.0G  555M  4.2G  12% /var/lib/vservers/c
/dev/loop0            4.4G  4.4G     0 100% /media/debian-6.0.0-amd64-DVD-1
/dev/loop1            4.4G  4.4G     0 100% /media/debian-6.0.0-i386-DVD-1
/dev/mapper/system--host-vs_d
                       74G   55G   16G  78% /var/lib/vservers/d
root@kvmhost2:~# cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /dev devtmpfs rw,relatime,size=16500836k,nr_inodes=4125209,mode=755 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
/dev/mapper/system--host-root / ext3 rw,relatime,errors=remount-ro,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
/dev/md0 /boot ext3 rw,sync,relatime,errors=continue,data=ordered 0 0
/dev/mapper/system--host-isos /srv/isos ext3 rw,relatime,errors=continue,data=ordered 0 0
/dev/mapper/system--host-vs_a /var/lib/vservers/a ext3 rw,relatime,errors=continue,data=ordered 0 0
/dev/mapper/system--host-vs_b /var/lib/vservers/b ext3 rw,relatime,errors=continue,data=ordered 0 0
/dev/mapper/system--host-vs_c /var/lib/vservers/c ext3 rw,relatime,errors=continue,data=ordered 0 0
/dev/loop0 /media/debian-6.0.0-amd64-DVD-1 iso9660 ro,relatime 0 0
/dev/loop1 /media/debian-6.0.0-i386-DVD-1 iso9660 ro,relatime 0 0
/dev/mapper/system--host-vs_d /var/lib/vservers/d ext3 rw,relatime,errors=continue,data=ordered 0 0
root@kvmhost2:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
      975779968 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      979840 blocks [2/2] [UU]

unused devices: <none>
root@kvmhost2:~# iostat -x
Linux 2.6.32-5-vserver-amd64 (kvmhost2)         06/28/2012      _x86_64_        (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.09    0.14    2.92    1.51    0.00   92.35

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda              23.25   161.12    7.46   37.90   855.27  1596.62    54.05     0.13    2.80   1.76   8.00
sdb              22.82   161.36    7.36   37.66   850.29  1596.62    54.35     0.54   12.01   1.80   8.09
md0               0.00     0.00    0.00    0.00     0.14     0.02    38.44     0.00    0.00   0.00   0.00
md1               0.00     0.00   53.55  198.16   768.01  1585.25     9.35     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.48   20.21    16.70   161.71     8.62     0.26   12.72   0.77   1.60
dm-1              0.00     0.00    3.62   10.03    28.94    80.21     8.00     0.19   13.68   1.59   2.17
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     9.17     0.00    9.64   6.42   0.00
dm-3              0.00     0.00    6.73    0.41    53.87     3.28     8.00     0.02    3.44   0.12   0.09
dm-4              0.00     0.00   17.45   18.18   139.57   145.47     8.00     0.42   11.81   0.76   2.69
dm-5              0.00     0.00    2.50   46.38   120.50   371.07    10.06     0.69   14.20   0.46   2.26
dm-6              0.00     0.00    0.02    0.10     0.67     0.81    12.53     0.01   75.53  18.58   0.22
dm-7              0.00     0.00    0.00    0.00     0.00     0.00     7.99     0.00   11.24   9.45   0.00
dm-8              0.00     0.00   22.69  102.76   407.25   822.09     9.80     0.97    7.71   0.39   4.95
dm-9              0.00     0.00    0.06    0.08     0.50     0.62     8.00     0.07  481.23  11.72   0.16

root@kvmhost2:~# ls -l /dev/mapper/
total 0
crw------- 1 root root 10, 59 May 11 11:19 control
lrwxrwxrwx 1 root root      7 Jun  5 15:08 system--host-kvm1 -> ../dm-4
lrwxrwxrwx 1 root root      7 Jun  5 15:08 system--host-kvm2 -> ../dm-3
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-isos -> ../dm-2
lrwxrwxrwx 1 root root      7 May 11 11:19 system--host-root -> ../dm-0
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-swap -> ../dm-9
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-vs_d -> ../dm-8
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-vs_b -> ../dm-6
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-vs_c -> ../dm-7
lrwxrwxrwx 1 root root      7 Jun  5 15:06 system--host-vs_a -> ../dm-5
lrwxrwxrwx 1 root root      7 Jun  5 15:08 system--host-kvm3 -> ../dm-1
root@kvmhost2:~#

答案1

我倾向于检查你的分区、设备映射器、文件系统、RAID 条带对齐

iostat x

blk_read和与所有层进行比较,如果所有内容都对齐,它们应该是均匀的。另外,请发布和blk_wrtn的输出df -hcat /proc/mounts

您可能会发现,您在该特定逻辑卷上执行的读/写操作比其他任何逻辑卷多得多。

对齐是实现健康、快速 I/O 的关键 - 否则,您将不必要地在所有存储层之间增加读/写。

请记住,如果某个分区比其他分区更活跃,也会导致您所描述的情况。此外,文件系统的选择和挂载该文件系统时设置的标志也会导致这种情况。只需添加 noatime和,nodiratime就可以稍微减少 I/O 活动,从而减少延迟。

答案2

这可能是因为 mlog 只存储在其中一个磁盘上。只需输入 lvs -a -o +devices即可了解哪些数据存储在哪个设备上。

您可以通过将 mlog 放在另一台设备上来防止这种情况。

相关内容