国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

私有云搭建-私有云搭建之存儲虛擬化

ernest.wang / 1055人閱讀

摘要:平臺采用分布式存儲系統作為虛擬化存儲,用于對接虛擬化計算及通用數據存儲服務,消除集中式網關,使客戶端直接與存儲系統進行交互,并以多副本糾刪碼多級故障域數據重均衡故障數據重建等數據保護機制,確保數據安全性和可用性。

云計算平臺通過硬件輔助的虛擬化計算技術最大程度上提高資源利用率和業務運維管理的效率,整體降低 IT 基礎設施的總擁有成本,并有效提高業務服務的可用性、可靠性及穩定性。在解決計算資源的同時,企業還需考慮適用于虛擬化計算平臺的數據存儲,包括存儲的安全性、可靠性、可擴展性、易用性、性能及成本等。

虛擬化計算 KVM 平臺可對接多種類型的存儲系統,如本地磁盤、商業化 SAN 存儲設備、NFS 及分布式存儲系統,分別解決虛擬化計算在不同應用場景下的數據存儲需求。

  • 本地磁盤:服務器上的本地磁盤,通常采用 RAID 條帶化保證磁盤數據安全。性能高,擴展性差,虛擬化環境下遷移較為困難,適用于高性能且基本不考慮數據安全業務場景。
  • 商業化存儲:即磁盤陣列,通常為軟硬一體的單一存儲,采用 RAID 保證數據安全。性能高,成本高,需配合共享文件系統進行虛擬化遷移,適用于 Oracle 數據庫等大型應用數據存儲場景。
  • NFS 系統:共享文件系統,性能較低,易用性較好,無法保證數據安全性,適用于多臺虛擬機共享讀寫的場景
  • 分布式存儲系統:軟件定義存儲,采用通用分布式存儲系統的標準,將大量通用 x86 廉價服務器的磁盤資源聚合在一起,提供統一存儲服務。通過多副本的方式保證數據安全,高可靠 、高性能、高安全、易于擴展、易于遷移且成本較低,適用于虛擬化、云計算、大數據、企業辦公及非結構化數據存儲等存儲場景。

每一種類型的存儲系統,在不同的存儲場景下均有優劣勢,虛擬化計算平臺需根據業務特證選擇適當的存儲系統,用于提供存儲虛擬化功能,在某些特定的業務模式下,可能需要同時提供多種存儲系統,用于不同的應用服務。

在傳統的存儲結構中,客戶端與單一入口點的集中式存儲組件進行通信,可能會限制存儲系統的性能和可伸縮性,同時可能帶來單點故障。UCloudStack 平臺采用分布式存儲系統作為虛擬化存儲,用于對接 KVM 虛擬化計算及通用數據存儲服務,消除集中式網關,使客戶端直接與存儲系統進行交互,并以多副本/糾刪碼、多級故障域、數據重均衡、故障數據重建等數據保護機制,確保數據安全性和可用性。

3.3.1 分布式存儲

UCloudStack 云平臺基于 Ceph 分布式存儲系統適配優化,為虛擬化計算平臺提供一套純軟件定義、可部署于 x86 通用服務器的高性能、高可靠、高擴展、高安全、易管理且較低成本的虛擬化存儲解決方案,同時具有極大可伸縮性。作為云平臺的核心組成部分,為用戶提供多種存儲服務及 PB 級數據存儲能力,適用于虛擬機、數據庫等應用場景,滿足關鍵業務的存儲需求,保證業務高效穩定且可靠的運行。

分布式存儲服務通過將大量 x86 通用服務器的磁盤存儲資源融合在一起進行【池化】,構建一個無限可伸縮的統一分布式存儲集群,實現對數據中心所有存儲資源的統一管理及調度,向虛擬化計算層提供【塊】存儲接口,供云平臺虛擬機或虛擬資源根據自身需求自由分配并使用存儲資源池中的存儲空間。同時云平臺虛擬化通過 iSCSI 協議對接 IPSAN 商業存儲設備,將商業存儲作為虛擬化后端存儲池,提供存儲池管理及邏輯卷分配,可直接作為虛擬機的系統盤及數據盤進行使用,即只要支持 iSCSI 協議的存儲設備均可作為平臺虛擬化的后端存儲,適應多種應用場景;可利舊企業用戶的集中存儲設備,整體節省信息化轉型的總擁有成本。

存儲功能所見即所得,用戶無需關注存儲設備的類型和能力,即可在云平臺快捷使用虛擬化存儲服務,如虛擬磁盤掛載、擴容、增量快照、監控等,云平臺用戶像使用 x86 服務器的本地硬盤一樣的方式使用虛擬磁盤,如格式化、安裝操作系統、讀寫數據等。云平臺管理和維護者可以全局統一配置并管理平臺整體虛擬化存儲資源,如 QoS 限制、存儲池擴容、存儲規格及存儲策略配置。

分布式存儲系統可提供塊存儲、文件存儲及對象存儲服務,適用于多種數據存儲的應用場景,同時可保證數據的安全性及集群服務的可靠性。文件存儲和對象存儲在一個數據中心部署一套集群,支持機械盤和高性能盤混合部署且可邏輯劃分多個存儲池,如高性能存儲池和容量型存儲池。在塊存儲的部署上,通常推薦使用同一類型的磁盤構建存儲集群,如超融合計算節點和獨立存儲節點自帶 SSD 磁盤構建為高性能的存儲集群;超融計算節點和獨立存儲節點自帶的 SATA/SAS 磁盤構建為普通性能存儲集群。

分布式存儲存儲系統將集群內的磁盤設備通過 OSD 內建不同的存儲資源池,分別提供彈性塊存儲服務、對象存儲及文件存儲服務,其中塊存儲服務可供虛擬機直接掛載使用,在數據寫入時通過三副本、寫入確認機制及副本分布策略等措施,最大限度保障數據安全性和可用性。文件存儲和對象存儲可提供諸如 NFS、CIFS、S3 等多種協議接口為應用服務提供非結構化數據存儲服務,同時結合多副本及糾刪碼數據冗余策略滿足多種場景下的數據存儲和處理,邏輯架構如下:

storage_arch.png

UCloudStack 分布式存儲系統是整個云平臺架構不可或缺的核心組件,通過分布式存儲集群體系結構提供基礎存儲資源,并支持在線水平擴容,同時融合智能存儲集群、超大規模擴展、多副本與糾刪碼冗余策略、數據重均衡、故障數據重建、數據清洗、自動精簡配置及快照等技術,為虛擬化存儲提供高性能、高可靠、高擴展、易管理及數據安全性保障,全方面提升存儲虛擬化及云平臺的服務質量。

3.3.2 智能存儲集群

分布式存儲集群可包含數千個存儲節點,通常至少需要一個監視器和多個 OSD 守護進程才可正常運行及數據復制。分布式智能存儲集群消除集中控制網關,使客戶端直接和存儲單元 OSD 守護進程交互,自動在各存儲節點上創建數據副本確保數據安全性和可用性。其中包括的基礎概念如下:

  • OSD:通常一個 OSD 對應物理機一塊磁盤、一個 RAID Group 或者一個物理存儲設備,主要負責數據存儲、處理數據復制、恢復、回填及數據重均衡,并負責向監視器報告檢測信息。單集群至少需要兩個 OSD,并在物理架構可劃分為多個故障域(機房、機架、服務器),通過策略配置使多副本位于不同的故障域中。
  • 監視器 Monitor:實現存儲集群的狀態監控,負責維護存儲集群的 Object、PG 及 OSD 間的映射關系圖,為數據存儲提供強一致性決策,同時為客戶端提供數據存儲的映射關系。
  • 元數據服務 MDS:實現文件存儲服務時,元數據服務(MDS)管理文件元數據。
  • 客戶端:部署在服務器上,實現數據切片,通過 CRUSH 算法定位對象位置,并進行對象數據的讀寫。通常包括塊設備、對象存儲及文件系統客戶端,讀/寫操作由 OSD 守護進程處理。
  • CRUSH 算法:用于保證數據均勻分布的偽隨機算法,OSD 和客戶端均使用 CRUSH 算法來按需計算對象的位置信息,為存儲集群動態伸縮、重均衡和自修復功能提供支撐。

存儲數據時,存儲集群從客戶端(塊設備、對象存儲、文件系統)接收數據,并將數據分片為存儲池內的對象 Object,每個對象直接存儲至 OSD 的裸存儲設備上,由 OSD 進程處理裸設備上的讀寫操作。如下圖所示:

object

客戶端程序通過與 OSD 或監視器交互獲取映射關系數據,在本地通過 CRUSH 算法計算得出對象存儲位置后,直接與對應的 OSD 進行通信,完成數據讀寫操作。為實現分布式存儲集群可自主、智能且自我修復的存取數據,智能存儲集群通過 CURSH 算法、存儲池 Pool、放置組 PG 及 OSD 等多種邏輯概念相互關聯承載數據存儲流程,邏輯架構圖如下:

cephcluster

  • 一個集群可邏輯上劃分為多個 Pool ,Pool 是一個命名空間,客戶端存儲數據時需指定一個 Pool;
  • 一個 Pool 包含若干個邏輯 PG(Placement Group),可定義 Pool 內的 PG 數量和對象副本數量;
  • PG 是對象和 OSD 的中間邏輯分層,寫對象數據時,會根據 CRUSH 算法計算每個對象要存儲的 PG ;
  • 一個物理文件會被切分為多個 Object ,每個 Object 會被映射到一個 PG ,一個 PG 包含多個 Object ;
  • 一個 PG 可映射到一組 OSD ,其中第一個 OSD 為主 ,其它 OSD 為從,Object 會被均勻分發至一組 OSD 上進行存儲;
  • 承載相同 PG 的 OSD 間相互監控存活狀態,支持多個 PG 同時映射到一個 OSD 。

