NFV關鍵技術:華為分布式存儲FusionStorage概述
Labs 導讀
分布式存儲基于通用的x86服務器,通過分布式的存儲軟件來構建存儲系統,開放豐富靈活的軟件策略和接口,允許管理員和租戶進行自動化的系統管理和資源調度發放。業界的分布式存儲,有多種形態,包括分布式塊存儲、分布式文件存儲、分布式對象存儲。各大存儲廠商都有自己的解決方案,而開源的代表的就是ceph。考慮到電信云NFV領域的應用特性和相關設備商分布,我們這里主要介紹華為的分布式存儲系統FusionStorage。
1、傳統SAN架構
在傳統的IT行業和電信云早期時候,計算和存儲是分離的,計算由各種x86服務器組成計算集群,存儲由各種SAN/NAS組成存儲集群,這種分離架構雖然通過多個計算實例共享相同存儲,在計算節點發生故障后,無須耗時的外存 數據遷移,即可快速在其他計算節點上恢復故障應用。但是,這種傳統存儲資源缺乏共享。因為,傳統存儲設備和資源往往由不同廠家提供,之間無法進行資源共享,數據中心看到的是一個個孤立的存儲資源。如下圖所示。
而且,SAN機頭成為制約系統擴展的單點瓶頸。因為,隨著計算集群規模的不斷擴展,由于存儲資源池集中式控制機頭的存在,使得共享存儲系統的擴展性、性能加速、可靠性受到制約。比如:采用多個SAN系統,單個SAN系統的機頭最多由雙控擴展到16控,不同的SAN系統獨立管理無法組成集群。各計算節點只能依賴于集中式機頭內的緩存實現I/O加速,但由于各節點cache有限,且不共享導致cache的I/O緩存加速只能達到GB級別。盡管SAN控制機頭自身具有主備機制,但依然存在異常條下主備同時故障的可能性。
在傳統SAN存儲系統中,一般采用集中式元數據管理方式,元數據中會記錄所有LUN中不同偏移量的數據在硬盤中的分布,例如LUN1+LBA1地址起始的4KB長度的數據分布在第32塊硬盤的LBA2上。每次I/O操作都需要去查詢元數據服務,隨著系統規模逐漸變大,元數據的容量也會越來越大,系統所能提供的并發操作能力將受限于元數據服務所在服務器的能力,元數據服務將會成為系統的性能瓶頸。
2、什么是Server SAN?
為了解決上述問題,業界針對大多數企業事務型IT應用而言,提出信息數據的“ 即時處理” 理念,通過計算和存儲融合,引入scale-out存儲機制,也就出現了Server SAN的概念。所謂Server SAN就是由多個獨立服務器自帶的存儲組成一個存儲資源池,同時融合了計算和存儲資源。scale-out的存儲架構示意圖如下:
以數據中心級資源共享為例,一個數據中心內可以構建一個很大的存儲資源池,如下圖所示,滿足數據中心內各類應用對存儲容量,性能和可靠性的需求,實現資源共享和統一管理。
通過在各個計算節點引入分布式控制器VBS,這是一種軟件控制機頭,線性擴展能力最大到4096個節點。而且,利用各個計算節點的cache組成分布式cache集群,滿配情況下可達到TB級別的cache緩存能力。同時,各計算節點存儲平面的存儲網卡可采用專用IB接口卡,可以實現P2P的無阻賽傳輸網絡,可達到100Gbps的數據傳輸能力。
最重要的是,采用分布式軟件存儲方式屬于軟件定義存儲SDS的范疇,通過將控制面數據抽象和解耦,可與廠商的專有存儲硬件解耦,底層的專有存儲設備變為通用設備,實現簡單統一管理和線性擴展。以華為FusionStorage為例,由于其采用的DHT算法(分布式哈希表結構,后面會詳細講),不僅數據能夠盡可能分布到所有的節點中,可以使得所有節點負載均衡,現有節點上的數據不需要做很大調整實現數據均衡性,而且當有新節點加入系統中,系統會重新做數據分配,數據遷移僅涉及新增節點,從而實現數據修改的單調性。
3、分布式存儲池的概念
分布式存儲系統把所有服務器的本地硬盤組織成若干個資源池,基于資源池提供創建/刪除應用卷(Volume)、創建/刪除快照等接口,為上層軟件提供卷設備功能。分布式存儲系統資源池示意圖如下,具有以下特點。
每塊硬盤分為若干個數據分片(Partition),每個Partition只屬于一個資源池,Partition是數據多副本的基本單位,也就是說多個數據副本指的是多個Partition,如上圖中的Pn色塊。系統自動保證多個數據副本盡可能分布在不同的服務器上(服務器數大于數據副本數時)。系統自動保證多個數據副本間 的數據強一致性(所謂強一致性是指無論讀還是寫I/O,都要進行數據一致性檢查)。Partition中的數據以Key-Value的方式存儲。對上層應用呈現并提供卷設備(Volume),沒有LUN的概念,使用簡單。系統自動保證每個硬盤上的主用Partition和備用Partition數量相當,避免出現集中的熱點。所有硬盤都可以用做資源池的熱備盤,單個資源池最大支持數百上千塊硬盤。
分布式存儲系統采用分布式集群控制技術和分布式Hash數據路由技術,提供分布式存儲功能特性。這里的概念比價抽象,所以下面結合華為FusionStorage的具體情況進行介紹。
4、華為FusionStorage分布式存儲概述
FusionStorage通過創新的架構把分散的、低速的SATA/SAS機械硬盤組織成一個高效的類SAN存儲池設備,提供比SAN設備更高的I/O,如下圖所示:
集群內各服務器節點的硬盤使用獨立的I/O帶寬,不存在獨立存儲系統中大量磁盤共享計算設備和存儲設備之間有限帶寬的問題。其將服務器部分內存用做讀緩存,NVDIMM用做寫緩存,數據緩存均勻分布到各個節點 上,所有服務器的緩存總容量遠大于 采用外置獨立存儲的方案。即使采用大容量低成本的SATA硬盤,分布式存儲系統仍然可以發揮很高的I/O性能,整體性能提升1~3倍,同時提供更大的有效容量。
由于其采用無狀態的分布式軟件機頭,機頭部署在各個服務器上,無集中式機頭的性能瓶頸。單個服務器上軟件機頭只占用較少的CPU資源,提供比集中式機頭更高的IOPS和吞吐量。例如:假設系統中有20臺服務器需要訪問FusionStorage提供的存儲資源,每臺服務器提供給存儲平面的帶寬為2*10Gb,我們在每臺服務器中部署1個VBS模塊(相當于在每臺服務器中部署1個存儲機頭),20臺服務器意味著可部署20個存儲機頭,所能獲取到的總吞吐量最高可達20*2*10Gb=400Gb,隨著集群規模的不斷擴大,可以線性增加的存儲機頭,突破了傳統的雙控或者多控存儲系統集中式機頭的性能瓶頸。
華為FusionStorage是一種軟件定義存儲SDS技術,將通用X86服務器的本地HDD、SSD等介質通過分布式技術組織成大規模存儲資源池。同時,以開放API的方式對非虛擬化環境的上層應用和虛擬機提供工業界標準的SCSI和iSCSI接口。關鍵一點是,華為官方自己吹牛逼的的口號----FusionStorage是目前唯一商用支持PB級數據吞吐/存儲能力的Server SAN產品。
華為FusionStorage主要應用于兩種場景,如下圖所示,而中國移動的電信云NFV領域的應用屬于第一種場景。
場景一:與主流云平臺的集成,構建云資源池中的存儲資源池。可以和各種云平臺集成,如華為FusionSphere、VMware、開源Openstack等,按需分配存儲資源。
場景二:提供傳統的存儲應用,如各種業務應用(如SQL、Oracle RAC、Web、行業應用等等)。
因此,華為FusionStorage是一種開發兼容的系統,可以兼容各種主流數據庫、各種主流虛擬化平臺以及各種主流服務器。同時,支持虛擬化平臺和數據庫資源池融合部署,即共用一個數據中心內的FusionStorage存儲資源池。華為FusionStorage的軟硬件兼容性總結如下:
硬件兼容性主要包括:服務器、各種HDD盤,SSD盤,PCIE SSD卡/盤以及各種RAID卡,以太網卡, Infiniband卡等。
軟件兼容性主要包括:各種虛擬化平臺、各種操作系統以及各種數據庫軟件。
而且,FusionStorage支持使用SSD替代HDD作為高速存儲設備,支持使用Infiniband網絡替代GE/10GE網絡提供更高的帶寬,為對性能要求極高的大數據量實時處理場景提供完美的支持千萬級IOPS。InfiniBand(直譯為“無限帶寬”技術,縮寫為IB)是一個用于高性能計算的計算機網絡通信標準,它具有極高的吞吐量和極低的延遲,用于計算機與計算機之間的數據互連。InfiniBand也用作服務器與存儲系統之間的直接或交換互連,以及存儲系統之間的互連。硬件接口圖如下:
Inifiniband接口可以實現鏈路可聚合:大多數系統使用一個4X聚合。12X鏈路通常用于計算機集群和超級計算機互連,以及用于內部網絡交換器連接。而且,InfiniBand也提供遠程直接內存訪問(RDMA)能力以降低CPU負載。除了板式連接,它還支持有源和無源銅纜(最多30米)和光纜(最多10公里)。通過Inifiniband Association可以指定CXP銅連接器系統,用于通過銅纜或有源光纜達到高達傳輸速率120Gbps的能力。
FusionStorage的技術規格參數表如下:
5、FusionStorage邏輯架構
在中國移動電信云NFV中,主要使用分布式塊存儲,華為FusionStorage Block的解決方案將通用X86存儲服務器池化,建立大規模塊存儲資源池,提供標準的塊存儲數據訪問接口(SCSI和iSCSI等)。支持各種虛擬化Hypervisor平臺和各種業務應用(如SQL、Web、行業應用等等),可以和各種云平臺集成,如華為FusionSphere、VMware、開源Openstack等,按需分配存儲資源。如下圖所示:
同時,FusionStorage Block通過及SSD做Cache,構建內存---緩存(SSD)---主存(HDD/SAS/SATA)三級存儲等關鍵技術,將存儲系統的性能和可靠性得到極大的提高。
如下圖所示,華為FusionStorage的邏輯架構中,按照管理角色和代理角色分為FSM和FSA兩類進程,在代理進程內部按照數據管理、I/O控制和數據讀寫進一步細分為MDC、VBS和OSD三個子進程,各類軟件邏輯模塊的功能解釋如下:
FSM(FusionStorage Manager)
FusionStorage管理模塊,提供告警、監控、日志、配置等操作維護功能。一般情況下FSM通過管理虛機主備節點部署,不考慮資源利用率的場景下,也可以使用物理服務器主備部署。
FSA(FusionStorage Agent)
代理進程,部署在各節點上,實現各節點與FSM通信。FSA包含MDC、VBS和OSD三類不同的子進程。根據系統不同配置要求,分別在不同的節點上啟用不同的進程組合來完成特定的功能。比如:單純存儲節點只需要部署OSD子進程,用于構建虛擬存儲池。計算和存儲融合節點,不僅需要部署OSD進程,還需部署VBS進程,用于控制數據讀寫I/O。
MDC(MetaData Controller)
負責整個分布式存儲集群的的元數據控制,實現對分布式集群的狀態控制,以及控制數據分布式規則、數據重建規則等。MDC是整個分布式存儲集群的核心,通過MDC模塊才能找到數據的具體存儲位置,知悉存儲副本的數量,分布和大小。因此,MDC子進程必須采用高可用HA的方式部署,默認情況下,是部署在3個節點的ZK(Zookeeper)盤上,形成MDC集群。
VBS(Virtual Block System)
虛擬塊存儲管理組件,負責卷元數據的管理,也就是我們俗稱的”軟件機頭“。VBS子進程提供分布式集群接入點服務,使計算資源能夠通過VBS訪問分布式存儲資源。VBS上存儲的是虛擬機虛擬磁盤卷的元數據,用于描述虛擬卷在OSD的位置,分布和大小等。凡是融合計算資源的節點,每個節點上默認部署一個VBS進程,形成VBS集群,由于VBS從OSD讀取數據時可以并發,所以節點上也可以通過部署多個VBS來提升IO性能。
OSD(Object Storage Device)
對象存儲設備服務子進程,執行具體的I/O操作。在每個存儲節點服務器上可以部署多個OSD進程。一般情況下,存儲服務器上的一塊本地磁盤默認對應部署一個OSD進程。如果使用大容量SSD卡作主存,為了充分發揮SSD卡的性能,可以在1張SSD卡上部署多個OSD進程進行管理,例如2.4TB的SSD卡可以部署6個OSD進程,每個OSD進程負責管理400GB存儲空間。
6、FusionStorage部署方式
在中國移動電信云NFV解決方案中,無論軟件由哪家廠商提供,虛擬化Hypervisor都是采用KVM來實現,區別只是不同廠商在開源KVM中私有增強或加固。華為FusionStorage Block支持XEN/KVM之類的Linux開放體系的Hypervisor場景,包括華為基于XEN/KVM增強的FusionSphere UVP虛擬化平臺,和非華為的XEN/KVM虛擬化平臺。在XEN/KVM的虛擬化場景下,FusionStorage Block既支持計算存儲融合的部署模式,又支持計算存儲分離的部署模式。
6.1 融合部署
就是指計算與存儲的融合部署方式,也就是說將應用或虛擬機與存儲在集群范圍內部署在同一臺服務器上。如下圖所示:
融合部署對應到FusionStorage的邏輯架構中,就是指的是將VBS和OSD部署在同一臺服務器中。這種部署方式提升了資源利用率,雖然一定意義上增加了計算節點服務器的CPU開銷,但是通過分布式存儲軟件策略,可以滿足數據就近讀寫,提升I/O轉發性能,同時數據副本異地存放,滿足數據存儲可靠性。在電信云NFV中,對時延較敏感的業務控制數據應用虛機推薦采用融合部署的方式部署。
6.2 分離部署
顧名思義就是將計算與存儲的分開部署,也就是將業務虛擬機與存儲部署在不同的服務器上。如下圖所示:
分離部署對應到FusionStorage的邏輯架構中,就是將VBS和OSD分別部署在不同的服務器中,其中存儲節點服務器只部署OSD子進程,計算節點服務器只部署VBS子進程。計算節點通過存儲網絡完成存儲節點上數據的I/O讀寫,一般高性能數據庫應用因為需要對數據進行計算,推薦采用分離部署的方式。但是,這種部署方式在I/O轉發性能略差于融合部署。采用分離部署時,存儲節點服務器Host OS可以采用通用的Linux OS操作系統,這就為后續分布式存儲解耦提供了基礎。
7、FusionStorage數據可靠性
7.1 集群管理
華為分布式存儲FusionStorage的分布式存儲軟件采用集群管理方式,規避單點故障,一個節點或者一塊硬盤故障自動從集群內隔離出來,不影響整個系統業務的使用。集群內選舉進程Leader,Leader負責數據存儲邏輯的處理,當Leader出現故障,系統自動選舉其他進程成為新的Leader。
7.2 多數據副本
華為分布式存儲FusionStorage中沒有使用傳統的RAID模式來保證數據的可靠性(實際采用的RAID2.0+技術),而是采用了多副本備份機制,即同一份數據可以復制保存多個副本。在數據存儲前,對數據打散進行分片,分片后的數據按照一定的規則保存集群節點上。如下圖所,FusionStorage采用數據多副本備份機制來保證數據的可靠性,即同一份數據可以復制保存為2~3個副本。
FusionStorage針對系統中的每個卷,默認按照1MB進行分片,分片后的數據按照DHT算法保存集群節點上。如上圖所示,對于服務器Server1的 磁盤Disk1上的數據塊P1,它的數據備份為服務器Server2的磁盤Disk2上P1’,P1和P1’構成了同一個數據塊的兩個副本。當P1所在的硬盤故障時,P1’可以繼續提供存儲服務。
數據分片分配算法保證了主用副本和備用副本在不同服務器和不同硬盤上的均勻分布,換句話說,每塊硬盤上的主用副本和備副本數量是均勻的。擴容節點或者故障減容節點時,數據恢復重建算法保證了重建后系統中各節點負載的均衡性。
7.3 數據一致性和彈性擴展
數據一致性的要求是:當應用程序成功寫入一份數據時,后端的幾個數據副本必然是一致的,當應用程序再次讀取時,無論在哪個副本上讀取,都是之前寫入的數據,這種方式也是絕大部分應用程序希望的。保證多個數據副本之間的數據一致性是分布式存儲系統的重要技術點。華為分布式存儲FusionStorage采用強一致性復制技術確保各個數據副本的一致性,一個副本寫入,多個副本讀取。 如下圖所示,
存儲資源池支持多種安全級別,采用強一致性復制協議,冗余策略按需靈活配置、部署。當采用機柜級冗余時,能同時容忍2或3個機柜失效;當采用節點級冗余時,能同時容忍2或3個節點失效。
FusionStorage還支持Read Repair機制。Read Repair機制是指在讀數據失敗時,會判斷錯誤類型,如果是磁盤扇區讀取錯誤,可以通過從其他副本讀取數據,然后重新寫入該副本的方法進行恢復,從而保證數據副本總數不減少。
同時,FusionStorage的分布式架構具有良好的可擴展性,支持超大容量的存儲。如下圖所示,擴容存儲節點后不需要做大量的數據搬遷,系統可快速達到負載均衡狀態。
FusionStorage支持靈活擴容方式,不僅支持計算節點、硬盤、存儲節點單類性擴容,而且支持同時進行擴容。由于軟件機頭、存儲帶寬和Cache都均勻分布到各個節點上,系統IOPS、吞吐量和Cache隨著節點擴容線性增加,理論上計算節點和存儲節點越多,FusionStorage的性能越強。
7.4 快速數據重建
分布式存儲系統內部需要具備強大的數據保護機制。數據存儲時被分片打散到多個節點上,這些分片數據支持分布在不同的存儲節點、不同的機柜之間,同時數據存儲時采用多副本技術,數據會自動存多份,每一個分片的不同副本也被分散保存到不同的存儲節點上。在硬件發生故障導致數據不一致時,分布式存儲系統通過內部的自檢機制,通過比較不同節點上的副本分片,自動發現數據故障。發現故障后啟動數據修復機制,在后臺修復數據。如下圖所示為華為FusionStorage的數據重建過程示意圖。
FusionStorage中的每個硬盤都保存了多個DHT分區(Partition),這些分區的副本按照策略分散在系統中的其他節點。當FusionStorage檢測到硬盤或者節點硬件發生故障時,自動在后臺啟動數據修復。
由于分區的副本被分散到多個不同的存儲節點上,數據修復時,將會在不同的節點上同時啟動數據重建,每個節點上只需重建一小部分數據,多個節點并行工作,有效避免單個節點重建大量數據所產生的性能瓶頸,對上層業務的影響做到最小化。
7.5 掉電保護
分布式存儲系統運行過程中可能會出現服務器突然下電的情況,此時在內存中的元數據和寫緩存數據會隨著掉電而丟失,需要使用非易失存儲介質來保存和恢復元數據和緩存數據。華為FusionStorage支持的保電介質為NVDIMM內存條或SSD。如下圖所示,程序運行過程中會把元數據和緩存數據寫入保電介質中,節點異常掉電并重啟后,系統自動恢復保電介質中的元數據和緩存數據。
部署FusionStorage時,要求每一臺服務器配備NVDIMM內存條或SSD盤,服務器掉電時會把元數據和緩存數據寫入NVDIMM的Flash或SSD盤中,上電后又會把Flash中的數據還原到內存中。FusionStorage能夠自動識別出系統中的NVDIMM內存,并把需要保護的數據按照內部規則存放在NVDIMM中,用于提供掉電保護功能。
8、FusionStorage的特性
FusionStorage分布式存儲軟件總體框架如下所示,由存儲管理模塊、存儲接口層、存儲服務層和存儲引擎層4類組成。
8.1 FusionStorage塊存儲功能 - SCSI/iSCSI塊接口
FusionStorage通過VBS以SCSI或iSCSI方式提供塊接口。當采用SCSI方式時,安裝VBS的物理服務器、FusionSphere或KVM等采用SCSI接口(帶內方式);當采用iSCSI方式時,安裝VBS以外的虛擬機或主機提供存儲訪問,VMware、MS SQL Server集群采用iSCSI模式(帶外方式)。
使用SCSI存儲接口時,支持快照、快照備份、鏈接克隆功能,iSCSI暫不支持前述特性。對于iSCSI協議的支持是通過VBS提供iSCSI Target,塊存儲使用方通過本機的Initiator與iSCSI Target聯接來訪問存儲。FusionStorage支持以下兩種安全訪問的標準:CHAP身份驗證和LUN MASKING給Host對Lun的訪問進行授權。
8.2 FusionStorage精簡配置功能
相比傳統方式分配物理存儲資源,精簡配置可顯著提高存儲空間利用率。FusionStorage天然支持自動精簡配置,和傳統SAN相比不會帶來性能下降。
當用戶對卷進行寫操作時,系統才分配實際物理空間,FusionStorage Block僅處理虛擬卷空間和實際物理空間之前的映射關系,對性能無影響。
8.3 FusionStorage快照功能
FusionStorage快照機制,將用戶卷數據在某個時間點的狀態保存下來,可用作導出數據、恢復數據之用。FusionStorage Block快照數據基于DHT機制,數據在存儲時采用ROW(Redirect-On-Write)機制,快照不會引起原卷性能下降。比如:針對一塊容量為2TB的硬盤,完全在內存中構建索引需要24MB空間,通過一次Hash查找即可判斷有沒有做過快照,以及最新快照的存儲位置,效率很高。
無限次快照:快照元數據分布式存儲,水平擴展,無集中式瓶頸,理論上可支持無限次快照。
卷恢復速度快:無需數據搬遷,從快照恢復卷1S內完成(傳統SAN在幾小時級別)。
8.4 FusionStorage鏈接克隆功能
FusionStorage支持一個卷快照創建多個克隆卷,對克隆卷修改不影響原始快照和其它克隆卷。克隆卷繼承普通卷所有功能,即克隆卷可支持創建快照、從快照恢復及作為母卷再次克隆操作。
- 支持批量進行虛擬機卷部署,在1秒時間內創建上百個虛擬機卷。
- 支持1:2048的鏈接克隆比,提升存儲空間利用率。
8.5 FusionStorage Block卷遷移
為了存儲池之間的容量平衡,FusionStorage支持將容量滿的池遷移到一個空閑的池。或者,為了改變卷的性能,FusionStorage支持卷在不同性能的池之間的遷移,從低性能的池向高性能的池遷移。這就是卷遷移使用的場景,在FusionStorage中,由于遷移過程中,源卷不能有寫數據的操作,所以這種遷移屬于冷遷移。
步驟:
【創建目標卷】>>>【卷數據復制】>>>【刪除源卷】>>>【目標卷改名】>>>【完成】
8.6 FusionStorage Block雙活
基于AB兩個數據中心的兩套FusionStorage Block集群構建雙活容災關系,基于兩套FusionStorage的卷虛擬出一個雙活卷,兩數據中心業務的主機能同時進行讀寫服務。任意數據中心故障,數據零丟失,業務能迅速切換到另外一個站點運行,保證業務連續型。
在原有基礎服務基礎上,引入復制集群,按服務化的架構提供雙活業務。支持物理部署和虛擬機部署,可以做到獨立安裝和升級,獨立擴展,按卷粒度提供雙活服務。
支持優先站點仲裁和第三方仲裁的雙仲裁模式,故障自動倒換,無需人工介入。能跟上層Oracle RAC、VMWare等應用形成端到端雙活容災解決方案。