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