在存儲集群的機制中,承載相同 PG 的主從 OSD 間需要彼此交換信息,確保彼此的存活狀態。客戶端首次訪問會首先從監視器獲取映射關系的數據,存儲數據時會與 OSD 對比映射關系數據的版本。由上圖示意圖得知,一個 OSD 可同時承載多個 PG ,在三副本機制下每個 PG 通常為 3 個 OSD 。如上圖所示,數據尋址流程分為三個映射階段:

  1. 將用戶要操作的文件映射為存儲集群可處理的 Object ,即將文件按照對象大小進行分片處理;
  2. 通過 CRUSH 算法將所有文件分片的 Object 映射到 PG ;
  3. 將 PG 映射到數據實際存儲的 OSD 中 ,最后客戶端直接聯系主 OSD 進行對象數據存儲操作。

分布式存儲客戶端從監視器獲取集群映射關系圖,并將對象寫入到存儲池。集群存儲數據的邏輯主要取決于存儲池的大小、副本數量、CRUSH 算法規則及PG 數量等。

3.3.3 超大規模擴展

在傳統集中式架構中,中心集群組件作為客戶端訪問集群的單一入口,這將嚴重影響集群的性能和可擴展性,同時引入單點故障。在分存儲存儲集群的設計中,存儲單元 OSD 和存儲客戶端能直接感知集群中的其它 OSD 及監視器信息,允許存儲客戶端直接與存儲單元 OSD 交互進行數據讀寫,同時允許每個 OSD 與監視器及其它節點上的 OSD 直接交互進行數據讀寫,這種機制使得 OSD 能夠充分利用每個節點的 CPU/RAM ,將中心化的任務分攤到各個節點去完成,支持超大規模集群擴展能力,提供 EB 級存儲容量。

  • OSD 直接服務于客戶端,存儲客戶端直接與 OSD 進行通信,消除中心控制器及單點故障,提升整體集群的性能及可擴展性。
  • OSD 之間相互監測彼此的健康狀態,并主動更新狀態給監視器,使監視器可以輕量化部署和運行。
  • OSD 使用 CRUSH 算法,用于計算數據副本的位置,包括數據重平衡。在多副本機制中,客戶端將對象寫入主 OSD 中后, 主 OSD 通過自身的 CRUSH 映射圖識別副本 OSD 并將對象復制到副本 OSD 中;憑借執行數據副本復制的能力,OSD 進程可減輕存儲客戶端的負擔,同時確保高數據可用性和數據安全性。

為消除中心節點,分布式存儲客戶端和 OSD 均使用 CRUSH 算法按需計算對象的位置信息,避免對監視器上集群映射圖的中心依賴,讓大部分數據管理任務可以在集群內的客戶端和 OSD 上進行分布式處理,提高平臺的可伸縮性。

在存儲集群擴容層面,支持存儲節點水平擴展、增量擴容及數據自動平衡性,同時集群的整體性能隨容量的增長呈正向增長,繼而保證存儲系統的性能及高擴展性。

3.3.4 高可用和高可靠

為構建全平臺高可用的分布式存儲服務,保證虛擬化計算及應用服務數據存儲的可靠性,分布式存儲系統從多方面保證存儲服務的穩健運行。

  • 基礎設施高可用存儲集群不強行綁定硬件及品牌,可采用通用服務器及網絡設備,支持存儲集群異構。物理網絡設備支持 10GE/25GE 底層存儲堆疊網絡架構,同時服務器層面均采用雙鏈路,保證數據讀寫的 IO 性能及可用性。
  • 存儲監視器高可用集群監視器維護存儲集群中 Object、PG 及 OSD 間的主映射圖,包括集群成員、狀態、變更、以及存儲集群的整體健康狀況等。OSD 和客戶端均會通過監視器獲取最新集群映射圖,為保證平臺服務的可用性,支持監視器高可用,當一個監視器因為延時或錯誤導致狀態不一致時,存儲系統會通過算法將集群內監視器狀態達成一致。
  • 存儲接入負載均衡對象存儲和文件存儲接入網關支持負載均衡服務,保證對象存儲和文件存儲網關高可用,同時為存儲網關提供流量負載分發,提升存儲的整體性能。在負載均衡的接入機制下,讀寫 I/O 會均衡到集群中所有網關服務上,當其中一臺網關服務器出現異常時,會自動剔除異常網關節點,屏蔽底層硬件故障,提升業務的可用性。

3.3.5 多冗余策略

3.3.5.1 多副本機制

多副本機制是指將寫入的數據保存多份的數據冗余技術,并由存儲系統保證多副本數據的一致性。UCloudStack 分布式塊存儲系統默認采用多副本數據備份機制,寫入數據時先向主副本寫入數據,由主副本負責向其他副本同步數據,并將每一份數據的副本跨節點、跨機柜、跨數據中心分別存儲于不同磁盤上,多維度保證數據安全。存儲客戶端在讀取數據會優先讀取主副本的數據,僅當主副本數據故障時,由其它副本提供數據的讀取操作。

UCloudStack 分布式存儲系統通過多副本、寫入確認機制及副本分布策略等措施,最大限度保障數據安全性和可用性。多副本機制存儲數據,將自動屏蔽軟硬件故障,當磁盤損壞和軟件故障導致副本數據丟失,系統自動檢測到并自動進行副本數據備份和同步,不會影響業務數據的存儲和讀寫,保證數據安全性和可用性。本章節以三副本為例,具體描述多副本的工作機制:

(1)三副本

