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