文章目录
- 问题场景
- 排查过程
- 处理解决
- 事后反思
问题场景
- 我们的平台服务使用
docker
部署,使用docker-compose
进行管理,部署到CentOS7的服务器里 - 平台部署到客户环境时,一小部分客户,使用自己机房或单独的服务器。很多客户不愿意采购新的服务器,就让我们用他们已有的
Windows server
服务器 - 我们在已有的
Windows server
服务器里,使用VirtualBox
虚拟机工具,安装CentOS7
虚拟机,再部署系统 - 本周接到一客户投诉,那天下午三点左右,客户说平台打不开,虚拟机操作没反应,卡死,重启也解决不了
- 后来询问了客户,说是上午平台还好好的,中午睡个午觉,下午上班发现平台不行了
排查过程
- 首先看到的是一个卡死界面,
CentOS7
虚拟机卡死,被暂停了,点了下恢复,一直在卡进度条,没反应,点关闭按钮也没反应 - 于是让客户用“任务管理器”关闭了
VirtualBox
程序,重新启动VirtualBox
,再启动平台虚拟机,发现启动不了,看了下报错信息,感觉应该是直接杀死进程关闭导致的,就让客户重启下本Windows server
服务器试试 - 重启
Windows server
服务器后,发现桌面自启动了一堆东西,包括xx软件平台、一些自启动的Java
程序dos
窗口等。可能是我们当初部署平台时,这台电脑不是空机器,有一堆其他应用服务部署了,且设置了开机自启动 - 询问了客户,这台服务器目前就给我们使用。于是让客户关闭其他服务,启动了
VirtualBox
虚拟机工具,启动信控平台虚拟机 - 平台
CentOS7
虚拟机启动没问题,虽然有点慢,但正常的启动成功了。但当输入用户名密码,进入虚拟机终端,准备操作时,虚拟机被强制暂停了,点击恢复也没办法 - 正常情况下,虚拟机暂停,重新点一下“暂停”,就会恢复
- 但是客户现场,点了后就弹出一个报错
BLKCACHE IOERR
,大致意思是“请确保磁盘上有足够的可用空间,并且磁盘工作正常
”,报错详细信息如下:
The I/0 cache encountered an error while updating data in mediun"ahci-0-0’
(rc=VERR UNRESOLVED ERROR).Make sure there is enouth free space on the disk and that the disk is working properly. Operation can be rerumed afterward
- 一开始怀疑是平台虚拟机里分配的磁盘空间,在运行大半年后快满了,空间不足导致的。想登录进虚拟机,查看和删除大文件。但是一直被“暂停”,无法进入操作。尝试了好几种办法,包括重启了两次,都没法终止暂停
- 后来查看了下文件夹目录,发现平台现在只用了71G,而给平台分配了256G,远远没用完,应该不是这个问题。而且之前遇到过root目录被占满的事件,但是并不会被暂停(有兴趣的看我这篇文章:clickhouse系统日志引起的root目录磁盘满的问题处理)
- 根据报错信息,去搜索好久,最终在微软的官方网站找到了类似问题和解决方式,确定是
VirtualBox
上运行的CentOS7
虚拟机所在磁盘空间不足导致的 - 官方社区链接:Virtual machines enter the paused state due to low disk free space
- 核心内容是以下几句:
Cause
The hard drives that store these VHD files or snapshots of these virtual machines are out of disk free space.
Resolution
To fix the issue, free disk space on these hard drives or move these VHD files to a new location.
- 大致意思为:存储这些
VHD
文件或这些虚拟机的快照的硬盘驱动器的磁盘可用空间不足,若要解决此问题,请释放这些硬盘驱动器上的磁盘空间或将这些VHD
文件移动到新位置。 - 默认创建和导入虚拟机时,不另选位置,都会默认在C盘
C:\Users\Administrator\VirtualBox VMs
文件夹里面。查看了C盘空间,一共就256G,还剩20G左右,应该是C盘(系统盘
)空间过少,不允许VirtualBox
运行虚拟机,强制暂停 - 根据客户反馈,今天是第一次遇到虚拟机暂停问题,应该是今天中午刚好达到了临界值
处理解决
- 微软官方平台的报错原因说的很清楚,就是虚拟机文件所在磁盘空间不足,系统会不断检查磁盘空间并发出警告。当收到警告时,虚拟机将进入暂停的关键状态
- 解决方式说的也很清楚,把当前磁盘清理掉一些东西,保障磁盘空间充足,或者迁移到另一个空间充足的磁盘
- 由于这个是客户的机器,我们不好分辨哪些可以删除,只好选择迁移到另一个磁盘(1.5T空间)
- 需要注意的是,迁移虚拟机文件不能直接拷贝再修改文件路径,要使用
VirtualBox
操作。选择“管理-虚拟介质管理”
- 选中要改的
vid
文件,修改文件目录路径(C改成了E),点击应用即可(如果文件较大,跨盘移动可能要一段时间)
vid
文件迁移完成后,重新启动平台虚拟机,启动正常,再也没有暂停的情况,问题解决
事后反思
- 反思这次问题出现的原因:
- 一是部署平台的优化人员不是专业的运维,发给他们的部署文档里,只是建议选一个磁盘空间比较大的盘,没有强制要求,他们就一直点默认的“下一步”了,默认装在了C盘
- 二是这台机器不只是我们在用,按照正常情况,C盘的256G至少也能用个几年,但是没想到这才半年多就仅剩20G了
- 三是没坚持让客户提供Linux机器,如果不使用
Windows server
服务器部署虚拟机的方式,而是直接部署到CentOS7
平台上,就不会出现问题(因为直接使用服务器所有磁盘,而磁盘这玩意不值钱,一般服务器都有大容量) - 已经更新了部署文档,强制要求使用磁盘空间充足的非系统盘(除非不分盘),磁盘可用空间不能低于500G