Xenserver

在destroy_domain 之後,XenServer VM 無法在池中遷移

  • January 20, 2014

我在一個池中有三台 XenServer 6.1 伺服器。通常使用 HA,但目前已為此操作關閉。

最近,我不得不通過以下說明破壞域來強制關閉 VM:http: //support.citrix.com/article/CTX131421

除了我的命令行似乎沒有 destroy_domain 命令之外。另一篇文章向我指出了 /opt/xensource/debug/xenops destroy_domain -domid x 的完整路徑(http://gimpland.org/now/2013/01/citrix-xenserver-how-to-force-shutdown-virtual -機器/

它起作用了,我能夠毫無問題地啟動虛擬機。儘管我發現嘗試將 VM 遷移到池中的任何其他伺服器。嘗試通過 XenCenter 將 VM 遷移到池中的另一台主機會在大約 30-40 秒後產生以下錯誤:

   Migrating VM 'Cleanup 7' from XenBlade5 to XenBlade 6: 
   Error: Internal error: file "xapi_xenops.ml", line 1740, characters 3-9: Assertion Failed.

虛擬機現在已暫停。嘗試恢復它(仍然在原始伺服器上,因為它無法移動)在伺服器事件日誌中產生以下錯誤:沒有可用於完成指定操作的伺服器。

此外,XenCenter 會彈出一個對話框,提示“啟動 VM 時出錯”,池中的每個伺服器都會出現錯誤,提示“對像已被刪除。VDI:OpaqueRef:NULL。伺服器將不會恢復。

如果我強制關閉虛擬機,我可能會重新啟動它。不幸的是,VM 仍然無法遷移並產生上述相同的錯誤。

我在我們的一個生產 VM 伺服器上發現了這個問題,但是這些測試是在一個廢棄的 Windows 7 Enterprise VM 上執行的。生產虛擬機是 CentOS,所以我認為我沒有遇到任何特定於作業系統的問題。我上面發出的 destroy_domain 命令看起來像一個問題。

未使用 destroy_domain 關閉的其他 VM 可以自由地進出此伺服器。

我不是 XenServer 的老手,因此非常感謝任何幫助、更正或澄清請求。非常感謝您的幫助!

來自https://github.com/xapi-project/xen-api/blob/fe28d3e3254b1c9928dfb99d75e94e949504dcf7/ocaml/xapi/xapi_xenops.ml,它看起來是 v6.1 E017 的來源,有 #1739 行:

(* XXX: if the guest crashed or shutdown immediately then it may be offline now *)
assert (Db.VM.get_power_state ~__context ~self = (if paused then `Paused else `Running))

我不做 OCAML,也不是 XenServer 專家,但這個斷言似乎在一個名為的方法中start,並且看起來它通過檢查內部數據庫中的電源狀態來確保 VM 已啟動。我猜想,因為您已強制關閉 VM,它沒有正確更新數據庫。

也許您的第二個連結中的命令將清理數據庫:

xe vm-reset-powerstate  uuid=<UUID of VM> force=true

否則,您將不得不搜尋日誌以查找在此之前失敗的操作,也許在/var/log/xensource.log?

引用自:https://serverfault.com/questions/568583