您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: