◆麥劍
數(shù)據(jù)安全與云計算
改進(jìn)虛擬磁盤在分布式存儲下的讀寫效率
◆麥劍
(廣東睿江云計算股份有限公司 廣東 528000)
本文介紹了云計算下云主機(jī)的相關(guān)基礎(chǔ)技術(shù),如網(wǎng)絡(luò)虛擬化、存儲虛擬化、計算虛擬化,并對云主機(jī)及操作系統(tǒng)的機(jī)制進(jìn)行了簡單分析。當(dāng)前存儲虛擬化的幾種技術(shù)架構(gòu)方案,如集中式存儲、分布式存儲、本地存儲,筆者對三種常見存儲架構(gòu)的優(yōu)缺點及存儲服務(wù)優(yōu)化進(jìn)行詳細(xì)闡述,并探討如何結(jié)合各自存儲架構(gòu)的優(yōu)點以及如何改進(jìn)虛擬機(jī)的讀寫性能等。
云計算;虛擬化;磁盤;分布式存儲;讀寫效率
過去,物理CPU、內(nèi)存、磁盤都固化在同一臺設(shè)備之上,磁盤的數(shù)據(jù)傳輸一般都在設(shè)備內(nèi)部完成,云計算的興起與發(fā)展改變了計算機(jī)操作系統(tǒng)的運行方法。在云計算虛擬化技術(shù)的幫助下,操作系統(tǒng)運行載體及相關(guān)磁盤服務(wù)發(fā)生了很大的變化,最明顯的就是把計算與存儲進(jìn)行分離,不再需要通過本地總線進(jìn)行傳輸而改成網(wǎng)絡(luò)的方式。過去已有的存儲技術(shù)得以發(fā)展和大規(guī)模應(yīng)用,如集中式存儲、分布式存儲等,過去可能只出現(xiàn)在一些大型機(jī)構(gòu)或者具備一定規(guī)模的計算集群,如今存儲設(shè)備已經(jīng)廣泛使用在不同的領(lǐng)域及場景,得益于軟件定義存儲技術(shù)的發(fā)展,衍生出許多基于x86通用設(shè)備的存儲產(chǎn)品。下文中,筆者將圍繞當(dāng)前云計算背景下分布式存儲及對應(yīng)磁盤虛擬化等問題展開討論并對優(yōu)化改進(jìn)方案進(jìn)行描述。
云計算技術(shù)的核心是虛擬化,而虛擬化根據(jù)類型主要分成三大模塊:計算虛擬化、存儲虛擬化、網(wǎng)絡(luò)虛擬化。計算虛擬化主要是提供CPU虛擬化服務(wù),比如把物理CPU虛擬成多個虛擬的CPU提供給虛擬機(jī)使用。存儲虛擬化通常為虛擬機(jī)提供虛擬磁盤服務(wù),這個虛擬磁盤提供和物理磁盤一樣的接口及功能服務(wù),使得操作系統(tǒng)當(dāng)成是一塊真實磁盤那樣使用,而提供這些服務(wù)的通常是一些專業(yè)的硬件存儲或者由通用設(shè)備搭建的存儲集群所提供;網(wǎng)絡(luò)虛擬化不僅為虛擬機(jī)提供了基礎(chǔ)的網(wǎng)絡(luò)服務(wù),還提供了自助組網(wǎng)等功能。
根據(jù)實現(xiàn)方式分類,存儲一般分為本地存儲和網(wǎng)絡(luò)存儲。本地存儲比較容易理解,提供存儲服務(wù)的磁盤直接掛載在當(dāng)前運行操作系統(tǒng)的設(shè)備之上,也就是傳統(tǒng)的、目前常見的方式。網(wǎng)絡(luò)存儲又可以分成集中式存儲和分布式存儲,集中式存儲通常是指由一臺單獨的存儲設(shè)備所組成;分布式存儲通常由多臺設(shè)備以集群的方式組成。由于通信機(jī)制的原因,本地存儲性能及效率都能達(dá)到很好的效果,但是數(shù)據(jù)冗余方面則沒有網(wǎng)絡(luò)存儲好;網(wǎng)絡(luò)存儲在數(shù)據(jù)冗余安全性方面有優(yōu)勢,但是由于所有數(shù)據(jù)交互都經(jīng)過網(wǎng)絡(luò),因而在效率及性能方面又不如本地存儲。
為了正常運行,虛擬機(jī)和普通計算機(jī)一樣,都需要CPU、內(nèi)存、磁盤等幾個關(guān)鍵模塊。在云虛擬化技術(shù)幫助下,這些關(guān)鍵模塊都用虛擬化的方式提供服務(wù)。虛擬磁盤對虛擬機(jī)層面來講,它看到的是一個和物理磁盤一樣的設(shè)備,接口和使用方式都一致,因此可以驅(qū)動起操作系統(tǒng)的運行和普通計算機(jī)一樣。從底層來講,虛擬磁盤是從一個存儲單元劃分一部分空間出來提供存儲讀寫服務(wù),這個存儲單元可以由本地磁盤提供,也可以由集中式存儲或者分布式存儲提供,只需要按照一定的規(guī)范標(biāo)準(zhǔn)接口即可。
本方案主要利用本地存儲結(jié)合分布式存儲各自的優(yōu)勢來組合使用,提供和現(xiàn)有一樣的虛擬磁盤服務(wù),用于改進(jìn)虛擬磁盤在分布式存儲下的讀寫效率。接下來,主要圍繞本地存儲、分布式存儲及其對應(yīng)的技術(shù)方案細(xì)節(jié),對現(xiàn)有存在的問題如何改進(jìn)提升展開探討。
目前分布式存儲(2副本)的實現(xiàn)方案如圖1所示:
圖1 目前分布式存儲(2副本)的實現(xiàn)方案
宿主機(jī)是為虛擬機(jī)提供CPU、網(wǎng)絡(luò)虛擬化服務(wù)的物理設(shè)備,物理宿主機(jī)與存儲設(shè)備之間通過網(wǎng)絡(luò)互相連接,提供存儲網(wǎng)絡(luò)服務(wù)。目前,分布式存儲提供虛擬磁盤的塊服務(wù),會把磁盤按照固定的數(shù)據(jù)塊平均分為若干份,分散地保存到存儲單元設(shè)備中。比如一個20G的磁盤,數(shù)據(jù)塊大小是4MB,那么就有5000個數(shù)據(jù)塊分散地保存在存儲單元中。除此,分布式存儲還提供副本功能,如上圖所示的是2副本,代表主數(shù)據(jù)有1分,然后備份數(shù)據(jù)1份,一共2份數(shù)據(jù)。引入副本的好處是數(shù)據(jù)冗余性防止數(shù)據(jù)丟失,但會引申出一個寫的效率問題:以往沒有副本的情況下,數(shù)據(jù)只需要寫一次即可;當(dāng)有副本之后,如2副本則需要寫2次數(shù)據(jù),通常要等2份數(shù)據(jù)都寫完了才能返回成功,以防止數(shù)據(jù)的不一致性。因此,分布式存儲存在一個明顯的效率問題,就是隨著副本數(shù)增加,寫的次數(shù)也會增加,數(shù)據(jù)冗余安全性與效率方面不能兼得。
本解決方案如圖2所示。
圖2 本解決方案
本方案引入了兩個核心模塊來完成對應(yīng)的功能:一是初始化模塊;二是定時更新模塊。整個工作流程描述如下:
(1)虛擬機(jī)創(chuàng)建時,指定了所需要的磁盤大小及對應(yīng)操作系統(tǒng)版本等信息;
(2)初始化模塊根據(jù)虛擬所需的磁盤信息,先到后端分布式存儲創(chuàng)建分配對應(yīng)大小及相關(guān)的操作系統(tǒng)系統(tǒng)盤等;
(3)初始化模塊檢測創(chuàng)建的是系統(tǒng)盤還是數(shù)據(jù)盤。如果是數(shù)據(jù)盤,則在宿主機(jī)本地磁盤創(chuàng)建一塊相同大小的提供給虛擬機(jī)使用;如果是系統(tǒng)盤,除了在宿主機(jī)創(chuàng)建一塊相同大小的之外還需要從分布式存儲把對應(yīng)的系統(tǒng)數(shù)據(jù)同步到這塊磁盤上,以供虛擬機(jī)開機(jī)引導(dǎo);
(4)完成前面3個步驟之后,虛擬機(jī)可以正常啟動并加載讀寫磁盤數(shù)據(jù),讀虛擬磁盤數(shù)據(jù)時將直接從本地磁盤中讀取(步驟3已經(jīng)同步了分布式存儲的數(shù)據(jù));當(dāng)虛擬機(jī)需要把新數(shù)據(jù)寫入虛擬磁盤時,直接寫到本地磁盤。由于讀寫都是直接操作宿主機(jī)的本地磁盤,所以無論效率或性能都較優(yōu)。
(5)當(dāng)虛擬機(jī)對虛擬磁盤寫一塊數(shù)據(jù)的時候,定時更新模塊都會記錄對應(yīng)那一塊數(shù)據(jù)塊被更新了,到了一定的時間就會觸發(fā),把更新過的數(shù)據(jù)塊內(nèi)容同步到后端的分布式存儲。
分布式存儲是把一塊完整的數(shù)據(jù)按照平均大小分拆成若干份數(shù)據(jù)塊,分別保存在不同的存儲單元,因此虛擬磁盤在進(jìn)行讀寫操作時需要和后端存儲單元建立多個網(wǎng)絡(luò)連接,往往讀取一個區(qū)間內(nèi)容的數(shù)據(jù)需要從后端多臺存儲單元服務(wù)調(diào)取,效率及性能都較低。
本方案利用了本地存儲在讀寫效率及性能方面的優(yōu)勢,在虛擬機(jī)所在的宿主機(jī)建立一塊相同大小的本地磁盤掛載給虛擬機(jī)虛擬磁盤使用,虛擬機(jī)所有讀寫操作都在宿主機(jī)內(nèi)完成,效率性能可以得到保障;另外,有專門的定時更新模塊負(fù)責(zé)把數(shù)據(jù)定時同步到后端的分布式存儲以保證數(shù)據(jù)的一致性。
[1]丁建立,王斌強,張超.異地雙活數(shù)據(jù)中心服務(wù)區(qū)域劃分優(yōu)化[J].計算機(jī)應(yīng)用與軟件,2016(02).
[2]覃志武,方凱彬,劉北卓.存儲虛擬化技術(shù)研究與比較分析[J].信息與電腦(理論版),2016(08).