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