V2V 內(nèi)存遷移技術(shù)
對于 VM 的內(nèi)存狀態(tài)的遷移,XEN 和 KVM 都采用了主流的的預(yù)拷貝(pre-copy)的策略。遷移開始之后,源主機 VM 仍在運行,目的主機 VM 尚未啟動。遷移通過一個循環(huán),將源主機 VM 的內(nèi)存數(shù)據(jù)發(fā)送至目的主機 VM。循環(huán)第一輪發(fā)送所有內(nèi)存頁數(shù)據(jù),接下來的每一輪循環(huán)發(fā)送上一輪預(yù)拷貝過程中被 VM 寫過的臟頁內(nèi)存 dirty pages。直到時機成熟,預(yù)拷貝循環(huán)結(jié)束,進入停機拷貝階段,源主機被掛起,不再有內(nèi)存更新。最后一輪循環(huán)中的臟頁被傳輸至目的主機 VM。預(yù)拷貝機制極大的減少了停機拷貝階段需要傳輸?shù)膬?nèi)存數(shù)據(jù)量,從而將停機時間大大縮小。
然而,對于更新速度非?斓膬(nèi)存部分,每次循環(huán)過程都會變臟,需要重復(fù) pre-copy,同時也導致循環(huán)次數(shù)非常多,遷移的時間變長。針對這種情況,KVM 虛擬機建立了三個原則:集中原則,一個循環(huán)內(nèi)的 dirty pages 小于等于 50;不擴散原則, 一個循環(huán)內(nèi)傳輸?shù)?dirty pages 少于新產(chǎn)生的;有限循環(huán)原則,循環(huán)次數(shù)必須少于 30。