隨著IT技術(shù)的發(fā)展,存儲數(shù)據(jù)的爆炸式增加,存儲的地位變得越來越重要;存儲部分逐漸地從應(yīng)用系統(tǒng)中分 離出來,形成了專門的存儲系統(tǒng),進(jìn)而形成了專門的存儲網(wǎng)絡(luò)(SAN)。IT技術(shù)在經(jīng)歷了以處理器為核心和以傳輸技術(shù)為核心的階段以后,目前已進(jìn)入了以存儲 技術(shù)為核心的發(fā)展階段。考核一個存儲系統(tǒng)的性能指標(biāo)有很多,如容量、可擴(kuò)展性、可伸縮性、可管理性、高可用性等,最重要是存儲系統(tǒng)的容量。而通常增加存儲 系統(tǒng)容量的方法有兩種:
①增加存儲設(shè)備;
②提高存儲系統(tǒng)的容量利用率。
顯然,提高存儲系統(tǒng)的容量利用率是一種既不增加成本又可以增加容最的好方法。研究表明,在目前的存儲系 統(tǒng)中,容量的利用率都很低,以傳統(tǒng)磁盤存儲為例,考慮到用戶數(shù)據(jù)的不斷增長,實際上平均40%-50%的磁盤容量從未被利用過,大量的、寶貴的存儲資源被 浪費掉了,沒有發(fā)揮應(yīng)有的作用。同時為滿足系統(tǒng)性能和以后升級擴(kuò)容等方面的要求,客戶一般購買超過實際數(shù)據(jù)容量需求3-4倍的磁盤,用于磁盤鏡像等附加功 能,從而造成了存儲空間資源的極大浪費。
這種現(xiàn)狀的主要原因是:目前對存儲資源的分配方法是靜態(tài)的,即按照用戶的估計(往往有很大余量),預(yù)先 把存儲資源劃分成分區(qū)或卷,而后以分區(qū)或卷為單位將存儲資源分配給用戶。在以后的使用過程中,分配給用戶的存儲資源中會有很大一部分長期處于閑置狀態(tài)。更 糟糕的是這些閑置的資源無法被其它用戶使用,從而造成了存儲容量利用率低下的現(xiàn)象。如果能夠采用動態(tài)的方法按需分配存儲資源,毫無疑問,將會極大地提高存 儲資源的利用率,從而在不增加成本的情況下增加存儲系統(tǒng)的容量。而要采用動態(tài)的、按需分配的方法就必須將存儲系統(tǒng)虛擬化,即采用存儲虛擬化技術(shù)。
1 存儲虛擬化技術(shù)
1.1存儲虛擬化技術(shù)概念
傳統(tǒng)的存儲虛擬化就是將存儲網(wǎng)絡(luò)(sAN)中各種分散的、異構(gòu)的存儲設(shè)備映射成一個單一的連續(xù)編址的邏 輯存儲空間或一個虛擬存儲池(virtual storagep00l),并將虛擬存儲池的訪問接口提供給應(yīng)用系統(tǒng)。
該映射操作是由存儲虛擬化中問件SVM(storage virtuali—zation middleware)來實施的,SVM屏蔽了所有存儲設(shè)備的物理特性,由此,存儲網(wǎng)絡(luò)(SAN)中所有存儲設(shè)備對主機(jī)透明,主機(jī)只與分配給它的邏輯卷打 交道,就像訪問本地邏輯存儲單元LUN(logical unit number)樣訪問虛擬存儲池,其結(jié)構(gòu)如圖1所示。

圖1 存儲虛擬化結(jié)構(gòu)
1.2存儲虛擬化的實現(xiàn)方法和方式
存儲虛擬化主要涉及3個基礎(chǔ)性的問題:
①虛擬的對象;
②進(jìn)行虛擬的位置;
③虛擬的實現(xiàn)機(jī)制,如圖2所示。在存儲系統(tǒng)中,虛擬的對象主要有磁盤、磁帶、文件系統(tǒng)、數(shù)據(jù)塊、數(shù)據(jù)記 錄等,我們則集中考慮物理存儲設(shè)備(如磁盤、磁帶等)的虛擬化問題。

