一種虛擬機(jī)鏡像文件存儲(chǔ)、分發(fā)方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種虛擬機(jī)鏡像文件存儲(chǔ)、分發(fā)方法及裝置。存儲(chǔ)方法包括:將鏡像文件分割成定長(zhǎng)的鏡像文件塊;對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。通過(guò)對(duì)鏡像文件定長(zhǎng)切塊存儲(chǔ),可以有效節(jié)約虛擬機(jī)鏡像文件的存儲(chǔ)空間,同時(shí)保證了較高的壓縮比。分發(fā)方法包括:確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊;基于P2P協(xié)議與其他客戶端節(jié)點(diǎn)建立連接;在其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),從其他客戶端節(jié)點(diǎn)中獲取,否則從數(shù)據(jù)服務(wù)器獲取所需的鏡像文件塊;或者,在本客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),將鏡像文件塊發(fā)送。采用P2P協(xié)議實(shí)現(xiàn)虛擬機(jī)客戶端間的鏡像文件分發(fā),有效提升了虛擬機(jī)鏡像文件分發(fā)的效率和速度。
【專(zhuān)利說(shuō)明】一種虛擬機(jī)鏡像文件存儲(chǔ)、分發(fā)方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,特別涉及一種虛擬機(jī)鏡像文件存儲(chǔ)、分發(fā)方法及 裝直。
【背景技術(shù)】
[0002] "云計(jì)算"、"云存儲(chǔ)"是近年來(lái)出現(xiàn)較為重要的技術(shù)概念,給計(jì)算機(jī)科學(xué)以及互聯(lián) 網(wǎng)的發(fā)展帶來(lái)了長(zhǎng)遠(yuǎn)的影響。云計(jì)算、云存儲(chǔ)隱藏了底層復(fù)雜的基礎(chǔ)設(shè)施和管理邏輯,為用 戶提供了簡(jiǎn)潔、易用、可動(dòng)態(tài)調(diào)整的資源池。用戶無(wú)需掌握云內(nèi)部的專(zhuān)業(yè)知識(shí),無(wú)需直接控 制云底層的基礎(chǔ)設(shè)施,就可以方便地使用云技術(shù)提供的計(jì)算、存儲(chǔ)資源,并且可以依據(jù)自己 的需求,更改資源的使用量,以便于節(jié)省成本。
[0003] 隨著各大公司云數(shù)據(jù)中心的建成,云環(huán)境下的虛擬機(jī)規(guī)模急劇擴(kuò)張,虛擬機(jī)之間 硬件資源的復(fù)用以及網(wǎng)絡(luò)通信負(fù)載的加劇導(dǎo)致了整個(gè)云計(jì)算服務(wù)性能的下降,如何通過(guò)提 高虛擬環(huán)境下的服務(wù)性能來(lái)提升云系統(tǒng)的服務(wù)質(zhì)量,成為虛擬機(jī)研究領(lǐng)域的重要課題。虛 擬機(jī)在運(yùn)行過(guò)程中依賴(lài)于本身所需的虛擬機(jī)鏡像文件,在大規(guī)模虛擬集群的數(shù)據(jù)中心中, 海量的虛擬機(jī)鏡像文件的存儲(chǔ)方案設(shè)計(jì)顯得尤為重要。
[0004] 云計(jì)算環(huán)境創(chuàng)建新虛擬機(jī)時(shí),使用的硬盤(pán)鏡像通常是拷貝自一個(gè)模板鏡像。而傳 統(tǒng)的SAN(Storage Area Network and SAN protocols,存儲(chǔ)域網(wǎng)絡(luò)及其協(xié)議)存儲(chǔ)設(shè)備不 支持容錯(cuò)處理,如果SAN設(shè)備失效,則整個(gè)系統(tǒng)都無(wú)法繼續(xù)工作。
[0005] 可見(jiàn),現(xiàn)有虛擬機(jī)鏡像文件存儲(chǔ)和分發(fā)中存在的問(wèn)題如下:
[0006] 1.龐大的虛擬機(jī)鏡像文件存儲(chǔ)所占的存儲(chǔ)空間巨大;
[0007] 2.虛擬機(jī)鏡像文件的分發(fā)單純依賴(lài)鏡像文件數(shù)據(jù)服務(wù)器,導(dǎo)致鏡像文件服務(wù)器會(huì) 成為網(wǎng)絡(luò)熱點(diǎn),限制了虛擬機(jī)的建立及運(yùn)行速度和魯棒性。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明針對(duì)上述問(wèn)題,提出了一種虛擬機(jī)鏡像文件存儲(chǔ)、分發(fā)方法及裝置,用以解 決虛擬機(jī)鏡像文件的海量存儲(chǔ)浪費(fèi)存儲(chǔ)空間及分發(fā)效率低的問(wèn)題。
[0009] 本發(fā)明提供了一種虛擬機(jī)鏡像文件存儲(chǔ)方法,包括如下步驟:
[0010] 將鏡像文件分割成定長(zhǎng)的鏡像文件塊;
[0011] 對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。
[0012] 本發(fā)明提供了一種虛擬機(jī)鏡像文件分發(fā)方法,包括如下步驟:
[0013] 確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊;
[0014] 基于P2P (Peer to Peer,對(duì)等網(wǎng)絡(luò))協(xié)議與其他客戶端節(jié)點(diǎn)建立連接;
[0015] 在確定其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),從其他 客戶端節(jié)點(diǎn)中獲取該鏡像文件塊,否則從數(shù)據(jù)服務(wù)器獲取所需的鏡像文件塊;或者,在確定 本客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),將該鏡像文件塊 發(fā)送至其他客戶端節(jié)點(diǎn),其中,鏡像文件塊是將虛擬機(jī)鏡像文件按定長(zhǎng)分割后得到的。
[0016] 本發(fā)明提供了一種虛擬機(jī)鏡像文件存儲(chǔ)裝置,包括:
[0017] 分割單元,用于將鏡像文件分割成定長(zhǎng)的鏡像文件塊;
[0018] 存儲(chǔ)單元,用于對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。
[0019] 本發(fā)明提供了一種虛擬機(jī)鏡像文件分發(fā)裝置,包括:
[0020] 確定單元,用于確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊;
[0021] 連接單元,用于基于對(duì)等網(wǎng)絡(luò)P2P協(xié)議與其他客戶端節(jié)點(diǎn)建立連接;
[0022] 分發(fā)單元,用于在確定其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文 件塊時(shí),從其他客戶端節(jié)點(diǎn)中獲取該鏡像文件塊,否則從數(shù)據(jù)服務(wù)器獲取所需的鏡像文件 塊;或者,在確定本客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí), 將該鏡像文件塊發(fā)送至其他客戶端節(jié)點(diǎn),其中,鏡像文件塊是將虛擬機(jī)鏡像文件按定長(zhǎng)分 割后得到的。
[0023] 本發(fā)明有益效果如下:
[0024] 當(dāng)前虛擬機(jī)鏡像文件存儲(chǔ)中,由于鏡像文件數(shù)量龐大,導(dǎo)致虛擬機(jī)鏡像文件存儲(chǔ) 所占空間巨大。在本發(fā)明實(shí)施例提供的虛擬機(jī)鏡像文件存儲(chǔ)方案中,通過(guò)對(duì)虛擬機(jī)鏡像文 件分割成定長(zhǎng)的鏡像文件塊進(jìn)行存儲(chǔ),由于通過(guò)對(duì)鏡像文件定長(zhǎng)分割成塊,保證了較高的 壓縮比,所以,可以有效節(jié)約虛擬機(jī)鏡像文件的存儲(chǔ)空間。
[0025] 另外,在現(xiàn)有的虛擬機(jī)鏡像文件分發(fā)中單純依賴(lài)鏡像文件服務(wù)器,限制了虛擬機(jī) 的建立及運(yùn)行速度和魯棒性。針對(duì)該問(wèn)題,在本發(fā)明實(shí)施例提供的虛擬機(jī)鏡像文件分發(fā)方 案中,采用P2P協(xié)議在虛擬機(jī)客戶端間進(jìn)行鏡像文件的快速克隆、分發(fā),因?yàn)槔肞2P虛擬 機(jī)鏡像文件的分發(fā)方法,所有的鏡像文件服務(wù)器和客戶端節(jié)點(diǎn)均可作為鏡像文件塊的提供 者,相互交換存儲(chǔ)的鏡像文件塊,有效將鏡像文件服務(wù)器的數(shù)據(jù)傳輸負(fù)載轉(zhuǎn)移到客戶端節(jié) 點(diǎn)上,平衡了數(shù)據(jù)傳輸?shù)呢?fù)載,避免了網(wǎng)絡(luò)熱點(diǎn)的出現(xiàn),有效縮短了拷貝鏡像文件所需等待 的時(shí)間和10開(kāi)銷(xiāo),提升了虛擬機(jī)鏡像文件分發(fā)的效率和速度。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0026] 下面將參照附圖描述本發(fā)明的具體實(shí)施例,其中:
[0027] 圖1為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件存儲(chǔ)方法的流程示意圖;
[0028] 圖2為本發(fā)明實(shí)施例中不同鏡像文件切塊大小下系統(tǒng)實(shí)現(xiàn)的去冗余壓縮比示意 圖;
[0029] 圖3為本發(fā)明實(shí)施例中不同鏡像文件切塊大小參數(shù)下系統(tǒng)的10性能結(jié)果示意 圖;
[0030] 圖4為本發(fā)明實(shí)施例中鏡像文件塊存儲(chǔ)方案10性能測(cè)試結(jié)果示意圖;
[0031] 圖5為本發(fā)明實(shí)施例中指紋計(jì)算的MD5算法與SHA-1算法的性能比較示意圖;
[0032] 圖6為本發(fā)明實(shí)施例中鏡像文件塊文件存儲(chǔ)示意圖;
[0033] 圖7為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件分發(fā)方法的流程示意圖;
[0034] 圖8為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件分發(fā)方法的應(yīng)用場(chǎng)景示意圖;
[0035] 圖9為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件存儲(chǔ)裝置示意圖;
[0036] 圖10為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件分發(fā)裝置示意圖;
[0037] 圖11為本發(fā)明實(shí)施例中Bonnie++系統(tǒng)性能測(cè)試結(jié)果示意圖;
[0038] 圖12為本發(fā)明實(shí)施例中PostMark系統(tǒng)性能測(cè)試結(jié)果示意圖;
[0039] 圖13為本發(fā)明實(shí)施例中Linux虛擬機(jī)性能測(cè)試結(jié)果示意圖;
[0040] 圖14為本發(fā)明實(shí)施例中傳輸虛擬機(jī)鏡像文件花費(fèi)的時(shí)間對(duì)比示意圖;
[0041] 圖15為本發(fā)明實(shí)施例中按需傳輸時(shí)虛擬機(jī)的啟動(dòng)速度對(duì)比示意圖。
【具體實(shí)施方式】
[0042] 為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的示例性 實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說(shuō)明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是 所有實(shí)施例的窮舉。
[0043] 圖1為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件存儲(chǔ)方法的流程示意圖,如圖1所示,在虛 擬機(jī)鏡像文件存儲(chǔ)時(shí)可以包括如下步驟:
[0044] 步驟101 :將鏡像文件分割成定長(zhǎng)的鏡像文件塊;
[0045] 步驟102 :對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。
[0046] 實(shí)施中,定長(zhǎng)的鏡像文件塊大小可以為4KB的N倍,其中N為自然數(shù)。
[0047] 具體的,采用定長(zhǎng)的鏡像文件塊分割方案,使用4KB或者4KB整數(shù)倍大小作為鏡像 文件塊作為文件系統(tǒng)在磁盤(pán)上保存的基本數(shù)據(jù)塊大小,保證了所有寫(xiě)入磁盤(pán)的數(shù)據(jù)可以按 照磁盤(pán)簇邊界進(jìn)行對(duì)齊。由于操作系統(tǒng)鏡像和應(yīng)用程序鏡像均為只讀,一旦寫(xiě)入鏡像文件 之后不能再修改,因此,定長(zhǎng)切分的方案可以保證較高的壓縮比。
[0048] 由于鏡像文件塊的大小,將直接影響到系統(tǒng)的10性能以及存儲(chǔ)壓縮比。因此需要 選取一個(gè)最佳的數(shù)據(jù)塊大小參數(shù),以便獲得10性能以及存儲(chǔ)壓縮比之間的平衡。
[0049] 圖2為本發(fā)明實(shí)施例中不同鏡像文件切塊大小下系統(tǒng)實(shí)現(xiàn)的去冗余壓縮比示意 圖,如圖2所示,通過(guò)對(duì)常用的183個(gè)總大小為2. 31TB的虛擬機(jī)鏡像文件進(jìn)行去冗余而得 至IJ,這些鏡像文件包括了多個(gè)版本的Windows操作系統(tǒng)以及Linux操作系統(tǒng),應(yīng)用軟件包括 了科學(xué)計(jì)算軟件、生物信息學(xué)分析軟件、數(shù)據(jù)庫(kù)管理系統(tǒng)、辦公系統(tǒng)、網(wǎng)絡(luò)服務(wù)系統(tǒng)、集成開(kāi) 發(fā)環(huán)境等多種組合,基本涵蓋了絕大部分的虛擬機(jī)應(yīng)用需求。所有的虛擬機(jī)文件系統(tǒng)存儲(chǔ) 的磁盤(pán)簇大小都是4KB,因此,小于4KB的去冗余鏡像文件塊并不能對(duì)去冗余壓縮比帶來(lái)很 明顯的提高。當(dāng)鏡像文件塊大小增加時(shí),系統(tǒng)整體的去冗余壓縮比迅速下降。
[0050] 圖3為本發(fā)明實(shí)施例中不同鏡像文件切塊大小參數(shù)下系統(tǒng)的10性能結(jié)果示意圖, 如圖3所示,實(shí)驗(yàn)數(shù)據(jù)來(lái)自Liquid,其中,Liquid是將本發(fā)明實(shí)施例中提供的虛擬機(jī)鏡像文 件存儲(chǔ)方法應(yīng)用到實(shí)際中后,得到相應(yīng)的虛擬機(jī)鏡像文件存儲(chǔ)系統(tǒng),為了稱(chēng)呼方便,命名該 裝置為"Liquid"。圖3中標(biāo)記了 Raw數(shù)據(jù),是對(duì)本地的鏡像文件塊存儲(chǔ)進(jìn)行讀寫(xiě)操作的性 能,因?yàn)樽x寫(xiě)的鏡像文件塊經(jīng)過(guò)去冗余操作,只能是不相同的鏡像文件塊,其數(shù)量要比實(shí)際 寫(xiě)入鏡像的數(shù)據(jù)要少。標(biāo)記了去冗余的數(shù)據(jù),則是考慮了去冗余壓縮比而得到的結(jié)果,也即 表明了客戶端文件系統(tǒng)給虛擬機(jī)所提供的實(shí)際10性能的指標(biāo)。較小的數(shù)據(jù)塊將會(huì)導(dǎo)致更 多的磁盤(pán)隨機(jī)讀寫(xiě)操作,因此將會(huì)破壞系統(tǒng)的10性能。隨著鏡像文件塊的增長(zhǎng),10性能逐 漸提升,而在鏡像文件塊大小達(dá)到256KB之后逐漸穩(wěn)定下來(lái)。
[0051] 基于本發(fā)明實(shí)施例中的實(shí)驗(yàn)結(jié)果以及實(shí)際使用經(jīng)驗(yàn)表明,使用256KB至1MB范圍 的鏡像文件塊大小可以取得良好的系統(tǒng)10性能以及去冗余壓縮比,達(dá)到兩者之間的平衡, 能夠滿足絕大部分的應(yīng)用需求。
[0052] 實(shí)施中,定長(zhǎng)的鏡像文件塊大小可以為256KB。
[0053] 具體實(shí)施中,在鏡像文件塊大小的選擇方面,可自定義切塊的大小,可以實(shí)現(xiàn)不同 大小切塊的壓縮存儲(chǔ),一般來(lái)說(shuō)較大的切塊方案意味著各鏡像塊之間的重復(fù)度更小,壓縮 比更小,而較小的切塊方案則由于元數(shù)據(jù)量的增量導(dǎo)致了系統(tǒng)10性能的下降。經(jīng)過(guò)試驗(yàn)測(cè) 試,合適的切塊大小為256KB,能夠達(dá)到10性能與存儲(chǔ)壓縮比的平衡。
[0054] 圖4為本發(fā)明實(shí)施例中鏡像文件塊存儲(chǔ)方案10性能測(cè)試結(jié)果示意圖,如圖4所 示,采用本發(fā)明實(shí)施例中的虛擬機(jī)鏡像文件存儲(chǔ)方案與普通的Ext4(The fourth extended file system,擴(kuò)展日志式文件系統(tǒng)第四版)文件系統(tǒng)設(shè)計(jì)進(jìn)行比較對(duì)照,實(shí)驗(yàn)環(huán)境為32核 主頻為2GHz的Intel(R)Xeon CPU E5-2640處理器,32GB內(nèi)存服務(wù)器1臺(tái),安裝本發(fā)明實(shí)施 中提供的虛擬機(jī)鏡像文件存儲(chǔ)系統(tǒng)Liquid,然后以256KB為默認(rèn)鏡像文件的切塊大小,分 別寫(xiě)入1GB?160GB大小的鏡像文件進(jìn)行讀寫(xiě)性能測(cè)試。測(cè)試結(jié)果顯示,經(jīng)過(guò)優(yōu)化過(guò)的本 發(fā)明實(shí)施例中提供的存儲(chǔ)方案,性能優(yōu)于Ext4文件系統(tǒng)的存儲(chǔ)性能,兩者在鏡像讀取方面 的性能區(qū)別不大,但是在寫(xiě)入性能中可以明顯看到,Ext4隨著系統(tǒng)中存儲(chǔ)鏡像文件規(guī)模的 逐漸擴(kuò)大,系統(tǒng)中元數(shù)據(jù)規(guī)模將顯著增多,導(dǎo)致其在存儲(chǔ)量大于10G后寫(xiě)入性能直線下降, 而本發(fā)明實(shí)施例中提供的存儲(chǔ)方案中對(duì)于鏡像文件寫(xiě)入的性能則支持相對(duì)穩(wěn)定,在對(duì)于鏡 像文件的大規(guī)模增長(zhǎng),其寫(xiě)入速度都穩(wěn)定在40MB/S以上,讀取性能則穩(wěn)定在30MB/S左右, 整體上在支持海量鏡像文件存儲(chǔ)方面優(yōu)于基于Ext4的方案。
[0055] 實(shí)施中,對(duì)鏡像文件塊進(jìn)行存儲(chǔ)時(shí),可以按照磁盤(pán)簇邊界對(duì)齊存儲(chǔ)。
[0056] 具體實(shí)施中,分割成定長(zhǎng)的鏡像文件塊可以為4KB或者4KB整數(shù)倍大小,在存儲(chǔ)至 磁盤(pán)上可以按磁盤(pán)簇邊界對(duì)齊存儲(chǔ),以有效利用磁盤(pán)空間。
[0057] 實(shí)施中,可以對(duì)存儲(chǔ)的鏡像文件塊進(jìn)行去冗余。
[0058] 具體實(shí)施中,對(duì)存儲(chǔ)的鏡像文件塊去冗余,可以對(duì)鏡像文件變長(zhǎng)切塊或者定長(zhǎng)切 塊,從效果來(lái)看,變長(zhǎng)切塊的效果更好,但實(shí)現(xiàn)復(fù)雜,計(jì)算量也大;本發(fā)明實(shí)施例中的鏡像文 件塊修改不多,定長(zhǎng)切塊易于實(shí)現(xiàn),且能實(shí)現(xiàn)較好的壓縮效果。
[0059] 實(shí)施中,可以對(duì)鏡像文件塊進(jìn)行MD5 (Message Digest Algorithm MD5,消息摘要 算法第五版)指紋特征計(jì)算,確定鏡像文件塊的指紋特征;根據(jù)指紋特征對(duì)存儲(chǔ)的鏡像文 件塊去冗余;在存儲(chǔ)鏡像文件塊的同時(shí)存儲(chǔ)其指紋特征。
[0060] 具體實(shí)施中,考慮到在存儲(chǔ)虛擬機(jī)鏡像文件過(guò)程中去冗余,需要檢測(cè)鏡像文件中 是否含有重復(fù)的鏡像文件塊??梢圆捎肕D5加密算法來(lái)進(jìn)行鏡像文件指紋特征的計(jì)算,對(duì) 于具備相同指紋特征的鏡像文件塊,則被認(rèn)為是重復(fù)冗余的鏡像文件塊。針對(duì)指紋特征算 法的選取,本發(fā)明實(shí)施例中,對(duì)MD5加密算法和SHA-1 (Secure Hash Algorithm,安全散列算 法)算法的性能進(jìn)行測(cè)試比較,將二者應(yīng)用于計(jì)算各定長(zhǎng)鏡像文件塊的指紋特征,找出具 備相同數(shù)據(jù)的鏡像塊實(shí)施去冗余存儲(chǔ)的過(guò)程。在本發(fā)明實(shí)施例中,使用了 1?16個(gè)線程并 發(fā)的計(jì)算測(cè)試,計(jì)算兩種算法在相同線程數(shù)下所表現(xiàn)出的吞吐量性能差異性能。圖5為本 發(fā)明實(shí)施例中指紋計(jì)算的MD5算法與SHA-1算法的性能比較示意圖,具體測(cè)試比較結(jié)果如 圖5所示:MD5算法在計(jì)算吞吐量上明顯優(yōu)于SHA-1算法,并在一定程度下會(huì)隨著線程數(shù)目 的增加計(jì)算速度優(yōu)勢(shì)更為明顯,而SHA-1算法則對(duì)于CPU計(jì)算資源的敏感程度不夠,多線程 條件下計(jì)算吞吐量依然維持在較低的水平。因此,MD5是計(jì)算指紋特征的一種更加優(yōu)異算 法。當(dāng)然,除了 MD5算法,也可以采用可以實(shí)現(xiàn)同樣功能其他算法。
[0061] 具體實(shí)施中,在完成一個(gè)應(yīng)用程序或操作系統(tǒng)的鏡像文件存儲(chǔ)后,運(yùn)行該鏡像文 件時(shí),對(duì)該鏡像文件分塊并進(jìn)行MD5指紋特征計(jì)算,可以包括:
[0062] 將在不同虛擬機(jī)中需進(jìn)行修改的鏡像文件塊存儲(chǔ)在第一級(jí)緩存區(qū),將最近讀取的 只讀鏡像文件塊存儲(chǔ)在第二級(jí)緩存區(qū);
[0063] 對(duì)第二級(jí)緩存區(qū)里的鏡像文件塊進(jìn)行MD5指紋特征計(jì)算。
[0064] 具體實(shí)施中,可以在內(nèi)存中維護(hù)兩級(jí)緩存區(qū),將在不同虛擬機(jī)中需進(jìn)行修改的鏡 像文件塊存儲(chǔ)在第一級(jí)緩存區(qū),這里,第一級(jí)緩存區(qū)主要緩存各虛擬機(jī)客戶端運(yùn)行鏡像文 件過(guò)程中需要頻繁修改的鏡像文件塊,即,第一級(jí)緩存區(qū)可以命名為私有緩存,在第一級(jí)緩 存區(qū)中的鏡像文件塊不計(jì)算指紋特征。第二級(jí)緩存區(qū)主要保存最近讀取的只讀數(shù)據(jù)塊,對(duì) 第二級(jí)緩存區(qū)中的鏡像文件塊進(jìn)行指紋特征的計(jì)算。即,第一級(jí)緩存區(qū)中的鏡像文件塊只 有被刷入第二級(jí)緩存區(qū)中,才需要計(jì)算指紋特征,采用兩級(jí)緩存可以有效減少鏡像文件塊 的指紋特征計(jì)算量,第一級(jí)緩存中的鏡像文件塊是針對(duì)不同虛擬機(jī)修改的,不能供其他虛 擬機(jī)使用,因此不需要計(jì)算其指紋特征,這樣處理保證了對(duì)于頻繁修改的鏡像文件塊能夠 快速的完成,極大的提升系統(tǒng)的運(yùn)打效率。
[0065] 實(shí)施中,可以根據(jù)LRU(Least Recently Used,近期最少使用算法)算法確定第二 緩存區(qū)中的鏡像文件塊。
[0066] 具體實(shí)施中,可以使用LRU算法進(jìn)行緩存管理,加快虛擬機(jī)訪問(wèn)速度。LRU算法,即 最少使用頁(yè)面置換算法,是為虛擬頁(yè)式存儲(chǔ)管理服務(wù)的。關(guān)于操作系統(tǒng)的內(nèi)存管理,如何節(jié) 省利用容量不大的內(nèi)存為最多的進(jìn)程提供資源,一直是研究的重要方向。而內(nèi)存的虛擬存 儲(chǔ)管理,是現(xiàn)在較為通用的方式,具體為:在內(nèi)存有限的情況下,擴(kuò)展一部分外存作為虛擬 內(nèi)存,真正的內(nèi)存只存儲(chǔ)當(dāng)前運(yùn)行時(shí)所用得到信息。這無(wú)疑極大地?cái)U(kuò)充了內(nèi)存的功能,極大 地提高了計(jì)算機(jī)的并發(fā)處理能力。虛擬頁(yè)式存儲(chǔ)管理,則是將進(jìn)程所需空間劃分為多個(gè)頁(yè) 面,內(nèi)存中只存放當(dāng)前所需頁(yè)面,其余頁(yè)面放入外存的管理方式。
[0067] 虛擬頁(yè)式存儲(chǔ)管理減少了進(jìn)程所需的內(nèi)存空間,卻也帶來(lái)了運(yùn)行時(shí)間變長(zhǎng)這一缺 點(diǎn):進(jìn)程運(yùn)行過(guò)程中,不可避免地要把在外存中存放的一些信息和內(nèi)存中已有的進(jìn)行交換, 由于外存的低速,這一步驟所花費(fèi)的時(shí)間不可忽略。因而,通過(guò)采取優(yōu)秀的算法以減少讀取 外存的次數(shù),還可以進(jìn)一步取得更好的效果。
[0068] 實(shí)施中,可以將鏡像文件塊合并為大數(shù)據(jù)塊BLK(Block,數(shù)據(jù)塊)文件后進(jìn)行存 儲(chǔ)。
[0069] 實(shí)施中,可以獲取BLK文件的大小、空閑位置以及鏡像文件塊的指紋特征所對(duì)應(yīng) 的位置偏移量;根據(jù)BLK文件的大小、空閑位置以及鏡像文件塊的指紋特征所對(duì)應(yīng)的位置 偏移量,存儲(chǔ)鏡像文件塊。
[0070] 實(shí)施中,可以采用位圖文件bitmap記錄BLK文件已使用和/或未使用的位置。
[0071] 具體實(shí)施中,圖4為本發(fā)明實(shí)施例中鏡像文件塊存儲(chǔ)方案10性能測(cè)試結(jié)果示意 圖,圖6為本發(fā)明實(shí)施例中鏡像文件塊文件存儲(chǔ)示意圖,通過(guò)對(duì)海量鏡像文件塊文件進(jìn)行 合并管理,減少系統(tǒng)中海量的元數(shù)據(jù)操作,提高系統(tǒng)10性能,具體如圖6和圖5所示,傳統(tǒng) 的虛擬機(jī)鏡像文件存儲(chǔ)方法是將所有的鏡像文件塊作為單獨(dú)的存儲(chǔ)文件放置在指定的目 錄下,這樣該目錄下將產(chǎn)生大量的鏡像文件塊文件,同時(shí)伴隨著大量的文件元數(shù)據(jù)管理,降 低系統(tǒng)性能。本發(fā)明實(shí)施中可以借鑒Haystack的原理來(lái)實(shí)現(xiàn)虛擬機(jī)鏡像文件存儲(chǔ),S卩,將 多個(gè)鏡像文件塊進(jìn)行合并,將其存在一個(gè)的大數(shù)據(jù)塊BLK文件中。
[0072] 文件系統(tǒng)的上層需要對(duì)大數(shù)據(jù)塊BLK的元數(shù)據(jù)進(jìn)行管理,包括BLK文件的大小、空 閑位置、指紋特征對(duì)應(yīng)偏移量等。這里可以采用BMP(Bitmap,圖像文件格式)文件記錄BLK 文件中使用與空閑記錄的bitmap表,IDX(Index,索引)文件記錄指紋特征對(duì)應(yīng)鏡像文件塊 在BLK文件中的偏移位置,三個(gè)文件都以指紋的首個(gè)Byte字符作為其文件名前綴,具體可 以如下:
[0073] BMP文件:在每次進(jìn)行新鏡像文件塊寫(xiě)入或數(shù)據(jù)刪除時(shí),需要用到BMP文件,該文 件以bit位的方式記錄了 BLK文件中對(duì)應(yīng)偏移量中的數(shù)據(jù)空間是否已經(jīng)使用,寫(xiě)入鏡像文 件塊前,首先查看BMP文件中空閑的空間,刪除的鏡像文件塊則將將其對(duì)應(yīng)的bit位置為0。
[0074] IDX文件:記錄對(duì)應(yīng)BLK文件中的元數(shù)據(jù)內(nèi)容,主要用于找到指紋特征對(duì)應(yīng)的鏡像 文件塊在BLK文件中的偏移位置,所有鏡像文件塊的讀取首先需要從IDX中讀取對(duì)應(yīng)偏移 位置,然后再?gòu)腂LK文件中對(duì)應(yīng)的偏移位置讀取鏡像文件塊,為提高鏡像文件塊讀取的速 度,可以將IDX文件內(nèi)容緩存在內(nèi)存中。
[0075] BLK文件:放置指紋特征對(duì)應(yīng)的鏡像文件塊數(shù)據(jù),BLK為一個(gè)類(lèi)似鏡像文件塊集合 的數(shù)組,每個(gè)數(shù)組元素長(zhǎng)度固定為鏡像塊的切塊長(zhǎng)度,即,在本發(fā)明實(shí)施例中為4KB或其整 數(shù)倍,對(duì)于鏡像文件塊位置的查找,由IDX文件指紋特征對(duì)應(yīng)的鏡像文件塊位置來(lái)確定。
[0076] 如圖6所示,基于上述三個(gè)文件,可以將大量的鏡像文件塊內(nèi)容合并在同一個(gè)文 件中。在虛擬機(jī)用戶在寫(xiě)入新的鏡像塊數(shù)據(jù)時(shí),可以首先從BMP文件中獲取可讀寫(xiě)的位置 BLK_ID,BMP文件將該BLK_ID置為1,然后在IDX文件中寫(xiě)入對(duì)應(yīng)指紋塊到BLK_ID的映射, 同時(shí)將BLK文件中對(duì)應(yīng)BLK_ID的偏移位置提供給用戶進(jìn)行寫(xiě)入操作。當(dāng)鏡像塊已經(jīng)存在于 Liquid中時(shí),只需要從IDX文件中讀取對(duì)應(yīng)BLK_ID號(hào),然后從BLK文件中讀取相關(guān)數(shù)據(jù)。
[0077] 在解決虛擬機(jī)鏡像文件存儲(chǔ)的基礎(chǔ)上,本發(fā)明實(shí)施例針對(duì)在現(xiàn)有的虛擬機(jī)鏡像文 件分發(fā)中單純依賴(lài)鏡像文件服務(wù)器,限制了虛擬機(jī)的建立及運(yùn)行速度和魯棒性的問(wèn)題,提 供了一種虛擬機(jī)鏡像文件分發(fā)方法,圖7為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件分發(fā)方法實(shí)施 的流程示意圖,如圖7所示,該方法可以包括如下步驟:
[0078] 步驟701 :確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊;
[0079] 步驟702 :基于P2P協(xié)議與其他客戶端節(jié)點(diǎn)建立連接;
[0080] 步驟703 :在確定其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊 時(shí),從其他客戶端節(jié)點(diǎn)中獲取該鏡像文件塊,否則從數(shù)據(jù)服務(wù)器獲取所需的鏡像文件塊;或 者,在確定本客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),將該 鏡像文件塊發(fā)送至其他客戶端節(jié)點(diǎn),其中,鏡像文件塊是將虛擬機(jī)鏡像文件按定長(zhǎng)分割后 得到的。
[0081] 其中,步驟701和步驟702沒(méi)有嚴(yán)格的時(shí)序要求,本領(lǐng)域技術(shù)人員應(yīng)該明白,步驟 702既可以在步驟701之后執(zhí)行,也可以在步驟701之前進(jìn)行,本發(fā)明對(duì)上述步驟的執(zhí)行順 序不作限制。
[0082] 具體實(shí)施中,圖8為本發(fā)明實(shí)施例中虛擬機(jī)鏡像文件分發(fā)方法的應(yīng)用場(chǎng)景示意 圖,如圖8所示,本發(fā)明實(shí)施例中基于P2P的數(shù)據(jù)分發(fā)模式,將鏡像服務(wù)器上的數(shù)據(jù)傳輸負(fù) 載轉(zhuǎn)移到客戶端節(jié)點(diǎn)上,系統(tǒng)中所有的鏡像文件服務(wù)器節(jié)點(diǎn)以及客戶端節(jié)點(diǎn)都可以作為鏡 像文件塊的提供節(jié)點(diǎn),互相之間通過(guò)交換存儲(chǔ)的數(shù)據(jù)塊指紋集合來(lái)實(shí)現(xiàn)信息的分發(fā),實(shí)施 中,各個(gè)節(jié)點(diǎn)(包括鏡像文件服務(wù)器節(jié)點(diǎn)和客戶端節(jié)點(diǎn))可以通過(guò)心跳包將節(jié)點(diǎn)負(fù)載相關(guān) 信息發(fā)送給與其連接的節(jié)點(diǎn),以平衡系統(tǒng)中的負(fù)載分布,有效規(guī)避了網(wǎng)絡(luò)熱點(diǎn)的出現(xiàn),避免 系統(tǒng)中瓶頸的出現(xiàn)。
[0083] 具體實(shí)施中,客戶端節(jié)點(diǎn)會(huì)優(yōu)先從與其連接的客戶端節(jié)點(diǎn)中獲取鏡像文件塊,只 有當(dāng)所有與其連接的客戶端節(jié)點(diǎn)中都不包含需要的鏡像文件塊對(duì)應(yīng)的指紋特征時(shí),客戶端 節(jié)點(diǎn)才會(huì)向鏡像文件服務(wù)器中發(fā)起讀取請(qǐng)求,以獲得所需要的鏡像文件塊,有效將鏡像文 件服務(wù)器的數(shù)據(jù)傳輸負(fù)載轉(zhuǎn)移到客戶端節(jié)點(diǎn)上,平衡了數(shù)據(jù)傳輸?shù)呢?fù)載,避免了網(wǎng)絡(luò)熱點(diǎn) 的出現(xiàn)。
[0084] 實(shí)施中,可以進(jìn)一步將從其他客戶端或數(shù)據(jù)服務(wù)器獲取的鏡像文件塊存放在緩存 區(qū)中。
[0085] 實(shí)施中,將從其他客戶端或數(shù)據(jù)服務(wù)器獲取的鏡像文件塊存放在緩存區(qū)中,可以 通過(guò)根據(jù)近期最少使用算法LRU確定緩存區(qū)中的鏡像文件塊。
[0086] 具體實(shí)施中,可以使用LRU算法進(jìn)行緩存管理,加快虛擬機(jī)訪問(wèn)速度。LRU算法,即 最少使用頁(yè)面置換算法,是為虛擬頁(yè)式存儲(chǔ)管理服務(wù)的。關(guān)于操作系統(tǒng)的內(nèi)存管理,如何節(jié) 省利用容量不大的內(nèi)存為最多的進(jìn)程提供資源,一直是研究的重要方向。而內(nèi)存的虛擬存 儲(chǔ)管理,是現(xiàn)在較為通用的方式,具體為:在內(nèi)存有限的情況下,擴(kuò)展一部分外存作為虛擬 內(nèi)存,真正的內(nèi)存只存儲(chǔ)當(dāng)前運(yùn)行時(shí)所用得到信息。這無(wú)疑極大地?cái)U(kuò)充了內(nèi)存的功能,極大 地提高了計(jì)算機(jī)的并發(fā)處理能力。虛擬頁(yè)式存儲(chǔ)管理,則是將進(jìn)程所需空間劃分為多個(gè)頁(yè) 面,內(nèi)存中只存放當(dāng)前所需頁(yè)面,其余頁(yè)面放入外存的管理方式。
[0087] 虛擬頁(yè)式存儲(chǔ)管理減少了進(jìn)程所需的內(nèi)存空間,卻也帶來(lái)了運(yùn)行時(shí)間變長(zhǎng)這一缺 點(diǎn):進(jìn)程運(yùn)行過(guò)程中,不可避免地要把在外存中存放的一些信息和內(nèi)存中已有的進(jìn)行交換, 由于外存的低速,這一步驟所花費(fèi)的時(shí)間不可忽略。因而,通過(guò)采取優(yōu)秀的算法以減少讀取 外存的次數(shù),還可以進(jìn)一步取得更好的效果。
[0088] 實(shí)施中,可以計(jì)算鏡像文件塊的MD5指紋特征;根據(jù)指紋特征確定其他客戶端節(jié) 點(diǎn)中是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊,或者,根據(jù)指紋特征確定本客戶端 節(jié)點(diǎn)虛擬機(jī)中是否存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊。
[0089] 具體實(shí)施中,在通過(guò)虛擬機(jī)鏡像文件分發(fā)方法獲取一個(gè)應(yīng)用程序或操作系統(tǒng)的鏡 像文件后,運(yùn)行該鏡像文件時(shí),對(duì)該鏡像文件分塊并進(jìn)行MD5指紋特征計(jì)算,可以包括:
[0090] 將在不同虛擬機(jī)中需進(jìn)行修改的鏡像文件塊存儲(chǔ)在第一級(jí)緩存區(qū),將最近讀取的 只讀鏡像文件塊存儲(chǔ)在第二級(jí)緩存區(qū);
[0091] 對(duì)第二級(jí)緩存區(qū)里的鏡像文件塊進(jìn)行MD5指紋特征計(jì)算。
[0092] 具體實(shí)施中,可以在內(nèi)存中維護(hù)兩級(jí)緩存區(qū),將在不同虛擬機(jī)中需進(jìn)行修改的鏡 像文件塊存儲(chǔ)在第一級(jí)緩存區(qū),這里,第一級(jí)緩存區(qū)主要緩存各虛擬機(jī)客戶端運(yùn)行鏡像文 件過(guò)程中需要頻繁修改的鏡像文件塊,即,第一級(jí)緩存區(qū)可以命名為私有緩存,在第一級(jí)緩 存區(qū)中的鏡像文件塊不計(jì)算指紋特征。第二級(jí)緩存區(qū)主要保存最近讀取的只讀數(shù)據(jù)塊,對(duì) 第二級(jí)緩存區(qū)中的鏡像文件塊進(jìn)行指紋特征的計(jì)算。即,第一級(jí)緩存區(qū)中的鏡像文件塊只 有被刷入第二級(jí)緩存區(qū)中,才需要計(jì)算指紋特征,采用兩級(jí)緩存可以有效減少鏡像文件塊 的指紋特征計(jì)算量,第一級(jí)緩存中的鏡像文件塊是針對(duì)不同虛擬機(jī)修改的,不能供其他虛 擬機(jī)使用,因此不需要計(jì)算其指紋特征,這樣處理保證了對(duì)于頻繁修改的鏡像文件塊能夠 快速的完成,極大的提升系統(tǒng)的運(yùn)打效率。
[0093] 實(shí)施中,可以根據(jù)LRU算法確定第二緩存區(qū)中的鏡像文件塊。
[0094] 實(shí)施中,根據(jù)指紋特征確定其他客戶端節(jié)點(diǎn)中是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需 的鏡像文件塊,可以包括:向其他客戶端節(jié)點(diǎn)發(fā)送本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊 指紋特征集合;指紋特征集合用于供其他客戶端節(jié)點(diǎn)根據(jù)該指紋特征集合確定是否存在本 客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊;或者,根據(jù)指紋特征確定本客戶端節(jié)點(diǎn)虛擬機(jī)中是 否存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊,包括:接收其他客戶端節(jié)點(diǎn)發(fā)送的該客 戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊指紋特征集合;根據(jù)指紋特征集合確定是否存在該客戶 端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊。
[0095] 具體實(shí)施中,系統(tǒng)中每個(gè)客戶端節(jié)點(diǎn)可以都向元數(shù)據(jù)服務(wù)器節(jié)點(diǎn)尋問(wèn)其他節(jié)點(diǎn)的 位置,并維持與這些客戶端節(jié)點(diǎn)的連接,并且會(huì)周期的向這些客戶端節(jié)點(diǎn)獲取最新的鏡像 文件塊指紋特征集合,保證其維護(hù)客戶端節(jié)點(diǎn)信息足夠準(zhǔn)確。當(dāng)需要獲取具有某個(gè)指紋特 征對(duì)應(yīng)的鏡像文件塊時(shí),客戶端節(jié)點(diǎn)首先隨機(jī)的選取幾個(gè)其他客戶端節(jié)點(diǎn),檢測(cè)這些與其 連接的客戶端節(jié)點(diǎn)中是否包含了需要的鏡像文件塊對(duì)應(yīng)的指紋特征,如果找到了需要的鏡 像文件塊對(duì)應(yīng)的指紋特征,則從該客戶端節(jié)點(diǎn)獲取該鏡像文件塊。
[0096] P2P鏡像文件分發(fā)協(xié)議中尋找Peer數(shù)據(jù)節(jié)點(diǎn)的算法,如下所示:
[0097]
【權(quán)利要求】
1. 一種虛擬機(jī)鏡像文件存儲(chǔ)方法,其特征在于,包括如下步驟: 將鏡像文件分割成定長(zhǎng)的鏡像文件塊; 對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。
2. 如權(quán)利要求1所述的方法,其特征在于,定長(zhǎng)的鏡像文件塊大小為4KB的N倍,其中 N為自然數(shù)。
3. 如權(quán)利要求2所述的方法,其特征在于,定長(zhǎng)的鏡像文件塊大小為256KB。
4. 如權(quán)利要求1至3任一所述的方法,其特征在于,對(duì)鏡像文件塊進(jìn)行存儲(chǔ)時(shí),按照磁 盤(pán)簇邊界對(duì)齊存儲(chǔ)。
5. 如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括: 對(duì)存儲(chǔ)的鏡像文件塊進(jìn)行去冗余。
6. 如權(quán)利要求5所述的方法,其特征在于,進(jìn)一步包括: 對(duì)鏡像文件塊進(jìn)行消息摘要算法第五版MD5指紋特征計(jì)算,確定鏡像文件塊的指紋特 征; 根據(jù)指紋特征對(duì)存儲(chǔ)的鏡像文件塊去幾余; 在存儲(chǔ)鏡像文件塊的同時(shí)存儲(chǔ)其指紋特征。
7. 如權(quán)利要求1所述的方法,其特征在于,將鏡像文件塊合并為大數(shù)據(jù)塊BLK文件后進(jìn) 行存儲(chǔ)。
8. 如權(quán)利要求7所述的方法,其特征在于,包括: 獲取BLK文件的大小、空閑位置以及鏡像文件塊的指紋特征所對(duì)應(yīng)的位置偏移量; 根據(jù)BLK文件的大小、空閑位置以及鏡像文件塊的指紋特征所對(duì)應(yīng)的位置偏移量,存 儲(chǔ)鏡像文件塊。
9. 如權(quán)利要求8所述的方法,其特征在于,包括: 采用位圖文件bitmap記錄BLK文件已使用和/或未使用的位置。
10. -種虛擬機(jī)鏡像文件分發(fā)方法,其特征在于,包括如下步驟: 確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊; 基于對(duì)等網(wǎng)絡(luò)P2P協(xié)議與其他客戶端節(jié)點(diǎn)建立連接; 在確定其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),從其他客戶 端節(jié)點(diǎn)中獲取所述鏡像文件塊,否則從數(shù)據(jù)服務(wù)器獲取所需的鏡像文件塊;或者,在確定本 客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的的鏡像文件塊時(shí),將所述鏡像文件 塊發(fā)送至其他客戶端節(jié)點(diǎn),其中,所述鏡像文件塊是將虛擬機(jī)鏡像文件按定長(zhǎng)分割后得到 的。
11. 如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括:將從其他客戶端或數(shù)據(jù)服務(wù) 器獲取的鏡像文件塊存放在緩存區(qū)中。
12. 如權(quán)利要求11所述的方法,其特征在于,將從其他客戶端或數(shù)據(jù)服務(wù)器獲取的鏡 像文件塊存放在緩存區(qū)中包括:根據(jù)近期最少使用算法LRU確定緩存區(qū)中的鏡像文件塊。
13. 如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括: 計(jì)算鏡像文件塊的MD5指紋特征; 根據(jù)指紋特征確定其他客戶端節(jié)點(diǎn)中是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件 塊,或者,根據(jù)指紋特征確定本客戶端節(jié)點(diǎn)虛擬機(jī)中是否存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需 的的鏡像文件塊。
14. 如權(quán)利要求13所述的方法,其特征在于,根據(jù)指紋特征確定其他客戶端節(jié)點(diǎn)中是 否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊,包括:向其他客戶端節(jié)點(diǎn)發(fā)送本客戶端節(jié) 點(diǎn)虛擬機(jī)所需的鏡像文件塊指紋特征集合;指紋特征集合用于供其他客戶端節(jié)點(diǎn)根據(jù)該指 紋特征集合確定是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊; 或者,根據(jù)指紋特征確定本客戶端節(jié)點(diǎn)虛擬機(jī)中是否存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需 的的鏡像文件塊,包括:接收其他客戶端節(jié)點(diǎn)發(fā)送的該客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件 塊指紋特征集合;根據(jù)指紋特征集合確定是否存在該客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件 塊。
15. 如權(quán)利要求14所述的方法,其特征在于,進(jìn)一步包括:鏡像文件塊指紋特征集合在 傳輸前采用Bloom Filter數(shù)據(jù)結(jié)構(gòu)壓縮處理。
16. 如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括: 以壓縮速度高于網(wǎng)絡(luò)帶寬速度的壓縮算法壓縮所述鏡像文件塊。
17. 如權(quán)利要去16所述的方法,其特征在于,包括: 所述壓縮算法為Google Snappy壓縮算法。
18. -種虛擬機(jī)鏡像文件存儲(chǔ)裝置,其特征在于,包括: 分割單元,用于將鏡像文件分割成定長(zhǎng)的鏡像文件塊; 存儲(chǔ)單元,用于對(duì)鏡像文件塊進(jìn)行存儲(chǔ)。
19. 如權(quán)利要求18所述的裝置,其特征在于,分割單元進(jìn)一步用于按4KB的N倍將鏡像 文件分割成定長(zhǎng)的鏡像文件塊,其中N為自然數(shù)。
20. 如權(quán)利要求19所述的裝置,其特征在于,分割單元進(jìn)一步用于將鏡像文件分割成 256KB大小的定長(zhǎng)鏡像文件塊。
21. 如權(quán)利要求18至20任一所述的裝置,其特征在于,存儲(chǔ)單元進(jìn)一步用于按照磁盤(pán) 簇邊界對(duì)齊的方式存儲(chǔ)鏡像文件塊。
22. 如權(quán)利要求18所述的裝置,其特征在于,存儲(chǔ)單元進(jìn)一步用于對(duì)存儲(chǔ)的鏡像文件 塊進(jìn)行去冗余。
23. 如權(quán)利要求22所述的裝置,其特征在于,進(jìn)一步包括: 指紋特征單元,用于對(duì)鏡像文件塊進(jìn)行MD5指紋特征計(jì)算,確定鏡像文件塊的指紋特 征; 存儲(chǔ)單元進(jìn)一步用于根據(jù)指紋特征對(duì)存儲(chǔ)的鏡像文件塊去冗余,并在存儲(chǔ)鏡像文件塊 的同時(shí)存儲(chǔ)其指紋特征。
24. 如權(quán)利要求18所述的裝置,其特征在于,存儲(chǔ)單元進(jìn)一步用于將鏡像文件塊合并 為大數(shù)據(jù)塊BLK文件后進(jìn)行存儲(chǔ)。
25. 如權(quán)利要求24所述的裝置,其特征在于,存儲(chǔ)單元進(jìn)一步用于根據(jù)BLK文件的大 小、空閑位置以及鏡像文件塊的指紋特征所對(duì)應(yīng)的位置偏移量,存儲(chǔ)鏡像文件塊。
26. 如權(quán)利要求25所述的裝置,其特征在于,存儲(chǔ)單元進(jìn)一步用于采用位圖文件 bitmap記錄BLK文件已使用和/或未使用的位置。
27. -種虛擬機(jī)鏡像文件分發(fā)裝置,其特征在于,包括: 確定單元,用于確定歸屬本客戶端節(jié)點(diǎn)虛擬機(jī)的鏡像文件塊; 連接單元,用于基于對(duì)等網(wǎng)絡(luò)P2P協(xié)議與其他客戶端節(jié)點(diǎn)建立連接; 分發(fā)單元,用于在確定其他客戶端節(jié)點(diǎn)中存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊 時(shí),從其他客戶端節(jié)點(diǎn)中獲取所述鏡像文件塊,否則從數(shù)據(jù)服務(wù)器獲取所述鏡像文件塊;或 者,在確定本客戶端節(jié)點(diǎn)虛擬機(jī)中存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),將所 述鏡像文件塊發(fā)送至其他客戶端節(jié)點(diǎn),其中,所述鏡像文件塊是將虛擬機(jī)鏡像文件按定長(zhǎng) 分割后得到的。
28. 如權(quán)利要求27所述的裝置,其特征在于,進(jìn)一步包括:緩存單元,用于將從其他客 戶端或數(shù)據(jù)服務(wù)器獲取的鏡像文件塊存放在緩存區(qū)中。
29. 如權(quán)利要求28所述的裝置,其特征在于,緩存單元,進(jìn)一步用于根據(jù)近期最少使用 算法LRU確定緩存區(qū)中的鏡像文件塊。
30. 如權(quán)利要求27所述的裝置,其特征在于,進(jìn)一步包括: 指紋特征計(jì)算單元,用于計(jì)算所述鏡像文件塊的MD5指紋特征; 分發(fā)單元進(jìn)一步用于根據(jù)指紋特征確定其他客戶端節(jié)點(diǎn)中是否存在本客戶端節(jié)點(diǎn)虛 擬機(jī)所需的鏡像文件塊,或者,根據(jù)指紋特征確定本客戶端節(jié)點(diǎn)虛擬機(jī)中是否存在其他客 戶端節(jié)點(diǎn)虛擬機(jī)所需的的鏡像文件塊。
31. 如權(quán)利要求30所述的裝置,其特征在于,分發(fā)單元進(jìn)一步用于在根據(jù)指紋特征確 定其他客戶端節(jié)點(diǎn)中是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊時(shí),向其他客戶端節(jié) 點(diǎn)發(fā)送本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊指紋特征集合;指紋特征集合用于供其他客 戶端節(jié)點(diǎn)根據(jù)該指紋特征集合確定是否存在本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊;或 者,在根據(jù)指紋特征確定本客戶端節(jié)點(diǎn)虛擬機(jī)中是否存在其他客戶端節(jié)點(diǎn)虛擬機(jī)所需的的 鏡像文件塊時(shí),接收其他客戶端節(jié)點(diǎn)發(fā)送的該客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊指紋特 征集合;根據(jù)指紋特征集合確定是否存在該客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊。
32. 如權(quán)利要求31所述的裝置,其特征在于,分發(fā)單元進(jìn)一步用于在向其他客戶端節(jié) 點(diǎn)發(fā)送本客戶端節(jié)點(diǎn)虛擬機(jī)所需的鏡像文件塊指紋特征集合前,對(duì)所述鏡像文件塊指紋特 征集合進(jìn)行Bloom Filter數(shù)據(jù)結(jié)構(gòu)壓縮處理。
33. 如權(quán)利要求27所述的裝置,其特征在于,分發(fā)單元進(jìn)一步用于以壓縮速度高于網(wǎng) 絡(luò)帶寬速度的壓縮算法壓縮所述鏡像文件塊。
34. 如權(quán)利要求33所述的裝置,其特征在于,分發(fā)單元進(jìn)一步用于采用Google Snappy 壓縮算法壓縮所述鏡像文件塊。
【文檔編號(hào)】H04L29/08GK104239575SQ201410524284
【公開(kāi)日】2014年12月24日 申請(qǐng)日期:2014年10月8日 優(yōu)先權(quán)日:2014年10月8日
【發(fā)明者】姜進(jìn)磊, 武永衛(wèi), 楊廣文, 趙勛, 何川 申請(qǐng)人:清華大學(xué)