KVM虚拟机磁盘readonly故障分析

简介: 集群有200余台虚拟机,运行在分布式文件系统mfs上。现象:1、每天凌晨0:10 ,出现批量虚拟机分区出现readonly问题,导致用户无法正常写入。原因分析:1、之前偶尔也会出现个别readonly的情况,没有深入排查,只是推测和chunkserver磁盘坏道有关,当vm读写正好在chunkserver坏道的块上时,可能出现报错,导致异常。

集群有200余台虚拟机,运行在分布式文件系统mfs上。

现象:
1、每天凌晨0:10 ,出现批量虚拟机分区出现readonly问题,导致用户无法正常写入。

原因分析:
1、之前偶尔也会出现个别readonly的情况,没有深入排查,只是推测和chunkserver磁盘坏道有关,当vm读写正好在chunkserver坏道的块上时,可能出现报错,导致异常。
2、此次出现大批量readonly,且监控和日志显示均是在凌晨出现,故排除磁盘坏道问题。
3、如果虚拟机上承载docker 、mysql 等可能造成大并发的业务,也可能造成此类问题。但是虚拟机镜像在mfs上是连续的空间,正常的mysql读写并不会有问题。有出现在vm上进行批量docker容器删除时,出现异常的情况。
4、推测有vm用户提交了大量并发的读写任务,而我们并未对虚拟机读写进行限制,也有可能造成此类问题。前期有vm出现load 90+ 报警,紧接着就有chunkserver出现load 100+的报警,和此问题非常类似。

排查定位:
1、检查宿主机负载、网络等,未发现异常情况。
2、检查mfschunkserver ,发现有部分磁盘出现raid errro。
3、检查mfschunkserver ,发现有一台chunkserver出现load +100,iowait达到90%以上的情况,带宽未见异常,写入的数据量也很低,现象大概持续3分钟左右。
4、检查vm在凌晨的监控情况,发现批量机器出现iowait达到100%,流量、load均未见明显异常。有部分vm上有大量的sendmail进程。
5、检查虚拟机上凌晨的crontab、进程等,没有发现异常。
6、检查mfs上的读写情况,未见在凌晨有大量的 chunk create 和replica,但是 max operations in queue 值特别高。
7、检查虚拟机备份程序,发现正好是在凌晨0:10进行备份,执行了snapshot操作,而且每台vm备份间隔仅1s,初步确认此备份为导致异常的主要原因。

由于snapshot操作并未带来大量的读写,之前并未关注到。在深入剖析了snapshot的原理,发现是执行了类似linux 系统的硬链接操作,此时批量的snapshot虚拟机,200台vm大概20TB,按照mfs的每个chunk块 64MB的划分,换算下来执行一次操作,会产生 2010241024/64 = 327680 创建链接的操作,每台vm备份也会产生1600次操作,如果在1s内没有完成,那么cpu队列就会越来越大,从而产生了load和iowait都非常高的现象。由于镜像备份并不是十分紧急的任务,故将间隔时间修改到60s执行一台。

可能造成虚拟机readonly故障的原因:
1、虚拟机备份进程的批量操作产生大量的并发,导致chunkserver 的cpu队列拥塞,产生vm读写出现iowait过高超时的情况,从而造成了磁盘remount为readonly的情况。故有此类批量操作的动作,一定要考虑并发负载的问题。 因为chunkserver是存储型服务器,cpu配置都比较低。

2、个别vm用户大量的提交任务导致后端异常。针对此现象,使用cgroug 进行io限制。可避免此类问题发生。

3、mfschunkser 规格建议配置一致,避免读写负载出现不均衡的情况。

此次定位问题耗时一周:
1、监控不到位,由于zabbix 进行大批量机器对比时,效率很低,临时部署了openfalcon和grafana,耗时较长。
2、没有关注到备份任务,之前一致以为是vm用户的问题,但是通过监控定位并不是用户的问题。
3、对mfs的snapshot未深入理解。

欢迎交流: QQ: 249016681

目录
相关文章
|
2月前
|
Linux KVM 数据库
服务器数据恢复—服务器误删除KVM虚拟机数据恢复案例
服务器数据恢复环境: 一台服务器安装Linux操作系统+EXT4文件系统。服务器上运行数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件。 服务器故障: 工作人员操作失误删除了服务器上的3台KVM虚拟机,虚拟机中运行数据库,需恢复误删除虚拟机中raw格式的磁盘文件。
服务器数据恢复—服务器误删除KVM虚拟机数据恢复案例
|
2月前
|
弹性计算 Shell KVM
快速克隆KVM 虚拟机
【4月更文挑战第29天】
29 3
|
2月前
|
存储 弹性计算 运维
|
2月前
|
弹性计算 Shell KVM
|
2月前
|
运维 IDE Linux
KVM详解(九)——CentOS6虚拟机关机失败问题解决
KVM详解(九)——CentOS6虚拟机关机失败问题解决
50 5
|
2月前
|
运维 Linux KVM
KVM详解(八)——KVM虚拟机自启动
KVM详解(八)——KVM虚拟机自启动
109 5
|
2月前
|
存储 弹性计算 运维
|
2月前
|
弹性计算 Shell KVM
查看KVM 虚拟机中的网卡信息
【4月更文挑战第29天】
19 0
|
Linux
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程
643 0
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程

热门文章

最新文章