Linux KVM - 遷移虛擬電腦(Migration)
最近在利用 Fedora16 測試 Linux KVM 的時候,發現在 Virt-manager 的操控介面上,新增了「遷移」的功能,此功能鍵在虛擬電腦上按下右鍵就可以看到:
而「遷移」,就字面上的了解,就是將虛擬電腦由 A 地轉移到 B 地,就實際應用面來說,這是個蠻重要的功能,這該怎麼說呢?舉個例子來說,就一般公司行號的入口網站,在正常的情況下,應該都要是提供不中斷的網頁服務,禀除承載網頁服務的伺服器損壞而無法運作的因素不說,伺服器難免會有一些突發狀況,或是需要定期維修、系統更新之類的維護動作,多多少少都會需要暫時停機,或是重新開機之類的動作,但是又必須保持網頁服務不能中斷,這時候,就可以看出「遷移」的功效了,因為我們可以預先將整個承載網頁服務的虛擬電腦,由 A 伺服器遷移到 B 伺服器上,以方便 A 伺服器進行維修的動作。
那該怎麼使用「遷移」的功能呢?要完整執行「遷移」的功能,必須滿足以下的條件:
備註:除了安裝 SSH 之外,還需要另外安裝「openssh-askpass」的套件,不然會看到以下的錯誤訊息:
備註:由於虛擬硬碟必須存在外接儲存裝置上,故最初在建地虛擬電腦的時候,就必須預先在外接儲存裝置上產生一個虛擬硬碟檔案,在建立虛擬電腦時,再選擇此虛擬硬碟檔案即可
備註:筆者目前有接觸過 0.8.2、0.8.7、0.9.0 與 0.9.1 這四個版本的 Virt-manager,而在 0.9.0的版本上,就可以發現到有「遷移」的功能存在!
進行「遷移」的步驟如下:
步驟1:在 A 伺服器上的 Virt-manager ,利用遠端連線的方式,連結到 B 伺服器上的 Linux KVM,如下圖:
步驟2:確認 A、B 兩台伺服器都連結到相同的外接儲存裝置,且也都掛載在相同的目錄底下,也就是說,A、B 兩台伺服器都要可以看到虛擬電腦的虛擬硬碟檔案
備註:A、B 這兩台伺服器,掛載外接儲存裝置時,必須確認針對此外接裝置,都必須擁有可以讀寫的權限
步驟3:在要遷移的虛擬電腦上,按下右鍵,再按下「遷移(M)」:
步驟4:若已經有預先在 Virt-manager 上連結到 B 伺服器上的 Linux KVM,啟動「遷移」的功能之後,就可以在「新的主機:」的欄位上,看到 B 伺服器的資訊:
而若直接按下「遷移(M)」的按鈕,有時候(大部分)會看到以下的錯誤訊息:
不過就錯誤訊息字面上的意思,其實還不太好了解錯誤發生的原因,我們再按下遷移虛擬機器視窗內的「進階選項」:
在連線活動的選項內,勾選「位址(A)」,輸入 B 伺服器的 IP 位址,接著再勾選「連接埠(P)」,並任意輸入一組大於 1024 以上的埠號,再按下「遷移(M)」的按鈕,就可以看到遷移的程序在進行,遷移完成,就會發現 A 伺服器上的虛擬電腦已經關閉,而 B 伺服器上多了一台虛擬電腦(來自 A 伺服器),並且是啟動的狀態:
這樣就完成了遷移的程序。
備註:前述的錯誤訊息,其實是 B 伺服器上的連接埠(49157)被佔用,所以才連結不過去,因此需要另外指定一組連接埠,才能順利遷移