用戶通過客戶端寫入分布式存儲的數據,會根據 Pool 設置的副本數量 3 寫入三份,并按照副本分布策略,分別存儲于不同物理主機的磁盤上。分布式存儲保證數據安全的副本數量至少為 2 份,以便存儲集群可以在降級狀態下運行,保證數據安全。

duplicate

(2)寫入確認機制

如上圖所示,三副本在寫入過程中,只有三個寫入過程全部被確認,才返回寫入完成,確保數據寫入的強一致性。

客戶端將對象寫入到目標 PG 的主 OSD 中,然后主 OSD 通過 GRUSH 映射關系圖定位用于存儲對象副本的第二個和第三個 OSD ,并將對象數據復到 PG 所對應的兩個從 OSD ,當三個對象副本數據均寫入完成,最后響應客戶端確認對象寫入成功。

(3)副本分布策略

分布式存儲支持副本數據落盤分布策略(多級故障域),使用 CRUSH 算法根據存儲設備的權重值分配數據對象,盡量確保對象數據的均勻分布。平臺通過定義存儲桶類型,支持節點級、機柜級、數據中心級故障域,可將副本數據分布在不同主機、不同機柜及不同數據中心,避免因單主機、單機柜及單數據中心整體故障造成數據丟失或不可用的故障,保證數據的可用性和安全性。

為保證存儲數據的訪問時延,通常建議最多將數據副本保存至不同的機柜,若將數據三副本保存至不同的機房,由于網絡延時等原因,可能會影響云硬盤的 IO 性能。

Storage_Copy

如上圖所示,客戶端通過分布式存儲系統寫入 ABC 三個對象數據,根據 CRUSH 規則定義的故障域,需要將三個對象的副本分別存儲于不同的機柜。以 A 對象為例,存儲系統提前設置副本分布策略,盡量保證對象副本分布在不同柜柜的服務器 OSD 中,即定義機柜和主機存儲桶。當分布式存儲系統計算出寫入對象的 PG 及對應的 OSD 位置時,會優先將 A 寫入到機柜 1 的服務器 OSD 中,同時通過主 OSD 復制副本 A 至機柜 2 的服務器 OSD 中,復制 A 至機柜 3 的服務器 OSD 中 ,數據全部復制寫入成功,即返回客戶端對象 A 寫入成功。

recovery

在存儲節點無網絡中斷或磁盤故障等異常情況時,對象副本數據始終保持為 3 副本。僅當節點發生異常時,副本數量少于 3 時,存儲系統會自動進行數據副本重建,以保證數據副本永久為三份,為虛擬化存儲數據安全保駕護航。如上圖第三個節點發生故障,導致數據 D1-D5 丟失并故障,存儲系統會將對象數據的 PG 自動映射一個新的 OSD,并通過其它兩個副本自動同步并重建出 D1‘-D5’,以保證數據始終為三副本,保證數據安全。

3.3.5.2 糾刪碼策略

糾刪碼(Erasure Coding,EC)是一種數據保護方法,類似商業存儲中的 RAID5 技術,它將數據分割成片段,把冗余數據塊擴展、編碼,并將其存儲在不同的位置,比如磁盤、存儲節點或者其它地理位置。UCloudStack 分布式對象存儲和文件存儲可采用糾刪碼策略進行數據冗余保護。

糾刪碼策略可兼備數據安全性和磁盤利用率,在分布式存儲系統中,糾刪碼策略將寫入的數據進行分片(稱為數據塊),基于分片編碼生成備份冗余數據(稱為較驗塊),最后將原始分片數據和備份數據分別寫入不同的存儲介質,以保證數據的安全性。同時數據塊和校驗塊可通過故障域分別存儲于跨節點、跨機柜、跨數據中心的不同 OSD 磁盤上,多維度保證數據安全。

通過糾刪碼策略將數據分段的塊數稱為 K,編碼較驗塊稱為 M,所有數據塊個數稱為 N ,即 N= K+M;基于此磁盤利用率可通過 K/N 獲得,如 K=9,M=3 ,N=12 ,則磁盤總空簡利用率為 9/12=75% ,即磁盤利用率為 75%。對象存儲和文件存儲的存儲集群根據冗余策略不同,磁盤利用率不同。在三副本機制下,磁盤利用率為集群總容量的三分之一;而在糾刪碼策略中,利用率與 K+M 的比例值相關,即不同的 K+M 值,會有不同的磁盤利用率,可根據實際使用場景自定義糾刪碼策略的 K+M 值,平臺默認推薦 4+2。

以 4+2 為例,在寫入數據時存儲系統會先將對象數據映射到一個 PG ,再由 PG 映射到一組 OSD 中(OSD 的數量取決于 K+M 的值,即 OSD 數量與 N 的值相等);同時在 OSD 中選舉出主 OSD ,由主 OSD 將對象文件分片為 4 個數據塊,在通過 4 個數據塊編碼出 2 個校驗塊,最后將 4 個數據塊和 2 個校驗塊分別寫入 6 個 OSD 中。在讀取數據時,由主 OSD 分別從相同 PG 的其它 OSD 中讀取所有需要的分片數據,最后由主 OSD 統一匯總拼拼湊出指定的對象文件,向客戶端應答。

