1 引言
存儲虛擬化是基于存儲區域網SAN(Storage Area Network)架構下的高端存儲解決方案,將應用服務器通過光纖高速網絡與磁盤陣列相連接,可以透明化地為用戶提供大容量、高性能的虛擬存儲設備,存儲虛擬化將異構的物理存儲設備整合為統一的存儲池,以映射表的形式為用戶的虛擬存儲設備劃分存儲資源,并將物理存儲資源以虛擬卷的形式呈現給用戶,用戶將虛擬卷格式化文件系統后即可進行跟普通邏輯卷一樣的I/O操作,而這些I/O操作都要通過虛擬化地址映射來傳達到底層的物理存儲設備。
由于組建SAN環境需要購置昂貴的網絡設備以及存儲設備,對于企業級用戶來講,怎樣合理高效地利用現有的存儲資源,從而最大化地發揮SAN系統易擴展和高性能的優勢就顯得尤為重要,存儲虛擬化的按需分配技術正是針對這個問題而提出的一種解決方案,以用戶對虛擬存儲設備的實際需求為出發點,并不一次性地為其分配所有存儲資源,而是針對用戶對虛擬卷的具體使用情況,動態地為其分配存儲資源,當用戶對虛擬卷的利用率普遍較低時,可利用該技術優勢使當前存儲資源能夠最大限度地滿足更多用戶對虛擬存儲的需求。
在現有的存儲資源動態分配技術中,virtual allocation采用一種靈活的存儲空間分配策略,將空間分配與文件系統分離開來,可以在Linux環境下使不同的文件系統之間共享存儲資源,利用寫時分配的策略使實際的物理空間隨上層應用對邏輯空間的使用情況逐漸增長;NetApp推出的Flex-Vol,在物理存儲設備與上層邏輯設備之間虛擬出一個中間層設備,由獨立或多個節點共同管理虛擬卷,可以實現存儲空間按需分配以及資源共享,使用虛擬分支網絡創建二級元數據緩沖區,可以減小對元數據存儲池的訪問壓力,此外,存儲管理系統還可以從FlexVol卷中回收釋放掉的空間并及時更新映射信息,然而virtual allocation僅面向Linux平臺的本地文件系統,例如EXT2、EXT3等,FlexVol僅面向NetApp專用操作系統DATA ONTAP支持的文件布局方案WAFL兩種技術目前均未提出支持Windows平臺本地文件系統FAT32或NTFS的解決方案。
基于Windows平臺的存儲虛擬化軟件需要為虛擬存儲設備開發內核態的驅動程序以及用戶態的通信接口,本文給出了一種可在Windows操作系統上實現存儲虛擬化按需分配功能的客戶端軟件VA-for windows,該軟件隸屬于帶外存儲虛擬化系統TH-VSS(out-of-band Tsinghua-VirtualizationStorage System),由元數據服務器MDS(MetaData Service)創建一種名為TP-vol(Thin-Provision Volume)的虛擬卷,利用按需分配的思想,在存儲池中動態分配存儲資源,虛擬卷的驅動程序基于Windows內核驅動開發套件WDK提供的編程接口開發,利用該驅動程序,可在SAN環境下為用戶提供具備按需分配功能的虛擬卷,即按需分配卷,在Windows操作系統中,按需分配卷以一個新邏輯分區的形式呈現給用戶,支持FAT32和NTFS文件系統,實驗結果表明,與普通虛擬卷相比,按需分配卷雖然對I/O性能稍有影響,但可以有效地減少磁盤空間的占用,有利于Windows用戶在部署存儲虛擬化系統時更加合理高效地利用現有存儲資源。
2 系統設計原理
2.1 按需分配原理
傳統的普通虛擬卷,一般由線性分配的元數據信息一次性構建而成,這樣的分配策略會使已經分配的存儲資源變得不可復用,當用戶的邏輯空間使用率很低時就會造成存儲資源的浪費,也難以滿足更多用戶的存儲需求。
在TH-VSS中,按需分配卷的理論大小與普通虛擬卷完全一致,但它的元數據信息并不是一次性劃分的,而是由若干段小規模的映射表組合而成,這里的空間劃分粒度是由存儲虛擬化系統中的元數據服務器MDS根據按需分配卷的理論大小劃分的,通常情況下,MDS只為按需分配卷先預先分配一段單位大小的存儲資源,當這部分存儲資源無法滿足當前用戶的邏輯空間需求時,MDS再為其繼續分配下一段存儲資源的映射信息,由此,存儲虛擬化系統就可以利用當前剩余的存儲資源來創建更多按需分配卷,從而滿足更多用戶的存儲需求。
2.2系統設計
存儲虛擬化系統按需分配功能設計如圖1所示,系統由元數據服務器MDS,客戶端軟件VA-forwindows以及磁盤陣列組成,三者由光纖通道相互連接組成帶外SAN架構,其中MDS負責從磁盤陣列中整合存儲資源并從中為按需分配卷分配存儲空間,構建邏輯地址與物理地址之間的映射關系,即映射表,VA-for windows 作為存儲虛擬化系統的客戶端軟件,由AUI和MAGICDISK兩個模塊組成,用戶態的AUI模塊負責從MDS接受虛擬化指令和映射表,并通過IOCTL與內核態進行信息交互;虛擬卷驅動模塊MAGICDISK在內核態負責接收來自AUI的虛擬化指令,并利用映射信息構建元數據存儲池以創建虛擬設備,即按需分配卷,在此基礎之上定制I/O訪問規則并完成邏輯地址到物理地址的映射,采用這種用戶態與內核態相結合的體系結構,將驅動程序中的通信請求從異步的I/O隊列中分離出來,由用戶態集中處理通信請求和指令交互,控制指令與數據傳輸相分離,可以有效地減小通信壓力,更好地發揮帶外SAN架構高速度、高帶寬的性能優勢。
當按需分配卷創建完畢后,AUI繼續完成與MDS以及MAGICDISK的雙向交互,隨著用戶對按需分配卷的繼續使用,會在MAGICDISK模塊產生新的邏輯地址請求,AUI向上使用socket接口與MDS進行用戶態的通信,向下使用IOCTL利用同步事件消息機制與MAGICDISK進行內核態的通信,將這些新的邏輯地址請求從內核態傳遞到用戶態,并反向接收新的映射表,同時,AUI對存儲虛擬化軟件的運行狀態進行實時監控,并為用戶提供友好的使用界面。
圖1按需分配功能系統設計
在Windows系統的驅動棧中,虛擬卷驅動模塊MAGICDISK是位于文件系統驅動程序與物理磁盤驅動程序之間的中間層驅動程序,配合Windows系統的I/O管理器共同處理來自虛擬卷的I/O請求,針對按需分配卷對映射信息要求的特殊性,MAGICDISK要在驅動程序中維護特定的元數據存儲池,負責保存當前按需分配卷中所有已使用邏輯地址的映射關系,當新的邏輯地址請求到來時,MAGICDISK將其通過用戶態的AUI發送至MDS以獲得對應的映射表,并將該映射表整合到原有的元數據存儲池中。
2.3 結構設計
普通虛擬卷的映射表一般是靜態分配的,即該映射關系涵蓋了整個虛擬卷的全部內容,它的缺陷就在于,當存儲資源一次分配給用戶之后,該段空間內的所有磁盤空間就不可再次分配,當用戶對虛擬卷的利用率較低時,就會造成存儲資源的浪費;而按需分配卷的映射表是動態分配的,映射信息以鏈表的形式維護在驅動模塊的元數據存儲池中。
如上頁圖2所示,在按需分配卷的結構設計中,TP_PRIVATE域作為索引結構引導映射信息SEG_LIST域,可將其看作元數據存儲池的索引表,Segment結構包含已經分配的邏輯起始地址及長度,Area包含了與其對應的物理地址及偏移長度,因此從結構上Segment與Area是一一對應的關系.當新的映射關系到來時,將其中新的邏輯地址、物理地址以及索引信息添加進對應的鏈表結構中。
圖2 按需分配卷的結構設計
3 存儲資源按需分配的實現
3.1 按需分配功能實現流程
在存儲虛擬化客戶端實現按需分配卷,首先從MDS獲取當前指定的物理磁盤和虛擬存儲設備等相關信息,MAGICDISK通過該信息在Windows系統的內核態申請命名空間并創建新的邏輯設備,再由掛載管理器MountMgr將虛擬卷掛載到系統的某一個盤符上,這一實現過程對用戶是完全透明的,當用戶啟動存儲虛擬化軟件后,可直接訪問到一個新的邏輯分區,并且這個邏輯分區的大小為用戶申請的存儲空間大小,此時用戶不必了解存儲虛擬化系統到底為該虛擬卷分配了多少磁盤空間。
當用戶對虛擬卷進行格式化文件系統或運行應用程序時,對于按需分配卷來講都是連續或隨機的I/O邏輯地址請求,當I/O請求從文件系統向下傳遞時,由I/O管理器將其封裝為IRP(I/ORequest Package)結構,并在Windows系統的驅動棧中逐層向下傳遞,各層的驅動程序都可以根據需要對該IRP進行相應的處理,最終將IRP傳遞到底層的磁盤驅動程序中。
3.2 通信機制
在內核態的MAGICDISK模塊中,每當產生一個新的邏輯地址請求時,都需要新生成一個IRP并發送給MDS,用戶態的AUI模塊開辟專門的線程負責請求的中轉。在IRP結構中有專門負責數據交互的緩沖區,利用這個緩沖區可以在發送請求時存放邏輯地址的數據包,在接收映射信息時讀取新分配的映射表。
通信的流程如圖3所示,首先由MAGICDISK模塊發起請求,將邏輯地址寫入IRP的緩沖區,并同時激活用戶態的等待事件,此后AUI從IRP緩沖區中讀取請求消息包,隨即通過socket發送給MDS,接收消息時,先由AUI從MDS接收到映射表,再將其寫入IRP的緩沖區,通過IOCTL向下發送給MAGICDISK,此時內核態的驅動模塊從該IRP的緩沖區中讀取映射表,驗證無誤后完成本次映射操作。
圖3 通信流程
由于Windows系統在內核態是以異步的方式處理IRP隊列的,而上面介紹的通信方法一次只可完成一個邏輯地址請求,這樣通信過程可能會成為系統的瓶頸,因此,我們采用聚集(batch)的方法,在MAGICDISK模塊中預先收集一部分來自驅動程序的邏輯地址請求,然后統一放入IRP的緩沖區中一次發送,此時就可從MDS處一次獲得多個請求的映射信息,再以異步的方式完成相應的映射,從而提高數據收發的效率。
3.3 按需分配卷I/O流程
當IRP傳遞到MAGICDISK驅動模塊時,首先從中提取本次請求的邏輯起始地址和長度,并在索引結構中進行查找,若找到對應的映射信息則直接向下傳遞完成本次映射;否則就要向MDS獲取新的映射信息,將IRP的邏輯地址和長度封裝為TP_REQUEST形式的消息包,與此同時啟動消息事件標識通知AUI開通MDS與MAGICDISK之間的通信通道,AUI將接收到的消息包發送給MDS,當MDS為新的邏輯地址請求動態分配完存儲空間后,會將該段映射表以發還給AUI,此時AUI再將其向下傳遞到MAGICDISK模塊,此時驅動程序就得到了本次請求的映射關系,在完成映射的同時還要同步更新元數據存儲池以保證數據的一致性,若下一次到來的邏輯地址請求可以在元數據存儲池的索引表中找到,則直接調用該段映射表完成映射而不必再次發送請求。
圖4 按需分配卷的I/O流程
由于按需分配卷的映射表是由多個地址段所組成的,因此在進行IRP映射時可能會出現一個IRP的邏輯地址請求會跨多個映射地址段的情況,此時需要MAGICDISK將該IRP分割為若干個子IRP,待所有子IRP完成各自的映射之后再將其合并,子IRP的映射過程與上段描述的過程是一致的,按需分配卷的I/O流程如上頁圖4所示。
4 性能評價
4.1測試環境
測試環境使用的應用服務器操作系統為Windows Server2003 SP2 R2; 配置為Quad-Core AMD Opteron( tm) Processor2378 2.4GHz x8 CPU,內存16G,Qlogic ISP2532( 8Gb /s) 光纖卡; 磁盤陣列為Infortrend S12F-G1433 SCSI,應用服務器通過光纖網絡與MDS以及高級磁盤陣列相連接,組成帶外SAN環境。
4.2 性能對比測試
第1組測試通過性能對比來說明按需分配卷對I/O性能的影響,測試時由TH-VSM分別創建大小為100GB和1TB的按需分配卷,同時創建與其容量相同的兩個普通虛擬卷做性能對比,均格式化為NTFS文件系統,分配單元大小為4096Byte,測試工具使用IOMETER,采用隨機讀寫的方式,其中隨機讀寫的比例為讀占80%,寫占20%,讀寫塊大小為64KB~4MB,收集I/O帶寬以及平均響應時間的數據,對比結果如圖5和圖6所示。
圖5 I/O帶寬以及平均響應時間對比情況( 100GB)
對于100GB的按需分配卷,MDS為其分配的映射地址長度較短,從圖5可知,當讀寫塊大小小于1MB時,在元數據存儲池中進行的索引查詢能夠較快地定位目標元數據映射信息,此時對I/O帶寬和平均響應時間的影響很小;當讀寫塊大小大于1MB時,由于請求的邏輯地址長度需要跨越多個元數據地址段,需要對IRP進行進一步的拆分與合并,此外隨機I/O訪問同樣會造成一定的性能損失,因此在圖中會看到比較明顯的I/O性能影響.對于1TB的按需分配卷,MDS為其分配的映射地址長度較長,由圖6可知,對于絕大多數的讀寫I/O訪問,其請求的邏輯地址長度都在一段元數據地址映射長度范圍內,依靠元數據存儲池自身的緩存機制能夠有效地減輕自身的訪問壓力,采用實用的通信策略和便捷的索引機制,可以快速地完成虛擬卷到物理磁盤的地址映射,因此I/O的讀寫塊大小越大,按需分配卷的I/O性能優勢就越明顯。
圖6 I/O帶寬以及平均響應時間對比情況(1TB)
4.3 存儲資源節約效果測試
第2組測試驗證按需分配卷的存儲資源節約效果,創建100G的按需分配卷,格式化為NTFS文件系統,分配單元大小為4098Byte,在其上進行順序寫操作,直到將邏輯空間基本寫滿,隨著邏輯空間的增長,其對應的物理空間也會隨之增長,觀察這一過程中存儲資源的分配情況。
圖7 按需分配卷的存儲資源節約情況
從圖7可以看出,當邏輯空間的利用率較低時,按需分配卷可以節省出大量的物理磁盤空間,例如在進行NTFS快速格式化后總共占用了96M的邏輯空間,此時虛擬化系統為其分配了120M的物理磁盤空間,隨著用戶在按需分配卷上對邏輯空間的繼續使用,MDS為其分配的存儲資源也隨之線性增長,只有當用戶將邏輯空間基本寫滿時,MDS才會為其分配等量的物理空間,總體上來說,用戶對邏輯空間的利用越少,按需分配卷為存儲虛擬化系統節省的物理磁盤空間就越多,由上文可知,有些I/O訪問的邏輯地址可能會跨越多段映射表,因此需要為其多分配一些地址段以滿足I/O請求的映射操作,因此從圖中可以看出,實際分配的物理空間會稍多于邏輯空間。
5 結論
企業級用戶在部署存儲系統時,由于受到設備預算的限制,往往只能購買容量有限的磁盤陣列,多使用原有的線性分配策略,不僅會造成存儲資源的浪費還會造成大量不必要的能量消耗,使用按需分配的存儲策略,可以利用當前有限的磁盤空間滿足更多用戶的存儲需求,只有當用戶的邏輯空間請求超出當前的物理空間范圍時,才需要管理員再次購買磁盤設備,由此可以達到降低初次采購成本的目的。
本文給出了一種具備按需分配功能的存儲虛擬化客戶端軟件VA-for windows,在帶外SAN環境下能夠為Windows用戶透明化地提供虛擬存儲設備,測試結果表明,與以往使用靜態分配資源的虛擬卷相比,使用按需分配卷雖然在性能上稍有影響,但節約物理空間效果明顯,且具有良好的可用性和可靠性,在保證數據一致性的基礎上,可以有效地為存儲系統節省物理磁盤空間,提高存儲資源利用率。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/