XenServer在删除VM后存储空间不能释放
2012-08-27 15:53
295 查看
这个问题一般出现的原因是因为非正常操作删除了VM的快照或者base copy。
如果需要了解snapshot的原理您可以参考Citrix KB XenServer: Understanding Snapshots :http://support.citrix.com/article/CTX122978
XenServer中我们可以通过以下的三个操作彻底查出存储空间是使用在什么地方,在VM删除后空间有没有释放。Xe vm-list name-label=<vm-name>
此命令来检测这个VM的信息是否已经被XenServer删除,
Xe vm-disk-list name-label=<vm-name>
此命令来查看VM对应的VDI的信息,在VM删除后,我们需要确定这个VDI有没有正常删除。
Lvscan | grep <vdi-uuid>
此命令来查看在linux底层这个VDI的LVM卷有没有正常被删除。
一般情况下出现空间没办法释放的问题都是在第1步和2步的都看似正常情况,第3步里面这个LVM卷还是没有被删除。问题是处在第2步,当我们执行完命令之后,通过Xe vdi-list uuid=<vdi-uuid>确实看不到这个VDI了,并且在xe sr-uuid uuid=<sr-uuid> params=all 的VDIs里面也找不到已经删除的VDI,但是当我们搜索/var/log/SMlog时,我们能看到以下的错误提示:
<3511> 2012-08-27 06:21:46.110090 *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
<3511> 2012-08-27 06:21:46.110165 ***********************
<3511> 2012-08-27 06:21:46.110234 * E X C E P T I O N *
<3511> 2012-08-27 06:21:46.110302 ***********************
<3511> 2012-08-27 06:21:46.110390 gc: EXCEPTION util.SMException, Parent VDI a8367eaa-138c-488d-b349-51b321a5db4e of 1670bd58-c999-49ee-8d07-67947d1baef3 not found
<3511> 2012-08-27 06:21:46.110458 File "/opt/xensource/sm/cleanup.py", line 2509, in gc
_gc(None, srUuid, dryRun)
File "/opt/xensource/sm/cleanup.py", line 2412, in _gc
_gcLoop(sr, dryRun)
File "/opt/xensource/sm/cleanup.py", line 2366, in _gcLoop
sr.scanLocked()
File "/opt/xensource/sm/cleanup.py", line 1283, in scanLocked
self.scan(force)
File "/opt/xensource/sm/cleanup.py", line 2086, in scan
self._buildTree(force)
File "/opt/xensource/sm/cleanup.py", line 1800, in _buildTree
raise util.SMException("Parent VDI %s of %s not " \
<3511> 2012-08-27 06:21:46.110528 *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
<3511> 2012-08-27 06:21:46.110603 * * * * * SR d0578696-b96f-54d0-208f-20f07afbeed4: ERROR
以上的信息显示的是当SR在执行扫描的时候出现了exception,因为1670bd58-c999-49ee-8d07-67947d1baef3是通过a8367eaa-138c-488d-b349-51b321a5db4e产生的,而UUID为a8367eaa-138c-488d-b349-51b321a5db4e的VDI已经被删除了。所以如果要尝试处理这样的exception,就需要把所有有关联的VDI全部删除掉。你可以通过以下命令查出和a8367eaa-138c-488d-b349-51b321a5db4e有关联的VDI:
vhd-util scan -f -m "VHD-*" -l VG_XenStorage-<sr-uuid> | grep <vdisk uuid>
但是请注意:方法仅供测试,至于能否彻底清除SR扫描时候所产生的exception要结合用户的实际生产环境考虑, 因为后续要删除的每个VDISK都有可能是非常关键的VM数据。
上面所提的uuid均为我的测试环境,请结合自己实际环境中的uuid验证。
如果用户环境很难做以上的troubleshooting,那么我们建议用户可以考虑手工释放存储的空间。在找出想要删除的VDI后,可以使用命令lvremove /dev/VG_XenStorage-<sr-uuid>/VHD-<vdi-uuid>的方法在存储上直接删除此VDI。
当然如果在没有还有最后一招,实在没有办法就只能备份在使用的VM数据后重新安装XenServer。本文出自 “YabinABC” 博客,请务必保留此出处http://yabinabc.blog.51cto.com/3990763/974433
如果需要了解snapshot的原理您可以参考Citrix KB XenServer: Understanding Snapshots :http://support.citrix.com/article/CTX122978
XenServer中我们可以通过以下的三个操作彻底查出存储空间是使用在什么地方,在VM删除后空间有没有释放。Xe vm-list name-label=<vm-name>
此命令来检测这个VM的信息是否已经被XenServer删除,
Xe vm-disk-list name-label=<vm-name>
此命令来查看VM对应的VDI的信息,在VM删除后,我们需要确定这个VDI有没有正常删除。
Lvscan | grep <vdi-uuid>
此命令来查看在linux底层这个VDI的LVM卷有没有正常被删除。
一般情况下出现空间没办法释放的问题都是在第1步和2步的都看似正常情况,第3步里面这个LVM卷还是没有被删除。问题是处在第2步,当我们执行完命令之后,通过Xe vdi-list uuid=<vdi-uuid>确实看不到这个VDI了,并且在xe sr-uuid uuid=<sr-uuid> params=all 的VDIs里面也找不到已经删除的VDI,但是当我们搜索/var/log/SMlog时,我们能看到以下的错误提示:
<3511> 2012-08-27 06:21:46.110090 *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
<3511> 2012-08-27 06:21:46.110165 ***********************
<3511> 2012-08-27 06:21:46.110234 * E X C E P T I O N *
<3511> 2012-08-27 06:21:46.110302 ***********************
<3511> 2012-08-27 06:21:46.110390 gc: EXCEPTION util.SMException, Parent VDI a8367eaa-138c-488d-b349-51b321a5db4e of 1670bd58-c999-49ee-8d07-67947d1baef3 not found
<3511> 2012-08-27 06:21:46.110458 File "/opt/xensource/sm/cleanup.py", line 2509, in gc
_gc(None, srUuid, dryRun)
File "/opt/xensource/sm/cleanup.py", line 2412, in _gc
_gcLoop(sr, dryRun)
File "/opt/xensource/sm/cleanup.py", line 2366, in _gcLoop
sr.scanLocked()
File "/opt/xensource/sm/cleanup.py", line 1283, in scanLocked
self.scan(force)
File "/opt/xensource/sm/cleanup.py", line 2086, in scan
self._buildTree(force)
File "/opt/xensource/sm/cleanup.py", line 1800, in _buildTree
raise util.SMException("Parent VDI %s of %s not " \
<3511> 2012-08-27 06:21:46.110528 *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
<3511> 2012-08-27 06:21:46.110603 * * * * * SR d0578696-b96f-54d0-208f-20f07afbeed4: ERROR
以上的信息显示的是当SR在执行扫描的时候出现了exception,因为1670bd58-c999-49ee-8d07-67947d1baef3是通过a8367eaa-138c-488d-b349-51b321a5db4e产生的,而UUID为a8367eaa-138c-488d-b349-51b321a5db4e的VDI已经被删除了。所以如果要尝试处理这样的exception,就需要把所有有关联的VDI全部删除掉。你可以通过以下命令查出和a8367eaa-138c-488d-b349-51b321a5db4e有关联的VDI:
vhd-util scan -f -m "VHD-*" -l VG_XenStorage-<sr-uuid> | grep <vdisk uuid>
但是请注意:方法仅供测试,至于能否彻底清除SR扫描时候所产生的exception要结合用户的实际生产环境考虑, 因为后续要删除的每个VDISK都有可能是非常关键的VM数据。
上面所提的uuid均为我的测试环境,请结合自己实际环境中的uuid验证。
如果用户环境很难做以上的troubleshooting,那么我们建议用户可以考虑手工释放存储的空间。在找出想要删除的VDI后,可以使用命令lvremove /dev/VG_XenStorage-<sr-uuid>/VHD-<vdi-uuid>的方法在存储上直接删除此VDI。
当然如果在没有还有最后一招,实在没有办法就只能备份在使用的VM数据后重新安装XenServer。本文出自 “YabinABC” 博客,请务必保留此出处http://yabinabc.blog.51cto.com/3990763/974433
相关文章推荐
- nginx日志文件删除后空间不能释放,必须重启服务才能释放空间
- Harbor私有仓库中如何彻底删除镜像释放存储空间?
- 关于删除mysql大表数据并释放存储空间的两种方式
- 如何回收Xenserver 删除虚拟机快照后释放的空间
- XenServer中VM的存储格式对空间以及性能的影响
- XenServer中VM的存储格式对空间以及性能的影响
- linux 服务器删除大文件之后不释放存储空间的解决办法
- 如何回收Xenserver 删除虚拟机快照后释放的空间
- 手机存储空间不足,删除大的不用文件以释放存储空间
- nginx日志文件删除后空间不能释放,必须重启服务才能释放空间
- 删除表空间,清空物理存储
- 删除linux文件后,磁盘空间未释放的解决办法
- mongodb删除集合后磁盘空间不释放
- centos6.5 删除文件后没有释放空间的问题
- Centos 系统文件删除后没有释放空间
- oracle学习笔记 temp空间不足不能自动释放的解决办法
- linux删除文件后没有释放空间
- Linux服务器文件删除空间未释放的问题
- VM环境下Linux虚拟机扩展存储空间操作方法总结
- linux删除空间不释放的解决方法