XenServer在刪除VM後存儲空間不能釋放

    這個問題一般出現的原因是因爲非正常操作刪除了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底層這個VDILVM卷有沒有正常被刪除。 
一般情況下出現空間沒辦法釋放的問題都是在第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產生的,而UUIDa8367eaa-138c-488d-b349-51b321a5db4eVDI已經被刪除了。所以如果要嘗試處理這樣的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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章