NVMe 磁盘显示 80% io 利用率,分区显示 0% io 利用率

NVMe 磁盘显示 80% io 利用率,分区显示 0% io 利用率

我有一台 CentOS 7 服务器(内核3.10.0-957.12.1.el7.x86_64),带有 2 个 NVMe 磁盘,设置如下:

# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1       259:0    0   477G  0 disk
├─nvme0n1p1   259:2    0   511M  0 part  /boot/efi
├─nvme0n1p2   259:4    0  19.5G  0 part
│ └─md2         9:2    0  19.5G  0 raid1 /
├─nvme0n1p3   259:7    0   511M  0 part  [SWAP]
└─nvme0n1p4   259:9    0 456.4G  0 part
  └─data-data 253:0    0 912.8G  0 lvm   /data
nvme1n1       259:1    0   477G  0 disk
├─nvme1n1p1   259:3    0   511M  0 part
├─nvme1n1p2   259:5    0  19.5G  0 part
│ └─md2         9:2    0  19.5G  0 raid1 /
├─nvme1n1p3   259:6    0   511M  0 part  [SWAP]
└─nvme1n1p4   259:8    0 456.4G  0 part
  └─data-data 253:0    0 912.8G  0 lvm   /data

我们的监控iostat持续显示nvme0n1ionvme1n1利用率超过 80%,而各个分区的 io 利用率为 0% 并且完全可用(250k iops,每秒 1GB 读/写)。

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.14    0.00    3.51    0.00    0.00   89.36

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme1n1           0.00     0.00    0.00   50.50     0.00   222.00     8.79     0.73    0.02    0.00    0.02  14.48  73.10
nvme1n1p1         0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
nvme1n1p2         0.00     0.00    0.00   49.50     0.00   218.00     8.81     0.00    0.02    0.00    0.02   0.01   0.05
nvme1n1p3         0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
nvme1n1p4         0.00     0.00    0.00    1.00     0.00     4.00     8.00     0.00    0.00    0.00    0.00   0.00   0.00
nvme0n1           0.00     0.00    0.00   49.50     0.00   218.00     8.81     0.73    0.02    0.00    0.02  14.77  73.10
nvme0n1p1         0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
nvme0n1p2         0.00     0.00    0.00   49.50     0.00   218.00     8.81     0.00    0.02    0.00    0.02   0.01   0.05
nvme0n1p3         0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
nvme0n1p4         0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
md2               0.00     0.00    0.00   48.50     0.00   214.00     8.82     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    1.00     0.00     4.00     8.00     0.00    0.00    0.00    0.00   0.00   0.00

有什么想法可能是这种行为的根本原因吗?
除了监控触发高 io 警报外,一切似乎都工作正常。

答案1

iostat的糟糕输出的来源似乎与内核错误有关,该错误将在RHEL/CentOS 版本 7.7 中解决。设置了调度程序的设备会受到影响,这是 NVME 驱动器的默认设置。 %utilsvctmkernel-3.10.0-1036.el7none

作为参考,有一个红帽解决方案(需要登录)描述了该错误。
在里面CentOS 错误报告有人写道,上述问题将通过上述内核/发行版本得到解决。

更改调度程序应该可以解决问题,直到新内核可用。由于它似乎只影响指标而不影响实际性能,因此另一种可能性是在新内核出现之前忽略这些指标。
由于缺少 NVME 驱动器,我无法验证这一点,也许 @michal kralik 可以验证这一点。

答案2

Linux 内核将指向各个逻辑分区的 IO 重新映射到实际执行 IO 的物理设备。

相关内容