◆麥劍
數據安全與云計算
改進虛擬磁盤在分布式存儲下的讀寫效率
◆麥劍
(廣東睿江云計算股份有限公司 廣東 528000)
本文介紹了云計算下云主機的相關基礎技術,如網絡虛擬化、存儲虛擬化、計算虛擬化,并對云主機及操作系統的機制進行了簡單分析。當前存儲虛擬化的幾種技術架構方案,如集中式存儲、分布式存儲、本地存儲,筆者對三種常見存儲架構的優(yōu)缺點及存儲服務優(yōu)化進行詳細闡述,并探討如何結合各自存儲架構的優(yōu)點以及如何改進虛擬機的讀寫性能等。
云計算;虛擬化;磁盤;分布式存儲;讀寫效率
過去,物理CPU、內存、磁盤都固化在同一臺設備之上,磁盤的數據傳輸一般都在設備內部完成,云計算的興起與發(fā)展改變了計算機操作系統的運行方法。在云計算虛擬化技術的幫助下,操作系統運行載體及相關磁盤服務發(fā)生了很大的變化,最明顯的就是把計算與存儲進行分離,不再需要通過本地總線進行傳輸而改成網絡的方式。過去已有的存儲技術得以發(fā)展和大規(guī)模應用,如集中式存儲、分布式存儲等,過去可能只出現在一些大型機構或者具備一定規(guī)模的計算集群,如今存儲設備已經廣泛使用在不同的領域及場景,得益于軟件定義存儲技術的發(fā)展,衍生出許多基于x86通用設備的存儲產品。下文中,筆者將圍繞當前云計算背景下分布式存儲及對應磁盤虛擬化等問題展開討論并對優(yōu)化改進方案進行描述。
云計算技術的核心是虛擬化,而虛擬化根據類型主要分成三大模塊:計算虛擬化、存儲虛擬化、網絡虛擬化。計算虛擬化主要是提供CPU虛擬化服務,比如把物理CPU虛擬成多個虛擬的CPU提供給虛擬機使用。存儲虛擬化通常為虛擬機提供虛擬磁盤服務,這個虛擬磁盤提供和物理磁盤一樣的接口及功能服務,使得操作系統當成是一塊真實磁盤那樣使用,而提供這些服務的通常是一些專業(yè)的硬件存儲或者由通用設備搭建的存儲集群所提供;網絡虛擬化不僅為虛擬機提供了基礎的網絡服務,還提供了自助組網等功能。
根據實現方式分類,存儲一般分為本地存儲和網絡存儲。本地存儲比較容易理解,提供存儲服務的磁盤直接掛載在當前運行操作系統的設備之上,也就是傳統的、目前常見的方式。網絡存儲又可以分成集中式存儲和分布式存儲,集中式存儲通常是指由一臺單獨的存儲設備所組成;分布式存儲通常由多臺設備以集群的方式組成。由于通信機制的原因,本地存儲性能及效率都能達到很好的效果,但是數據冗余方面則沒有網絡存儲好;網絡存儲在數據冗余安全性方面有優(yōu)勢,但是由于所有數據交互都經過網絡,因而在效率及性能方面又不如本地存儲。
為了正常運行,虛擬機和普通計算機一樣,都需要CPU、內存、磁盤等幾個關鍵模塊。在云虛擬化技術幫助下,這些關鍵模塊都用虛擬化的方式提供服務。虛擬磁盤對虛擬機層面來講,它看到的是一個和物理磁盤一樣的設備,接口和使用方式都一致,因此可以驅動起操作系統的運行和普通計算機一樣。從底層來講,虛擬磁盤是從一個存儲單元劃分一部分空間出來提供存儲讀寫服務,這個存儲單元可以由本地磁盤提供,也可以由集中式存儲或者分布式存儲提供,只需要按照一定的規(guī)范標準接口即可。
本方案主要利用本地存儲結合分布式存儲各自的優(yōu)勢來組合使用,提供和現有一樣的虛擬磁盤服務,用于改進虛擬磁盤在分布式存儲下的讀寫效率。接下來,主要圍繞本地存儲、分布式存儲及其對應的技術方案細節(jié),對現有存在的問題如何改進提升展開探討。
目前分布式存儲(2副本)的實現方案如圖1所示:

圖1 目前分布式存儲(2副本)的實現方案
宿主機是為虛擬機提供CPU、網絡虛擬化服務的物理設備,物理宿主機與存儲設備之間通過網絡互相連接,提供存儲網絡服務。目前,分布式存儲提供虛擬磁盤的塊服務,會把磁盤按照固定的數據塊平均分為若干份,分散地保存到存儲單元設備中。比如一個20G的磁盤,數據塊大小是4MB,那么就有5000個數據塊分散地保存在存儲單元中。除此,分布式存儲還提供副本功能,如上圖所示的是2副本,代表主數據有1分,然后備份數據1份,一共2份數據。引入副本的好處是數據冗余性防止數據丟失,但會引申出一個寫的效率問題:以往沒有副本的情況下,數據只需要寫一次即可;當有副本之后,如2副本則需要寫2次數據,通常要等2份數據都寫完了才能返回成功,以防止數據的不一致性。因此,分布式存儲存在一個明顯的效率問題,就是隨著副本數增加,寫的次數也會增加,數據冗余安全性與效率方面不能兼得。
本解決方案如圖2所示。

圖2 本解決方案
本方案引入了兩個核心模塊來完成對應的功能:一是初始化模塊;二是定時更新模塊。整個工作流程描述如下:
(1)虛擬機創(chuàng)建時,指定了所需要的磁盤大小及對應操作系統版本等信息;
(2)初始化模塊根據虛擬所需的磁盤信息,先到后端分布式存儲創(chuàng)建分配對應大小及相關的操作系統系統盤等;
(3)初始化模塊檢測創(chuàng)建的是系統盤還是數據盤。如果是數據盤,則在宿主機本地磁盤創(chuàng)建一塊相同大小的提供給虛擬機使用;如果是系統盤,除了在宿主機創(chuàng)建一塊相同大小的之外還需要從分布式存儲把對應的系統數據同步到這塊磁盤上,以供虛擬機開機引導;
(4)完成前面3個步驟之后,虛擬機可以正常啟動并加載讀寫磁盤數據,讀虛擬磁盤數據時將直接從本地磁盤中讀取(步驟3已經同步了分布式存儲的數據);當虛擬機需要把新數據寫入虛擬磁盤時,直接寫到本地磁盤。由于讀寫都是直接操作宿主機的本地磁盤,所以無論效率或性能都較優(yōu)。
(5)當虛擬機對虛擬磁盤寫一塊數據的時候,定時更新模塊都會記錄對應那一塊數據塊被更新了,到了一定的時間就會觸發(fā),把更新過的數據塊內容同步到后端的分布式存儲。
分布式存儲是把一塊完整的數據按照平均大小分拆成若干份數據塊,分別保存在不同的存儲單元,因此虛擬磁盤在進行讀寫操作時需要和后端存儲單元建立多個網絡連接,往往讀取一個區(qū)間內容的數據需要從后端多臺存儲單元服務調取,效率及性能都較低。
本方案利用了本地存儲在讀寫效率及性能方面的優(yōu)勢,在虛擬機所在的宿主機建立一塊相同大小的本地磁盤掛載給虛擬機虛擬磁盤使用,虛擬機所有讀寫操作都在宿主機內完成,效率性能可以得到保障;另外,有專門的定時更新模塊負責把數據定時同步到后端的分布式存儲以保證數據的一致性。
[1]丁建立,王斌強,張超.異地雙活數據中心服務區(qū)域劃分優(yōu)化[J].計算機應用與軟件,2016(02).
[2]覃志武,方凱彬,劉北卓.存儲虛擬化技術研究與比較分析[J].信息與電腦(理論版),2016(08).