摘? 要:近年來,Ceph越來越受到各大企業(yè)和高校的青睞。它的可靠性,可擴(kuò)展性,使得Ceph在眾多存儲(chǔ)開源產(chǎn)品中脫穎而出,Ceph的對(duì)象存儲(chǔ)是其應(yīng)用場(chǎng)景較為廣泛的功能。隨著直播等自媒體的興起,人們對(duì)于對(duì)象存儲(chǔ)的要求不只局限于功能上的使用,當(dāng)把Ceph對(duì)象存儲(chǔ)進(jìn)行商業(yè)化時(shí)候,對(duì)其性能的要求也是越來越高。該文引入“虛擬容器”的概念,通過增加一層容器以及對(duì)應(yīng)算法,解決原有的索引瓶頸,使得在數(shù)據(jù)遍歷,搜索等方面發(fā)揮更好的效果。
關(guān)鍵詞:對(duì)象存儲(chǔ);虛擬容器;索引
中圖分類號(hào):TP393.09? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)20-0128-03
Application of Virtual Container Architecture in Ceph
JING Wenjun
(China Mobile(Suzhou)Software Technology Co.,Ltd.,Suzhou? 215153,China)
Abstract:Recently,Ceph has been increasingly attracted by enterprises and universities. Its reliability and extensibility make Ceph stand out among the store open source products. Cephs object storage is a more extensive function of its application scenarios. With the rise of self-media such as live broadcasts,peoples requirements for object storage are not limited to functional use. When Ceph object storage is commercialized,its performance requirements are getting higher and higher. The artical introduces the concept of “virtual container”,by adding a layer of container and the algorithm,to solve the original index bottleneck,so as to play a better effect in data traversal,search and other aspects.
Keywords:object storage;virtual container;index
0? 引? 言
Ceph對(duì)象存儲(chǔ)單個(gè)容器的性能指標(biāo)備受各大企業(yè)應(yīng)用的關(guān)注,當(dāng)容器對(duì)象到達(dá)一定數(shù)量級(jí)(千萬(wàn)級(jí))時(shí),容器遍歷性能會(huì)大受影響。目前,在容器遍歷性能的改進(jìn)方面鮮有研究,大部分的做法是通過增加底層磁盤性能進(jìn)行提升,比如使用磁盤緩存設(shè)備,或者直接使用高性能磁盤。
作者在從事的日常集群維護(hù)工作中也遇到上述容器遍歷的性能問題,隨著用戶容器數(shù)量的增加,對(duì)象頻繁遍歷會(huì)使得上層應(yīng)用等待時(shí)間過久而超時(shí)。因此作者以此背景進(jìn)行研究,本文提出虛擬容器概念和子容器分配算法,在原容器上增加虛擬容器層,在用戶層面該虛擬容器所有功能與原容器一致。虛擬容器和子容器之間通過一致性算法進(jìn)行對(duì)象分配,這種偽隨機(jī)分配算法可以使得各個(gè)子容器對(duì)象數(shù)量相對(duì)均勻,同時(shí)對(duì)象的子容器分配路徑是“固定的”,即可以計(jì)算得出,且在動(dòng)態(tài)增加或減少子容器時(shí)對(duì)象移動(dòng)的開銷最小。所以在一定硬件條件下,虛擬容器架構(gòu)可以提高容器可支持最大遍歷對(duì)象數(shù)量,文中最后給出了不同存儲(chǔ)設(shè)備后端的容器最大容量的建議值。本文的讀者對(duì)象建議為研究人員或者相關(guān)企業(yè)單位從事云計(jì)算領(lǐng)域?qū)<摇?/p>
1? Ceph對(duì)象存儲(chǔ)
隨著云計(jì)算生態(tài)環(huán)境的日漸成熟,軟件定義產(chǎn)品呼聲高漲,越來越多的企業(yè)和用戶選擇上云。Ceph作為軟件定義存儲(chǔ)的優(yōu)秀開源代表之一,有著成熟社區(qū)的支撐,開源峰會(huì)的推廣和優(yōu)秀企業(yè)的打磨,使得Ceph由開源界的“網(wǎng)紅”逐步成長(zhǎng)為“元老”,打造開源存儲(chǔ)屆的“Linux”。對(duì)象存儲(chǔ)是Ceph應(yīng)用廣泛的功能之一,網(wǎng)盤的對(duì)接、直播數(shù)據(jù)的存儲(chǔ)、監(jiān)控視頻的存儲(chǔ)都離不開它,只要有一臺(tái)能訪問公網(wǎng)的計(jì)算機(jī)隨時(shí)隨地可以使用對(duì)象存儲(chǔ)。
2? 數(shù)據(jù)存儲(chǔ)方式
Ceph的對(duì)象存儲(chǔ)網(wǎng)關(guān)(Rados Gateway,RGW)提供了REST API,除了提供了原始的接口層,還兼容了AWS的S3接口和OpenStack的Swift接口,用戶可以根據(jù)需求進(jìn)行使用和定制。一般來說對(duì)象存儲(chǔ)由用戶(user),桶或容器(bucket),對(duì)象(object)資源組成。桶歸屬于用戶,每個(gè)桶可以存放多個(gè)對(duì)象,該對(duì)象一般是非結(jié)構(gòu)化的數(shù)據(jù)。
3? 現(xiàn)有數(shù)據(jù)存儲(chǔ)流程
存儲(chǔ)桶是用來存放對(duì)象的容器,含基礎(chǔ)信息和擴(kuò)展信息?;A(chǔ)信息主要是一些桶的標(biāo)準(zhǔn)元數(shù)據(jù)信息,比如桶的配額,placement rule,bucket的使用容量和bucket對(duì)象數(shù)目等。擴(kuò)展信息主要是bucket的一些用戶自定義元數(shù)據(jù)信息。
在bucket的palcement rule里面記錄了數(shù)據(jù)的存放位置,如圖1所示。
存儲(chǔ)池default.rgw.buckets.index是圖1中index pool,用來存放bucket的索引對(duì)象。當(dāng)容器容量到達(dá)一定規(guī)模,處理客戶端遍歷容器內(nèi)對(duì)象(list)請(qǐng)求后Ceph會(huì)出現(xiàn)請(qǐng)求等待的性能瓶頸,即隊(duì)列繁忙導(dǎo)致其他請(qǐng)求阻塞(blocked)。為了提高索引效率,容器支持調(diào)整分片數(shù),該分片用于關(guān)聯(lián)容器的索引對(duì)象,對(duì)象元數(shù)據(jù)可關(guān)聯(lián)在容器不同的分片上,在處理遍歷請(qǐng)求時(shí),所有分片可以異步進(jìn)行遍歷,一定程度上能夠提升性能。在此基礎(chǔ)上性能要突破需要依賴于硬件。
步驟2:當(dāng)1 步驟3:創(chuàng)建N個(gè)子容器; 步驟4:根據(jù)子容器id通過一致性Hash算法得到子容器對(duì)應(yīng)的Hash環(huán)位置; 步驟5:處理對(duì)象的相關(guān)請(qǐng)求時(shí),解析請(qǐng)求中對(duì)象名稱(key),根據(jù)key通過一致性Hash算法得到Hash環(huán)位置,并在Hash環(huán)上按照順時(shí)針方向找到最近的目標(biāo)子容器; 步驟6:最后該對(duì)象根據(jù)步驟5獲取的目標(biāo)子容器進(jìn)行存放。 6? 實(shí)際應(yīng)用 我們對(duì)上述方法進(jìn)行了模擬對(duì)比。集群配置如下: 操作系統(tǒng):CentOS 7.3;集群數(shù)量:20臺(tái);磁盤數(shù)量:200個(gè),表2測(cè)試場(chǎng)景中采用HDD(機(jī)械盤)和Bcache(緩存盤)進(jìn)行對(duì)比。每臺(tái)物理機(jī)2張網(wǎng),帶寬均為萬(wàn)兆,網(wǎng)卡綁定模式為mode1,物理機(jī)內(nèi)存64 GB。mon數(shù)量:3個(gè);osd數(shù)量200個(gè);對(duì)象存儲(chǔ)網(wǎng)關(guān)數(shù)量:3個(gè);rgw_override_bucket_index_max_shards配置為128。 通過實(shí)驗(yàn)可得出單容器可支持的對(duì)象最大遍歷數(shù)如表2所示。 從上述對(duì)比可知虛擬容器架構(gòu)的性能要優(yōu)于原架構(gòu)性能。 7? 結(jié)? 論 本文指出了Ceph對(duì)象存儲(chǔ)在現(xiàn)有的元數(shù)據(jù)池分片架構(gòu)中,單容器存儲(chǔ)大量對(duì)象的遍歷性能問題。通過增加“虛擬容器”算法的方式對(duì)單容器存儲(chǔ)架構(gòu)進(jìn)行優(yōu)化。使得對(duì)象存放到虛擬容器時(shí),通過一致性算法能夠與“子容器”形成“固定的”對(duì)應(yīng)關(guān)系,即這種對(duì)應(yīng)關(guān)系是偽隨機(jī)的,相同對(duì)象的存儲(chǔ)路徑不隨不同的時(shí)間段的操作而改變,能夠大大地提高容器遍歷和查詢對(duì)象的性能。 參考文獻(xiàn): [1] WEIL S A. Ceph:Reliable, scalable, and high-performance distributed storage [D]. SANTA CRUZ:University of California,Santa Cruz,2007. [2] 謝型果.Ceph設(shè)計(jì)原理與實(shí)現(xiàn) [M].北京:機(jī)械工業(yè)出版社,2017. [3] 葉毓睿,雷迎春,李炫輝,等.軟件定義存儲(chǔ):原理、實(shí)踐與生態(tài) [M].北京:機(jī)械工業(yè)出版社,2016. [4] 張冬.大話存儲(chǔ):存儲(chǔ)系統(tǒng)底層架構(gòu)原理極限剖析(終極版) [M].北京:清華大學(xué)出版社,2015. [5] SINGH K.Ceph Cookbook [M].Ceph中國(guó)社區(qū),KVM云技術(shù)社區(qū),譯.北京:電子工業(yè)出版社,2016. 作者簡(jiǎn)介:荊文軍(1990.09—),男,漢族,江蘇丹陽(yáng)人,中級(jí)工程師,碩士研究生,主要研究方向:云計(jì)算。