KVM虚机读写异常
问题现象
虚机load异常升高,df/ls容易卡住,宿主机load无明显异常。
问题定位
1、确定虚机盘符位置:
sudo virsh dumpxml xxx
根据<disk></disk>
信息确认虚机盘符均位于宿主机sdb
盘上。
2、检查宿主机磁盘读写情况
$ iostat -mx 5 2
Linux 3.10.0-957HG.el7.x86_64 03/01/2024 _x86_64_ (128 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.13 0.00 0.50 0.02 0.00 98.35
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.06 0.00 0.71 0.00 0.01 21.07 0.01 13.11 5.37 13.12 1.14 0.08
sdb 0.00 0.05 1.56 9.49 0.10 0.16 47.80 0.04 4.01 2.18 4.31 0.87 0.97
nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 68.17 0.00 0.12 0.12 0.00 0.10 0.00
dm-0 0.00 0.00 0.00 0.15 0.00 0.00 15.44 0.00 19.22 20.85 19.22 3.39 0.05
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.02 0.00 217.99 0.43 342.40 0.15 0.00
dm-2 0.00 0.00 0.00 0.63 0.00 0.01 20.39 0.01 13.30 0.70 13.30 1.24 0.08
avg-cpu: %user %nice %system %iowait %steal %idle
0.48 0.00 0.25 0.79 0.00 98.49
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.20 0.00 0.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 0.00 0.00 15.40 0.00 0.09 11.35 4.01 0.53 0.00 0.53 64.94 100.00
nvme0n1 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
dm-0 0.00 0.00 0.00 0.20 0.00 0.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 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
dm-2 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
或
$ sar -d -p
Linux 3.10.0-957HG.el7.x86_64 03/01/2024 _x86_64_ (128 CPU)
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 0.89 0.05 17.08 19.29 2.64 2967.37 228.84 20.33
Average: sdb 35.86 257.51 761.75 28.42 8.68 239.68 25.27 90.60
Average: nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: vg0-lv_root 0.18 0.05 2.87 16.63 0.73 4147.10 714.98 12.55
Average: vg0-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: vg0-lv_var 0.77 0.00 14.22 18.38 2.41 3088.81 257.28 19.90
可见sdb
的%util
异常,且iops
与带宽均不在高位。
3、检查sdb
是否存在相关IO
报错
$ sudo cat /var/log/messages | grep sdb | tail -10
Mar 1 15:08:45 xxx kernel: sd 4:2:1:0: [sdb] tag#0 megasas: target reset FAILED!!
Mar 1 15:08:45 xxx kernel: sd 4:2:1:0: [sdb] tag#0 Controller reset is requested due to IO timeout#012SCSI command pointer: (ffffa08bcb38f640)#011 SCSI host state: 5#011 SCSI
Mar 1 15:11:55 xxx kernel: sd 4:2:1:0: [sdb] tag#52 task abort called for scmd(ffffa08bcb38ddc0)
Mar 1 15:11:55 xxx kernel: sd 4:2:1:0: [sdb] tag#52 CDB: Write(16) 8a 00 00 00 00 0e 00 2e 55 68 00 00 00 18 00 00
Mar 1 15:11:55 xxx kernel: sd 4:2:1:0: [sdb] tag#3 task abort called for scmd(ffffa08bcb38f640)
Mar 1 15:11:55 xxx kernel: sd 4:2:1:0: [sdb] tag#3 CDB: Read(16) 88 00 00 00 00 0e 00 51 04 80 00 00 00 80 00 00
Mar 1 15:13:45 xxx kernel: sd 4:2:1:0: [sdb] tag#10 task abort called for scmd(ffffa08bcb38d880)
Mar 1 15:13:45 xxx kernel: sd 4:2:1:0: [sdb] tag#10 CDB: Write(16) 8a 00 00 00 00 0d 80 9d 38 90 00 00 00 08 00 00
Mar 1 15:13:45 xxx kernel: sd 4:2:1:0: [sdb] tag#52 megasas: target reset FAILED!!
Mar 1 15:13:45 xxx kernel: sd 4:2:1:0: [sdb] tag#10 Controller reset is requested due to IO timeout#012SCSI command pointer: (ffffa08bcb38d880)#011 SCSI host state: 5#011 SCSI
定位raid
卡控制器存在异常,报修。
nfs客户端挂载超时
问题现象
进行NFS挂载时sudo mount -t nfs -o vers=3,nolock,proto=tcp xxx:/xxx xxx -v
报错超时:mount.nfs: portmap query failed: RPC: Timed out
问题定位
在存储服务端抓包发现,客户端执行挂载命令时,服务端未收到任何数据包,判断网络不通,经测试,客户端仅能访问服务端2049端口,因此无法挂载。
服务端采用glusterfs+nfs-ganesha+samba
方案构建,因此客户端至少需要能够访问服务端如下端口:
- 111:
RPCbind
服务用于将NFS服务的端口号映射到实际使用的端口上。客户端需要使用这个端口来查找NFS服务的实际端口号; - 2049:
NFS
服务的主要端口,用于客户端和服务器之间的文件传输; - 4501:
Rquota_Port
,远程配额服务的端口,当客户端需要查询或更新其配额信息时,会使用这个端口与Ganesha
服务器通信,可通过cat /etc/ganesha/ganesha.conf | grep Rquota_Port
确认端口号; - 4502:
MNT_Port
,用于挂载信息服务的端口,当客户端想要挂载NFS
共享时,它们会首先使用此端口来检索关于该共享的信息,可通过cat /etc/ganesha/ganesha.conf | grep MNT_Port
确认端口号; - 139、445:
smb
服务端口,Windows
挂载使用,可通过sudo netstat -ntpl | grep smbd
确认端口号;
因此针对该问题,需再开通访问服务端111、4501、4502端口的网络策略。
glusterfs
文件夹删除失败
问题现象
通过NFS
挂载的glusterfs
,某文件夹删除失败,报错rm cannot remove xxx : Directory not empty
,但客户端查看该文件夹已无文件。
问题定位
确认服务端该文件夹情况,再glusterfs
所有节点执行:
sudo ls /gluster/brick-*/文件夹路径xxx
sudo ls /glusterfs_mnt/文件夹路径xxx
发现brick
间数据不同步,部分节点该文件夹下有文件,解决办法为删除/glusterfs_mnt/
下该目录中的文件,如删除后/gluster/brick-*/
中仍存在,则继续删除/gluster/brick-*/
下的文件。
云主机启动失败
问题现象
云主机重启后报错无法进入系统:
error: ../../grub-core/fs/fshelp.c:258:file
'/boot/initramfs-4.18.0-532.e18.x86_64.img' not found
Press any key to continue...
Kernel pannic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
................
end Kernel pannic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
问题定位
查看该客户云主机订购的操作系统为CentOS8.0,其原本内核版本为4.18.0-513.el8.x86_64,但报错的内核版本为532,重启尝试选择513版本内核,可正常进入系统,判断无法进入系统的原因为升级内核版本(ls /boot/
可查看所有内核版本)导致的系统异常。
#设置默认启动内核
grubby --set-default /boot/vmlinuz-4.18.0-513.el8.x86_64
#查看默认启动内核
grubby --default-kernel
rsyslog启动失败
问题现象
rsyslog启动失败,无明显报错(sudo journalctl -u rsyslog
):
Mar 03 09:21:22 xxx systemd[1]: Stopping System Logging Service...
Mar 03 09:21:22 xxx rsyslogd[69431]: [origin software="rsyslogd" swVersion="8.24.0-34.el7_6.3" x-pid="69431" x-info="http://www.rsyslog.com"] exitin
Mar 03 09:21:22 xxx systemd[1]: Stopped System Logging Service.
Mar 03 09:21:22 xxx systemd[1]: Starting System Logging Service...
Mar 03 09:21:32 xxx systemd[1]: rsyslog.service: main process exited, code=killed, status=11/SEGV
Mar 03 09:21:32 xxx systemd[1]: Failed to start System Logging Service.
Mar 03 09:21:32 xxx systemd[1]: Unit rsyslog.service entered failed state.
Mar 03 09:21:32 xxx systemd[1]: rsyslog.service failed.
Mar 03 09:21:33 xxx systemd[1]: rsyslog.service holdoff time over, scheduling restart.
问题定位
在无明显变动的情况下,优先考虑检查/etc/rsyslog.d/
下的自定义配置。
$ cat /etc/rsyslog.d/containerd.conf
if $programname == 'containerd' then /apps/logs/containerd/containerd.log
if $programname == 'containerd' then ~
新版语法中~
已被stop
代替,尝试修改配置文件为:
if $programname == 'containerd' then /apps/logs/containerd/containerd.log
if $programname == 'containerd' then stop
再次检查服务已正常启动。