圖2 虛擬對象位置及機(jī)制
目前虛擬存儲的發(fā)展尚無統(tǒng)一標(biāo)準(zhǔn),從系統(tǒng)的觀點來講,有3種主要的存儲虛擬化的方法枷:基于主機(jī)的虛擬 存儲;基于存儲設(shè)備的虛擬存儲;基于網(wǎng)絡(luò)的虛擬存儲。由于基于不同的實現(xiàn)層次,3種存儲虛擬化方法各有特色:基于主機(jī)的虛擬化軟件提供獨立于存儲網(wǎng)絡(luò)的互 連能力和存儲資源,但必須一個服務(wù)器范圍內(nèi)進(jìn)行管理;基于存儲設(shè)備的虛擬化能夠利用廠家存儲的特定功能和特點,但缺乏異構(gòu)存儲環(huán)境的互操作能力;采用應(yīng)用 形式或居留于交換機(jī)中的基于存儲網(wǎng)絡(luò)的虛擬化提供虛擬功能的集中,但為了防止出現(xiàn)元件失效需要采用冗余來提供高可用性。從發(fā)展趨勢看,基于主機(jī)的和基于存 儲的虛擬化技術(shù)目前已經(jīng)相對成熟,而網(wǎng)絡(luò)虛擬化是一種新的技術(shù),它獨立于主機(jī)和存儲設(shè)備,給用戶帶來了很大的靈活性,其未來的發(fā)展空間最大。
從存儲虛擬化的拓?fù)浣Y(jié)構(gòu)來講,有對稱式和非對稱式兩種,根據(jù)實現(xiàn)機(jī)制又分為帶內(nèi)和帶外兩種基本類型。兩 種方式的主要區(qū)別在于存儲網(wǎng)絡(luò)中數(shù)據(jù)FO與控制信息是否使用同一通道。對稱式結(jié)構(gòu)存儲虛擬化(又稱帶內(nèi)存儲虛擬化),是指存儲虛擬化控制設(shè)備,交換設(shè)備與 存儲軟件系統(tǒng)集成在一臺專用的服務(wù)器中;非對稱式結(jié)構(gòu)存儲虛擬化(又叫做帶外存儲虛擬化),數(shù)據(jù)和命令信息使用不同的通路,就是在存儲區(qū)域網(wǎng)絡(luò)中(或主機(jī) 系統(tǒng)以太網(wǎng))設(shè)置專用于存儲控制的服務(wù)器作為元數(shù)據(jù)控制器。
2 雙層次存儲虛擬化結(jié)構(gòu)
2.1雙層次存儲虛擬化結(jié)構(gòu)設(shè)計
在存儲系統(tǒng)中采用虛擬存儲的技術(shù)已經(jīng)成熟,許多操作系統(tǒng)平臺上都有一種甚至多種卷管理軟件層,常見的有 AIX平臺上的Volume Group,Solaris平臺上的Volume Manager,Linux平臺上的LVM(Iogical volume manager)等。這些卷管理軟件的功能就是模擬物理磁盤的結(jié)構(gòu),把多個磁盤組或者多個磁盤條帶組織起來,虛擬成一組統(tǒng)一的數(shù)據(jù)塊集,這樣操作系統(tǒng)就可 以統(tǒng)一而方便的使用所有的磁盤了。這類軟件的工作機(jī)制和管理思想,是現(xiàn)今虛擬存儲技術(shù)的一個重要組成部分。
利用虛擬化提高存儲系統(tǒng)的容量利用率不是一個新的概念,事實上,在操作系統(tǒng)中已經(jīng)成功地實現(xiàn)了內(nèi)存的虛 擬化。在當(dāng)前的操作系統(tǒng)(Windows、Linux、Unix等)中,不管實際的物理內(nèi)存有多少,利用虛擬化技術(shù),都可以為每個進(jìn)程提供最大的虛擬內(nèi)存 空間(在Inteli386體系結(jié)構(gòu)中是4GB)。每個進(jìn)程都會以為自己擁有全部的地址空間,而實際上它只占用了很小一部分物理內(nèi)存。操作系統(tǒng)中的虛擬內(nèi) 存管理器管理虛擬內(nèi)存到物理內(nèi)存的映射,它只為正在使用的虛擬頁分配物理內(nèi)存,而從不會給未用到的虛擬頁分配物理內(nèi)存,因而物理內(nèi)存的利用率非常高。
將虛擬內(nèi)存思想擴(kuò)展應(yīng)用到存儲系統(tǒng)中,即將傳統(tǒng)的存儲虛擬化技術(shù)和虛擬內(nèi)存思想結(jié)合起來,既可以實現(xiàn)存 儲設(shè)備的虛擬化,又可以能夠提高存儲資源的利用率。
在存儲系統(tǒng)中,虛擬化技術(shù)的作用主要有兩個:
(1)屏蔽存儲設(shè)備之間的差別,為用戶提供一個統(tǒng)一的存儲視圖(存儲池);
(2)按需分配存儲資源,提高存儲系統(tǒng)的容量利用率,為用戶虛擬出大的存儲空間(甚至能超過存儲系統(tǒng)的 物理容量)。
第1點為存儲系統(tǒng)虛擬化的第1個層次,第2點為存儲系統(tǒng)虛擬化的第2個層次。第1個層次的虛擬化是初級 的虛擬化,但卻是存儲系統(tǒng)虛擬化的基礎(chǔ),它的主要目的是屏蔽存儲設(shè)備之間的差別,構(gòu)建一個統(tǒng)一的存儲池;第2個層次的虛擬化是高級的虛擬化,是對第l層次 虛擬化的再虛擬化,它在第1個層虛擬出來的存儲池的基礎(chǔ)上,采用按需分配策略,為每個用戶都虛擬出一個大的存儲空間。顯然,只有實現(xiàn)了第2個層次的虛擬 化,對存儲系統(tǒng)的虛擬化才算是徹底的,也只有實現(xiàn)了第2個層次的虛擬化,才真正達(dá)到存儲系統(tǒng)虛擬化的目的。
在目前的存儲系統(tǒng)產(chǎn)品中,已經(jīng)集成了虛擬化技術(shù),如IBM的SVC(實現(xiàn)了基于主機(jī)的虛擬化),EMC 的lnvista(實現(xiàn)了基于存儲網(wǎng)絡(luò)的虛擬化),HDS的TagmaStore(實現(xiàn)了基于存儲設(shè)備的虛擬化)等,但它們只做到了第1個層次,都沒有實 現(xiàn)存儲資源的按需分配。
在存儲系統(tǒng)的發(fā)展中,存儲虛擬化不再被看作是一個專門的產(chǎn)品,而是一個支撐存儲容量和存儲服務(wù)的基礎(chǔ)平 臺。實現(xiàn)雙層次的虛擬存儲虛擬化已對傳統(tǒng)的存儲虛擬化概念進(jìn)行了擴(kuò)展和豐富,其主要源于虛擬內(nèi)存技術(shù),是內(nèi)存管理技術(shù)向外存儲系統(tǒng)管理中的遷移:具體的實 現(xiàn)思路是:將虛擬內(nèi)存管理的思想引入到存儲系統(tǒng)的虛擬化中,在實現(xiàn)屏蔽存儲設(shè)備異構(gòu)性的第1層虛擬化的基礎(chǔ)之上,實現(xiàn)第2個層次的虛擬化,如圖3所示。

