摘要:平臺(tái)采用分布式存儲(chǔ)系統(tǒng)作為虛擬化存儲(chǔ),用于對(duì)接虛擬化計(jì)算及通用數(shù)據(jù)存儲(chǔ)服務(wù),消除集中式網(wǎng)關(guān),使客戶端直接與存儲(chǔ)系統(tǒng)進(jìn)行交互,并以多副本糾刪碼多級(jí)故障域數(shù)據(jù)重均衡故障數(shù)據(jù)重建等數(shù)據(jù)保護(hù)機(jī)制,確保數(shù)據(jù)安全性和可用性。
云計(jì)算平臺(tái)通過硬件輔助的虛擬化計(jì)算技術(shù)最大程度上提高資源利用率和業(yè)務(wù)運(yùn)維管理的效率,整體降低 IT 基礎(chǔ)設(shè)施的總擁有成本,并有效提高業(yè)務(wù)服務(wù)的可用性、可靠性及穩(wěn)定性。在解決計(jì)算資源的同時(shí),企業(yè)還需考慮適用于虛擬化計(jì)算平臺(tái)的數(shù)據(jù)存儲(chǔ),包括存儲(chǔ)的安全性、可靠性、可擴(kuò)展性、易用性、性能及成本等。
虛擬化計(jì)算 KVM 平臺(tái)可對(duì)接多種類型的存儲(chǔ)系統(tǒng),如本地磁盤、商業(yè)化 SAN 存儲(chǔ)設(shè)備、NFS 及分布式存儲(chǔ)系統(tǒng),分別解決虛擬化計(jì)算在不同應(yīng)用場(chǎng)景下的數(shù)據(jù)存儲(chǔ)需求。
每一種類型的存儲(chǔ)系統(tǒng),在不同的存儲(chǔ)場(chǎng)景下均有優(yōu)劣勢(shì),虛擬化計(jì)算平臺(tái)需根據(jù)業(yè)務(wù)特證選擇適當(dāng)?shù)拇鎯?chǔ)系統(tǒng),用于提供存儲(chǔ)虛擬化功能,在某些特定的業(yè)務(wù)模式下,可能需要同時(shí)提供多種存儲(chǔ)系統(tǒng),用于不同的應(yīng)用服務(wù)。
在傳統(tǒng)的存儲(chǔ)結(jié)構(gòu)中,客戶端與單一入口點(diǎn)的集中式存儲(chǔ)組件進(jìn)行通信,可能會(huì)限制存儲(chǔ)系統(tǒng)的性能和可伸縮性,同時(shí)可能帶來單點(diǎn)故障。UCloudStack 平臺(tái)采用分布式存儲(chǔ)系統(tǒng)作為虛擬化存儲(chǔ),用于對(duì)接 KVM 虛擬化計(jì)算及通用數(shù)據(jù)存儲(chǔ)服務(wù),消除集中式網(wǎng)關(guān),使客戶端直接與存儲(chǔ)系統(tǒng)進(jìn)行交互,并以多副本/糾刪碼、多級(jí)故障域、數(shù)據(jù)重均衡、故障數(shù)據(jù)重建等數(shù)據(jù)保護(hù)機(jī)制,確保數(shù)據(jù)安全性和可用性。
UCloudStack 云平臺(tái)基于 Ceph 分布式存儲(chǔ)系統(tǒng)適配優(yōu)化,為虛擬化計(jì)算平臺(tái)提供一套純軟件定義、可部署于 x86 通用服務(wù)器的高性能、高可靠、高擴(kuò)展、高安全、易管理且較低成本的虛擬化存儲(chǔ)解決方案,同時(shí)具有極大可伸縮性。作為云平臺(tái)的核心組成部分,為用戶提供多種存儲(chǔ)服務(wù)及 PB 級(jí)數(shù)據(jù)存儲(chǔ)能力,適用于虛擬機(jī)、數(shù)據(jù)庫(kù)等應(yīng)用場(chǎng)景,滿足關(guān)鍵業(yè)務(wù)的存儲(chǔ)需求,保證業(yè)務(wù)高效穩(wěn)定且可靠的運(yùn)行。
分布式存儲(chǔ)服務(wù)通過將大量 x86 通用服務(wù)器的磁盤存儲(chǔ)資源融合在一起進(jìn)行【池化】,構(gòu)建一個(gè)無(wú)限可伸縮的統(tǒng)一分布式存儲(chǔ)集群,實(shí)現(xiàn)對(duì)數(shù)據(jù)中心所有存儲(chǔ)資源的統(tǒng)一管理及調(diào)度,向虛擬化計(jì)算層提供【塊】存儲(chǔ)接口,供云平臺(tái)虛擬機(jī)或虛擬資源根據(jù)自身需求自由分配并使用存儲(chǔ)資源池中的存儲(chǔ)空間。同時(shí)云平臺(tái)虛擬化通過 iSCSI 協(xié)議對(duì)接 IPSAN 商業(yè)存儲(chǔ)設(shè)備,將商業(yè)存儲(chǔ)作為虛擬化后端存儲(chǔ)池,提供存儲(chǔ)池管理及邏輯卷分配,可直接作為虛擬機(jī)的系統(tǒng)盤及數(shù)據(jù)盤進(jìn)行使用,即只要支持 iSCSI 協(xié)議的存儲(chǔ)設(shè)備均可作為平臺(tái)虛擬化的后端存儲(chǔ),適應(yīng)多種應(yīng)用場(chǎng)景;可利舊企業(yè)用戶的集中存儲(chǔ)設(shè)備,整體節(jié)省信息化轉(zhuǎn)型的總擁有成本。
存儲(chǔ)功能所見即所得,用戶無(wú)需關(guān)注存儲(chǔ)設(shè)備的類型和能力,即可在云平臺(tái)快捷使用虛擬化存儲(chǔ)服務(wù),如虛擬磁盤掛載、擴(kuò)容、增量快照、監(jiān)控等,云平臺(tái)用戶像使用 x86 服務(wù)器的本地硬盤一樣的方式使用虛擬磁盤,如格式化、安裝操作系統(tǒng)、讀寫數(shù)據(jù)等。云平臺(tái)管理和維護(hù)者可以全局統(tǒng)一配置并管理平臺(tái)整體虛擬化存儲(chǔ)資源,如 QoS 限制、存儲(chǔ)池?cái)U(kuò)容、存儲(chǔ)規(guī)格及存儲(chǔ)策略配置。
分布式存儲(chǔ)系統(tǒng)可提供塊存儲(chǔ)、文件存儲(chǔ)及對(duì)象存儲(chǔ)服務(wù),適用于多種數(shù)據(jù)存儲(chǔ)的應(yīng)用場(chǎng)景,同時(shí)可保證數(shù)據(jù)的安全性及集群服務(wù)的可靠性。文件存儲(chǔ)和對(duì)象存儲(chǔ)在一個(gè)數(shù)據(jù)中心部署一套集群,支持機(jī)械盤和高性能盤混合部署且可邏輯劃分多個(gè)存儲(chǔ)池,如高性能存儲(chǔ)池和容量型存儲(chǔ)池。在塊存儲(chǔ)的部署上,通常推薦使用同一類型的磁盤構(gòu)建存儲(chǔ)集群,如超融合計(jì)算節(jié)點(diǎn)和獨(dú)立存儲(chǔ)節(jié)點(diǎn)自帶 SSD 磁盤構(gòu)建為高性能的存儲(chǔ)集群;超融計(jì)算節(jié)點(diǎn)和獨(dú)立存儲(chǔ)節(jié)點(diǎn)自帶的 SATA/SAS 磁盤構(gòu)建為普通性能存儲(chǔ)集群。
分布式存儲(chǔ)存儲(chǔ)系統(tǒng)將集群內(nèi)的磁盤設(shè)備通過 OSD 內(nèi)建不同的存儲(chǔ)資源池,分別提供彈性塊存儲(chǔ)服務(wù)、對(duì)象存儲(chǔ)及文件存儲(chǔ)服務(wù),其中塊存儲(chǔ)服務(wù)可供虛擬機(jī)直接掛載使用,在數(shù)據(jù)寫入時(shí)通過三副本、寫入確認(rèn)機(jī)制及副本分布策略等措施,最大限度保障數(shù)據(jù)安全性和可用性。文件存儲(chǔ)和對(duì)象存儲(chǔ)可提供諸如 NFS、CIFS、S3 等多種協(xié)議接口為應(yīng)用服務(wù)提供非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)服務(wù),同時(shí)結(jié)合多副本及糾刪碼數(shù)據(jù)冗余策略滿足多種場(chǎng)景下的數(shù)據(jù)存儲(chǔ)和處理,邏輯架構(gòu)如下:
UCloudStack 分布式存儲(chǔ)系統(tǒng)是整個(gè)云平臺(tái)架構(gòu)不可或缺的核心組件,通過分布式存儲(chǔ)集群體系結(jié)構(gòu)提供基礎(chǔ)存儲(chǔ)資源,并支持在線水平擴(kuò)容,同時(shí)融合智能存儲(chǔ)集群、超大規(guī)模擴(kuò)展、多副本與糾刪碼冗余策略、數(shù)據(jù)重均衡、故障數(shù)據(jù)重建、數(shù)據(jù)清洗、自動(dòng)精簡(jiǎn)配置及快照等技術(shù),為虛擬化存儲(chǔ)提供高性能、高可靠、高擴(kuò)展、易管理及數(shù)據(jù)安全性保障,全方面提升存儲(chǔ)虛擬化及云平臺(tái)的服務(wù)質(zhì)量。
分布式存儲(chǔ)集群可包含數(shù)千個(gè)存儲(chǔ)節(jié)點(diǎn),通常至少需要一個(gè)監(jiān)視器和多個(gè) OSD 守護(hù)進(jìn)程才可正常運(yùn)行及數(shù)據(jù)復(fù)制。分布式智能存儲(chǔ)集群消除集中控制網(wǎng)關(guān),使客戶端直接和存儲(chǔ)單元 OSD 守護(hù)進(jìn)程交互,自動(dòng)在各存儲(chǔ)節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)副本確保數(shù)據(jù)安全性和可用性。其中包括的基礎(chǔ)概念如下:
存儲(chǔ)數(shù)據(jù)時(shí),存儲(chǔ)集群從客戶端(塊設(shè)備、對(duì)象存儲(chǔ)、文件系統(tǒng))接收數(shù)據(jù),并將數(shù)據(jù)分片為存儲(chǔ)池內(nèi)的對(duì)象 Object,每個(gè)對(duì)象直接存儲(chǔ)至 OSD 的裸存儲(chǔ)設(shè)備上,由 OSD 進(jìn)程處理裸設(shè)備上的讀寫操作。如下圖所示:
客戶端程序通過與 OSD 或監(jiān)視器交互獲取映射關(guān)系數(shù)據(jù),在本地通過 CRUSH 算法計(jì)算得出對(duì)象存儲(chǔ)位置后,直接與對(duì)應(yīng)的 OSD 進(jìn)行通信,完成數(shù)據(jù)讀寫操作。為實(shí)現(xiàn)分布式存儲(chǔ)集群可自主、智能且自我修復(fù)的存取數(shù)據(jù),智能存儲(chǔ)集群通過 CURSH 算法、存儲(chǔ)池 Pool、放置組 PG 及 OSD 等多種邏輯概念相互關(guān)聯(lián)承載數(shù)據(jù)存儲(chǔ)流程,邏輯架構(gòu)圖如下:
在存儲(chǔ)集群的機(jī)制中,承載相同 PG 的主從 OSD 間需要彼此交換信息,確保彼此的存活狀態(tài)。客戶端首次訪問會(huì)首先從監(jiān)視器獲取映射關(guān)系的數(shù)據(jù),存儲(chǔ)數(shù)據(jù)時(shí)會(huì)與 OSD 對(duì)比映射關(guān)系數(shù)據(jù)的版本。由上圖示意圖得知,一個(gè) OSD 可同時(shí)承載多個(gè) PG ,在三副本機(jī)制下每個(gè) PG 通常為 3 個(gè) OSD 。如上圖所示,數(shù)據(jù)尋址流程分為三個(gè)映射階段:
分布式存儲(chǔ)客戶端從監(jiān)視器獲取集群映射關(guān)系圖,并將對(duì)象寫入到存儲(chǔ)池。集群存儲(chǔ)數(shù)據(jù)的邏輯主要取決于存儲(chǔ)池的大小、副本數(shù)量、CRUSH 算法規(guī)則及PG 數(shù)量等。
在傳統(tǒng)集中式架構(gòu)中,中心集群組件作為客戶端訪問集群的單一入口,這將嚴(yán)重影響集群的性能和可擴(kuò)展性,同時(shí)引入單點(diǎn)故障。在分存儲(chǔ)存儲(chǔ)集群的設(shè)計(jì)中,存儲(chǔ)單元 OSD 和存儲(chǔ)客戶端能直接感知集群中的其它 OSD 及監(jiān)視器信息,允許存儲(chǔ)客戶端直接與存儲(chǔ)單元 OSD 交互進(jìn)行數(shù)據(jù)讀寫,同時(shí)允許每個(gè) OSD 與監(jiān)視器及其它節(jié)點(diǎn)上的 OSD 直接交互進(jìn)行數(shù)據(jù)讀寫,這種機(jī)制使得 OSD 能夠充分利用每個(gè)節(jié)點(diǎn)的 CPU/RAM ,將中心化的任務(wù)分?jǐn)偟礁鱾€(gè)節(jié)點(diǎn)去完成,支持超大規(guī)模集群擴(kuò)展能力,提供 EB 級(jí)存儲(chǔ)容量。
為消除中心節(jié)點(diǎn),分布式存儲(chǔ)客戶端和 OSD 均使用 CRUSH 算法按需計(jì)算對(duì)象的位置信息,避免對(duì)監(jiān)視器上集群映射圖的中心依賴,讓大部分?jǐn)?shù)據(jù)管理任務(wù)可以在集群內(nèi)的客戶端和 OSD 上進(jìn)行分布式處理,提高平臺(tái)的可伸縮性。
在存儲(chǔ)集群擴(kuò)容層面,支持存儲(chǔ)節(jié)點(diǎn)水平擴(kuò)展、增量擴(kuò)容及數(shù)據(jù)自動(dòng)平衡性,同時(shí)集群的整體性能隨容量的增長(zhǎng)呈正向增長(zhǎng),繼而保證存儲(chǔ)系統(tǒng)的性能及高擴(kuò)展性。
為構(gòu)建全平臺(tái)高可用的分布式存儲(chǔ)服務(wù),保證虛擬化計(jì)算及應(yīng)用服務(wù)數(shù)據(jù)存儲(chǔ)的可靠性,分布式存儲(chǔ)系統(tǒng)從多方面保證存儲(chǔ)服務(wù)的穩(wěn)健運(yùn)行。
多副本機(jī)制是指將寫入的數(shù)據(jù)保存多份的數(shù)據(jù)冗余技術(shù),并由存儲(chǔ)系統(tǒng)保證多副本數(shù)據(jù)的一致性。UCloudStack 分布式塊存儲(chǔ)系統(tǒng)默認(rèn)采用多副本數(shù)據(jù)備份機(jī)制,寫入數(shù)據(jù)時(shí)先向主副本寫入數(shù)據(jù),由主副本負(fù)責(zé)向其他副本同步數(shù)據(jù),并將每一份數(shù)據(jù)的副本跨節(jié)點(diǎn)、跨機(jī)柜、跨數(shù)據(jù)中心分別存儲(chǔ)于不同磁盤上,多維度保證數(shù)據(jù)安全。存儲(chǔ)客戶端在讀取數(shù)據(jù)會(huì)優(yōu)先讀取主副本的數(shù)據(jù),僅當(dāng)主副本數(shù)據(jù)故障時(shí),由其它副本提供數(shù)據(jù)的讀取操作。
UCloudStack 分布式存儲(chǔ)系統(tǒng)通過多副本、寫入確認(rèn)機(jī)制及副本分布策略等措施,最大限度保障數(shù)據(jù)安全性和可用性。多副本機(jī)制存儲(chǔ)數(shù)據(jù),將自動(dòng)屏蔽軟硬件故障,當(dāng)磁盤損壞和軟件故障導(dǎo)致副本數(shù)據(jù)丟失,系統(tǒng)自動(dòng)檢測(cè)到并自動(dòng)進(jìn)行副本數(shù)據(jù)備份和同步,不會(huì)影響業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)和讀寫,保證數(shù)據(jù)安全性和可用性。本章節(jié)以三副本為例,具體描述多副本的工作機(jī)制:
(1)三副本
用戶通過客戶端寫入分布式存儲(chǔ)的數(shù)據(jù),會(huì)根據(jù) Pool 設(shè)置的副本數(shù)量 3 寫入三份,并按照副本分布策略,分別存儲(chǔ)于不同物理主機(jī)的磁盤上。分布式存儲(chǔ)保證數(shù)據(jù)安全的副本數(shù)量至少為 2 份,以便存儲(chǔ)集群可以在降級(jí)狀態(tài)下運(yùn)行,保證數(shù)據(jù)安全。
(2)寫入確認(rèn)機(jī)制
如上圖所示,三副本在寫入過程中,只有三個(gè)寫入過程全部被確認(rèn),才返回寫入完成,確保數(shù)據(jù)寫入的強(qiáng)一致性。
客戶端將對(duì)象寫入到目標(biāo) PG 的主 OSD 中,然后主 OSD 通過 GRUSH 映射關(guān)系圖定位用于存儲(chǔ)對(duì)象副本的第二個(gè)和第三個(gè) OSD ,并將對(duì)象數(shù)據(jù)復(fù)到 PG 所對(duì)應(yīng)的兩個(gè)從 OSD ,當(dāng)三個(gè)對(duì)象副本數(shù)據(jù)均寫入完成,最后響應(yīng)客戶端確認(rèn)對(duì)象寫入成功。
(3)副本分布策略
分布式存儲(chǔ)支持副本數(shù)據(jù)落盤分布策略(多級(jí)故障域),使用 CRUSH 算法根據(jù)存儲(chǔ)設(shè)備的權(quán)重值分配數(shù)據(jù)對(duì)象,盡量確保對(duì)象數(shù)據(jù)的均勻分布。平臺(tái)通過定義存儲(chǔ)桶類型,支持節(jié)點(diǎn)級(jí)、機(jī)柜級(jí)、數(shù)據(jù)中心級(jí)故障域,可將副本數(shù)據(jù)分布在不同主機(jī)、不同機(jī)柜及不同數(shù)據(jù)中心,避免因單主機(jī)、單機(jī)柜及單數(shù)據(jù)中心整體故障造成數(shù)據(jù)丟失或不可用的故障,保證數(shù)據(jù)的可用性和安全性。
為保證存儲(chǔ)數(shù)據(jù)的訪問時(shí)延,通常建議最多將數(shù)據(jù)副本保存至不同的機(jī)柜,若將數(shù)據(jù)三副本保存至不同的機(jī)房,由于網(wǎng)絡(luò)延時(shí)等原因,可能會(huì)影響云硬盤的 IO 性能。
如上圖所示,客戶端通過分布式存儲(chǔ)系統(tǒng)寫入 ABC 三個(gè)對(duì)象數(shù)據(jù),根據(jù) CRUSH 規(guī)則定義的故障域,需要將三個(gè)對(duì)象的副本分別存儲(chǔ)于不同的機(jī)柜。以 A 對(duì)象為例,存儲(chǔ)系統(tǒng)提前設(shè)置副本分布策略,盡量保證對(duì)象副本分布在不同柜柜的服務(wù)器 OSD 中,即定義機(jī)柜和主機(jī)存儲(chǔ)桶。當(dāng)分布式存儲(chǔ)系統(tǒng)計(jì)算出寫入對(duì)象的 PG 及對(duì)應(yīng)的 OSD 位置時(shí),會(huì)優(yōu)先將 A 寫入到機(jī)柜 1 的服務(wù)器 OSD 中,同時(shí)通過主 OSD 復(fù)制副本 A 至機(jī)柜 2 的服務(wù)器 OSD 中,復(fù)制 A 至機(jī)柜 3 的服務(wù)器 OSD 中 ,數(shù)據(jù)全部復(fù)制寫入成功,即返回客戶端對(duì)象 A 寫入成功。
在存儲(chǔ)節(jié)點(diǎn)無(wú)網(wǎng)絡(luò)中斷或磁盤故障等異常情況時(shí),對(duì)象副本數(shù)據(jù)始終保持為 3 副本。僅當(dāng)節(jié)點(diǎn)發(fā)生異常時(shí),副本數(shù)量少于 3 時(shí),存儲(chǔ)系統(tǒng)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)副本重建,以保證數(shù)據(jù)副本永久為三份,為虛擬化存儲(chǔ)數(shù)據(jù)安全保駕護(hù)航。如上圖第三個(gè)節(jié)點(diǎn)發(fā)生故障,導(dǎo)致數(shù)據(jù) D1-D5 丟失并故障,存儲(chǔ)系統(tǒng)會(huì)將對(duì)象數(shù)據(jù)的 PG 自動(dòng)映射一個(gè)新的 OSD,并通過其它兩個(gè)副本自動(dòng)同步并重建出 D1‘-D5’,以保證數(shù)據(jù)始終為三副本,保證數(shù)據(jù)安全。
糾刪碼(Erasure Coding,EC)是一種數(shù)據(jù)保護(hù)方法,類似商業(yè)存儲(chǔ)中的 RAID5 技術(shù),它將數(shù)據(jù)分割成片段,把冗余數(shù)據(jù)塊擴(kuò)展、編碼,并將其存儲(chǔ)在不同的位置,比如磁盤、存儲(chǔ)節(jié)點(diǎn)或者其它地理位置。UCloudStack 分布式對(duì)象存儲(chǔ)和文件存儲(chǔ)可采用糾刪碼策略進(jìn)行數(shù)據(jù)冗余保護(hù)。
糾刪碼策略可兼?zhèn)鋽?shù)據(jù)安全性和磁盤利用率,在分布式存儲(chǔ)系統(tǒng)中,糾刪碼策略將寫入的數(shù)據(jù)進(jìn)行分片(稱為數(shù)據(jù)塊),基于分片編碼生成備份冗余數(shù)據(jù)(稱為較驗(yàn)塊),最后將原始分片數(shù)據(jù)和備份數(shù)據(jù)分別寫入不同的存儲(chǔ)介質(zhì),以保證數(shù)據(jù)的安全性。同時(shí)數(shù)據(jù)塊和校驗(yàn)塊可通過故障域分別存儲(chǔ)于跨節(jié)點(diǎn)、跨機(jī)柜、跨數(shù)據(jù)中心的不同 OSD 磁盤上,多維度保證數(shù)據(jù)安全。
通過糾刪碼策略將數(shù)據(jù)分段的塊數(shù)稱為 K,編碼較驗(yàn)塊稱為 M,所有數(shù)據(jù)塊個(gè)數(shù)稱為 N ,即 N= K+M;基于此磁盤利用率可通過 K/N 獲得,如 K=9,M=3 ,N=12 ,則磁盤總空簡(jiǎn)利用率為 9/12=75% ,即磁盤利用率為 75%。對(duì)象存儲(chǔ)和文件存儲(chǔ)的存儲(chǔ)集群根據(jù)冗余策略不同,磁盤利用率不同。在三副本機(jī)制下,磁盤利用率為集群總?cè)萘康娜种唬欢诩m刪碼策略中,利用率與 K+M 的比例值相關(guān),即不同的 K+M 值,會(huì)有不同的磁盤利用率,可根據(jù)實(shí)際使用場(chǎng)景自定義糾刪碼策略的 K+M 值,平臺(tái)默認(rèn)推薦 4+2。
以 4+2 為例,在寫入數(shù)據(jù)時(shí)存儲(chǔ)系統(tǒng)會(huì)先將對(duì)象數(shù)據(jù)映射到一個(gè) PG ,再由 PG 映射到一組 OSD 中(OSD 的數(shù)量取決于 K+M 的值,即 OSD 數(shù)量與 N 的值相等);同時(shí)在 OSD 中選舉出主 OSD ,由主 OSD 將對(duì)象文件分片為 4 個(gè)數(shù)據(jù)塊,在通過 4 個(gè)數(shù)據(jù)塊編碼出 2 個(gè)校驗(yàn)塊,最后將 4 個(gè)數(shù)據(jù)塊和 2 個(gè)校驗(yàn)塊分別寫入 6 個(gè) OSD 中。在讀取數(shù)據(jù)時(shí),由主 OSD 分別從相同 PG 的其它 OSD 中讀取所有需要的分片數(shù)據(jù),最后由主 OSD 統(tǒng)一匯總拼拼湊出指定的對(duì)象文件,向客戶端應(yīng)答。
由于糾刪碼是將數(shù)據(jù)切片并發(fā)寫入至多個(gè) OSD 磁盤,并無(wú)多副本機(jī)制中多倍寫放大的問題,因此寫性能較有優(yōu)勢(shì)。而讀數(shù)據(jù)時(shí)需要先計(jì)算數(shù)據(jù)分片,再將多個(gè) OSD 中的數(shù)據(jù)讀出來進(jìn)行匯總,因此讀性能相對(duì)偏低。
糾刪碼的原理證明,存儲(chǔ)集群中允許損壞的數(shù)據(jù)塊數(shù)量小于等于 M(較驗(yàn)塊),在存儲(chǔ)節(jié)點(diǎn)或磁盤無(wú)故障或異常時(shí),對(duì)象數(shù)據(jù)塊和校驗(yàn)塊始終不變。僅當(dāng)節(jié)點(diǎn)發(fā)生異常時(shí),數(shù)據(jù)塊和較驗(yàn)塊小于 N+M 值時(shí),需要通過剩余的數(shù)據(jù)塊和較驗(yàn)塊一起進(jìn)行解碼計(jì)算出損壞數(shù)據(jù),并將期恢復(fù)在正常的 OSD 設(shè)備中。如上圖 5+3 的 EC 策略中,允許失敗的數(shù)據(jù)為 3 ,即在實(shí)際生產(chǎn)環(huán)境中可允許失敗 3 塊磁盤;當(dāng)分片數(shù)據(jù) D1 損壞時(shí),主 OSD 計(jì)算獲取到對(duì)象文件剩余的數(shù)據(jù)塊(D2-D5 )及較驗(yàn)塊信息( P1-P3),通過 EC 對(duì)數(shù)據(jù)塊和較驗(yàn)塊的信息解碼,計(jì)算出損壞的 D1 數(shù)據(jù) D1,最后將 D1 數(shù)據(jù)恢復(fù)至正常的 OSD 設(shè)備中,完成損壞數(shù)據(jù)的恢復(fù)。
若在讀取數(shù)據(jù)時(shí)正好有一個(gè)分片數(shù)據(jù)損壞,則會(huì)同步進(jìn)行數(shù)據(jù)解碼恢復(fù)操作,則讀取該數(shù)據(jù)的時(shí)延較大,會(huì)影響整體數(shù)據(jù)的讀取性能。
由于糾刪碼在存取數(shù)據(jù)時(shí)需要消耗更多的計(jì)算資源,因此糾刪碼對(duì)節(jié)點(diǎn)的計(jì)算要求相較多副本高,然糾刪碼以其靈活多變的數(shù)據(jù)備份策略、較高的存儲(chǔ)空間利用率非常適合存儲(chǔ)大量對(duì)時(shí)延不敏感的數(shù)據(jù),如備份數(shù)據(jù)、辦公應(yīng)用數(shù)據(jù)、日志數(shù)據(jù)等。基于此,UCloudStack 的文件存儲(chǔ)和對(duì)象存儲(chǔ)可提供糾刪碼和多副本兩種冗余保護(hù)策略,而塊存儲(chǔ)僅采用多副本機(jī)制進(jìn)行數(shù)據(jù)安全保護(hù)。
UCloudSack 云平臺(tái)分布式存儲(chǔ)集群在寫入數(shù)據(jù)時(shí),會(huì)通過數(shù)據(jù)分片、CRUSH 映射關(guān)系、多副本或糾刪碼分布策略盡量保證數(shù)據(jù)對(duì)象在存儲(chǔ)池中的均衡。隨著存儲(chǔ)集群的長(zhǎng)期運(yùn)行及對(duì)平臺(tái)的運(yùn)維管理,可能會(huì)導(dǎo)致存儲(chǔ)池內(nèi)的數(shù)據(jù)失衡,如存儲(chǔ)節(jié)點(diǎn)和磁盤擴(kuò)容、存儲(chǔ)部分?jǐn)?shù)據(jù)被刪除、磁盤和主機(jī)故障等。
為避免擴(kuò)容及故障導(dǎo)致存儲(chǔ)集群數(shù)據(jù)分布失衡,UCloudStack 分布式存儲(chǔ)系統(tǒng)提供數(shù)據(jù)重均衡能力,在存儲(chǔ)集群及磁盤數(shù)據(jù)發(fā)生變更后,通過 CRUSH 規(guī)則及時(shí)對(duì)數(shù)據(jù)的部分對(duì)象進(jìn)行重新分發(fā)和均衡,使存儲(chǔ)池中的對(duì)象數(shù)據(jù)盡量均衡,避免產(chǎn)生數(shù)據(jù)熱點(diǎn)及資源浪費(fèi),提升存儲(chǔ)系統(tǒng)的穩(wěn)定性及資源利用率。
(1)集群擴(kuò)容重均衡
平臺(tái)支持水平擴(kuò)展存儲(chǔ)節(jié)點(diǎn)或在線向存儲(chǔ)節(jié)點(diǎn)中增加磁盤的方式擴(kuò)容存儲(chǔ)集群的容量,即分布式存儲(chǔ)集群支持在運(yùn)行時(shí)增加 OSD 進(jìn)行存儲(chǔ)池?cái)U(kuò)容 。當(dāng)集群容量達(dá)到閾值需要擴(kuò)容時(shí),可將新磁盤添加為集群的 OSD 并加入到集群的 CRUSH 運(yùn)行圖,平臺(tái)會(huì)按照新 CRUSH 運(yùn)行圖重新均衡集群數(shù)據(jù)分布,將一些 PG 移入/移出多個(gè) OSD 設(shè)備,使集群數(shù)據(jù)回到均衡狀態(tài)。如下圖所示:
在數(shù)據(jù)均衡過程中,僅會(huì)將現(xiàn)有 OSD 中的部分 PG 到遷移到新的 OSD 設(shè)備,不會(huì)遷移所有 PG ,盡量讓所有 OSD 均騰出部分容量空間,保證所有 OSD 的對(duì)象數(shù)據(jù)分布相對(duì)均衡。如上圖中新增 OSD 4 和 OSD 5 后,有三個(gè) PG(PG #4、PG #9、PG #14) 遷移到 OSD 4 ,三個(gè) PG (PG #5、PG #10、PG #15)遷移到 OSD 5 ,使五個(gè) OSD 中映射的 PG 均為 3 個(gè)。為避免 PG 遷移導(dǎo)致集群性能整體降低,存儲(chǔ)系統(tǒng)會(huì)提高用戶讀寫請(qǐng)求的優(yōu)先級(jí),在系統(tǒng)空閑時(shí)間進(jìn)行 PG 遷移操作。
PG 在遷移過程中,原 OSD 會(huì)繼續(xù)提供服務(wù),直到 PG 遷移完成才將數(shù)對(duì)象寫入新 OSD 設(shè)備。
(2)集群容量縮減重均衡
存儲(chǔ)集群在運(yùn)行過程中可能需要縮減集群容量或替換硬件,平臺(tái)支持在線刪除 OSD 及節(jié)點(diǎn)下線,用于縮減集群容量或進(jìn)入運(yùn)維模式。當(dāng) OSD 被在集群中被刪除時(shí),存儲(chǔ)系統(tǒng)會(huì)根據(jù) CRUSH 運(yùn)行圖重新均衡集群數(shù)據(jù)分布,將被刪除的 OSD 上的 PG 遷移至其它相對(duì)空閑的 OSD 設(shè)備上,使集群回到均衡狀態(tài)。如下圖所示:
在數(shù)據(jù)均衡過程中,僅會(huì)將被刪除 OSD 上的 PG 遷移至相對(duì)空閑的 OSD 設(shè)備,盡量保證所有 OSD 的對(duì)象數(shù)據(jù)分布相對(duì)均衡。如上圖中即將被刪除的 OSD 4 和 OSD 5 上共映射 6 個(gè) PG ,刪除后分別分有 2 個(gè) PG 會(huì)被遷移至剩余 3 個(gè) OSD 中,使 3 個(gè) OSD 中映射的 PG 均為 5 個(gè)。
(3)故障數(shù)據(jù)重均衡
分布式存儲(chǔ)在長(zhǎng)期運(yùn)行中會(huì)存在磁盤、節(jié)點(diǎn)的物理?yè)p壞、系統(tǒng)崩潰及網(wǎng)絡(luò)中斷等故障,均會(huì)中斷節(jié)點(diǎn)的存儲(chǔ)服務(wù)。存儲(chǔ)集群提供容錯(cuò)方法來管理軟硬件,PG 作為對(duì)象與 OSD 的中間邏輯層,可保證數(shù)據(jù)對(duì)象不會(huì)直接綁死到一個(gè) OSD 設(shè)備,意味著集群可在“降級(jí)”模式下繼續(xù)提供服務(wù)。詳見數(shù)據(jù)故障重建。
通過數(shù)據(jù)重均衡機(jī)制,可支持分布式存儲(chǔ)集群平滑擴(kuò)容,包括橫向擴(kuò)容和縱向擴(kuò)容,即可以在線添加存儲(chǔ)節(jié)點(diǎn)及存儲(chǔ)磁盤。
根據(jù)多副本和 EC 糾刪碼的保護(hù)機(jī)制,存儲(chǔ)集群在把數(shù)據(jù)對(duì)象通過 CRUSH 寫入到指定 OSD 后,OSD 會(huì)通過運(yùn)行圖計(jì)算副本或數(shù)據(jù)塊的存儲(chǔ)位置,并將數(shù)據(jù)副本或數(shù)據(jù)塊寫入到指定 OSD 設(shè)備中,通常數(shù)據(jù)對(duì)象會(huì)被分配至不同故障域中,保證數(shù)據(jù)安全性和可用性。
當(dāng)磁盤損壞或節(jié)點(diǎn)故障時(shí),即代表節(jié)點(diǎn)部分/全部 OSD 設(shè)備下線或無(wú)法為 PG 內(nèi)對(duì)象提供存儲(chǔ)服務(wù),同時(shí)也表示有部分對(duì)象數(shù)據(jù)的副本數(shù)量不完整,如 3 副本可能因?yàn)榇疟P損壞變?yōu)?2 副本。故障時(shí)對(duì)象數(shù)據(jù)的 PG 被置為“降級(jí)”模式繼續(xù)提供存儲(chǔ)服務(wù),并開始進(jìn)行數(shù)據(jù)副本重建操作,按照最新 CRUSH 運(yùn)行圖將故障節(jié)點(diǎn)或磁盤上的對(duì)象數(shù)據(jù)重映射到其它 OSD 設(shè)備上,即重新復(fù)制對(duì)象數(shù)據(jù)的副本至其它 OSD 設(shè)備,保證副本數(shù)量與存儲(chǔ)池設(shè)置一致。
在 EC 糾刪碼策略下,節(jié)點(diǎn)或磁盤設(shè)備故障時(shí)會(huì)導(dǎo)致部分?jǐn)?shù)據(jù)塊或校驗(yàn)塊丟失,如 4+2 的糾刪碼數(shù)據(jù)會(huì)丟失一個(gè)數(shù)據(jù)塊或校驗(yàn)塊,此時(shí)對(duì)象數(shù)據(jù)的 PG 被置為“降級(jí)”模式繼續(xù)提供存儲(chǔ)服務(wù),并開始進(jìn)行糾刪數(shù)據(jù)的解碼和恢復(fù)操作,按照最新 CRUSH 運(yùn)行圖將故障數(shù)據(jù)塊或校驗(yàn)塊數(shù)據(jù)重新恢復(fù)至其它健康的 OSD 設(shè)備上,保證對(duì)象數(shù)據(jù)的完整性和可用性。
故障數(shù)據(jù)重建時(shí)會(huì)遵循存儲(chǔ)集群中配置的故障域(主機(jī)級(jí)、機(jī)柜級(jí)及數(shù)據(jù)中心級(jí)),選擇符合故障域定義的 OSD 作為故障數(shù)據(jù)重建的位置,讓同一對(duì)象數(shù)據(jù)的多副本或 EC 數(shù)據(jù)間位置互斥,避免數(shù)據(jù)塊均位于同一個(gè)故障域,保證數(shù)據(jù)安全性和可靠性。同時(shí)為提高故障數(shù)據(jù)的重建速度,多個(gè)故障數(shù)據(jù)重建任務(wù)的 I/O 會(huì)并發(fā)進(jìn)行,實(shí)現(xiàn)故障數(shù)據(jù)的快速重建。
故障節(jié)點(diǎn)或磁盤恢復(fù)后,OSD 被重新加入至集群的 CRUSH 運(yùn)行圖,平臺(tái)會(huì)按照新 CRUSH 運(yùn)行圖重新均衡集群數(shù)據(jù)分布,將一些 PG 移入/移出多個(gè) OSD 設(shè)備,使集群數(shù)據(jù)回到均衡狀態(tài)。為保證存儲(chǔ)集群的運(yùn)營(yíng)性能,副本或糾刪碼 EC 數(shù)據(jù)恢復(fù)及遷移時(shí),會(huì)限制恢復(fù)請(qǐng)求數(shù)、線程數(shù)、對(duì)象塊尺寸,并提高用戶讀寫請(qǐng)求的優(yōu)先級(jí),保證集群可用性和運(yùn)行性能。
分布式存儲(chǔ)集群在長(zhǎng)期運(yùn)行及數(shù)據(jù)重平衡的過程中,可能會(huì)產(chǎn)生一些臟數(shù)據(jù)、缺陷文件及系統(tǒng)錯(cuò)誤數(shù)據(jù)。如一塊 OSD 磁盤損壞,集群在重均衡后重建數(shù)據(jù)至其它 OSD 設(shè)備,當(dāng)故障 OSD 設(shè)備恢復(fù)后可能還存儲(chǔ)著之前數(shù)據(jù)的副本,這些副本數(shù)據(jù)在集群重新平衡時(shí)需及時(shí)進(jìn)行清洗。
分布式存儲(chǔ)的 OSD 守護(hù)進(jìn)程可進(jìn)行 PG 內(nèi)對(duì)象的清洗,即 OSD 會(huì)比較 PG 內(nèi)不同 OSD 的各對(duì)象副本元數(shù)據(jù),如果發(fā)現(xiàn)有臟數(shù)據(jù)、文件系統(tǒng)錯(cuò)誤及磁盤壞扇區(qū),會(huì)對(duì)其進(jìn)行深度清洗,以確保數(shù)據(jù)的完整性。
自動(dòng)精簡(jiǎn)配置(Thin Provisioning),又稱【超額申請(qǐng)】或【運(yùn)行時(shí)空間】,是一種利用虛擬化技術(shù)減少物理存儲(chǔ)部署的技術(shù)。通過自動(dòng)精簡(jiǎn)配置,可以用較小的物理容量提供較大容量的虛擬存儲(chǔ)空間,且真實(shí)的物理容量會(huì)隨著數(shù)據(jù)量的增長(zhǎng)及時(shí)擴(kuò)展,可最大限度提升存儲(chǔ)空間的利用率,并帶來更大的投資回報(bào)。
UCloudStack 云平臺(tái)分布式存儲(chǔ)系統(tǒng)支持自動(dòng)精簡(jiǎn)配置,在創(chuàng)建塊存儲(chǔ)服務(wù)時(shí),分配邏輯虛擬容量呈現(xiàn)給用戶,當(dāng)用戶向邏輯存儲(chǔ)容量中寫入數(shù)據(jù)時(shí),按照存儲(chǔ)容量分配策略從物理空間分配實(shí)際容量。如一個(gè)用戶創(chuàng)建的云硬盤為 1TB 容量,存儲(chǔ)系統(tǒng)會(huì)為用戶分配并呈現(xiàn) 1TB 的邏輯卷,僅當(dāng)用戶在云硬盤中寫入數(shù)據(jù)時(shí),才會(huì)真正的分配物理磁盤容量。若用戶在云硬盤上存儲(chǔ)的數(shù)據(jù)為 100GB ,則云硬盤僅使用存儲(chǔ)池的 100GB 容量,剩余的 900GB 容量可以供其它用戶使用。
云平臺(tái)分布式存儲(chǔ)系統(tǒng)支持對(duì)真實(shí)物理容量的監(jiān)控,可提供真實(shí)物理已使用容量和邏輯的已分配容量。通常建議真實(shí)已使用容量超過總?cè)萘康?70% 時(shí)對(duì)存儲(chǔ)集群進(jìn)行擴(kuò)容。自動(dòng)精簡(jiǎn)配置類似 CPU 超分的概念,即可供租戶創(chuàng)建使用的存儲(chǔ)容量可大于物理總?cè)萘浚詣?dòng)按需分配物理存儲(chǔ)空間給塊存儲(chǔ)設(shè)備,消除已分配但未使用的存儲(chǔ)空間浪費(fèi)。
通過自動(dòng)精簡(jiǎn)配置,平臺(tái)管理員無(wú)需對(duì)業(yè)務(wù)存儲(chǔ)規(guī)模進(jìn)行細(xì)化且準(zhǔn)確預(yù)判,更不需提前為每個(gè)業(yè)務(wù)做精細(xì)的空間資源規(guī)劃和準(zhǔn)備,配合邏輯存儲(chǔ)卷的容量分配策略,有效提升運(yùn)維效率及存儲(chǔ)空間的整體利用率。
UCloudStack 通過軟件定義的分布式存儲(chǔ)重新定義數(shù)據(jù)存儲(chǔ)服務(wù),基于通用服務(wù)器構(gòu)建統(tǒng)一存儲(chǔ)層,為應(yīng)用提供塊、對(duì)象及文件存儲(chǔ)服務(wù),同時(shí)提供多種數(shù)據(jù)接口,用戶無(wú)需關(guān)注底層存儲(chǔ)設(shè)備及架構(gòu),即可在云平臺(tái)構(gòu)建并使用存儲(chǔ)服務(wù),適用于虛擬化、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)及企業(yè)應(yīng)用等使用場(chǎng)景。
UCloudStack 基于分布式存儲(chǔ)系統(tǒng)為云平臺(tái)租戶提供塊設(shè)備,即云硬盤服務(wù),為計(jì)算虛擬化的虛擬機(jī)提供持久化存儲(chǔ)空間的塊設(shè)備。具有獨(dú)立的生命周期,支持隨意綁定/解綁至多個(gè)虛擬機(jī)使用,并能夠在存儲(chǔ)空間不足時(shí)對(duì)云硬盤進(jìn)行擴(kuò)容,基于網(wǎng)絡(luò)分布式訪問,為云主機(jī)提供高安全、高可靠、高性能及可擴(kuò)展的數(shù)據(jù)磁盤。
云平臺(tái)為租戶提供普通和高性能兩種架構(gòu)類型的云硬盤,普通云硬盤使用 SATA/SAS 磁盤作為存儲(chǔ)介質(zhì),性能型云硬盤使用 SSD/NVME 磁盤作為存儲(chǔ)介質(zhì)。云硬盤數(shù)據(jù)均通過 PG 映射及三副本機(jī)制進(jìn)行存儲(chǔ),并在分布式存儲(chǔ)系統(tǒng)的基礎(chǔ)之上通過塊存儲(chǔ)系統(tǒng)接口為用戶提供云硬盤資源及全生命周期管理。
支持組建多個(gè)存儲(chǔ)集群,如 SATA 存儲(chǔ)集群和 SSD 存儲(chǔ)集群,并支持虛擬機(jī)跨集群掛載集群上的塊存儲(chǔ)服務(wù)。
不同存儲(chǔ)集群間,對(duì)象數(shù)據(jù)的存儲(chǔ)完全隔離。一個(gè)存儲(chǔ)集群中不同塊存儲(chǔ)設(shè)備的存儲(chǔ)策略完全隔離,互不干擾。分布式存儲(chǔ)系統(tǒng)為虛擬機(jī)系統(tǒng)盤、鏡像及云硬盤提供統(tǒng)一存儲(chǔ)及管理,提高虛擬機(jī)與系統(tǒng)盤、云硬盤的數(shù)據(jù)傳輸效率,實(shí)現(xiàn)虛擬機(jī)快速創(chuàng)建及恢復(fù),并支持系統(tǒng)盤和云硬盤的在線快速擴(kuò)容和遷移。
在業(yè)務(wù)數(shù)據(jù)安全方面,云平臺(tái)分布式存儲(chǔ)支持磁盤快照能力,可降低因誤操作、版本升級(jí)等導(dǎo)致的數(shù)據(jù)丟失風(fēng)險(xiǎn),是平臺(tái)保證數(shù)據(jù)安全的一個(gè)重要措施。支持對(duì)虛擬機(jī)的系統(tǒng)盤和數(shù)據(jù)盤進(jìn)行手動(dòng)或定時(shí)快照,在數(shù)據(jù)丟失或損壞時(shí),可通過快照快速恢復(fù)本地業(yè)務(wù)的數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)分鐘級(jí)恢復(fù),包括數(shù)據(jù)庫(kù)數(shù)據(jù)、應(yīng)用數(shù)據(jù)及文件目錄數(shù)據(jù)等。
私有云的塊存儲(chǔ)服務(wù)采用分布式統(tǒng)一存儲(chǔ)系統(tǒng),由統(tǒng)一存儲(chǔ)提供 RBD 接口為虛擬機(jī)提供系統(tǒng)盤、鏡像及云硬盤服務(wù)。本節(jié)通過塊存儲(chǔ)數(shù)據(jù)存儲(chǔ)架構(gòu)、塊存儲(chǔ)數(shù)據(jù) IO 流程及數(shù)據(jù)落盤管理流程對(duì)數(shù)據(jù)存儲(chǔ)及刪除機(jī)制進(jìn)行說明。
(1)塊存儲(chǔ)數(shù)據(jù)存儲(chǔ)架構(gòu)
虛擬機(jī)和云硬盤創(chuàng)建后,會(huì)在分布式存儲(chǔ)系統(tǒng)中分別生成一個(gè) RBD 塊存儲(chǔ)設(shè)備,即 KVM 引擎客戶端讀寫數(shù)據(jù)的載體,同時(shí)針對(duì)一個(gè)塊存儲(chǔ)設(shè)備會(huì)生成 RBDID 映射對(duì)象、元數(shù)據(jù)對(duì)象及數(shù)據(jù)分片對(duì)象。
所有的對(duì)象文件分別會(huì)通過算法計(jì)算對(duì)象的 PG 存儲(chǔ)放置組,三副本模式下,一個(gè)放置組通常對(duì)應(yīng)三個(gè)磁盤設(shè)備,即 RBDID 對(duì)象、元數(shù)據(jù)對(duì)象及數(shù)據(jù)分片的所有對(duì)象均會(huì)對(duì)應(yīng)一個(gè)放置組,同時(shí)會(huì)將對(duì)象數(shù)據(jù)寫入放置組對(duì)應(yīng)的三個(gè)磁盤設(shè)備中。
(2)塊存儲(chǔ)數(shù)據(jù) IO 流程
虛擬機(jī)和云硬盤的虛擬化客戶端在寫數(shù)據(jù)至 RBD 塊設(shè)備時(shí),會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行切片操作。如上圖中 RBD 塊設(shè)備為 RBD0,每個(gè)分片大小為 4MB ,即會(huì)動(dòng)將寫入的數(shù)據(jù)切分為 4M 大小的對(duì)象文件,同時(shí)包括元數(shù)據(jù)對(duì)象及 RBDID 映射對(duì)象。每個(gè)對(duì)象文件都有一個(gè)名字,即 rdb 設(shè)備+object+序號(hào),如 rbd0.object0 。
每一個(gè) rbd.objectn 的對(duì)象文件通過放置組進(jìn)行副本位置的分配,放置組通過 Cursh 算法定位出三個(gè)磁盤設(shè)備,作為對(duì)象文件的存儲(chǔ)位置,即數(shù)據(jù)及元數(shù)據(jù)會(huì)首先進(jìn)行對(duì)象文件的拆分,并根據(jù)放置組及磁盤設(shè)備的對(duì)應(yīng)關(guān)系,分別存儲(chǔ)至存儲(chǔ)系統(tǒng)中的所有磁盤中。
(3)數(shù)據(jù)落盤及管理流程
分布式存儲(chǔ)系統(tǒng)使用裸盤進(jìn)行磁盤管理及數(shù)據(jù)落盤操作,在進(jìn)行對(duì)象文件 rbd.objectn 文件的存儲(chǔ)和落盤時(shí),會(huì)通過存儲(chǔ)管理系統(tǒng)將每一個(gè)對(duì)象文件再次進(jìn)行拆分進(jìn)行存儲(chǔ),即通過位圖的方式計(jì)算拆分后文件的在物理磁盤上的存儲(chǔ)位置,將每個(gè) 4MB 對(duì)象文件拆分后存儲(chǔ)至磁盤設(shè)備中,默認(rèn)拆分大小為 32KB 。
在寫數(shù)據(jù)時(shí)根據(jù)位圖計(jì)算出 32KB 文件在磁盤介質(zhì)上的存儲(chǔ)位置,同時(shí)在位置上將占用的位置標(biāo)示為 1(占用),未被占用的磁盤位置標(biāo)示為 0 (空閑)。
整體存儲(chǔ)數(shù)據(jù)的過程,會(huì)將文件拆成 4MB 大小的對(duì)象文件,對(duì)應(yīng)至不同的磁盤設(shè)備;同時(shí)在落盤時(shí)再次將 4MB 文件拆分成 32KB 大小的塊存儲(chǔ)至磁盤設(shè)備中。
(4)刪除數(shù)據(jù)機(jī)制
根據(jù)上面存儲(chǔ)數(shù)據(jù)和落盤狀況,存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)中的文件被兩次拆分成 32KB 的塊文件,完全打散寫入至整個(gè)存儲(chǔ)集群的所有磁盤中,包括存儲(chǔ)文件的元數(shù)據(jù)文件;在讀取數(shù)據(jù)或找回?cái)?shù)據(jù)時(shí),需通過元數(shù)據(jù)計(jì)算數(shù)據(jù)是由哪些對(duì)象文件組成 ,同時(shí)需要結(jié)合磁盤位圖計(jì)算對(duì)象數(shù)據(jù)中由哪些 32KB 的塊數(shù)據(jù)組成,即其中一個(gè) 32KB 的數(shù)據(jù)是無(wú)法讀取或恢復(fù)一個(gè)文件,必須將文件打散存儲(chǔ)在存儲(chǔ)集群中所有磁盤的 32KB 數(shù)據(jù)組合為一個(gè)對(duì)象文件,再通過元數(shù)據(jù)拼接對(duì)象文件,才可讀取和恢復(fù)一個(gè)文件。
在平臺(tái)上刪除虛擬機(jī)、云硬盤或刪除虛擬機(jī)中的文件時(shí),存儲(chǔ)系統(tǒng)會(huì)將文件的元數(shù)據(jù)進(jìn)行刪除,同時(shí)到磁盤管理的位圖中將相關(guān)的 32KB 塊置為 0(僅將塊置為空閑,不真正清除數(shù)據(jù)),即用于恢復(fù)數(shù)據(jù)和讀取數(shù)據(jù)的元數(shù)據(jù)被清除,同時(shí) 32KB 的塊被置為空閑,可以被其它數(shù)據(jù)占用和寫入。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/125813.html
摘要:智能調(diào)度系統(tǒng)實(shí)時(shí)監(jiān)測(cè)集群所有計(jì)算節(jié)點(diǎn)計(jì)算存儲(chǔ)網(wǎng)絡(luò)等負(fù)載信息,作為虛擬機(jī)調(diào)度和管理的數(shù)據(jù)依據(jù)。當(dāng)有新的虛擬資源需要部署時(shí),調(diào)度系統(tǒng)會(huì)優(yōu)先選擇低負(fù)荷節(jié)點(diǎn)進(jìn)行部署,確保整個(gè)集群節(jié)點(diǎn)的負(fù)載。智能調(diào)度是 UCloudStack 平臺(tái)虛擬機(jī)資源調(diào)度管理的核心,由調(diào)度模塊負(fù)責(zé)調(diào)度任務(wù)的控制和管理,用于決策虛擬機(jī)運(yùn)行在哪一臺(tái)物理服務(wù)器上,同時(shí)管理虛擬機(jī)狀態(tài)及遷移計(jì)劃,保證虛擬機(jī)可用性和可靠性。智能調(diào)度系統(tǒng)實(shí)...
摘要:立即咨詢產(chǎn)品文檔優(yōu)刻得上線了混合云自建機(jī)房火爆預(yù)售官方補(bǔ)貼活動(dòng)中針對(duì)企業(yè)私有云產(chǎn)品作了介紹,老劉博客本篇文章分享給大家有關(guān)企業(yè)私有云產(chǎn)品優(yōu)勢(shì)體系架構(gòu)超融合一體機(jī)機(jī)型和交付方式。快速了解企業(yè)私有云解決方案及應(yīng)用場(chǎng)景。UCloudStack企業(yè)私有云平臺(tái),是基于UCloud公有云8年+的運(yùn)營(yíng)經(jīng)驗(yàn),輸出的適配企業(yè)私有場(chǎng)景的云計(jì)算解決方案。提供虛擬化、SDN 網(wǎng)絡(luò)、分布式存儲(chǔ)、數(shù)據(jù)庫(kù)緩存等核心服務(wù)的...
摘要:集群默認(rèn)對(duì)所有租戶開放權(quán)限,平臺(tái)支持對(duì)存儲(chǔ)集群進(jìn)行權(quán)限控制,用于將部分物理存儲(chǔ)資源獨(dú)享給一個(gè)或部分租戶使用,適用于專屬私有云場(chǎng)景。支持租戶將有權(quán)限的存儲(chǔ)卷信息作為虛擬機(jī)的系統(tǒng)盤,使虛擬機(jī)直接運(yùn)行直商業(yè)存儲(chǔ)中,提升性能。4.1.1 地域地域 ( Region ) 指 UCloudStack 云平臺(tái)物理數(shù)據(jù)中心的地理區(qū)域,如上海、北京、杭州等。不同地域間完全物理隔離,云平臺(tái)資源創(chuàng)建后不能更換地域...
摘要:導(dǎo)讀近期靈雀云技術(shù)專家邵明岐翻譯了所著的一書的部分內(nèi)容,可以說是對(duì)科普與觀察的上佳素材。的另一半是是的另一種形式,概念上容易混淆的地方在于,有時(shí)候?qū)⒆约旱姆?wù),,稱為。 導(dǎo)讀:近期靈雀云技術(shù)專家邵明岐翻譯了Mike Roberts & John Chapin所著的《What is serverless》一書的部分內(nèi)容,可以說是對(duì)Serverless科普與觀察的上佳素材。本文為第1篇,他...
閱讀 472·2024-11-07 18:25
閱讀 130815·2024-02-01 10:43
閱讀 951·2024-01-31 14:58
閱讀 916·2024-01-31 14:54
閱讀 83027·2024-01-29 17:11
閱讀 3286·2024-01-25 14:55
閱讀 2076·2023-06-02 13:36
閱讀 3189·2023-05-23 10:26