由于糾刪碼是將數據切片并發寫入至多個 OSD 磁盤,并無多副本機制中多倍寫放大的問題,因此寫性能較有優勢。而讀數據時需要先計算數據分片,再將多個 OSD 中的數據讀出來進行匯總,因此讀性能相對偏低。

ec

糾刪碼的原理證明,存儲集群中允許損壞的數據塊數量小于等于 M(較驗塊),在存儲節點或磁盤無故障或異常時,對象數據塊和校驗塊始終不變。僅當節點發生異常時,數據塊和較驗塊小于 N+M 值時,需要通過剩余的數據塊和較驗塊一起進行解碼計算出損壞數據,并將期恢復在正常的 OSD 設備中。如上圖 5+3 的 EC 策略中,允許失敗的數據為 3 ,即在實際生產環境中可允許失敗 3 塊磁盤;當分片數據 D1 損壞時,主 OSD 計算獲取到對象文件剩余的數據塊(D2-D5 )及較驗塊信息( P1-P3),通過 EC 對數據塊和較驗塊的信息解碼,計算出損壞的 D1 數據 D1,最后將 D1 數據恢復至正常的 OSD 設備中,完成損壞數據的恢復。

若在讀取數據時正好有一個分片數據損壞,則會同步進行數據解碼恢復操作,則讀取該數據的時延較大,會影響整體數據的讀取性能。

由于糾刪碼在存取數據時需要消耗更多的計算資源,因此糾刪碼對節點的計算要求相較多副本高,然糾刪碼以其靈活多變的數據備份策略、較高的存儲空間利用率非常適合存儲大量對時延不敏感的數據,如備份數據、辦公應用數據、日志數據等?;诖耍琔CloudStack 的文件存儲和對象存儲可提供糾刪碼和多副本兩種冗余保護策略,而塊存儲僅采用多副本機制進行數據安全保護。

3.3.6 數據重均衡

UCloudSack 云平臺分布式存儲集群在寫入數據時,會通過數據分片、CRUSH 映射關系、多副本或糾刪碼分布策略盡量保證數據對象在存儲池中的均衡。隨著存儲集群的長期運行及對平臺的運維管理,可能會導致存儲池內的數據失衡,如存儲節點和磁盤擴容、存儲部分數據被刪除、磁盤和主機故障等。

  • 存儲節點及磁盤擴容后,平臺總存儲容量增加,新增容量未承載數據存儲,導致集群數據失衡;
  • 用戶刪除虛擬機或云硬盤數據,導致集群內出現大量空閑空間;
  • 磁盤和主機故障下線后,部分數據對象副本會重建至其它磁盤或主機,故障恢復后處于空閑狀態。

為避免擴容及故障導致存儲集群數據分布失衡,UCloudStack 分布式存儲系統提供數據重均衡能力,在存儲集群及磁盤數據發生變更后,通過 CRUSH 規則及時對數據的部分對象進行重新分發和均衡,使存儲池中的對象數據盡量均衡,避免產生數據熱點及資源浪費,提升存儲系統的穩定性及資源利用率。

(1)集群擴容重均衡

平臺支持水平擴展存儲節點或在線向存儲節點中增加磁盤的方式擴容存儲集群的容量,即分布式存儲集群支持在運行時增加 OSD 進行存儲池擴容 。當集群容量達到閾值需要擴容時,可將新磁盤添加為集群的 OSD 并加入到集群的 CRUSH 運行圖,平臺會按照新 CRUSH 運行圖重新均衡集群數據分布,將一些 PG 移入/移出多個 OSD 設備,使集群數據回到均衡狀態。如下圖所示:

addosd

