摘要:網絡磁盤陣列將傳統的以服務器為中心的存儲轉發(fā)改變?yōu)橐詳祿橹行牡闹苯觽鬏?/SPAN>, 從而消除了傳統模式下的服務器I/O瓶頸。本文基于網絡磁盤陣列構建出一種高性能的海量存儲系統, 其文件集中管理和數據分布存儲的體系結構不僅加快了數據傳輸速度、降低了存儲管理開銷, 同時也實現了命令與數據分流、擴容與增速同步的目標, 從而大大提高的整個存儲系統的性能。
關鍵詞:網絡磁盤陣列;海量存儲;文件集中管理;數據分布存儲
引 言
現代信息技術的飛速發(fā)展, 導致了用戶對存儲產品和存儲服務需求的爆炸性增長。目前計算機存儲系統的性能遠遠不能滿足許多實際應用的需求, 因而如何建立高性能的存儲系統成為人們關注的焦點, 海量信息存儲技術旨在研究大容量數據存儲的策略和方法, 其追求的目標在于擴大存儲容量、提高存取速度、保證數據的完整性和可靠性、加強對數據(文件) 的管理和組織等。
網絡磁盤陣列系統(Net-RAID) 采用存儲設備直接聯網的體系結構, 改變了傳統的以服務器為中心的迂回傳輸模式,使所有網絡請求由服務器統一管理, 而數據則由磁盤陣列直接通過網絡接收和發(fā)送, 從而避免了數據流在服務器與存儲設備之間的往返傳送和存儲轉發(fā), 消除了服務器中CPU、內存以及I/O 總線所存在的潛在瓶頸, 極大的提高了系統帶寬和服務器的平均響應速度。
以此網絡磁盤陣列作為基本單元, 本文構建出一種高性能的海量存儲系統, 其文件集中管理和數據分布存儲的體系結構不僅加快了數據傳輸速度、降低了存儲管理開銷, 同時也實現了命令與數據分流、擴容與增速同步的目標, 從而大大提高了整個存儲系統的性能。
CMDS海量存儲系統總體設計
傳統的集中式存儲體系結構下, 網絡用戶訪問文件服務器上的數據資源時, 數據必須在存儲設備和文件服務器之間進行多次的存儲轉發(fā)。因此, 服務器的CPU、主存、存儲設備、主從通道都有可能成為系統的瓶頸。而且, 無法實現共享存儲, 系統的可擴展性也受到很大的限制。采用具有新型I/O通道體系結構的存儲系統可以極大地提高性能, 但一味地依靠擴展系統的硬件性能終究會有上限。因此, 傳統存儲系統體系結構雖可提供大的存儲容量, 但不適合于構造海量存儲系統。構造一個高性能的海量存儲系統不僅需要極大的存儲容量和高I/O帶寬, 還必須具有高可擴展性、高可用性、可管理性以及低的價格。
采用分布式存儲系統結構是實現海量信息存儲的最好選擇。將數據分割(比如說塊)分別存放在不同的存儲設備上, 利用對不同存儲設備的并行操作來提高系統的性能。但分布式系統的存儲管理存在很大的難度, 統計數據表明, 在分布環(huán)境下, 存儲管理大約要消耗存儲成本總額的55%。集中式的存儲則能減少管理開銷和提高管理質量。可見, 如果采用集中式的存儲管理, 特別是對于海量存儲系統中大量的存儲資源的管理, 將可以極大地降低存儲管理的開銷。
顯然, 要想解決海量信息的有效存儲和管理, 必須構造一種全新的存儲系統體系結構, 從根本上解決現有存儲系統體系結構所存在的問題。
針對這種情況, 本文提出了一種文件集中管理、數據分布存儲的高性能海量存儲系統(centralized file Managementand Dist ributed data StorageMass Storage System ) CMDSMSS, 其體系結構如圖1所示, 它同時具備集中式存儲系統和圖1CDMS海量存儲系統體系結構圖分布式存儲系統兩者的優(yōu)點。該系統由文件服務器和多臺網絡磁盤陣列(Net-RAID) 構成, 所有的N et-RAID按傳統的DAS方式通過外設通道(SCSI或FC, 也可以采用網絡通道)掛接在文件服務器上, 然后再通過網絡連接掛接在包交換網絡上。 通過建立磁盤陣列與網絡用戶間的直接聯系, 使得磁盤陣列的命令與數據分流, 免除了數據流在文件服務器與磁盤陣列之間的存儲轉發(fā), 克服了原有系統的文件服務器瓶頸。如果在文件服務器上接入多臺(理論上可多達90臺)Net-RAID, 則每接入一臺Net-RAID 便擴展了一個網絡通道, 多個網絡通道可以并行傳輸以提高系統的I/O帶寬, 實現了容量和速度同步擴展。種體系結構充分體現了多通道、并行處理的原則, 它不僅在很大程度上解除了I/O操作對文件服務器性能的束縛, 也極大地提高了存儲系統的整體性能。 同時,它的集中數據管理方式能節(jié)約大量的管理費用。
CMDS海量存儲系統的文件組織可以分成兩種形式:
(1)Net-RAID作為獨立的存儲單元, 每臺Net-RAID在文件服務器上具有單獨的目錄節(jié)點, 每個節(jié)點上可以建立不同的文件系統, 存儲不同類型的文件(如視聽、文本等), 并各自處理用戶數據的存取和網絡傳輸。當網絡用戶對不同的目錄結點發(fā)出請求時, 多個請求可以在多個陣列上并行服務。
(2) 多個Net-RAID節(jié)點上的存儲空間被虛擬成一個存儲空間的單一邏輯視圖, 數據分塊存放在多個存儲節(jié)點上。隨著存儲節(jié)點的增加, 不僅系統的存儲容量得到了擴大, 而且有助于提高系統的性能。具體來講, 多個小數據量的請求, 可以由多個存儲節(jié)點并行地獨立完成, 從而提高系統的吞吐量。一個大數據量的請求, 數據分布在多個存儲節(jié)點上, 多個存儲節(jié)點并行操作, 可以提高單個請求的數傳率。靈活的使用方式可以滿足不同的使用環(huán)境, 既可以滿足事務處理等多個小數據量的突發(fā)請求, 也可以滿足大數據量的連續(xù)請求(如媒體流)。我們主要研究第二種文件組織形式, 它具有以下特點(如圖2所示)。
(1) 獨立的文件組織管理器
文件組織管理器負責監(jiān)視文件組織系統中的所有操作,并為網絡用戶提供數據描述。當一個網絡用戶試圖存取數據時, 它通過數據表示向文件組織管理器發(fā)出請求, 文件組織管理器啟動它的存取控制機制判斷該網絡用戶是否有存儲這一數據的權限, 然后再檢查是否有其他用戶鎖定這一數據。如果網絡用戶不能存取數據, 文件組織管理器就會向網絡用戶發(fā)出拒絕或錯誤信息。如果網絡用戶擁有存取權限并沒有被文件鎖定拒絕, 文件組織管理器就通過數據結構判斷數據的網絡地址(即數據所在的存儲節(jié)點在CMDS海量存儲系統中的位置, 因為數據位置不僅僅是邏輯塊地址, 還包括附加的網絡地址或存儲節(jié)點的名稱) 和存儲位置, 然后將其傳送到網絡用戶。網絡用戶接收到位置信息后重新組織數據結構, 然后通過網絡通道直接與存儲子系統交互并存取數據。此時既可以采用基于NFS或CIFS的文件I/O進行交互, 也可以采用基于SCSI協議或FC協議的塊I/O進行交互。獨立的文件組織管理器體現的就是一種集中管理的思想, 以便于降低管理開銷提高管理質量。
(2) 分布式的數據結構和數據存儲
在網絡存儲系統的文件組織系統中, 尋址模式決定了網絡地址及存儲地址的存儲位置。CMDS海量存儲系統中的數據結構和數據分布存儲在存儲系統中的多個存儲節(jié)點上, 所有使用該系統的網絡用戶都使用同一個文件組織系統映像。該系統通過使用數據結構來實現這種映像, 其數據結構將所有存儲節(jié)點的網絡地址作為數據尋址運算法則的一部分。由于采用分布式的數據結構和數據存儲, 該系統可以使用RAID算法在存儲系統中處理文件組織和數據冗余。 因此,它采用分塊技術將目錄數據、文件數據和數據結構跨越存放在多個存儲節(jié)點上。由于文件數據分塊冗余存放在多個存儲節(jié)點上, 使得存儲系統中的某一個存儲節(jié)點發(fā)生錯誤時仍然可以繼續(xù)操作。 同時, 通過增加存儲節(jié)點的數量, 可以在系統結構上增加物理數據通道的并行度來提高系統的性能。
文件I/O與塊I/O
圖3 表示來自網絡用戶的文件I/O與塊I/O在目標設備上的數據流向。 對于文件I/O的目標設備而言,Linux中的虛擬文件系統(VFS)分別管理向網絡用戶提供文件共享的網絡文件系統和控制本地存儲設備上的數據組織的本地磁盤文件系統。當用戶空間的應用程序接收到來自網絡用戶的文件I/O請求時, 會將其交給VFS, 并由VFS 找到相應的磁盤文件系統, 然后由磁盤文件系統通過查找索引結點信息將文件I/O請求轉換成塊I/O, 最后通過卷管理器和塊設備驅動程序來訪問相應的數據。對于塊I/O的目標設備, 可以不需要任何文件系統, 因為來自網絡用戶的塊I/O請求本身就包含了請求數據在目標設備上的塊地址信息(此即文件組織系統中的數據結構) , 因此, 當該設備通過TCP/IP協議棧接收到網絡用戶的I/O請求后, 可以直接將該I/O請求轉交給卷管理器, 然后通過磁盤的設備驅動程序就可以訪問相應的數據。
由上面的分析以及圖3可知, 塊I/O相對于文件I/O避免了用戶空間和系統空間的切換, 避免了所有的I/O請求及其數據穿越網絡文件系統、虛擬文件系統以及本地磁盤文件系統的開銷, 同時還避免了磁盤文件系統將文件I/O轉換成塊I/O時查詢索引結點的開銷。因此, CMDS海量存儲系統圖4CMDS海量存儲系統軟件結構采用塊級I/O, 直接通過數據的物理地址信息來訪問存儲設備(Net-RAID群) , 使數據檢索與訪問的速度優(yōu)于采用文件I/O時的速度。
CMDS海量存儲系統的軟件結構與工作流程
CMDS海量存儲系統軟件結構如圖4所示。它的主要功能是實現服務器、海量存儲系統和客戶端三者之間的通信和協同。CMDS軟件可以分為三個層次:通道控制層、命令控制層和網絡通訊層。
分為駐留服務器的和駐留在Net-RAID群底層的通道控制器。這一層負責服務器與Net-RAID群間的命令和控制信息的傳遞。
服務器中的通道控制器用于建立服務器與Net-RAID群的命令通道。在傳統的存儲服務模式下, 它將上層系統解析后的所有I/O命令發(fā)至存儲設備, 并接受存儲設備執(zhí)行后的返回結果。而對于CMDS海量存儲系統, 駐留在服務器中的通道控制器只執(zhí)行其中涉及控制文件系統結構和文件屬性的I/O任務; 并且, 服務器端的通道控制器直接利用服務器現有的SCSI通道驅動程序。Net-RAID群中的通道控制器, 負責接收來自服務器主從外設通道的所有I/O命令和消息, 將執(zhí)行結果回送給服務器。
命令控制層
這一控制層是該海量存儲系統的核心層。它分為服務器中的命令解析器和Net-RAID 群中的命令執(zhí)行器兩部分。主要用于解析網絡用戶的I/O請求, 獲得文件所在磁盤陣列的位置信息和文件數據的存儲地址組, 實現請求服務。駐留在服務器端的命令解析器由用戶請求處理、地址解析、訪問控制等模塊組成, 它根據記載的用戶信息, 對用戶請求進行認證, 判定其合法性和請求權限, 依據請求的類型分別處理。對于用戶的文件讀寫請求, 經地址解析后生成相應的存儲地址信息。地址解析完成后, 將用戶授權通過通道控制層通知Net-RAID群, 將授權字、Net-RAID 群地址和數據存儲地址組通過網絡通訊層通知客戶端。
駐留在Net-RAID群中的命令執(zhí)行器由I/O調度、命令分解/合并、Buffer管理等模塊組成, 按照一定的優(yōu)化策略, 動態(tài)的對來自外設通道和網絡通道的I/O命令進行分解、合并和調度, 執(zhí)行實際的磁盤I/O操作。操作完成后, 依據不同的情況分別經由網絡通信層與客戶交換文件數據, 或者經由通道控制層給服務器回送執(zhí)行結果。
網絡通訊層
此層用以處理多個節(jié)點的命令和數據的網絡傳輸。服務器端的網絡通訊層接受客戶的服務請求, 傳送給命令控制層并將命令控制層的分析結果反饋給客戶端; 客戶端的網絡通訊層負責向服務器提交請求并接收服務器返回的結果, 它還負責建立與Net-RAID 群的網絡連接;Net-RAID 群的網絡通訊層與客戶端一起, 完成Net-RAID 群與客戶端之間直接傳送數據的任務。
由于命令與數據分流, CMDS海量存儲系統采用定制的三方協議, 其文件請求服務的工作流程有別于傳統的工作模式。圖5所示為讀文件請求的工作流程, 寫文件請求的工作流程與此類似, 此處略。
為了獲得CMDS海量存儲系統的性能參數, 我們構造了一個系統原型, 由文件服務器和兩臺EIDE磁盤陣列組成, 系統配置如表1所示。每臺磁盤陣列配2塊磁盤, 分別掛接在兩個IDE接口上。網絡環(huán)境為
網絡用戶采用三臺PC機, 配置均為:CPU:Celeron 2GHZ,MEM:128MB, 硬盤:ST
表2表示三個用戶, 每個用戶一個進程, 測試文件大小為124MB時系統的平均數傳率比較。圖6為多用戶系統的集合I/O帶寬比較。可見, CMDS海量存儲系統的平均數傳率和集合I/O帶寬均高于傳統的存儲系統, 而且, 用戶數越多, 性能提高越明顯。最好情況下, 系統的讀寫集合I/O帶寬分別提高82%和107%。由于CMDS海量存儲系統的兩個存儲結點提供了兩個
CMDS海量存儲系統中, 文件服務器上CPU和內存的開銷也明顯要低于傳統系統, 主要是由于CMDS海量存儲系統實行了命令與數據分流, 避免了大量的數據在存儲結點和文件服務器之間的往返拷貝, 將高性能的存儲設備和網絡帶寬充分提供給網絡用戶, 而不被傳統文件服務器瓶頸所限制。
從表2可以發(fā)現, 兩個系統的內存的利用率幾乎都在80%以上, 這主要是由于Linux系統的內存管理采用貪婪調度算法, 它盡量將內存分配給系統使用, 不夠時再進行調度和再分配。因此, 即使傳統系統中內存的利用率一直在97%左右, 在當前的負載情況下, 內存也不會成為系統的瓶頸。傳統系統中網絡的集合帶寬幾乎達到峰值, 很明顯, 網絡通道成為整個系統的瓶頸, 如果提高網絡通道的帶寬, 文件服務器上的內存就很有可能成為系統的瓶頸。CMDS海量存儲系統中由于采用了兩個網絡通道, 在當前的負載情況下, 應該還有提升的空間, 而且其內存的利用率也還沒有達到飽和。
隨著體系結構和系統硬件的改變, 系統的瓶頸總是在不斷轉移。我們曾做過這樣的試驗, 服務器采用PIII500MHZ的CPU, 64MB內存, SYM
當使用峰值帶寬為40MB/s的SYM
表3表示三個用戶, 每個用戶兩個進程, 測試文件大小為124MB時系統的平均數傳率比較。圖7表示同等測試環(huán)境下系統的集合I/O帶寬。在兩個進程和四個進程的情況下,CMDS海量存儲系統的集合帶寬比傳統系統要略差, 主要是由于網絡用戶和多個存儲節(jié)點之間直接進行數據交換, 必須要在網絡用戶端進行數據的整合和分配, 因此存在一定的開銷。在網絡用戶端單進程的情況下, 該影響還不明顯, 但多個進程之后, 會導致系統性能的下降。當三個用戶六個進程時,傳統系統由于受文件服務器上網絡通道帶寬的限制, 其性能又明顯低于CMDS海量存儲系統。如果對網絡用戶端的軟件進行優(yōu)化(比如減少內存拷貝的開銷), 則可以降低其影響。
總 結
CMDS海量存儲系統使文件服務器與存儲設備的關系由原來的主從關系轉變?yōu)橄嗷ヒ来娴膶Φ汝P系, 并且存儲設備具有了新的自主功能。其文件集中管理、數據分布存儲的體系結構同時具有集中式存儲和分布式存儲兩者的優(yōu)點, 不僅易于管理, 而且高性能、高可擴展。它還具有存儲空間的單一邏輯視圖、流水命令響應與并行數據I/O、負載動態(tài)遷移和高可用性等特點。
另一方面, CMDS海量存儲系統也是一個全新的、不斷完善的系統;今后研究的重點包括以下幾個方面的內容:首先,設法屏蔽上層各種不同的應用, 實現該系統與現有存儲系統的無縫連接;其次, 實現存儲空間的在線動態(tài)擴容、數據的動態(tài)遷移等是今后需要研究的課題;另外, 如何保證在傳輸過程中的數據安全以及數據的一致性也是一個待解決的問題。