王 斌,郝鵬飛,吳加躍,胡義香
中南大學(xué) 信息科學(xué)與工程學(xué)院,長(zhǎng)沙 410083
隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的發(fā)展,計(jì)算模式逐漸從資源共享向服務(wù)共享的模式發(fā)展[1]。透明服務(wù)平臺(tái)基于透明計(jì)算[2-4]思想,通過(guò)對(duì)系統(tǒng)、應(yīng)用軟件及用戶(hù)個(gè)性化資源的統(tǒng)一管理以及分配,為企事業(yè)單位及個(gè)人提供無(wú)處不在的服務(wù)。為了實(shí)現(xiàn)終端遠(yuǎn)程加載啟動(dòng)操作系統(tǒng),平臺(tái)服務(wù)端存儲(chǔ)了所有終端用戶(hù)的虛擬磁盤(pán)數(shù)據(jù)。但是現(xiàn)有虛擬磁盤(pán)鏡像存儲(chǔ)存在諸多不足之處,主要體現(xiàn)在當(dāng)前存儲(chǔ)模型不適合用戶(hù)數(shù)量較多的虛擬磁盤(pán)存儲(chǔ),數(shù)據(jù)共享實(shí)現(xiàn)程度不高,導(dǎo)致存儲(chǔ)系統(tǒng)中出現(xiàn)大量冗余數(shù)據(jù)。
目前主流的虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)主要來(lái)自各大虛擬主機(jī)所支持的鏡像結(jié)構(gòu),其中raw結(jié)構(gòu)的虛擬磁盤(pán)具有較好的數(shù)據(jù)訪問(wèn)性能,通常是鏡像模板的首選結(jié)構(gòu)類(lèi)型。其他類(lèi)型,如qcow2[5]、qed[6]、vmdk[7]等,都能基于COW(copy-on-write)技術(shù)實(shí)現(xiàn)數(shù)據(jù)的增量存儲(chǔ),且都是采用多級(jí)查詢(xún)機(jī)制進(jìn)行數(shù)據(jù)訪問(wèn)[8]。但它們被設(shè)計(jì)的出發(fā)點(diǎn)并不是針對(duì)特定平臺(tái)下多用戶(hù)的數(shù)據(jù)共享存儲(chǔ),沒(méi)有考慮到多用戶(hù)對(duì)虛擬磁盤(pán)的數(shù)據(jù)改寫(xiě)特性,也沒(méi)有考慮到終端系統(tǒng)啟動(dòng)過(guò)程中的數(shù)據(jù)查詢(xún)效率;另一方面,由于每次保存終端發(fā)送來(lái)的改寫(xiě)數(shù)據(jù)時(shí)都要對(duì)原有數(shù)據(jù)進(jìn)行復(fù)制,采用寫(xiě)時(shí)復(fù)制技術(shù)實(shí)現(xiàn)對(duì)修改數(shù)據(jù)的存儲(chǔ)并不適用于透明服務(wù)平臺(tái)。
本文提出的存儲(chǔ)模型主要針對(duì)學(xué)校、企業(yè)等具有批量分組人員的透明計(jì)算應(yīng)用場(chǎng)景,由于其終端硬件配置基本一致,使得終端設(shè)備能夠加載運(yùn)行相同類(lèi)型的操作系統(tǒng)以及應(yīng)用程序[9-11];同組的終端用戶(hù)選擇使用的操作系統(tǒng)類(lèi)型基本固定,同時(shí)會(huì)出現(xiàn)許多用戶(hù)使用相同應(yīng)用程序頻率較高的現(xiàn)象。由于運(yùn)行在相同操作系統(tǒng)平臺(tái)下,不僅終端用戶(hù)使用的系統(tǒng)數(shù)據(jù)具有很高的相似度,而且終端用戶(hù)使用同一應(yīng)用程序所關(guān)聯(lián)的數(shù)據(jù)也基本類(lèi)似,可將系統(tǒng)數(shù)據(jù)與應(yīng)用程序數(shù)據(jù)放入共享虛擬磁盤(pán),不同用戶(hù)的虛擬磁盤(pán)鏡像相對(duì)于共享虛擬磁盤(pán),只有少量的數(shù)據(jù)修改,且發(fā)生修改的位置具有很高的相似度。因此,針對(duì)透明計(jì)算應(yīng)用場(chǎng)景中的這些特點(diǎn),本文提出了一種樹(shù)狀虛擬磁盤(pán)存儲(chǔ)模型(tree virtual disk storage model,TVDSM),它能將共享數(shù)據(jù)統(tǒng)一管理,并為每個(gè)用戶(hù)創(chuàng)建虛擬磁盤(pán)來(lái)保存用戶(hù)私有數(shù)據(jù)與個(gè)性化配置信息,將很大程度地節(jié)省存儲(chǔ)空間。
虛擬磁盤(pán)中的數(shù)據(jù)資源按共享程度及性質(zhì)可劃分成以下3類(lèi)。
(1)系統(tǒng)共享資源:主要指操作系統(tǒng)以及相關(guān)數(shù)據(jù),包括各種支撐軟件及管理工具。該類(lèi)資源共享程度最高,基本能被所有用戶(hù)共享。由系統(tǒng)共享資源構(gòu)成的鏡像稱(chēng)之為系統(tǒng)虛擬磁盤(pán)鏡像(system virtual disk image,S_VDI)。
(2)應(yīng)用軟件群組資源:主要指各種相關(guān)的應(yīng)用軟件數(shù)據(jù)組成的集合,例如辦公軟件群組可包含Word、Excel、Powerpoint等軟件資源,而Java開(kāi)發(fā)群組可包含Eclipse、Mysql、Tomcat等軟件資源。該類(lèi)資源的共享度次之,主要被同一個(gè)群組下的用戶(hù)共享。由應(yīng)用軟件群組的資源構(gòu)成的鏡像稱(chēng)之為群組虛擬磁盤(pán)鏡像(group virtual disk image,G_VDI)。
(3)用戶(hù)個(gè)性化資源:主要指用戶(hù)區(qū)別于其他用戶(hù)的數(shù)據(jù)資源,一般包括用戶(hù)私有數(shù)據(jù)文件或者操作系統(tǒng)、應(yīng)用軟件的個(gè)性化配置信息。該資源共享度最低,只能提供給自身用戶(hù)訪問(wèn)。由用戶(hù)個(gè)性化資源構(gòu)成的鏡像稱(chēng)之為用戶(hù)虛擬磁盤(pán)鏡像(user virtual disk image,U_VDI)。
如圖1所示,TVDSM是一種樹(shù)狀結(jié)構(gòu)的按共享程度劃分層次的存儲(chǔ)模型。這種模型不需為每個(gè)終端用戶(hù)配備封裝了所有數(shù)據(jù)的虛擬磁盤(pán)鏡像。其中樹(shù)的最頂層為共享度最高的系統(tǒng)虛擬磁盤(pán),它能被每個(gè)終端用戶(hù)共享,存儲(chǔ)了支持操作系統(tǒng)啟動(dòng)所必須加載的數(shù)據(jù)。在樹(shù)的次層,針對(duì)每個(gè)不同的用戶(hù)群組,配置了不同的群組虛擬磁盤(pán),群組虛擬磁盤(pán)中存儲(chǔ)了相關(guān)的軟件資源,能被群組中的用戶(hù)共享。而在樹(shù)的最低層,為每個(gè)終端用戶(hù)配置了專(zhuān)用于存儲(chǔ)私有數(shù)據(jù)和修改數(shù)據(jù)的用戶(hù)虛擬磁盤(pán)鏡像。不同終端用戶(hù)只會(huì)修改少量系統(tǒng)數(shù)據(jù)和應(yīng)用數(shù)據(jù),因此針對(duì)每個(gè)用戶(hù)虛擬磁盤(pán),只需要分配少量的存儲(chǔ)空間。該存儲(chǔ)模型對(duì)用戶(hù)是透明的,用戶(hù)所獨(dú)占的一個(gè)包括操作系統(tǒng)、應(yīng)用軟件、個(gè)人私有數(shù)據(jù)的本地磁盤(pán)在服務(wù)端被劃分成多個(gè)部分。
Fig.1 Virtual disk storage model tree structure圖1 樹(shù)狀結(jié)構(gòu)的虛擬磁盤(pán)存儲(chǔ)模型
系統(tǒng)虛擬磁盤(pán)鏡像和群組虛擬磁盤(pán)鏡像部署于服務(wù)端,被多個(gè)透明終端共享。當(dāng)多個(gè)終端加載同一個(gè)操作系統(tǒng)或者同一個(gè)應(yīng)用軟件時(shí),可能發(fā)生數(shù)據(jù)一致性問(wèn)題,導(dǎo)致某些用戶(hù)無(wú)法正常使用操作系統(tǒng)或應(yīng)用軟件。為了解決上述問(wèn)題,將ROW(redirecton-write)機(jī)制應(yīng)用于透明計(jì)算虛擬磁盤(pán)存儲(chǔ)模型。具體做法是:將系統(tǒng)虛擬磁盤(pán)鏡像S_VDI和群組虛擬磁盤(pán)鏡像G_VDI以只讀的方式存儲(chǔ)于服務(wù)端,共享給多個(gè)終端用戶(hù);采用ROW寫(xiě)時(shí)重定向機(jī)制將終端用戶(hù)對(duì)共享的虛擬磁盤(pán)鏡像S_VDI和G_VDI的改寫(xiě)塊保存于與用戶(hù)對(duì)應(yīng)的用戶(hù)虛擬磁盤(pán)鏡像U_VDI中,并采用Bitmap來(lái)標(biāo)記各個(gè)改寫(xiě)塊的位置,從而實(shí)現(xiàn)了多個(gè)終端用戶(hù)對(duì)共享數(shù)據(jù)的共同讀寫(xiě)。改進(jìn)后基于ROW機(jī)制的虛擬磁盤(pán)訪問(wèn)模式如圖2所示。
Fig.2 Virtual disk storage model for transparent service platform圖2 透明服務(wù)平臺(tái)中虛擬磁盤(pán)存儲(chǔ)模型
圖2描述了在ROW機(jī)制下終端用戶(hù)i及用戶(hù)k分別寫(xiě)數(shù)據(jù)塊9后再讀取數(shù)據(jù)塊7至9的數(shù)據(jù)訪問(wèn)流程。以用戶(hù)i為例,在用戶(hù)i寫(xiě)數(shù)據(jù)塊9時(shí),由數(shù)據(jù)服務(wù)中間件直接重定向?qū)?shù)據(jù)寫(xiě)入至該用戶(hù)對(duì)應(yīng)的U_VDI,并且在位圖索引中修改相應(yīng)的bit位。用戶(hù)i在之后的數(shù)據(jù)訪問(wèn)過(guò)程中如果再次修改數(shù)據(jù)塊9中的數(shù)據(jù),則直接覆蓋U_VDI中數(shù)據(jù)塊9的舊數(shù)據(jù),而不用對(duì)位圖進(jìn)行修改。當(dāng)用戶(hù)i請(qǐng)求訪問(wèn)第7號(hào)至第9號(hào)的數(shù)據(jù)塊時(shí),用戶(hù)對(duì)應(yīng)的U_VDI中存儲(chǔ)了數(shù)據(jù)塊7和9的改寫(xiě)塊,因此對(duì)7號(hào)塊和9號(hào)塊的數(shù)據(jù)訪問(wèn)讀請(qǐng)求被定位到用戶(hù)對(duì)應(yīng)的U_VDI,而數(shù)據(jù)塊8在U_VDI和G_VDI的位圖中都沒(méi)有改寫(xiě)標(biāo)記,因此其請(qǐng)求定位到了S_VDI,最后將所有讀取到的數(shù)據(jù)塊重新排序組合后返回給終端用戶(hù)。
在基于ROW機(jī)制的虛擬磁盤(pán)存儲(chǔ)模型中,每個(gè)終端用戶(hù)感知自身獨(dú)占整個(gè)S_VDI,而實(shí)際上S_VDI是被多個(gè)用戶(hù)共享的,用戶(hù)的私有化數(shù)據(jù)存儲(chǔ)于用戶(hù)的U_VDI中。S_VDI、G_VDI的創(chuàng)建一般是在管理員對(duì)整個(gè)透明服務(wù)平臺(tái)環(huán)境進(jìn)行準(zhǔn)備時(shí)配置的,也可以在平臺(tái)運(yùn)行過(guò)程中動(dòng)態(tài)添加或修改,而U_VDI的創(chuàng)建是在用戶(hù)申請(qǐng)時(shí)動(dòng)態(tài)生成的,用戶(hù)申請(qǐng)鏡像時(shí),可以選擇U_VDI所屬的操作系統(tǒng)類(lèi)型及應(yīng)用群組,從而共享所選擇群組下的系統(tǒng)數(shù)據(jù)和應(yīng)用數(shù)據(jù)。
TVDSM能解決多用戶(hù)虛擬磁盤(pán)數(shù)據(jù)共享的數(shù)據(jù)一致性問(wèn)題,但它需要一種合適的虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)的支撐,以實(shí)現(xiàn)透明計(jì)算系統(tǒng)中數(shù)據(jù)的高效共享與訪問(wèn)。本文提出的虛擬磁盤(pán)鏡像存儲(chǔ)結(jié)構(gòu)基于位圖索引技術(shù)[12],支持用戶(hù)能夠在較小的粒度下獲得較高的數(shù)據(jù)訪問(wèn)效率。
它主要由Header、Bitmap、Q_table、Data四部分組成。其中Header、Bitmap、Q_table構(gòu)成元數(shù)據(jù)文件,Data部分構(gòu)成數(shù)據(jù)文件,元數(shù)據(jù)文件和數(shù)據(jù)文件可連續(xù)存儲(chǔ)也可分離存儲(chǔ)。為了實(shí)現(xiàn)數(shù)據(jù)的快速定位,針對(duì)Data區(qū)域按兩種不同粒度分塊劃分,得到兩種類(lèi)型序列。
定義 1Block序列(block sequence,BS):BS={B1,B2,…,Bn},它由大小相同的連續(xù)Block組成,每塊大小為B_unit,是虛擬磁盤(pán)的共享粒度和改寫(xiě)粒度。
定義2Chunk序列(chunk sequence,CS):CS={C1,C2,…,Cn},同樣由大小相同的連續(xù)Chunk組成,且每個(gè)Chunk都是固定長(zhǎng)度的BS序列,即Ci={Bj,Bj+1,…,Bj+k},CS的劃分粒度為C_unit,它是數(shù)據(jù)查找的基本單位。
本文提出的虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)如圖3所示。
Fig.3 Virtual disk storage structure圖3 虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)
(1)頭部(Header)
Header區(qū)域處于虛擬磁盤(pán)鏡像的開(kāi)始部分,它記錄整個(gè)虛擬磁盤(pán)鏡像的基礎(chǔ)信息,其中:
①vid:64位整型唯一標(biāo)識(shí)一個(gè)虛擬磁盤(pán)鏡像節(jié)點(diǎn),用于區(qū)別其他節(jié)點(diǎn)。
②type:表示節(jié)點(diǎn)類(lèi)型,共包含4種類(lèi)型,系統(tǒng)類(lèi)型、群組類(lèi)型、用戶(hù)類(lèi)型、快照類(lèi)型。
③f_ptr:指向父節(jié)點(diǎn)鏡像的指針,當(dāng)某節(jié)點(diǎn)指向父節(jié)點(diǎn)時(shí),可共享父節(jié)點(diǎn)鏡像中的數(shù)據(jù),并且只保留對(duì)父節(jié)點(diǎn)數(shù)據(jù)修改的部分。系統(tǒng)類(lèi)型節(jié)點(diǎn)的f_ptr為空。
④size:表示鏡像節(jié)點(diǎn)大小,即Bitmap所能表示的磁盤(pán)總大小,單位為Byte。
⑤M_offset:表示Bitmap區(qū)域相對(duì)于鏡像起始位置的偏移量,位圖區(qū)域緊隨Header區(qū)域,而Header大小固定,因此該值是個(gè)固定值。
⑥Q_offset:表示Q_table區(qū)域相對(duì)于鏡像起始位置的偏移量,通過(guò)它能快速定位到Q_table。
⑦D_offset:表示Data區(qū)域相對(duì)于鏡像起始位置的偏移量,通過(guò)D_offset和數(shù)據(jù)塊號(hào)可計(jì)算訪問(wèn)數(shù)據(jù)的具體位置。
⑧B_unit:劃分Block的基本單位。
⑨C_unit:劃分Chunk的基本單位,C_unit=n×B_unit,其中n為整數(shù)。
⑩ heads、cylinders、sectors:分別表示虛擬磁盤(pán)的磁頭數(shù)、柱面數(shù)和扇區(qū)數(shù),是虛擬出來(lái)的物理參數(shù)。
?其他成員:主要包含虛擬磁盤(pán)所屬用戶(hù)的信息,操作系統(tǒng)版本信息、虛擬磁盤(pán)操作權(quán)限等。例如,其中操作權(quán)限主要包括虛擬磁盤(pán)鏡像是否可寫(xiě),鏡像節(jié)點(diǎn)是否允許生成子節(jié)點(diǎn)。
(2)位圖(Bitmap)
位圖用于記錄修改塊的位置。具體做法是,鏡像節(jié)點(diǎn)初始化過(guò)程中,在位圖區(qū)域開(kāi)辟Bitmap_size大小的空間,且初始化全為0,位圖中每個(gè)bit位都與虛擬磁盤(pán)BS序列中的每個(gè)Block一一對(duì)應(yīng),式(1)為Bitmap_size計(jì)算方法。在此后數(shù)據(jù)訪問(wèn)過(guò)程中,若對(duì)父節(jié)點(diǎn)Block序列發(fā)生修改時(shí),需要將對(duì)應(yīng)bit位的值設(shè)置為1。
(3)查找表(Q_table)
查找表將發(fā)生改寫(xiě)Chunk的索引號(hào)與該Chunk在Data區(qū)域偏移量的位置相互映射,從而加快查詢(xún)速度。它的大小是可變的,只有發(fā)生改寫(xiě)的Chunk才會(huì)被記錄于表中,查找表的大小可依據(jù)數(shù)據(jù)改寫(xiě)量而動(dòng)態(tài)調(diào)整。
(4)數(shù)據(jù)區(qū)域(Data)
數(shù)據(jù)區(qū)域用于存儲(chǔ)每個(gè)節(jié)點(diǎn)相對(duì)于父節(jié)點(diǎn)所修改的數(shù)據(jù),更新后的數(shù)據(jù)保存在此以區(qū)別于父節(jié)點(diǎn)的共享數(shù)據(jù)。當(dāng)存儲(chǔ)節(jié)點(diǎn)為S_VDI節(jié)點(diǎn)時(shí),則終端虛擬磁盤(pán)中數(shù)據(jù)存儲(chǔ)的順序就是S_VDI節(jié)點(diǎn)Data區(qū)域中數(shù)據(jù)存儲(chǔ)順序。
透明終端數(shù)據(jù)訪問(wèn)過(guò)程中,如何快速定位數(shù)據(jù)是要解決的關(guān)鍵問(wèn)題。上文提出的虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)能夠很好地支持以寫(xiě)重定向與查詢(xún)定位分離的方式進(jìn)行數(shù)據(jù)交互,進(jìn)行寫(xiě)重定向時(shí)以B_unit為操作粒度,該粒度也是多用戶(hù)對(duì)虛擬磁盤(pán)數(shù)據(jù)的共享粒度,而進(jìn)行查詢(xún)定位時(shí),查找數(shù)據(jù)的基本單位為C_unit,且C_unit=n×B_unit,其中n為整數(shù)。ROW與查詢(xún)定位分開(kāi)實(shí)現(xiàn)帶來(lái)了不少優(yōu)點(diǎn),其中最重要一點(diǎn)是加快數(shù)據(jù)的查詢(xún)速度。下文分析對(duì)比了兩者分開(kāi)實(shí)現(xiàn)與否對(duì)系統(tǒng)性能的影響。
假設(shè)ROW與查詢(xún)定位統(tǒng)一實(shí)現(xiàn),使用相同粒度的B_unit實(shí)現(xiàn)數(shù)據(jù)改寫(xiě)和數(shù)據(jù)查詢(xún)定位。當(dāng)某節(jié)點(diǎn)相對(duì)于上層節(jié)點(diǎn)修改了n塊Block,查找表必須生成n個(gè)表項(xiàng),若每個(gè)表項(xiàng)占用存儲(chǔ)空間為m,那么查找表需要m×n的存儲(chǔ)空間,且查找數(shù)據(jù)的平均查找長(zhǎng)度為為了加快查詢(xún)速度,常用方法是將改寫(xiě)塊的查找表緩存于內(nèi)存中,針對(duì)查找表每個(gè)用戶(hù)將占用m×n的服務(wù)器內(nèi)存空間,當(dāng)系統(tǒng)中用戶(hù)數(shù)量增多或用戶(hù)修改數(shù)據(jù)增多時(shí),這種級(jí)別的內(nèi)存開(kāi)銷(xiāo)將嚴(yán)重影響其他服務(wù)質(zhì)量。
如果將ROW與存儲(chǔ)定位分開(kāi)實(shí)現(xiàn),查找表的每項(xiàng)就記錄了一個(gè)改寫(xiě)Chunk的地址索引,每個(gè)Chunk由x塊連續(xù)的Block構(gòu)成。通過(guò)透明服務(wù)平臺(tái)實(shí)驗(yàn)分析可知,虛擬磁盤(pán)具有在多用戶(hù)終端啟動(dòng)同一操作系統(tǒng)的過(guò)程中,對(duì)系統(tǒng)虛擬磁盤(pán)鏡像的修改在整體上是離散的,但在局部經(jīng)常出現(xiàn)連續(xù)被修改的數(shù)據(jù)塊的磁盤(pán)訪問(wèn)特性[13-14],因此被多次改寫(xiě)的連續(xù)數(shù)據(jù)塊可以合并成一個(gè)Chunk,這樣只需要在查找表中增加一條記錄,而不是增加多條記錄。這種方式下查找表占用磁盤(pán)空間大約為,相比之下可以較為輕松地將查找表緩存于內(nèi)存中,加快查詢(xún)速度。同時(shí),查找每個(gè)修改塊所用的時(shí)間也將減少,平均查找長(zhǎng)度約為
圖4描述了ROW與查詢(xún)定位分離機(jī)制實(shí)現(xiàn)的部分細(xì)節(jié)。在該例中C_unit=4×B_unit,當(dāng)某用戶(hù)對(duì)Block 6發(fā)生改寫(xiě)操作時(shí),除了需要將更新后數(shù)據(jù)寫(xiě)入用戶(hù)Data區(qū)域,還需要更新用戶(hù)節(jié)點(diǎn)的Bitmap以及Q_table;而后用戶(hù)改寫(xiě)的Block 7和改寫(xiě)過(guò)的Block 6屬于同一個(gè)Chunk,因此不用在Q_table中增加新表項(xiàng)。當(dāng)用戶(hù)進(jìn)行查詢(xún)定位時(shí),需要先通過(guò)Bitmap判斷數(shù)據(jù)是否在當(dāng)前節(jié)點(diǎn),如果數(shù)據(jù)在當(dāng)前節(jié)點(diǎn)則通過(guò)Q_table查找該數(shù)據(jù)所屬Chunk的起始位置,通過(guò)該位置計(jì)算并讀取所需訪問(wèn)的數(shù)據(jù)。
Fig.4 ROW and query location separation diagram圖4 ROW與查詢(xún)定位分離實(shí)現(xiàn)示意圖
通過(guò)對(duì)本文方案的系統(tǒng)遠(yuǎn)程啟動(dòng)過(guò)程中的數(shù)據(jù)請(qǐng)求進(jìn)行統(tǒng)計(jì)分析,發(fā)現(xiàn)B_unit選取為4 KB最為合理,這也是操作系統(tǒng)訪問(wèn)頁(yè)的大小。如果B_unit設(shè)置過(guò)大,就會(huì)增大虛擬磁盤(pán)存儲(chǔ)系統(tǒng)中“假”共享發(fā)生的概率,“假”共享是指多個(gè)用戶(hù)共享數(shù)據(jù)塊時(shí),真正共享其中小部分而不是共享整塊數(shù)據(jù);同時(shí)還會(huì)降低訪問(wèn)效率,并且易產(chǎn)生內(nèi)存碎片,因?yàn)樵L問(wèn)過(guò)程中往往需要將整個(gè)Block載入內(nèi)存,再對(duì)其做出裁剪,而不能直接返回給終端。而B(niǎo)_unit設(shè)置過(guò)小,訪問(wèn)數(shù)據(jù)過(guò)程中需要讀取多個(gè)Block,同樣降低了訪問(wèn)效率。
C_unit同樣不適合設(shè)置過(guò)大或過(guò)小。假如C_unit值過(guò)大,且大于大部分連續(xù)修改數(shù)據(jù)的總長(zhǎng)度,將導(dǎo)致用戶(hù)節(jié)點(diǎn)Data區(qū)域的空間嚴(yán)重浪費(fèi)。而C_unit值設(shè)置過(guò)小,雖然用戶(hù)節(jié)點(diǎn)Data區(qū)域存儲(chǔ)空間能夠得到較為充分的利用,但查找表?xiàng)l目會(huì)增多,導(dǎo)致查找速度過(guò)慢。因此,需要進(jìn)行相應(yīng)實(shí)驗(yàn)并綜合參考這兩個(gè)指標(biāo)選取合適的C_unit值。
實(shí)驗(yàn)中,透明終端和服務(wù)端工作在同一局域網(wǎng),它們之間通過(guò)路由器相互連接[15]。在服務(wù)端,部署了兩種類(lèi)型的服務(wù)器,一種是為用戶(hù)提供數(shù)據(jù)服務(wù)的Initiator服務(wù)器,另一種是用于存儲(chǔ)虛擬磁盤(pán)鏡像的Target服務(wù)器。在Initiator服務(wù)器中部署了數(shù)據(jù)服務(wù)中間件,為透明終端遠(yuǎn)程加載操作系統(tǒng)以及其他各種操作提供數(shù)據(jù)服務(wù)。透明終端則部署了一些基本的系統(tǒng)引導(dǎo)程序,而沒(méi)有預(yù)裝操作系統(tǒng)和其他任何工具軟件。終端類(lèi)型分為兩種,一種使用的是x86結(jié)構(gòu)的移動(dòng)終端,另一種使用的是PC終端。其中移動(dòng)終端使用的是無(wú)線網(wǎng)絡(luò),PC終端使用的是有線網(wǎng)絡(luò)。透明終端和服務(wù)端配置信息如表1和表2所示。
Table 1 Terminal configuration table表1 終端配置表
本節(jié)實(shí)驗(yàn)對(duì)象采用了CentOS操作系統(tǒng),它的系統(tǒng)鏡像大小為9.8 GB。之后為其制作了兩種類(lèi)型的群組鏡像,分別是辦公群組和娛樂(lè)群組,每個(gè)群組安裝若干應(yīng)用的軟件;在每個(gè)系統(tǒng)類(lèi)型下添加5個(gè)用戶(hù)。然后,用戶(hù)通過(guò)透明終端產(chǎn)生若干個(gè)性化數(shù)據(jù),記錄并統(tǒng)計(jì)在對(duì)虛擬磁盤(pán)存儲(chǔ)優(yōu)化前以及優(yōu)化后選取不同Chunk大小時(shí)服務(wù)端磁盤(pán)空間的占用量,詳細(xì)結(jié)果如表3所示,隨用戶(hù)數(shù)量增加服務(wù)端磁盤(pán)開(kāi)銷(xiāo)走勢(shì)如圖5所示。
Table 2 Server configuration table表2 服務(wù)器配置表
Table 3 Effect of Chunk on multi user disk space occupied表3 不同Chunk時(shí)多用戶(hù)磁盤(pán)空間占用
從表3中可以看出,當(dāng)平臺(tái)中只有一個(gè)用戶(hù)時(shí),優(yōu)化后的模式反而比優(yōu)化前多占用部分存儲(chǔ)空間,但隨著用戶(hù)數(shù)量不斷增加,優(yōu)化前的磁盤(pán)空間占用與用戶(hù)數(shù)量呈現(xiàn)正比關(guān)系,而優(yōu)化后鏡像資源占用磁盤(pán)空間的增長(zhǎng)速率緩慢。這是由于在優(yōu)化后的初始化過(guò)程中,為系統(tǒng)配置了不同的群組鏡像,導(dǎo)致用戶(hù)數(shù)量為1時(shí),反而占用更多的磁盤(pán)空間;然而隨著管理員添加更多的用戶(hù)鏡像,各用戶(hù)節(jié)點(diǎn)Data只需存儲(chǔ)修改的數(shù)據(jù)內(nèi)容,因此表現(xiàn)出磁盤(pán)空間增長(zhǎng)速度緩慢。
Fig.5 Effect of Chunk on multi user disk space occupied圖5 不同Chunk時(shí)多用戶(hù)磁盤(pán)空間占用
結(jié)合圖5可知,Chunk大小將影響磁盤(pán)空間占用量。隨著Chunk大小的增長(zhǎng),服務(wù)端的磁盤(pán)開(kāi)銷(xiāo)呈現(xiàn)出增長(zhǎng)趨勢(shì)。但不難發(fā)現(xiàn),Chunk大小在不超過(guò)512 KB階段,不同Chunk值對(duì)磁盤(pán)空間總量的影響較??;而Chunk大小達(dá)到1 MB時(shí),磁盤(pán)空間總量增長(zhǎng)比較明顯,對(duì)系統(tǒng)磁盤(pán)開(kāi)銷(xiāo)造成一定影響。
虛擬磁盤(pán)讀寫(xiě)性能也是衡量存儲(chǔ)結(jié)構(gòu)優(yōu)劣的重要指標(biāo),本文分別在大小不同的Chunk情況下,通過(guò)終端向虛擬磁盤(pán)讀寫(xiě)各種大小的文件,記錄它們?cè)诓煌珻hunk大小和終端類(lèi)型情況下的數(shù)據(jù)讀寫(xiě)速度。終端類(lèi)型分為移動(dòng)終端和PC終端兩種,移動(dòng)終端使用的是無(wú)線網(wǎng)絡(luò),PC終端使用的是有線網(wǎng)絡(luò),有線網(wǎng)絡(luò)比較于無(wú)線網(wǎng)絡(luò)具有更高且更穩(wěn)定的傳輸速率,這會(huì)對(duì)實(shí)驗(yàn)結(jié)果造成一定影響。具體實(shí)驗(yàn)方法是用CentOS系統(tǒng)自帶的磁盤(pán)工具進(jìn)行測(cè)試。測(cè)試讀取速率指令是dd if=/dev/sda of=/dev/null bs=1M count=x,測(cè)試寫(xiě)入速率指令是dd if=/dev/zero of=/test.img bs=1M count=x。命令中bs=1M表示數(shù)據(jù)塊大小為1 MB,count=x表示總共讀取x塊數(shù)據(jù)。針對(duì)每種不同環(huán)境進(jìn)行多次測(cè)試并計(jì)算平均值,測(cè)試結(jié)果如表4所示。
Table 4 Virtual disk data read/write rate表4 虛擬磁盤(pán)數(shù)據(jù)讀寫(xiě)速率
通過(guò)表4可以看出,受到無(wú)線網(wǎng)絡(luò)不穩(wěn)定等因素的影響,PC終端表現(xiàn)出數(shù)據(jù)讀寫(xiě)性能高于移動(dòng)終端。并且在Chunk大小與終端設(shè)備都保持一致時(shí),寫(xiě)入速率明顯高于讀取速率,這是虛擬磁盤(pán)延遲寫(xiě)的機(jī)制所產(chǎn)生的作用,大幅度提高了數(shù)據(jù)寫(xiě)入速率。但隨著寫(xiě)入數(shù)據(jù)的增多,寫(xiě)入速度出現(xiàn)一定幅度下降,這是由于延遲寫(xiě)緩沖區(qū)空間不足,寫(xiě)操作進(jìn)入等待隊(duì)列而得不到及時(shí)響應(yīng)所導(dǎo)致的。
另外,可以發(fā)現(xiàn)不同的Chunk大小和終端類(lèi)型與虛擬磁盤(pán)讀寫(xiě)速率是相關(guān)的。在同類(lèi)型終端讀寫(xiě)速率對(duì)比時(shí)發(fā)現(xiàn),Chunk大小為1 MB時(shí)讀寫(xiě)性能表現(xiàn)最優(yōu)。但同時(shí)考慮到4.2節(jié)所述實(shí)驗(yàn)中Chunk設(shè)置為1 MB造成磁盤(pán)開(kāi)銷(xiāo)過(guò)大,因此可選取512 KB作為Chunk序列劃分單位。結(jié)合表3及表4可以得出,Chunk大小為512 KB時(shí),存儲(chǔ)系統(tǒng)在磁盤(pán)開(kāi)銷(xiāo)和數(shù)據(jù)訪問(wèn)性能方面都表現(xiàn)出色。
為了驗(yàn)證本文提出的虛擬磁盤(pán)存儲(chǔ)結(jié)構(gòu)能否滿足透明計(jì)算訪問(wèn)性能的要求,通過(guò)如下實(shí)驗(yàn)對(duì)比了虛擬磁盤(pán)和普通磁盤(pán)的數(shù)據(jù)訪問(wèn)速率。其中影響虛擬磁盤(pán)訪問(wèn)速率的參數(shù)Chunk大小設(shè)置為512 KB,且終端類(lèi)型采取有線傳輸類(lèi)型,保證數(shù)據(jù)傳送可靠性。普通磁盤(pán)選用的是型號(hào)為L(zhǎng)enovo E49AL的筆記本電腦中自帶的磁盤(pán),性能參數(shù)為5 400 r/min。實(shí)驗(yàn)工具為Centos自帶的獲取硬盤(pán)參數(shù)工具h(yuǎn)dparm,它能實(shí)時(shí)獲取磁盤(pán)相關(guān)性能參數(shù),具體指令為hdparmt/dev/sdb1。測(cè)試結(jié)果如表5所示。
Table 5 Speed comparison of virtual disk and disk表5 虛擬磁盤(pán)與普通磁盤(pán)速率對(duì)比
從表5中可以分析得出:雖然透明計(jì)算虛擬磁盤(pán)訪問(wèn)速度較明顯低于傳統(tǒng)磁盤(pán),但虛擬磁盤(pán)速率仍保持在傳統(tǒng)磁盤(pán)速率70%以上并且穩(wěn)定,這對(duì)用戶(hù)的數(shù)據(jù)訪問(wèn)并沒(méi)有太大影響。終端用戶(hù)可通過(guò)透明終端完成編輯、查看文件以及觀看視頻等基本操作。因此本文提出的TVDSM應(yīng)用于透明服務(wù)平臺(tái)既保障了數(shù)據(jù)服務(wù)質(zhì)量,又節(jié)省了磁盤(pán)空間。
由實(shí)驗(yàn)結(jié)果可知,面向透明計(jì)算模式的TVDSM以及鏡像存儲(chǔ)結(jié)構(gòu)能夠支持多用戶(hù)的鏡像數(shù)據(jù)共享,同時(shí)又能保證數(shù)據(jù)的訪問(wèn)效率。它將數(shù)據(jù)共享粒度和數(shù)據(jù)查詢(xún)粒度以不同粒度分開(kāi)實(shí)現(xiàn),提高了系統(tǒng)的共享性和訪問(wèn)效率,可以很好地支持多用戶(hù)同時(shí)遠(yuǎn)程加載操作系統(tǒng),支持透明計(jì)算模式。
[1]Zhang Yaoxue,Zhou Yuezhi.Transparent computing:spatiotemporal extension on von Neumann architecture for cloud services[J].Tsinghua Science and Technology,2013,18(1):10-21.
[2]ZhangYaoxue,ZhouYuezhi.Separating computation and storage with storage virtualization[J].Computer Communications,2011,34(13):1539-1548.
[3]Zhang Yaoxue.Transparence computing:concept,architecture and example[J].Acta Electronica Sinica,2004,32(S1):169-174.
[4]Gao Yuan,Zhang Yaoxue,Zhou Yuezhi.Building a virtual machine-based network storage system for transparent computing[C]//Proceedings of the 2012 International Conference on Computer Science and Service System,Nanjing,Aug 11-13,2012.Washington:IEEE Computer Society,2012:2341-2344.
[5]Li Jianxin,Liu Hanqing,Cui Lei,et al.iROW:an efficient live snapshot system for virtual machine disk[C]//Proceedings of the 18th IEEE International Conference on Parallel and Distributed Systems,Singapore,Dec 17-19,2012.Washington:IEEE Computer Society,2012:376-383.
[6]Xu Yanjun,Jiang Jinlei,Wang Bo,et al.Several virtual machine image formats and their performance evaluation[J].Journal of ComputerApplications,2013,33(S1):22-25.
[7]Monckton R D.Incremental and differential backups of virtual machine files:USA,8099391[P].2012-01-17.
[8]Chakraborty P,Traut E P.Mechanism to store information describing a virtual machine in a virtual disk image:USA,8370819[P].2013-02-05.
[9]Xiong Yonghua,Huang Suzhen,Wu Min,et al.A novel resource management method of providing operating system as a service for mobile transparent computing[J].The Scientific World Journal,2014,2014(1):153847.
[10]Gao Yuan,Zhang Yaoxue,Zhou Yuezhi.TVSDM:a virtual storage device driver model for transparent computing[J].Journal of Tsinghua University:Science and Technology,2013,53(7):1064-1068.
[11]Zhou Yuezhi,Zhang Yaoxue,Liu Hao,et al.A bare-metal and asymmetric partitioning approach to client virtualization[J].IEEE Transactions on Services Computing,2014,7(1):40-53.
[12]Meng Biping,Wang Tengjiao,Li Hongyan,et al.Regional bitmap index:a secondary index for data management in could computing environment[J].Chinese Journal of Computers,2012,35(11):2306-2316.
[13]Tan Huailiang,Wang Yan,Sun Jianhua.Prefetch method for rewrite block in the rebuilding process of distributed system volumes[J].Journal of Hunan University:Natural Sciences,2009,36(1):77-80.
[14]He Zaihong,Que Qingxian.System volume sharing strategy in network computation[J].Computer Engineering,2009,35(9):252-254.
[15]Xu Guangbin,Zhang Yaoxue,Zhou Yuezhi,et al.Design and implementation of a virtual machine-based transparent computing system[J].Journal of Tsinghua University:Science and Technology,2008,48(10):1679-1682.
附中文參考文獻(xiàn):
[3]張堯?qū)W.透明計(jì)算:概念、結(jié)構(gòu)和示例[J].電子學(xué)報(bào),2004,32(S1):169-174.
[6]許艷軍,姜進(jìn)磊,王博,等.幾種虛擬機(jī)鏡像格式及其性能測(cè)評(píng)[J].計(jì)算機(jī)應(yīng)用,2013,33(S1):22-25.
[10]高原,張堯?qū)W,周悅芝.TVSDM:一種支持透明計(jì)算的虛擬存儲(chǔ)設(shè)備驅(qū)動(dòng)模型[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2013,53(7):1064-1068.
[12]孟必平,王騰蛟,李紅燕,等.分片位圖索引:一種適用于云數(shù)據(jù)管理的輔助索引機(jī)制[J].計(jì)算機(jī)學(xué)報(bào),2012,35(11):2306-2316.
[13]譚懷亮,王燕,孫建華,等.分布式系統(tǒng)卷重構(gòu)過(guò)程的改寫(xiě)塊預(yù)取方法[J].湖南大學(xué)學(xué)報(bào):自然科學(xué)版,2009,36(1):77-80.
[14]賀再紅,闕清賢.網(wǎng)絡(luò)計(jì)算中的系統(tǒng)卷共享策略[J].計(jì)算機(jī)工程,2009,35(9):252-254.
[15]徐廣斌,張堯?qū)W,周悅芝,等.基于虛擬機(jī)的透明計(jì)算系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2008,48(10):1679-1682.