1 EB級海量存儲系統應用前景
信息社會的持續發展引爆數據信息的極速膨脹,在過去幾年,全球信息量以年復合增長率約57%的速度增長,越來越多的企業需要處理并存儲海量數據信息。亞馬遜(Amazon)公司的公有云存儲服務存儲對象的總容量在1EB以上;歐洲核子研究中心(CERN)預計在2012年將新增25PB的數據,屆時數據總量將超過100PB;世界上最大最靈敏的射電望遠鏡——“平方公里陣列”望遠鏡(SKA)項目在2024年全部投入使用后每天約產生1EB容量的觀測數據。
因此今天看來,通過系統的方法構建具有EB級容量擴展能力的海量存儲系統將成為必須,它的應用將主要集中在互聯網云服務、尖端科研及高性能計算、廣電媒資、地理勘探等行業和領域。
2 傳統存儲在容量提升方面面臨的挑戰
傳統存儲由于架構原因無論在硬件系統還是軟件邏輯方面都無法隨需無縫擴展,硬件系統上傳統存儲是一套包括主機接口、控制器、緩存、磁盤等組件的“緊耦合”系統,組件之間的資源配置屬于單系統或者集群節點內緊耦合關系,要實現系統整體擴展需要仔細的匹配當前系統資源,一旦某個組件出現瓶頸,將面臨架構性的難題;軟件邏輯方面首先受限于存儲格式,塊存儲設備采用的SCSI / iSCSI協議在可擴展性方面存在天然的瓶頸,文件存儲設備采用的文件系統目錄樹形結構訪問機制導致在多控制器集群架構下同樣面臨擴展性軟肋。
除此之外,傳統存儲包括塊存儲和文件存儲設備在擴展性方面或多或少面臨下文所述的幾個方面的問題。
陣列組合管理復雜
傳統存儲在底層存儲單元上基本上仍以磁盤陣列為單位,通過陣列的疊加組合實現容量擴展。不同的陣列技術本身在讀寫性能、數據保護水平、數據重建速度和存儲空間利用率方面各有優缺點,同時陣列的組合并不能帶來上述指標的線性疊加,因此陣列組合之后系統必須綜合考慮這些因素,導致管理更加復雜,在容量擴展時需要考慮的制約因素過多,擴展性備受掣肘。
控制器性能瓶頸
傳統存儲控制器間接參與磁盤的I/O讀寫過程,像多用戶訪問、緩存、共享、鎖定等操作與機制需要上下協同共同完成,每一個控制器都可以看成是有狀態節點,這種與磁盤陣列的緊耦合關系決定了控制器數目不可能無限增加,否則狀態機同步開銷將成為系統中最無法承受的性能瓶頸。
獨立的元數據節點,并發性能受限、增加時延
傳統存儲通常擁有獨立的元數據節點,數據的讀寫操作均需要首先從元數據節點存取相應的元數據,在系統并發性要求增加時,元數據節點將成為系統瓶頸之一。隨著系統容量的擴展,需要單獨考慮元數據節點的擴展,且需要同時考慮元數據空間和I/O性能兩大因素,這種架構對于海量存儲系統擴展性無異于雪上加霜。
傳統x86架構下多個磁盤掛接在x86 CPU下,容量和性能擴展不均衡
傳統存儲陣列基于x86架構,通常單個x86 CPU負責超過10個磁盤的讀寫控制及陣列相關管理,由于不同的存儲應用場合對于容量和性能的要求各不相同,高并發小容量應用可能導致CPU超負荷,大容量低并發應用可能導致CPU很空閑,這種大顆粒固定捆綁關系必然導致容量與性能無法實現同步線性增長,更重要的是無法為客戶實現最佳的效率成本,故無法滿足海量存儲系統系統擴展性與效率成本的同步要求。
3 如何構建EB級海量存儲系統
構建EB級海量存儲系統必須根本性地解決系統軟硬件架構問題,從各個層面規避傳統存儲因為架構原因導致的擴展性問題。
從存儲格式的角度,由于上文所述塊存儲和文件存儲格式在擴展性方面的局限性,海量存儲系統應該以對象作為基本存儲格式。對象是數據內容和自描述信息的集合,是數據在磁盤上存儲的基本單元。對象存儲通過摒棄文件系統目錄結構、降低接口復雜度,提高了系統的擴展性。
基于對象存儲技術的EB級海量存儲系統架構設計哲學應該是:通過一次地址空間尋址算法簡化節點間的訪問,并以此支撐系統采用去中心化架構,且該算法應在理論上有無限的地址空間支撐EB級容量擴展能力;通過控制器與存儲單元層級之間的松耦合關系消除各層級內節點數擴展的瓶頸,且通過節點間全對稱點對點直接訪問消除數據讀寫瓶頸;元數據的服務與存儲分離,避免容量擴展后元數據成為瓶頸;存儲單元應以最小顆粒接入去中心化架構,實現細粒度擴容能力。
華為UDS海量存儲系統基于上述設計哲學,實現了EB級容量海量存儲能力,具體的關鍵設計概念體現在以下幾個方面:
巧筑根基——DHT環技術
UDS基于DHT (Distributed Hash Table) 分布式哈希算法,將所有存儲單元的地址空間分區并統一編址后映射到DHT環上,每個存儲單元分區負責一個小范圍的地址空間路由,并負責存儲一小部分數據,對每個對象的讀寫都能通過哈希運算一次尋址到對應的存儲單元分區,從而實現整個系統的尋址和存儲。
由于DHT環地址空間接近無限,通過分區大小調整乃至分區數目裂變,使得DHT環具備可伸縮性(如圖1所示),理論上可支撐存儲單元的無限增加,構筑了EB級容量擴展能力的根基。
圖1. 可伸縮DHT環支撐節點無限擴展
去中心化架構——全對等點對點訪問,減少節點索引查詢時延
UDS邏輯上分為兩個主要層級/集群,即控制節點集群和存儲節點集群。控制節點是對象存儲服務的接入點,主要功能包括處理客戶端請求,建立對象傳輸通道,實現對客戶端請求的訪問控制,管理元數據。存儲節點實現數據及元數據存儲、復制、一致性等功能。
如圖2所示,DHT算法規則下,UDS控制節點集群與存儲節點集群之間呈現全對等的點對點數據訪問,即控制節點可以直接尋址訪問到存儲節點并進行數據讀寫,系統中沒有傳統存儲架構中的中心節點,減少了索引查詢時延,也規避了相應的瓶頸問題。
圖3. 去中心化架構實現全對等點對點訪問
智能硬盤——實現節點級細粒度擴容能力,吞吐量隨容量線性增長
UDS存儲節點也稱為智能硬盤,它是由單個硬盤加上低功耗ARM芯片、小容量內存及以太網接口組成。每一個智能硬盤都以獨立的IP地址接入交換機,組成分布式全交叉互聯網絡(如圖4所示),通過增加智能硬盤的數目即可實現硬盤級最細粒度的擴容。
圖4. 智能硬盤及智能硬盤互聯
由于每一個智能硬盤提供既定的存取吞吐量,在全對等點對點的訪問機制下,系統總吞吐量將隨著容量的擴展而線性增長。
無狀態控制節點集群——隨需擴容,有效規避傳統存儲‘機頭’性能瓶頸
UDS控制節點以集群方式組網,基于對象存儲技術和一次簡單尋址的分布式哈希算法,控制節點與存儲節點之間的松耦合關系使得控制節點成為無狀態服務節點,任何服務請求都可以通過負荷分擔機制由任一控制節點提供服務,不存在傳統存儲由于狀態同步、鎖定機制導致的控制節點數目擴展瓶頸,因此控制節點集群內的節點數目理論上可以無限擴展,支撐EB級容量不存在架構上的瓶頸。
元數據散列——并發性能不再受限于控制節點
UDS沒有單獨的物理元數據節點,元數據服務由控制節點提供,元數據存儲與數據存儲機制一樣,元數據分片按照相同的DHT算法規則均勻分散保存在存儲節點上。在系統并發性要求增加時,對元數據服務的請求由控制節點集群分攤,并根據需要擴展控制節點的數目,提升數據請求處理能力,避免出現瓶頸。
多數據中心跨地域統一資源池,進一步夯實EB級海量存儲系統
UDS支持多數據中心跨地域統一調度與靈活管理,從幾十TB到EB級按需擴容,滿足不同規模用戶需求。
圖5. 多數據中心跨地域部署并支持統一調度與靈活管理
如圖5所示,系統在多數據中心部署情況下,可支持跨地域的同步、隨SLA可靈活定制的副本數策略以及就近接入服務等,從可擴展性、可靠性、可運營性等多維度進一步夯實EB級海量存儲系統的構建、部署及應用前景。
綜上所述,華為以可伸縮的、一次尋址的DHT環算法技術為根基,通過去中心化架構、智能硬盤互聯技術、無狀態控制節點集群技術、元數據散列存儲技術、多數據中心跨地域部署技術等積厚成器,構建出UDS這一可輕松擴展至EB級容量的海量對象存儲基礎架構平臺。
UDS海量存儲系統為用戶提供隨需而變的存儲容量,以高可擴展性實現逐級擴容,對初期業務量不大的用戶來說選擇UDS可以降低用戶初次投入成本,同時預留了在今后業務蓬勃發展時系統平滑擴容的能力。對同時運行多個需要大存儲容量的業務系統的用戶來說,選擇UDS可以將其以海量存儲資源池的形式同時為業務系統服務,有效降低TCO。