基于Ceph對(duì)象存儲(chǔ)的分級(jí)混合云存儲(chǔ)方案
公有云的存儲(chǔ)服務(wù)具有易擴(kuò)展的特性,用戶可以非常方便的根據(jù)其存儲(chǔ)容量需求,對(duì)其已有的存儲(chǔ)服務(wù)的容量進(jìn)行擴(kuò)展,因此從用戶角度來(lái)說(shuō),公有云的存儲(chǔ)服務(wù)具有***容量的特點(diǎn)。
- Unlimited Capacity:公有云的存儲(chǔ)服務(wù)具有易擴(kuò)展的特性,用戶可以非常方便的根據(jù)其存儲(chǔ)容量需求,對(duì)其已有的存儲(chǔ)服務(wù)的容量進(jìn)行擴(kuò)展,因此從用戶角度來(lái)說(shuō),公有云的存儲(chǔ)服務(wù)具有***容量的特點(diǎn)。
- Low Cost:公有云的存儲(chǔ)服務(wù)采用的是即用即付的模式,而且支持按照實(shí)際使用容量進(jìn)行計(jì)費(fèi);同時(shí)也沒(méi)有對(duì)存儲(chǔ)基礎(chǔ)設(shè)施的要求,所以具有低成本的優(yōu)勢(shì)。
- Performance not Well:通過(guò)公網(wǎng)對(duì)存儲(chǔ)服務(wù)進(jìn)行訪問(wèn)的網(wǎng)絡(luò)開(kāi)銷(xiāo),云服務(wù)商所采用的通用共享的硬件資源,以及通過(guò)虛擬化技術(shù)提供的服務(wù),使得對(duì)于公有云存儲(chǔ)服務(wù)來(lái)說(shuō),其訪問(wèn)性能并不是很高。
- Security and Controllability not Well:如前面說(shuō)的,在公有云中,所有的硬件、軟件和其他支持性基礎(chǔ)架構(gòu)都是云服務(wù)商所擁有和管理的,并且所有組織和租戶都是共享相同的硬件、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備,因此,從數(shù)據(jù)的安全性和可控制性角度來(lái)說(shuō),公有云的存儲(chǔ)服務(wù)并不是一個(gè)理想的選擇。
私有云存儲(chǔ)
- High Performance:私有網(wǎng)絡(luò)甚至是專線網(wǎng)絡(luò)所帶來(lái)的較小的網(wǎng)絡(luò)開(kāi)銷(xiāo),以及軟、硬件資源選擇上極大的靈活性,使得對(duì)于私有云存儲(chǔ)服務(wù)來(lái)說(shuō),可以提供一個(gè)優(yōu)于公有云的訪問(wèn)性能。
- High Security and Controllability:對(duì)于私有云存儲(chǔ)服務(wù)來(lái)說(shuō),因?yàn)槠滠洝⒂布Y源不與其他組織和租戶共享,而且可以完全將服務(wù)架設(shè)在私有網(wǎng)絡(luò)中,所以可實(shí)現(xiàn)更高的控制性和安全性級(jí)別。
- Limited Capacity:對(duì)于私有云存儲(chǔ)服務(wù)來(lái)說(shuō),因?yàn)槠渌匈Y源都是自擁有的,也都需要自維護(hù),包括對(duì)存儲(chǔ)集群進(jìn)行擴(kuò)容,所以從容量角度來(lái)說(shuō),為存儲(chǔ)集群進(jìn)行擴(kuò)容,顯性和隱性成本都很高,因此,從用戶角度出發(fā),私有云存儲(chǔ)服務(wù)并不是***容量的。
- High Cost:如前面說(shuō)的,在私有云存儲(chǔ)服務(wù)中,所有的軟、硬件資源成本,存儲(chǔ)集群的運(yùn)維成本,包括數(shù)據(jù)中心的搭建、運(yùn)營(yíng),私有網(wǎng)絡(luò)甚至是專線網(wǎng)絡(luò)的搭建,集群的維護(hù)等等,這些都是需要被納入到私有云存儲(chǔ)服務(wù)的成本中的。除此之外,不像公有云存儲(chǔ)可以按需分配容量,需要多少用多少,在私有云存儲(chǔ)中,為了滿足以后的一個(gè)可預(yù)期的***容量需求,以及避免頻繁擴(kuò)容所帶來(lái)的高昂的運(yùn)維成本,在集群搭建時(shí),往往都會(huì)以一個(gè)規(guī)劃容量進(jìn)行搭建,這實(shí)際上就導(dǎo)致了整個(gè)存儲(chǔ)集群的使用容量會(huì)長(zhǎng)期處于一個(gè)不飽和狀態(tài),即部分存儲(chǔ)資源會(huì)長(zhǎng)期出于一個(gè)空閑狀態(tài)。以上兩方面,就導(dǎo)致了私有云存儲(chǔ)相較于公有云存儲(chǔ)成本較高的問(wèn)題。
混合云存儲(chǔ)
混合云存儲(chǔ),即是將私有云存儲(chǔ)與公有云存儲(chǔ)打通,使得兩者相結(jié)合,共同對(duì)外提供存儲(chǔ)服務(wù),可以說(shuō)是私有云存儲(chǔ)和公有云存儲(chǔ)所有優(yōu)點(diǎn)的集大成者。
- High Performance :活動(dòng)數(shù)據(jù)存儲(chǔ)在私有云存儲(chǔ)中,歸檔數(shù)據(jù)存儲(chǔ)到公有云存儲(chǔ)中。首先從性能角度來(lái)說(shuō),通過(guò)將活動(dòng)數(shù)據(jù)、會(huì)被頻繁訪問(wèn)到的數(shù)據(jù)存儲(chǔ)在私有云存儲(chǔ)中,可以保證混合云存儲(chǔ)可以提供一個(gè)較高的訪問(wèn)性能;
- High Security and Controllability:因?yàn)榛旌显拼鎯?chǔ)中的私有云部分的軟、硬件資源都是自擁有和獨(dú)享的,所以將重要、敏感的數(shù)據(jù)信息保存在私有云存儲(chǔ)中,可以實(shí)現(xiàn)更高的可控制性和安全性;
- Unlimited Capacity:因?yàn)榕c公有云存儲(chǔ)的互通,借由公有云存儲(chǔ)***容量的特性,混合云存儲(chǔ)也具備了***容量的特性;
- Relatively Low Cost:可以選擇將一些歸檔數(shù)據(jù)、不常訪問(wèn)的數(shù)據(jù)以及訪問(wèn)性能要求不高的數(shù)據(jù)存儲(chǔ)到公有云存儲(chǔ)中,在節(jié)省了私有云存儲(chǔ)部分的成本的同時(shí),還能擁有公有云存儲(chǔ)按需分配的成本優(yōu)勢(shì),因此混合云存儲(chǔ)相較于私有云存儲(chǔ),也具有低成本的優(yōu)勢(shì)。
現(xiàn)有解決方案的局限性
混合云存儲(chǔ)相較于公有云存儲(chǔ)和私有云存儲(chǔ)會(huì)更加全面,更加完善。Ceph 的對(duì)象存儲(chǔ)針對(duì)混合云的場(chǎng)景,也相應(yīng)的提供了解決方案,即云同步Cloud Sync 功能。Ceph RGW 的Cloud Sync 功能是基于RGW Multisite 機(jī)制實(shí)現(xiàn)的,先看下RGW Multisite 機(jī)制。
RGW Multisite
Ceph RGW 的 Multisite 機(jī)制用于實(shí)現(xiàn)多個(gè)Ceph 對(duì)象存儲(chǔ)集群間數(shù)據(jù)同步,其涉及到的核心概念包括:
- zone:對(duì)應(yīng)于一個(gè)獨(dú)立的集群,由一組 RGW 對(duì)外提供服務(wù)。
- zonegroup:顧名思義,每個(gè) zonegroup 可以對(duì)應(yīng)多個(gè)zone,zone 之間同步數(shù)據(jù)和元數(shù)據(jù)。
- realm:每個(gè)realm都是獨(dú)立的命名空間,可以包含多個(gè) zonegroup,zonegroup 之間同步元數(shù)據(jù)。
Multisite 的工作機(jī)制如下:
因?yàn)镸ultisite 是一個(gè)zone 層面的功能處理機(jī)制,所以默認(rèn)情況下,是zone 級(jí)的數(shù)據(jù)同步,即配置了Multisite 之后,整個(gè)zone 當(dāng)中的數(shù)據(jù)都會(huì)被進(jìn)行同步處理。
整個(gè)zone 層面的數(shù)據(jù)同步,操作粒度過(guò)于粗糙,在很多場(chǎng)景下都是非常不適用的。當(dāng)前,Ceph RGW 還支持通過(guò) bucket syncenable/disable 來(lái)啟用/禁用存儲(chǔ)桶級(jí)的數(shù)據(jù)同步,操作粒度更細(xì),靈活度也更高。
RGW Cloud Sync
基于RGW multisite 實(shí)現(xiàn)了 Cloud Sync,支持將Ceph 中的對(duì)象數(shù)據(jù)同步到支持 S3 接口的公有云存儲(chǔ)中,默認(rèn)為zone 級(jí)的數(shù)據(jù)同步。由上面的介紹可知,RGW的 Multisite 機(jī)制是用于實(shí)現(xiàn)多個(gè)Ceph 對(duì)象存儲(chǔ)集群之間、多數(shù)據(jù)中心之間數(shù)據(jù)同步的。而 zone 本身是一個(gè)抽象的概念,那么從一個(gè)抽象程度更高的角度來(lái)看,它不單單可以代表一個(gè) Ceph 對(duì)象存儲(chǔ)集群。
RGW Cloud Sync 功能正是基于這樣的思想所實(shí)現(xiàn)的。在 Cloud Sync 框架中,slave zone 不再僅僅對(duì)應(yīng)一個(gè) Ceph 對(duì)象存儲(chǔ)集群,而是一個(gè)抽象程度更高的概念,即可以代表任何一個(gè)集群,而這個(gè)集群可以是 Ceph 對(duì)象存儲(chǔ)集群,當(dāng)然,也可以是AWS的S3。Cloud Sync 功能正是將支持 S3 接口的存儲(chǔ)集群,抽象為 slave zone 的概念,然后通過(guò)Multisite 機(jī)制,實(shí)現(xiàn)將 Ceph 中的對(duì)象數(shù)據(jù)同步到外部對(duì)象存儲(chǔ)中。
可以通過(guò) bucket sync enable/disable啟用/禁用存儲(chǔ)桶級(jí)的數(shù)據(jù)同步 。
Cloud Sync的局限性
在使用 Ceph 對(duì)象存儲(chǔ)時(shí), RGW 的 Cloud Sync 功能實(shí)際上是基本可以滿足混合云存儲(chǔ)的應(yīng)用場(chǎng)景的,但就當(dāng)前 RGW Cloud Sync 功能的實(shí)現(xiàn)來(lái)說(shuō),還存在如下的局限性:
支持的同步粒度最細(xì)為存儲(chǔ)桶級(jí),在某些應(yīng)用場(chǎng)景下,存儲(chǔ)桶級(jí)的同步粒度是不夠靈活的;時(shí)間控制,RGW Multisite 的數(shù)據(jù)同步處理是通過(guò) RGW 自身的協(xié)程庫(kù)實(shí)現(xiàn)的,整個(gè)處理過(guò)程是異步完成的,且數(shù)據(jù)同步處理的起始時(shí)間無(wú)法人為控制,所以這個(gè)數(shù)據(jù)同步處理的時(shí)間控制不夠靈活,一些時(shí)間敏感的場(chǎng)景并不適用。
基于Ceph的分級(jí)混合云存儲(chǔ)方案UMStor
有了上面這諸多局限性,我們開(kāi)始考慮能否實(shí)現(xiàn)一種管理粒度更細(xì)、時(shí)間可控性更好的機(jī)制,來(lái)提供一種更為靈活的數(shù)據(jù)管理和遷移方案。通過(guò)對(duì)象數(shù)據(jù)存儲(chǔ)分級(jí)、對(duì)象生命周期管理、自動(dòng)生成遷移等系列實(shí)踐,我們開(kāi)發(fā)了一款基于Ceph的分級(jí)混合云存儲(chǔ)解決方案UMStor。
解決方案一:對(duì)象數(shù)據(jù)存儲(chǔ)升級(jí)
首先,我會(huì)介紹我們?nèi)绾卧?Ceph 對(duì)象存儲(chǔ)中實(shí)現(xiàn) Storage Class,對(duì)對(duì)象數(shù)據(jù)進(jìn)行存儲(chǔ)分級(jí)。
對(duì)存儲(chǔ)系統(tǒng)分級(jí)
為什么要對(duì)存儲(chǔ)系統(tǒng)進(jìn)行分級(jí)?我覺(jué)得可以從如下三方面進(jìn)行考慮。
1.存儲(chǔ)介質(zhì)
首先,在存儲(chǔ)集群當(dāng)中,出于對(duì)訪問(wèn)性能、成本等因素的考慮,我們可能會(huì)同時(shí)引入 SSD 和 HDD。在這種情況下,如果不進(jìn)行存儲(chǔ)分級(jí),就可能會(huì)導(dǎo)致某些對(duì)訪問(wèn)性能要求不高的數(shù)據(jù),或是歸檔數(shù)據(jù),被存儲(chǔ)在 SSD 中,而某些對(duì)訪問(wèn)性能要求較高的數(shù)據(jù)則被存儲(chǔ)在了 HDD 中,這無(wú)疑會(huì)影響數(shù)據(jù)的訪問(wèn)性能,同時(shí)也提高了數(shù)據(jù)的存儲(chǔ)成本。
2.存儲(chǔ)策略
- 副本
- 副本
- Erasure Code
那有的數(shù)據(jù)對(duì)可靠性要求很高,我們才會(huì)將其以三副本的形式進(jìn)行存儲(chǔ)。可能有的數(shù)據(jù),我們對(duì)它的可靠性要求沒(méi)那么高,那我們可以考慮將其以兩副本的形式進(jìn)行存儲(chǔ),節(jié)省存儲(chǔ)空間。
3.存儲(chǔ)提供商
- UCloud
- AWS S3
所以說(shuō),對(duì)存儲(chǔ)系統(tǒng)進(jìn)行存儲(chǔ)分級(jí),實(shí)際上是非常必要的。
RGW 數(shù)據(jù)存放規(guī)則
本身在 RGW 中,是存在placement rule概念的,即數(shù)據(jù)的存放規(guī)則。可以在placement rule 中定義存儲(chǔ)桶索引數(shù)據(jù)存放的存儲(chǔ)池index pool,對(duì)象數(shù)據(jù)存放的存儲(chǔ)池data pool,以及通過(guò)Multipart 上傳大文件時(shí)臨時(shí)數(shù)據(jù)存放的存儲(chǔ)池data extra pool。
因?yàn)閜lacement rule 是針對(duì)所使用的存儲(chǔ)池進(jìn)行定義,而存儲(chǔ)池是位于zone 之下的概念,所以在RGW 中將placement rule 作為一個(gè)zone 級(jí)別的配置,其作用影響的粒度為存儲(chǔ)桶級(jí),即可以指定存儲(chǔ)桶所使用的placement rule ,那所有上傳到該存儲(chǔ)桶中的對(duì)象數(shù)據(jù)都會(huì)按照該存儲(chǔ)桶的placement rule 定義的存放規(guī)則進(jìn)行存放。用戶可以通過(guò)為不同的存儲(chǔ)桶配置不同的placement rule 來(lái)實(shí)現(xiàn)將不同存儲(chǔ)桶中的對(duì)象數(shù)據(jù)存放在不同的存儲(chǔ)介質(zhì)中或是使用不同的存儲(chǔ)策略。
然而,存儲(chǔ)桶級(jí)的數(shù)據(jù)存放規(guī)則,顯然不夠靈活,無(wú)法滿足某些應(yīng)用場(chǎng)景的需求。
對(duì)象數(shù)據(jù)存儲(chǔ)策略
Storage Class 這一概念,本身是AWS S3 中的一個(gè)重要的特性。在S3 中,每個(gè)對(duì)象都具有 “storage-class” 這一屬性,用于定義該對(duì)象數(shù)據(jù)的存儲(chǔ)策略。在 S3 中Storage Class 特性支持如下幾個(gè)預(yù)定義的存儲(chǔ)策略:
- STANDARD針對(duì)頻繁訪問(wèn)數(shù)據(jù);
- STANDARD_IA用于不頻繁訪問(wèn)但在需要時(shí)也要求快速訪問(wèn)的數(shù)據(jù);
- ONEZONE_IA用于不頻繁訪問(wèn)但在需要時(shí)也要求快速訪問(wèn)的數(shù)據(jù)。其他 Amazon 對(duì)象存儲(chǔ)類將數(shù)據(jù)存儲(chǔ)在至少三個(gè)可用區(qū)(AZ) 中,而S3 One Zone-IA 將數(shù)據(jù)存儲(chǔ)在單個(gè)可用區(qū)中;
- REDUCED_REDUNDANCY主要是針對(duì)一些對(duì)存儲(chǔ)可靠性要求不高的數(shù)據(jù),通過(guò)減少數(shù)據(jù)存儲(chǔ)的副本數(shù),來(lái)降低存儲(chǔ)成本;
- GLACIER。
結(jié)合上面介紹的分布式存儲(chǔ)系統(tǒng)對(duì)存儲(chǔ)分級(jí)的需求,以及當(dāng)前 RGW 中所支持的data placement rule 的機(jī)制,我們?cè)贑eph 對(duì)象存儲(chǔ)中引入了object storage class 的概念。
- 首先,我們對(duì)存儲(chǔ)池的概念進(jìn)行了更高程度的抽象,不僅可以按照當(dāng)前 Ceph 對(duì)象存儲(chǔ)支持,同時(shí):可以按照不同的存儲(chǔ)介質(zhì)來(lái)劃分存儲(chǔ)池 (HDD/SSD);可以按照不同的存儲(chǔ)策略(數(shù)據(jù)冗余策略)來(lái)劃分存儲(chǔ)池 (2x Replication/ 3x Replication/ Erasure Code);可以把外部存儲(chǔ) (包括外部公有云存儲(chǔ)、私有云存儲(chǔ)) 抽象為存儲(chǔ)池;
- 將 RGW zone 的 placement rule 的作用范圍進(jìn)行了細(xì)粒度化的處理,使其作用到對(duì)象級(jí)別,實(shí)現(xiàn)了對(duì)象級(jí)別的存儲(chǔ)分級(jí), 即使是同一個(gè)存儲(chǔ)桶中,不同的對(duì)象數(shù)據(jù)也可以保存在不同的存儲(chǔ)池中。
解決方案二:對(duì)象生命周期管理
在實(shí)現(xiàn)了對(duì)象級(jí)別的 Storage Class 功能之后,我們開(kāi)始考慮,如何實(shí)現(xiàn)數(shù)據(jù)遷移時(shí)間的可控性。這也就是下面我們要介紹的內(nèi)容。
AWS S3 對(duì)象生命周期管理
對(duì)象生命周期管理也是AWS S3 中一個(gè)非常重要的特性,通過(guò)為存儲(chǔ)桶設(shè)置生命周期管理規(guī)則,可以對(duì)存儲(chǔ)桶中特定的對(duì)象集進(jìn)行生命周期管理。當(dāng)前,AWS S3 的對(duì)象生命周期管理支持:
- 遷移處理,即支持在經(jīng)過(guò)指定的時(shí)間間隔后,或是到達(dá)某一特定時(shí)間點(diǎn)時(shí),將存儲(chǔ)桶中的特定對(duì)象集由當(dāng)前的 storage class 存儲(chǔ)類別遷移到另外一個(gè)指定的 storage class 存儲(chǔ)類別中;
- 過(guò)期刪除處理,即支持在經(jīng)過(guò)指定的時(shí)間間隔后,或是到達(dá)某一特定時(shí)間點(diǎn)時(shí),將存儲(chǔ)桶中的特定對(duì)象集進(jìn)行清除。
RGW 對(duì)象生命周期管理
當(dāng)前,Ceph RGW 對(duì)象存儲(chǔ)實(shí)際上也支持LC 對(duì)象生命周期管理。但是,因?yàn)?RGW 本身并不支持object storage class / placement rule,因此其對(duì)象生命周期管理目前只支持Expiration actions 過(guò)期刪除處理。
實(shí)現(xiàn)完整的對(duì)象生命周期管理
基于上面實(shí)現(xiàn)的 Object Storage Class,在RGW 現(xiàn)有 LC 實(shí)現(xiàn)的基礎(chǔ)上,我們對(duì)RGW LC 的處理邏輯進(jìn)行了擴(kuò)展,實(shí)現(xiàn)了LC 遷移功能,支持通過(guò)對(duì)象生命周期管理,將對(duì)象數(shù)據(jù)遷移到其他存儲(chǔ)類別 storage class 中,例如支持從SSD 遷移到 HDD,從3 副本池遷移到 2 副本池,從副本池遷移到糾刪碼池,從 Ceph 集群中遷移到外部Ufile 公有云存儲(chǔ)等等,從而實(shí)現(xiàn)了完整的對(duì)象生命周期管理。支持標(biāo)準(zhǔn)的 AWS S3 ObjectLifecycle Management 的相關(guān)接口。
由上面的介紹,我們實(shí)現(xiàn)的Storage Class 功能是支持將外部存儲(chǔ)指定為一個(gè)存儲(chǔ)類別的,因此,支持通過(guò)配置存儲(chǔ)桶的LC 規(guī)則,將該存儲(chǔ)桶中的某一特定對(duì)象集遷移到外部存儲(chǔ)中,如UFile、S3 等等。
相較于 RGW 的Cloud Sync 功能,通過(guò)配置LC 遷移規(guī)則將Ceph 集群中的對(duì)象數(shù)據(jù)遷移到外部云存儲(chǔ)具有如下優(yōu)點(diǎn):
1. 操作的粒度更細(xì),可以直接以對(duì)象為單位,對(duì)數(shù)據(jù)進(jìn)行操作;
2. 時(shí)間可控,可以通過(guò)在 LC 規(guī)則當(dāng)中對(duì)操作生效的時(shí)間進(jìn)行配置指定,人為控制數(shù)據(jù)遷移的時(shí)間,時(shí)間可控性更強(qiáng);
至此,我們已經(jīng)在Ceph 對(duì)象存儲(chǔ)的基礎(chǔ)上,實(shí)現(xiàn)了一套完整的、全粒度支持的數(shù)據(jù)遷移處理機(jī)制,從zone 級(jí)、到bucket 級(jí)、再到object 級(jí)、基本可以覆蓋所有應(yīng)用場(chǎng)景的常見(jiàn)需求。
解決方案三:自動(dòng)生成遷移策略
存儲(chǔ)桶日志
存儲(chǔ)桶日志是用于記錄追蹤對(duì)某一特定存儲(chǔ)桶的操作和訪問(wèn)的功能特性。存儲(chǔ)桶日志的每條日志記錄都記錄了一次對(duì)相應(yīng)存儲(chǔ)桶的操作訪問(wèn)請(qǐng)求的細(xì)節(jié),例如請(qǐng)求的發(fā)起者、存儲(chǔ)桶名字、請(qǐng)求時(shí)間、請(qǐng)求的操作、返回的狀態(tài)碼等等。
自動(dòng)生成遷移策略
根據(jù)存儲(chǔ)桶日志中的操作記錄、以及可配置的標(biāo)尺參數(shù),對(duì)存儲(chǔ)桶中的對(duì)象數(shù)據(jù)的熱度進(jìn)行分析,并按照分析結(jié)果自動(dòng)生成遷移策略,對(duì)對(duì)象數(shù)據(jù)進(jìn)行管理。一張圖來(lái)概要介紹下處理流程:
- 從target bucket 中讀取存儲(chǔ)桶日志;
- 對(duì)日記記錄進(jìn)行過(guò)濾、分析,得到用戶配置的規(guī)則中所標(biāo)定的對(duì)象數(shù)據(jù)的訪問(wèn)熱度;
- 生成相應(yīng)的生命周期管理規(guī)則;
- 將生成的生命周期管理規(guī)則配置到相應(yīng)的存儲(chǔ)桶上。
關(guān)于未來(lái)
基于Ceph對(duì)象存儲(chǔ)的分級(jí)混合云存儲(chǔ)方案能夠很好的滿足使用者的需求,但是在支持?jǐn)?shù)據(jù)雙向同步、代理讀寫(xiě)等功能上還要繼續(xù)完善。