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

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

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

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