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