1、冷遷移
通常我們存放虛擬機磁盤的目錄都是掛在的一個nfs文件系統的磁盤,而這個磁盤通常是LVM文件系統。所以需要進行冷遷移時,只要在目標主機上掛載這個nfs文件系統,就可以看到要遷移的那個虛擬機的磁盤文件,通常以.qcow2或.raw結尾的,然后,只需將虛擬機的.xml配置文件發送到目標服務器上,然后重新定義一下即可通過“virsh list --all”命令查看到遷移過來的虛擬機。
2、熱遷移
如果源宿主機和目的宿主機共享存儲系統,則只需要通過網絡發送客戶機的 vCPU 執行狀
態、內存中的內容、虛機設備的狀態到目的主機上。否則,還需要將客戶機的磁盤存儲發到目的主
機上。共享存儲系統指的是源和目的虛機的鏡像文件目錄是在一個共享的存儲上的。
在基於 共享存儲系統 時,KVM 動態遷移的具體過程為:
1、遷移開始時,客戶機依然在宿主機上運行,與此同時,客戶機的內存頁被傳輸到目的主機上。
2、QEMU/KVM 會監控並記錄下遷移過程中所有已被傳輸的內頁的任何修改,並在所有內存頁都傳輸完成后即開始傳輸在前面過程中內存頁的更改內容。
3、QEMU/KVM 會估計遷移過程中的傳輸速度,當剩余的內存數據量能夠在一個可以設定的時間周期(默認 30 毫秒)內傳輸完成時,QEMU/KVM 會關閉源宿主機上的客戶機,再將剩余的數據量傳輸到目的主機上,最后傳輸過來的內存內容在目的宿主機上恢復客戶機的運行狀態。
4、至此,KVM 的動態遷移操作就完成了。遷移后的客戶機盡可能與遷移前一致,除非目的主機上缺少一些配置,比如網橋等。注意,當客戶機中內存使用率非常大而且修改頻繁時,內存中數據不斷被修改的速度大於KVM能夠傳輸的內存速度時,動態遷移的過程是完成不了的,這時候只能靜態遷移。
3、遷移的注意事項
無論是冷遷移還是熱遷移,注意事項大都差不多。
遷移前目標服務器的要求如下:
- 最好遷移的服務器cpu品牌一樣;
- 64位只能在64位宿主機間遷移,32位可以遷移32位和64位宿主機;
- 宿主機中的虛擬機名字不能沖突;
- 目的宿主機和源宿主機軟件配置盡可能的相同,如 有相同的橋接網卡,資源池等;
- 兩台遷移的主機 cat /proc/cpuinfo |grep nx 的設置是相同的NX,全名為“No eXecute”,即“禁止運行”,是應用在CPU的一種技術,用作把存儲器區域分隔為只供存儲處理器指令集,或只供數據使用。任何使用NX技術的存儲器,代表僅供數據使用,因此處理器的指令集並不能在這些區域存儲。這種技術可防止大多數的緩沖溢出,即一些惡意程序,把自身的惡意指令集放在其他程序的數據存儲區並運行,從而把整台計算機控制。
小結:
1、靜態遷移
- 拷貝鏡像文件和虛擬機配置文件;
- 重新定義此虛擬機。
2、動態遷移
- 創建共享存儲;
- 兩台機器掛載共享存儲(手工掛載;使用資源池);
- 啟動動態遷移;
- 創建遷移后的虛擬機配置文件;
- 重新定義虛擬機。