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

目录
相关文章
|
6天前
|
Linux KVM 数据库
虚拟机数据恢复—误删除KVM虚拟机的数据恢复案例
虚拟化数据恢复环境&故障: KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20版本之后集成在Linux的各个主要发行版本中。KVM使用Linux自身的调度器进行管理。 本案例中的服务器操作系统为Linux,文件系统为EXT4。操作系统上的部署的几台KVM虚拟机被删除,每台KVM虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件,用户需要恢复的数据是raw格式的磁盘文件。这几台被误删除的虚拟机存放的是数据库,程序代码等数据。
|
3月前
|
Ubuntu 虚拟化
百度搜索:蓝易云【虚拟机磁盘大小变更后的Ubuntu动态分区调整教程】
现在,你已经成功将Ubuntu虚拟机的动态分区调整为新的磁盘大小。你可以通过 `df -h`命令来查看文件系统的新大小。注意,在进行此操作时,请务必备份重要数据,并确保你了解分区操作的风险和影响。
31 0
|
4月前
|
机器学习/深度学习 Ubuntu Linux
如何在Ubuntu 23.10部署KVM并创建虚拟机?
如何在Ubuntu 23.10部署KVM并创建虚拟机?
70 0
|
9月前
|
Ubuntu 虚拟化 Windows
将Vmware虚拟机磁盘映射到本地实现文件传输
将虚拟机磁盘映射到本地,可以实现文件互传,更方便使用,在开发时可以替代SecureFx等FTP客户端软件
393 0
|
4月前
|
数据挖掘 数据库 虚拟化
服务器数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
服务器数据恢复环境: 某品牌720服务器搭配该品牌某型号RAID卡,使用4块STAT硬盘组建了一组RAID10阵列。服务器上部署XenServer虚拟化平台,系统盘 +数据盘两个虚拟机磁盘。虚拟机上安装的是Windows Server操作系统,作为Web服务器使用,网站使用的是SQLServer数据库。 服务器故障: 服务器意外断电导致XenServer中一台VPS(XenServer虚拟机)不可用,虚拟磁盘文件丢失。
服务器数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
|
8月前
|
Linux Shell KVM
【Linux系统KVM虚拟机实战】LVM逻辑卷之扩展Swap交换分区
【Linux系统KVM虚拟机实战】LVM逻辑卷之扩展Swap交换分区
158 0
|
8月前
|
Ubuntu 虚拟化 开发者
虚拟机磁盘大小变更后的Ubuntu动态分区调整
家人们,今天我们来分享一下关于虚拟机磁盘大小变更后,在Ubuntu操作系统中如何进行动态分区调整的技巧。随着虚拟化技术的发展,虚拟机已经成为许多开发者和系统管理员的首选工具之一。在使用虚拟机过程中,可能会遇到需要扩展磁盘容量的情况,而Ubuntu作为一种常见的操作系统,我们将介绍如何动态调整分区以适应磁盘大小的变更。
240 0
虚拟机磁盘大小变更后的Ubuntu动态分区调整
|
9月前
|
存储 KVM 虚拟化
WebVirtMgr新建KVM虚拟机
WebVirtMgr新建KVM虚拟机
87 0
YI
|
9月前
|
Ubuntu Linux 虚拟化
VMware虚拟机磁盘扩容
在VMware虚拟机中使用ubuntu学习时,发现磁盘容量不太够,遂决定给磁盘扩容。本文记录扩容过程。
YI
175 0
|
10月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
843 0