圖3 雙層次存儲虛擬化結(jié)構(gòu)
對于每個服務(wù)器,為其建立虛擬卷和邏輯卷之間的映射表,表示虛擬塊到邏輯塊(存儲池中的塊)的映射關(guān) 系,但不分配實際的物理存儲空間,而是采用操作系統(tǒng)中常見的lazy思想,只有在實際需要時才為其分配;各個服務(wù)器看到的是滿足各自容量需求的存儲空間, 而這些存儲空間實際上是在虛擬卷上建立的虛擬磁盤。服務(wù)器在使用的過程中,可以根據(jù)容量需求進(jìn)行動態(tài)擴(kuò)展,在存儲池中逐步為其分配邏輯塊,隨之動態(tài)地建立 修改映射表。由于虛擬空間和邏輯空間在大小方面存在明顯的差距,相似與用vMM(虛擬內(nèi)存管理器)管理虛擬內(nèi)存,則在此需要專門的映射策略和實現(xiàn)機(jī)制來管 理虛擬塊和邏輯塊之間的映射關(guān)系,以達(dá)到映射的正確性,快速性和安全性。
對于處于中間層的存儲池,也需要在邏輯塊和物理塊(存儲設(shè)備上的塊)之間維護(hù)映射表,用于表示邏輯塊和 物理塊之間的映射關(guān)系。鑒于邏輯空間和物理空間大小基本一致,在建立邏輯卷時,在邏輯塊和物理塊之間通常有兩種映射策略:
①線性映射:將把一定范圍的物理塊按順序分配給邏輯卷;
②交錯模式:將把邏輯塊交錯映射到不同的物理卷中。以Linux(2.6內(nèi)核)系統(tǒng)中集成的邏輯卷管理 器(logical volumemanager,LVM)為例,VGDA(卷組描述符區(qū)域)功能相當(dāng)于LVM的分區(qū)表,其中包含多種描述符信息,當(dāng)系統(tǒng)啟動邏輯卷 時,VGDA被加載至內(nèi)存。VGDA幫助識別邏輯卷的實際存儲位置,當(dāng)系統(tǒng)想要訪問存儲設(shè)備時,由VGDA建立起來的映射機(jī)制就用于訪問實際的物理位置來 執(zhí)行I/O操作。
2.2雙層次虛擬存儲系統(tǒng)分析
在存儲管理中廣泛采用虛擬內(nèi)存的實現(xiàn)機(jī)制,其構(gòu)成的虛擬存儲系統(tǒng)具有以下特點:
(1)能夠?qū)⒉煌拇鎯υO(shè)備整合成一個統(tǒng)一的存儲池,屏蔽各種存儲設(shè)備之間的差別;
(2)實現(xiàn)了存儲空間的按需分配,提高了存儲系統(tǒng)的容量利用率;
(3)允許動態(tài)擴(kuò)充存儲空間(增加存儲設(shè)備),存儲空間的擴(kuò)充對用戶是透明的;
(4)允許虛擬卷的動態(tài)遷移,即在不影響服務(wù)器運行的情況下,將它的虛擬卷遷移到其它存儲設(shè)備上:
(5)允許建立存儲控制策略,并自動按照存儲策略為用戶分配存儲空間,保證滿足用戶的需求(如性能要求等);
(6)支持按設(shè)備、按應(yīng)用、按虛擬卷的備份;
(7)能夠在不同層次的存儲設(shè)備之間動態(tài)、有序地移動數(shù)據(jù),方便信息存儲周期管理(ILM);
(8)便于數(shù)據(jù)的自動歸檔;
(9)便于管理。
盡管雙層次的存儲虛擬化可以屏蔽存儲設(shè)備的異構(gòu)性,提高存儲資源的利用率,但它同樣帶來了新的缺陷。由于虛擬化需要把存儲系統(tǒng)的一種視圖映射到另一種視圖,如雙層次存儲虛擬化結(jié)構(gòu)中需要保持物理塊和邏輯塊以及邏輯塊和虛擬塊之間的雙級映射,所以必須保存這種映射的持久性拷貝。這種駐守的數(shù)據(jù)通常叫做元數(shù)據(jù)。通常,元數(shù)據(jù)存在多個副本,如何保持元數(shù)據(jù)的一致性是十分關(guān)鍵的問題。同時,每種文件系統(tǒng)和存儲設(shè)備都需要維護(hù)元數(shù)據(jù),元數(shù)據(jù)的維護(hù)在異構(gòu)跨平臺的虛擬存儲化中存在著許多問題,如何保存和維護(hù)元數(shù)據(jù)則需要進(jìn)行深入的研究和探討。
3 結(jié)束語
雙層次存儲虛擬化結(jié)構(gòu)解決了存儲空間使用上的浪費問題,它把系統(tǒng)中各個分散的物理存儲空間整合起來,應(yīng)用Device Mapper機(jī)制形成連續(xù)編址的邏輯存儲空間,之后利用虛擬內(nèi)存的管理思想將邏輯存儲空間映射成虛擬存儲空間,實現(xiàn)了存儲資源的動態(tài)分配和管理,極大的提高了存儲資源的利用率,降低了用戶TCO(總體擁有成本),增加了用戶的ROI(投資回報)。
雙層虛擬存儲結(jié)構(gòu)是基于網(wǎng)絡(luò)的虛擬存儲,主要考慮在專用的元數(shù)據(jù)服務(wù)器上實現(xiàn),因此在如何呈現(xiàn)對上層的透明性,避免單點失效以及雙層映射的高效性等方面需要進(jìn)一步的研究和設(shè)計。


