今天遇到一个VMware 虚拟机所在的物理机磁盘使用完毕,虚拟机由于空间不足无法使用的问题。将处理过程记录如下:
vCenter中物理机硬盘使用完毕,虚拟机无法进行任何操作。
查看磁盘空间如下:
由于整个207磁盘空间不足,上面的76虚拟机也出现问题,尝试进行关机等各种操作都报错。
尝试将这个虚拟机移动的其他资源相对充足的虚拟机上,首先对虚拟机关机,点击关闭电源按钮,结果提示如下错误:
当前时间无法允许该操作,因为该虚拟机有一个未解决的问题:
“msg.hbacommon.outofspace:Thereis no more space for virtual disk 172.32.1.76.vmdk. You might be able tocontinue this session by freeing disk space on the relevant volume,and clickingRetry.Click Cancl to termiante this session.”
又尝试进行其他几个操作,结果都是提示相同错误不能进行。
通过浏览存储管理器,确认上面还有一个software-iso目录,存放着4.7G的CentOS 6.5的ISO安装介质,尝试删除该光盘介质,释放空间,结果提示如下错误:
由此可见,只要是虚拟机所在的物理机上出现了错误,进行任何的操作都是“错误”,均不能正常进行。
对于ISO不能删除,推测原因是有虚拟机再安装时使用该介质,后面一直没有取消连接,确认虚拟机光驱使用情况如下:
于是将该物理机上的每台虚拟机都进行如下操作,取消虚拟机关联,结果如下:
如此修改CD/DVD配置后,就将虚拟机与ISO连接关系去掉了,就可以在存储浏览器中删除CentOS6.5 的ISO,释放4.7G空间。
后面由于空间不足卡住的虚拟机恢复正常,可以登录进去,删除一些无效的文件,在Linux内部释放空间;但由于使用了自动扩展模式,虚拟机占用的物理机硬盘空间仍然没有释放。
需要将该虚拟机关机,复制到其他物理机,再迁移回来,就可以在物理机层面释放空间了。
后续还是要密切关注和处理物理机磁盘空间满的问题。
总结:
1. 使用Vmware虚拟化,磁盘空间使用是非常重要的,前提一定要规划好,不能将空间使用过满;
2. 一旦虚拟机磁盘用满,虚拟机无法分配资源,就非常危险了,除非可以在物理机上删除一些生产不用的快照、光盘介质等文件,释放出空间,否则不可以进行任何操作;
3. 对于光盘等ISO在系统安装完毕后,要记得尽快取消虚拟机对ISO的挂载,避免两者之间还有连接,使文件不能正常删除。
4. 对于Vmware虚拟机中常用的Thin Provision 类型分配模式,要注意几个问题:不能将每个虚拟机的磁盘空间分盘过大,如果个虚拟机使用空间远远大于物理机实际磁盘空间,将会很容易导致物理机磁盘空间不足,使虚拟机出现问题;
规划和限定了每台虚拟机的磁盘空间后,即使某台虚拟机发生问题,也不会影响整个ESX上的其他虚拟机;
在规划阶段尽可能将虚拟机使用的总空间限定在物理机总磁盘空间内,这样就不会出现太多空间问题;
5. 对于使用Thin Provision 类型的Vmware虚拟机磁盘,一旦磁盘被使用后,即使在虚拟机系统内,删除一些文件释放了空间,在物理机层面还是不会释放空间的;例如创建一个虚拟分配了一个200G的硬盘,安装CentOS 6.5系统,初始为10G大小,使用一段时间后,系统由10G增加为100G,此时从系统内核物理机上看该虚拟机都是已经占用了100G的空间,及时在Linux系统上,删除了很多文件,使用 df –h 查看空间使用为50G,在物理磁盘上,该虚拟机还是使用了50G的空间;
另外在虚拟机使用时,可能会出现虚拟机占用资源远远大于实际使用资源的情况,这可能与Linux的进程、服务等有关,有条件的时候重启一下虚拟机系统,会释放空更多的空间。
例如虚拟机物理磁盘为10G时,启动虚拟机一个Linux系统只有5G,虚拟机占用9G的系统时,会提示如下错误:
启动虚拟机后,登录操作系统查看:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 49G 5.4G 42G 12% /
tmpfs 8.8G 0 8.8G 0% /dev/shm
/dev/sda1 194M 61M 124M 33% /boot
到虚拟机系统启动后,再查看的空间就是另一个数值:
可以看到 172.32.1.76 虚拟机的已用空间为 27.5 GB。
由此可见,在Vmware vCenter中,虚拟机分配磁盘,系统使用磁盘,虚拟机占用磁盘,实际已用空间都因各自的运行机理不同,存在着一定差异,需要特别注意。