肖軍 李春鳴 潘丹
摘 要:伴隨著社會經(jīng)濟(jì)的快速發(fā)展,計(jì)算機(jī)技術(shù)得到了很大進(jìn)步。用戶數(shù)據(jù)的增多給計(jì)算機(jī)通信技術(shù)帶來了很大壓力,為了緩解這種壓力提高通信的速度,我們采取虛擬機(jī)通信技術(shù),而當(dāng)前基于內(nèi)存共享的虛擬機(jī)技術(shù)是不能夠滿足當(dāng)前復(fù)雜的網(wǎng)絡(luò)通信要求。對于這個(gè)問題,實(shí)現(xiàn)同一個(gè)計(jì)算機(jī)上多個(gè)虛擬機(jī)之間的通信,提出了支持在線遷移的虛擬機(jī)通信方法,通過引入加速內(nèi)存模塊以及改進(jìn)現(xiàn)有的監(jiān)控器,構(gòu)造出了支持RLMCom的虛擬機(jī)系統(tǒng)。通過改進(jìn)數(shù)據(jù)傳輸、系統(tǒng)關(guān)閉等方面來支持在線系統(tǒng)。與其他虛擬機(jī)系統(tǒng)相比,該系統(tǒng)具有很大的優(yōu)勢,不僅能夠提高通信效率而且還能夠保證通信的準(zhǔn)確性。文章就針對這項(xiàng)技術(shù)進(jìn)行相關(guān)研究,給該領(lǐng)域的人員提供一定的借鑒。
關(guān)鍵詞:在線遷移;虛擬機(jī)間通信;共享內(nèi)存;編程透明
1 RLMCom虛擬機(jī)系統(tǒng)結(jié)構(gòu)和組成
1.1總體結(jié)構(gòu)
由于一臺計(jì)算機(jī)中可以存在多個(gè)虛擬機(jī),這些虛擬機(jī)的通信方法是不同的,為了能夠方便通信傳輸,整合多個(gè)虛擬機(jī),文章提出了RLMCom的通信方法,該方法能夠快速提高通信傳輸速度。為了能夠讓該系統(tǒng)在計(jì)算機(jī)上使用,需要對已經(jīng)存在的虛擬機(jī)進(jìn)行改進(jìn),直到能夠支持RLMCom虛擬機(jī)系統(tǒng)。具體的結(jié)構(gòu)圖如圖1。
1.2 系統(tǒng)組成
從構(gòu)建支持RLMCom的虛擬機(jī)系統(tǒng)的角度,圖1中主要模塊的組成及其工作原理如下。
1.2.1 虛擬機(jī)監(jiān)控器VMM。虛擬機(jī)組管理子模塊將所有VM進(jìn)行全局分組管理,具有相同組ID的VM構(gòu)成一個(gè)虛擬機(jī)組,當(dāng)通信雙方VM在同一虛擬機(jī)組時(shí),采用基于共享內(nèi)存的加速方法來加速通信。在VM啟動或關(guān)閉時(shí)調(diào)用通告管理子模塊為虛擬機(jī)組創(chuàng)建或刪除事件緩沖區(qū)。通告管理子模塊在VM啟動或關(guān)閉時(shí)被虛擬機(jī)組管理子模塊調(diào)用為虛擬機(jī)組創(chuàng)建或回收事件緩沖區(qū)。通告管理子模塊還登記和緩存來自VM的請求對應(yīng)的事件,并通過通告加速模塊的通告處理子模塊向目標(biāo)VM發(fā)送事件。在線遷移子模塊保留Xen VMM在線遷移子模塊的在線遷移功能,并添加遷移輔助處理功能到在線遷移子模塊中。在通信加速內(nèi)核模塊被加載時(shí),添加的遷移輔助處理功能被初始化子模塊激活,生成VM的當(dāng)前位置號(虛擬機(jī)系統(tǒng)中每個(gè)VM唯一的位置標(biāo)志信息)并更新VMM的當(dāng)前位置號表,調(diào)用通信加速內(nèi)核模塊的VM遷移支持子模塊,使后者獲取該VM當(dāng)前位置號的一個(gè)拷貝,用于在數(shù)據(jù)傳輸和連接關(guān)閉時(shí)判斷VM是否發(fā)生了遷移;在接收到外部在線遷移命令并通過原有在線遷移功能完成VM的遷移后,在線遷移子模塊將當(dāng)前VM遷移前所在物理計(jì)算機(jī)上的源VMM中保存的連接控制塊、已發(fā)送和已接收字節(jié)數(shù)同步到遷移后的目標(biāo)VMM中,目標(biāo)VMM的在線遷移子模塊生成被遷移VM的當(dāng)前位置號,更新當(dāng)前位置號表中的信息。
1.2.2 客戶操作系統(tǒng)中通信加速內(nèi)核模塊
(1)初始化子模塊。該模塊一般都會在客戶操作系統(tǒng)加載內(nèi)核模塊之后被系統(tǒng),它會最先調(diào)用不同虛擬機(jī)之間的管理模塊來創(chuàng)建并注冊客戶操作系統(tǒng),然后會向內(nèi)存共享模塊發(fā)出請求,然后建立一個(gè)內(nèi)存緩存區(qū)。之后還會調(diào)用在線遷移模塊生成客戶操作系統(tǒng)的位置號并更新整個(gè)位置號表。此外,還會調(diào)用客戶操作系統(tǒng)中的遷移模塊,并維護(hù)客戶操作系統(tǒng)中位置號,同時(shí)還會拷貝這個(gè)位置號。在系統(tǒng)調(diào)用這些程序的時(shí)候還會調(diào)用分析器模塊并進(jìn)行加速通信的模式。初始化子模塊能夠?yàn)镽LMCom系統(tǒng)提供一個(gè)開始環(huán)境。(2)系統(tǒng)調(diào)用分析器子模塊。該系統(tǒng)模塊主要是對不同的計(jì)算機(jī)客戶操作系統(tǒng)間通信截獲向系統(tǒng)調(diào)用請求,在這種情況下仍可以使用傳統(tǒng)的處理機(jī)制,如果在同一個(gè)計(jì)算機(jī)里客戶操作系統(tǒng)間的通信則通常會使用連接管控模塊和數(shù)據(jù)傳輸模塊進(jìn)行關(guān)閉或者創(chuàng)建等操作。(3)連接管控子模塊。這部分模塊主要是負(fù)責(zé)網(wǎng)絡(luò)通信之間的信息維護(hù)管理,為用戶提供可控的數(shù)據(jù)結(jié)構(gòu)并連接所有的組織控制模塊。(4)通告處理子模塊。該部分模塊主要是中斷事件注入模塊以及通關(guān)管理模塊,同時(shí)讀取緩存區(qū)內(nèi)的事件,并獲取事件之間的相關(guān)性,根據(jù)具體的事件類型來喚醒客戶操作系統(tǒng)接受數(shù)據(jù),并關(guān)閉另一方的客戶操作系統(tǒng)的網(wǎng)絡(luò)連接。(5)數(shù)據(jù)傳輸管理子模塊。這部分的模塊主要是處理數(shù)據(jù)之間的接收和發(fā)送請求。通過客戶操作系統(tǒng)中的遷移支持模塊對在線遷移活動進(jìn)行判斷,一旦發(fā)生了遷移情況,那么就很容易出現(xiàn)丟失數(shù)據(jù),需要重新連接數(shù)據(jù),如果沒發(fā)生遷移,那么就可以接到連接控制塊的信息,進(jìn)而能夠共享緩存區(qū)的信息。
2 支持在線遷移的關(guān)鍵流程
2.1 主要數(shù)據(jù)結(jié)構(gòu)
通過和管控模塊連接主要是為了能夠維護(hù)和管理好網(wǎng)絡(luò)信息,能夠?yàn)樵谕挥?jì)算機(jī)上的客戶操作系統(tǒng)之間的網(wǎng)絡(luò)信息建立起可控模塊。連接控制塊主要包括了通信雙方的客戶操作系統(tǒng)的IP地址、阻塞式和非阻塞式的標(biāo)志位、發(fā)送緩存區(qū)和接受緩存區(qū)、等待發(fā)送的隊(duì)列以及等待接受的隊(duì)列。這些所有的部分相互鏈接就能夠形成連接管控子模塊,在這個(gè)模塊中的每一項(xiàng)都會有一個(gè)連接的ID號。
2.2 基于共享內(nèi)存的數(shù)據(jù)和控制信息
客戶操作系統(tǒng)中的通信雙方可以通過虛擬機(jī)系統(tǒng)內(nèi)的共享內(nèi)存進(jìn)行信息的交互,使得通信雙方通信更加便捷。客戶操作系統(tǒng)中的一方發(fā)送的信息和另一方發(fā)送的信息都會存儲在緩存區(qū)內(nèi)并能夠?qū)崿F(xiàn)共享。在客戶操作系統(tǒng)中的連接建立時(shí)就會自動創(chuàng)建連接控制塊,這部分主要就是為了存儲同一臺計(jì)算機(jī)內(nèi)的信息資源,當(dāng)連接被關(guān)閉時(shí)信息也同時(shí)會被刪除??蛻舨僮飨到y(tǒng)雙方是通過事件進(jìn)行通信的,當(dāng)事件被存儲在緩存區(qū)內(nèi),客戶操作系統(tǒng)中的信息處理模塊就會自動讀取緩存區(qū)內(nèi)的事件。
2.3 接收到外部遷移命令時(shí)控制信息的同步和更新
當(dāng)客戶操作系統(tǒng)接收到來自外界用戶輸入的在線遷移命令之后,在線遷移模塊就會自動完成客戶操作系統(tǒng)的遷移,由遷移輔助處理系統(tǒng)則會把當(dāng)前客戶操作系統(tǒng)遷移之前的一些數(shù)據(jù)保存在連接控制塊中,并對已經(jīng)發(fā)送和已經(jīng)同比的數(shù)據(jù)遷移到指定區(qū)域內(nèi),同時(shí)還會通知在線遷移模塊生成客戶操作系統(tǒng)當(dāng)前的位置號碼,并直接更新位置號碼表中的信息。通過上面的這些操作就能夠保證虛擬機(jī)接收到的信息和當(dāng)前客戶操作系統(tǒng)中在線遷移的信息保持一致,這也就能夠提高數(shù)據(jù)的準(zhǔn)確性。
2.4 關(guān)鍵流程
在客戶操作系統(tǒng)實(shí)際應(yīng)用的過程中,通信內(nèi)核需要接受來自程序以及外部的系統(tǒng)命令的調(diào)用,然后轉(zhuǎn)發(fā)給系統(tǒng)內(nèi)部其他的應(yīng)用模塊,系統(tǒng)通過分析器能夠先排除掉和用戶需要的網(wǎng)絡(luò)操作沒有關(guān)系的調(diào)用,之后再對有關(guān)系的網(wǎng)絡(luò)操作進(jìn)行細(xì)致的分析和處理,之后會對一臺計(jì)算機(jī)中每個(gè)虛擬機(jī)中的操作系統(tǒng)進(jìn)行分享內(nèi)存中的通信。假如當(dāng)前的調(diào)用系統(tǒng)是網(wǎng)絡(luò)連接,那么控制子模塊就會先對計(jì)算機(jī)獲得的客戶操作系統(tǒng)ID以及計(jì)算機(jī)本身的地址,然后會再判斷虛擬機(jī)之間的ID是否一樣,如果不一樣,那么就不用進(jìn)行加速通信操作,就按照正常的網(wǎng)絡(luò)連接操作處理;如果虛擬機(jī)之間的ID是一樣的,那么就需要判斷雙方是不是真的在同一臺計(jì)算機(jī)上,如果不處在同一臺計(jì)算機(jī)內(nèi)。那么就需要按照正常的網(wǎng)絡(luò)連接處理,要不就需要進(jìn)行初始化數(shù)據(jù)的操作流程。
3 結(jié)束語
文章通過對當(dāng)前最為常用的一種支持在線遷移的虛擬機(jī)通信方法進(jìn)行分析,進(jìn)一步提高了數(shù)據(jù)通信技術(shù)。和其他通信方法相比,該方法不僅能夠支持用戶的透明數(shù)據(jù),同時(shí)還能夠?qū)崿F(xiàn)在線遷移,而且無需修改操作內(nèi)核。這種方法在通信領(lǐng)域中的應(yīng)用能夠提高虛擬機(jī)之間的通信速度,提高通信質(zhì)量。