傳輸方式
跳轉函式
tcptcp_start_outgoing_migration
rdma
rdma_start_outgoing_migration
exec
exec_start_outgoing_migration
unix
unix_start_outgoing_migration
fdfd_start_outgoing_migration
通常libvirt控制的虛機遷移都使用fd遷移,這是一種方便管理的遷移方式,由上層應用程式(libvirt)開啟檔案描述符,qemu只負責往描述符裡面傳送資料,這樣可以把遷移的控制層和實現層完全分開。
預拷貝記憶體(pre-copy)通過乙個迴圈,將記憶體資料傳送至目的主機vm,迴圈第一輪傳送所有記憶體資料,接下來每一輪傳送上一輪預拷貝過程中的髒頁。最後一輪是停機拷貝階段,源主機被掛起,停止記憶體更新,將髒頁整體拷貝到目的主機vm上。
對於更新速度非常快的記憶體部分,每次迴圈過程都會變髒,需要重複 pre-copy,同時也導致迴圈次數非常多,遷移的時間變長。針對這種情況,kvm 虛擬機器建立了三個原則:集中原則,乙個迴圈內的 dirty pages 小於等於 50;不擴散原則, 乙個迴圈內傳輸的 dirty pages 少於新產生的;有限迴圈原則,迴圈次數必須少於 30。在實現上,就是採取了以下措施:
(1) 源伺服器和目標伺服器簡圖
當虛擬機器還在源伺服器上運轉時,第乙個迴圈內將全部記憶體映象複製到目標伺服器上。在這個過程中,kvm 依然會監視記憶體的任何變化。
(2) 記憶體映象複製示意圖
以後的迴圈中,檢查上乙個迴圈中記憶體是否發生了變化。 假如發生了變化,那麼 vmm 會將發生變化的記憶體頁即 dirty pages 重新複製到目標伺服器中,並覆蓋掉先前的記憶體頁。在這個階段,vmm 依然會繼續監視記憶體的變化情況。
(3) 進行有變化的記憶體複製
vmm 會持續這樣的記憶體複製迴圈。隨著迴圈次數的增加,所需要複製的 dirty pages 就會明顯減少,而複製所耗費的時間就會逐漸變短,那麼記憶體就有可能沒有足夠的時間發生變化。最後,當源伺服器與目標伺服器之間的差異達到一定標準時,記憶體複製操作才會結束,同時暫停源系統。
(4) 所需複製的資料在減少
在源系統和目標系統都停機的情況下,將最後乙個迴圈的 dirty-pages 和源系統裝置的工作狀態複製到目標伺服器。
(5) 狀態資訊的複製
然後,將儲存從源系統上解鎖,並鎖定在目標系統上。啟動目標伺服器,並與儲存資源和網路資源相連線。
(6) 停止源伺服器,啟動目標伺服器
先把虛擬機器現有的cpu state, registers and, optionally, non-pageable memory(記憶體中不會進行交換或者移動的記憶體)等資訊傳輸到目的伺服器,不管dirty page,並迅速把虛擬機器在目的伺服器啟動起來。同時,源伺服器也會動態的把剩餘的memory推送到目的伺服器上。但是當虛擬機器執行呼叫到還沒傳輸過來的memory時,會觸發page-fault.
postcopy基於use***ult機制,可以在使用者空間中通過檔案描述符fd獲得page fault資訊。當虛擬機器在目的伺服器上呼叫到這些還未傳輸完成的記憶體時,use***ultfd可以到源伺服器上把這些記憶體資訊取出,並傳輸到目的伺服器上,讓虛擬機器繼續執行。
使用postcopy不會受虛機對記憶體io的壓力影響,但遷移完成後如果記憶體io壓力大,會頻繁呼叫use***ult,這就會對伺服器頻寬帶來壓力,造成虛機效能下降。
同時遷移儲存資料和記憶體資料,融合了pre-copy和post-copy兩者的優勢,降低了網路流量傳輸,減少了訪問源端記憶體次數。
缺點式依然存在post-copy階段中的穩健性問題
三種模式的比較:
參考:邊緣計算場景下虛擬機器遷移研究現狀
虛擬機器遷移技術漫談,第 1 部分
【研究任務】熱遷移方式——pre-copy、post-copy和x-multifd
kvm/qemu2.3.0 虛擬機器動態遷移分析(一)
qemu記憶體遷移流程
KVM動態遷移
一.搭建nfs服務端 1.主從節點均要安裝nfs utils rpcbind兩個包,建立相同目錄 root 125 yum install y nfs utils rpcbind root 125 mkdir data2.新增一塊新磁碟,掛載到 data目錄下 root 126 vi etc exp...
冷遷移和熱遷移
1 冷遷移 通常我們存放虛擬機器磁碟的目錄都是掛在的乙個nfs檔案系統的磁碟,而這個磁碟通常是lvm檔案系統。所以需要進行冷遷移時,只要在目標主機上掛載這個nfs檔案系統,就可以看到要遷移的那個虛擬機器的磁碟檔案,通常以.qcow2或.raw結尾的,然後,只需將虛擬機器的.xml配置檔案傳送到目標伺...
kvm詳解 10 遷移
靜態遷移就是虛擬機器在關機狀態下,拷貝磁碟檔案與配置檔案到目標虛擬主機中,實現的遷移。分為以下情況 虛擬主機各自使用本地儲存存放虛擬機器磁碟檔案,本文實現基於本地磁碟儲存虛擬機器磁碟檔案的遷移方式 虛擬主機之間使用共享儲存存放虛擬機器磁碟檔案,該方式只是在目標虛擬主機上重新定義虛擬機器就可以了 遷移...