在數據均衡過程中,僅會將現有 OSD 中的部分 PG 到遷移到新的 OSD 設備,不會遷移所有 PG ,盡量讓所有 OSD 均騰出部分容量空間,保證所有 OSD 的對象數據分布相對均衡。如上圖中新增 OSD 4 和 OSD 5 后,有三個 PG(PG #4、PG #9、PG #14) 遷移到 OSD 4 ,三個 PG (PG #5、PG #10、PG #15)遷移到 OSD 5  ,使五個 OSD 中映射的 PG 均為 3 個。為避免 PG 遷移導致集群性能整體降低,存儲系統會提高用戶讀寫請求的優先級,在系統空閑時間進行 PG 遷移操作。

PG 在遷移過程中,原 OSD 會繼續提供服務,直到 PG 遷移完成才將數對象寫入新 OSD 設備。

(2)集群容量縮減重均衡

存儲集群在運行過程中可能需要縮減集群容量或替換硬件,平臺支持在線刪除 OSD 及節點下線,用于縮減集群容量或進入運維模式。當 OSD 被在集群中被刪除時,存儲系統會根據 CRUSH 運行圖重新均衡集群數據分布,將被刪除的 OSD 上的 PG 遷移至其它相對空閑的 OSD 設備上,使集群回到均衡狀態。如下圖所示:

delosd

在數據均衡過程中,僅會將被刪除 OSD 上的 PG 遷移至相對空閑的 OSD 設備,盡量保證所有 OSD 的對象數據分布相對均衡。如上圖中即將被刪除的 OSD 4 和 OSD 5 上共映射 6 個 PG ,刪除后分別分有 2 個 PG 會被遷移至剩余 3 個 OSD 中,使 3 個 OSD 中映射的 PG 均為 5 個。

(3)故障數據重均衡

分布式存儲在長期運行中會存在磁盤、節點的物理損壞、系統崩潰及網絡中斷等故障,均會中斷節點的存儲服務。存儲集群提供容錯方法來管理軟硬件,PG 作為對象與 OSD 的中間邏輯層,可保證數據對象不會直接綁死到一個 OSD 設備,意味著集群可在“降級”模式下繼續提供服務。詳見數據故障重建

通過數據重均衡機制,可支持分布式存儲集群平滑擴容,包括橫向擴容和縱向擴容,即可以在線添加存儲節點及存儲磁盤。

3.3.7 數據故障重建

根據多副本和 EC 糾刪碼的保護機制,存儲集群在把數據對象通過 CRUSH 寫入到指定 OSD 后,OSD 會通過運行圖計算副本或數據塊的存儲位置,并將數據副本或數據塊寫入到指定 OSD 設備中,通常數據對象會被分配至不同故障域中,保證數據安全性和可用性。

當磁盤損壞或節點故障時,即代表節點部分/全部 OSD 設備下線或無法為 PG 內對象提供存儲服務,同時也表示有部分對象數據的副本數量不完整,如 3 副本可能因為磁盤損壞變為 2 副本。故障時對象數據的 PG 被置為“降級”模式繼續提供存儲服務,并開始進行數據副本重建操作,按照最新 CRUSH 運行圖將故障節點或磁盤上的對象數據重映射到其它 OSD 設備上,即重新復制對象數據的副本至其它 OSD 設備,保證副本數量與存儲池設置一致。

在 EC 糾刪碼策略下,節點或磁盤設備故障時會導致部分數據塊或校驗塊丟失,如 4+2 的糾刪碼數據會丟失一個數據塊或校驗塊,此時對象數據的 PG 被置為“降級”模式繼續提供存儲服務,并開始進行糾刪數據的解碼和恢復操作,按照最新 CRUSH 運行圖將故障數據塊或校驗塊數據重新恢復至其它健康的 OSD 設備上,保證對象數據的完整性和可用性。

故障數據重建時會遵循存儲集群中配置的故障域(主機級、機柜級及數據中心級),選擇符合故障域定義的 OSD 作為故障數據重建的位置,讓同一對象數據的多副本或 EC 數據間位置互斥,避免數據塊均位于同一個故障域,保證數據安全性和可靠性。同時為提高故障數據的重建速度,多個故障數據重建任務的 I/O 會并發進行,實現故障數據的快速重建。

故障節點或磁盤恢復后,OSD 被重新加入至集群的 CRUSH 運行圖,平臺會按照新 CRUSH 運行圖重新均衡集群數據分布,將一些 PG 移入/移出多個 OSD 設備,使集群數據回到均衡狀態。為保證存儲集群的運營性能,副本或糾刪碼 EC 數據恢復及遷移時,會限制恢復請求數、線程數、對象塊尺寸,并提高用戶讀寫請求的優先級,保證集群可用性和運行性能。

3.3.8 數據清洗

分布式存儲集群在長期運行及數據重平衡的過程中,可能會產生一些臟數據、缺陷文件及系統錯誤數據。如一塊 OSD 磁盤損壞,集群在重均衡后重建數據至其它 OSD 設備,當故障 OSD 設備恢復后可能還存儲著之前數據的副本,這些副本數據在集群重新平衡時需及時進行清洗。

分布式存儲的 OSD 守護進程可進行 PG 內對象的清洗,即 OSD 會比較 PG 內不同 OSD 的各對象副本元數據,如果發現有臟數據、文件系統錯誤及磁盤壞扇區,會對其進行深度清洗,以確保數據的完整性。

3.3.9 自動精簡配置

自動精簡配置(Thin Provisioning),又稱【超額申請】或【運行時空間】,是一種利用虛擬化技術減少物理存儲部署的技術。通過自動精簡配置,可以用較小的物理容量提供較大容量的虛擬存儲空間,且真實的物理容量會隨著數據量的增長及時擴展,可最大限度提升存儲空間的利用率,并帶來更大的投資回報。

UCloudStack 云平臺分布式存儲系統支持自動精簡配置,在創建塊存儲服務時,分配邏輯虛擬容量呈現給用戶,當用戶向邏輯存儲容量中寫入數據時,按照存儲容量分配策略從物理空間分配實際容量。如一個用戶創建的云硬盤為 1TB 容量,存儲系統會為用戶分配并呈現 1TB 的邏輯卷,僅當用戶在云硬盤中寫入數據時,才會真正的分配物理磁盤容量。若用戶在云硬盤上存儲的數據為 100GB ,則云硬盤僅使用存儲池的 100GB 容量,剩余的 900GB 容量可以供其它用戶使用。

云平臺分布式存儲系統支持對真實物理容量的監控,可提供真實物理已使用容量和邏輯的已分配容量。通常建議真實已使用容量超過總容量的 70% 時對存儲集群進行擴容。自動精簡配置類似 CPU 超分的概念,即可供租戶創建使用的存儲容量可大于物理總容量,自動按需分配物理存儲空間給塊存儲設備,消除已分配但未使用的存儲空間浪費。

通過自動精簡配置,平臺管理員無需對業務存儲規模進行細化且準確預判,更不需提前為每個業務做精細的空間資源規劃和準備,配合邏輯存儲卷的容量分配策略,有效提升運維效率及存儲空間的整體利用率。

3.3.10 存儲功能簡介

UCloudStack 通過軟件定義的分布式存儲重新定義數據存儲服務,基于通用服務器構建統一存儲層,為應用提供塊、對象及文件存儲服務,同時提供多種數據接口,用戶無需關注底層存儲設備及架構,即可在云平臺構建并使用存儲服務,適用于虛擬化、云計算、大數據、物聯網及企業應用等使用場景。

3.3.10.1 塊存儲服務

UCloudStack 基于分布式存儲系統為云平臺租戶提供塊設備,即云硬盤服務,為計算虛擬化的虛擬機提供持久化存儲空間的塊設備。具有獨立的生命周期,支持隨意綁定/解綁至多個虛擬機使用,并能夠在存儲空間不足時對云硬盤進行擴容,基于網絡分布式訪問,為云主機提供高安全、高可靠、高性能及可擴展的數據磁盤。

云平臺為租戶提供普通和高性能兩種架構類型的云硬盤,普通云硬盤使用 SATA/SAS 磁盤作為存儲介質,性能型云硬盤使用 SSD/NVME 磁盤作為存儲介質。云硬盤數據均通過 PG 映射及三副本機制進行存儲,并在分布式存儲系統的基礎之上通過塊存儲系統接口為用戶提供云硬盤資源及全生命周期管理。

支持組建多個存儲集群,如 SATA 存儲集群和 SSD 存儲集群,并支持虛擬機跨集群掛載集群上的塊存儲服務。

  • 分布式塊存儲服務直接通過物理網絡進行掛載,無需通過 overlay 網絡進行掛載和傳輸。
  • 通過 libvirt 融合分布式存儲 rbd 和 qemu ,qemu 通過 librbd 操作分布式存儲。
  • 虛擬化進程與分布式存儲進程通過本機 & 跨物理機內網進行通信。

不同存儲集群間,對象數據的存儲完全隔離。一個存儲集群中不同塊存儲設備的存儲策略完全隔離,互不干擾。分布式存儲系統為虛擬機系統盤、鏡像及云硬盤提供統一存儲及管理,提高虛擬機與系統盤、云硬盤的數據傳輸效率,實現虛擬機快速創建及恢復,并支持系統盤和云硬盤的在線快速擴容和遷移。

在業務數據安全方面,云平臺分布式存儲支持磁盤快照能力,可降低因誤操作、版本升級等導致的數據丟失風險,是平臺保證數據安全的一個重要措施。支持對虛擬機的系統盤和數據盤進行手動或定時快照,在數據丟失或損壞時,可通過快照快速恢復本地業務的數據,實現業務分鐘級恢復,包括數據庫數據、應用數據及文件目錄數據等。

3.3.10.2 塊存儲數據存儲機制

私有云的塊存儲服務采用分布式統一存儲系統,由統一存儲提供 RBD 接口為虛擬機提供系統盤、鏡像及云硬盤服務。本節通過塊存儲數據存儲架構、塊存儲數據 IO 流程及數據落盤管理流程對數據存儲及刪除機制進行說明。

(1)塊存儲數據存儲架構

虛擬機和云硬盤創建后,會在分布式存儲系統中分別生成一個 RBD 塊存儲設備,即 KVM 引擎客戶端讀寫數據的載體,同時針對一個塊存儲設備會生成 RBDID 映射對象、元數據對象及數據分片對象。

  • RBDID 映射對象:指每個 RBD 塊存儲設備在存儲系統中映射的 ID,作為全局唯一標識符,如 RBD0 對應的標識符為 RBD00001 。
  • 元數據對象:指 RBD 塊存儲設備的元數據描述信息,包括塊設備的創建時間、更新時間、屬性、容量等。
  • 數據分片對象:RBD 塊存儲設備的數據分片對象文件,每個分片默認為 4MB ,分片數量取決于 RBD 設備的大小,如 400MB 的云硬盤,分片數量即為 100 個對象文件。

所有的對象文件分別會通過算法計算對象的 PG 存儲放置組,三副本模式下,一個放置組通常對應三個磁盤設備,即 RBDID 對象、元數據對象及數據分片的所有對象均會對應一個放置組,同時會將對象數據寫入放置組對應的三個磁盤設備中。

(2)塊存儲數據 IO 流程

虛擬機和云硬盤的虛擬化客戶端在寫數據至 RBD 塊設備時,會自動對數據進行切片操作。如上圖中 RBD 塊設備為 RBD0,每個分片大小為 4MB ,即會動將寫入的數據切分為 4M 大小的對象文件,同時包括元數據對象及 RBDID 映射對象。每個對象文件都有一個名字,即 rdb 設備+object+序號,如 rbd0.object0 。

每一個 rbd.objectn 的對象文件通過放置組進行副本位置的分配,放置組通過 Cursh 算法定位出三個磁盤設備,作為對象文件的存儲位置,即數據及元數據會首先進行對象文件的拆分,并根據放置組及磁盤設備的對應關系,分別存儲至存儲系統中的所有磁盤中。

(3)數據落盤及管理流程

分布式存儲系統使用裸盤進行磁盤管理及數據落盤操作,在進行對象文件 rbd.objectn 文件的存儲和落盤時,會通過存儲管理系統將每一個對象文件再次進行拆分進行存儲,即通過位圖的方式計算拆分后文件的在物理磁盤上的存儲位置,將每個 4MB 對象文件拆分后存儲至磁盤設備中,默認拆分大小為 32KB 。

在寫數據時根據位圖計算出 32KB 文件在磁盤介質上的存儲位置,同時在位置上將占用的位置標示為 1(占用),未被占用的磁盤位置標示為 0 (空閑)。

整體存儲數據的過程,會將文件拆成 4MB 大小的對象文件,對應至不同的磁盤設備;同時在落盤時再次將 4MB 文件拆分成 32KB 大小的塊存儲至磁盤設備中。

(4)刪除數據機制

根據上面存儲數據和落盤狀況,存儲在分布式存儲系統中的文件被兩次拆分成 32KB 的塊文件,完全打散寫入至整個存儲集群的所有磁盤中,包括存儲文件的元數據文件;在讀取數據或找回數據時,需通過元數據計算數據是由哪些對象文件組成 ,同時需要結合磁盤位圖計算對象數據中由哪些 32KB 的塊數據組成,即其中一個 32KB 的數據是無法讀取或恢復一個文件,必須將文件打散存儲在存儲集群中所有磁盤的 32KB 數據組合為一個對象文件,再通過元數據拼接對象文件,才可讀取和恢復一個文件。

在平臺上刪除虛擬機、云硬盤或刪除虛擬機中的文件時,存儲系統會將文件的元數據進行刪除,同時到磁盤管理的位圖中將相關的 32KB 塊置為 0(僅將塊置為空閑,不真正清除數據),即用于恢復數據和讀取數據的元數據被清除,同時 32KB 的塊被置為空閑,可以被其它數據占用和寫入。

  • 若 32KB 塊空間被其它數據占用后,則之前的數據會被新的數據覆蓋;
  • 若 32 KB 塊空間未被其它數據占用,則可通過恢復軟件找回的 32KB 數據,但 32KB 數據由于無元數據及位圖,無法找出其它關聯的 32KB 數據及相對應的對象文件,保證數據的安全性。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125813.html

相關文章

  • 私有怎么搭建智能調度

    摘要:智能調度系統實時監測集群所有計算節點計算存儲網絡等負載信息,作為虛擬機調度和管理的數據依據。當有新的虛擬資源需要部署時,調度系統會優先選擇低負荷節點進行部署,確保整個集群節點的負載。智能調度是 UCloudStack 平臺虛擬機資源調度管理的核心,由調度模塊負責調度任務的控制和管理,用于決策虛擬機運行在哪一臺物理服務器上,同時管理虛擬機狀態及遷移計劃,保證虛擬機可用性和可靠性。智能調度系統實...

    ernest.wang 評論0 收藏0
  • 傳統自建私有有哪些痛點?UCloud企業私有UCloudStack產品優勢、體系、架構&

    摘要:立即咨詢產品文檔優刻得上線了混合云自建機房火爆預售官方補貼活動中針對企業私有云產品作了介紹,老劉博客本篇文章分享給大家有關企業私有云產品優勢體系架構超融合一體機機型和交付方式??焖倭私馄髽I私有云解決方案及應用場景。UCloudStack企業私有云平臺,是基于UCloud公有云8年+的運營經驗,輸出的適配企業私有場景的云計算解決方案。提供虛擬化、SDN 網絡、分布式存儲、數據庫緩存等核心服務的...

    Tecode 評論0 收藏0
  • 搭建私有存儲-UCloudStack私有核心功能概念

    摘要:集群默認對所有租戶開放權限,平臺支持對存儲集群進行權限控制,用于將部分物理存儲資源獨享給一個或部分租戶使用,適用于專屬私有云場景。支持租戶將有權限的存儲卷信息作為虛擬機的系統盤,使虛擬機直接運行直商業存儲中,提升性能。4.1.1 地域地域 ( Region ) 指 UCloudStack 云平臺物理數據中心的地理區域,如上海、北京、杭州等。不同地域間完全物理隔離,云平臺資源創建后不能更換地域...

    ernest.wang 評論0 收藏0
  • Serverless系列 | 計算究竟如何進化出了Serverless?

    摘要:導讀近期靈雀云技術專家邵明岐翻譯了所著的一書的部分內容,可以說是對科普與觀察的上佳素材。的另一半是是的另一種形式,概念上容易混淆的地方在于,有時候將自己的服務,,稱為。 導讀:近期靈雀云技術專家邵明岐翻譯了Mike Roberts & John Chapin所著的《What is serverless》一書的部分內容,可以說是對Serverless科普與觀察的上佳素材。本文為第1篇,他...

    yanbingyun1990 評論0 收藏0

發表評論

0條評論

ernest.wang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<