探究雅虎百億億次計(jì)算級(jí)別的 Ceph 存儲(chǔ)
像Yahoo、Facebook這樣的企業(yè)都需要存儲(chǔ)數(shù)億級(jí)的用戶圖片,他們都在為實(shí)現(xiàn)這個(gè)目標(biāo)而努力,Yahoo將非結(jié)構(gòu)數(shù)據(jù)的MObStor對(duì)象存儲(chǔ)系統(tǒng)轉(zhuǎn)移到了Ceph上,并且正在部署***的基于Ceph的系統(tǒng)—云對(duì)象存儲(chǔ),Yahoo在數(shù)百個(gè)PB級(jí)規(guī)模上操作,顯然已經(jīng)是業(yè)內(nèi)老大。
任何超級(jí)巨頭們都不會(huì)等待IT產(chǎn)業(yè)技術(shù)的自我更新,來滿足自己應(yīng)用的需求,但是當(dāng)一個(gè)可替代的開源項(xiàng)目成長足夠成熟,巨頭們通常會(huì)從自己的軟件到其他棧上做跨越式部署。從雅虎的門戶網(wǎng)站上我們可以清晰的看到,Yahoo的重心從自己研發(fā)的對(duì)象存儲(chǔ)轉(zhuǎn)移到了即將成為exascale級(jí)別的系統(tǒng),這個(gè)系統(tǒng)基于開源項(xiàng)目Ceph,一種Swiss army knife的存儲(chǔ)。
這樣的跨越并不常見,因?yàn)檫@些超級(jí)公司更傾向去超越技術(shù)規(guī)模的限制,不論是他們自己的技術(shù)還是開源項(xiàng)目,當(dāng)然通常是開源項(xiàng)目。但這種情況確實(shí)存在。比如說這周早些時(shí)候談到的平臺(tái),媒體巨頭Netflix,它一直使用Cassandra NoSQL 數(shù)據(jù)庫的一個(gè)自定義版本來作為控制流媒體服務(wù)和用戶交互的后端,去年秋天,它將端口從DataStax轉(zhuǎn)移到Cassandra的商業(yè)級(jí)別的 variant上。而Yahoo正在進(jìn)行一次更大的跨越,他們將自己研發(fā)的用于非結(jié)構(gòu)數(shù)據(jù)的MObStor對(duì)象存儲(chǔ)系統(tǒng)轉(zhuǎn)移到了Ceph上,Yahoo的架構(gòu)副總監(jiān)說,他們這次的變化是經(jīng)過慎重考慮的。
所有的信息技術(shù)都從cat圖片開始
雅虎是對(duì)象存儲(chǔ)領(lǐng)域規(guī)模上的創(chuàng)新者,就如同F(xiàn)acebook和他的Haystack系統(tǒng),Amazon和他的S3系統(tǒng),Mosso Cloud Files系統(tǒng)曾經(jīng)是Rackspace Hosting的Swift對(duì)象存儲(chǔ)的基礎(chǔ),而現(xiàn)在已成為OpenStack云控制器的一部分。Yahoo和Facebook都要存儲(chǔ)數(shù)億級(jí)別的用戶圖片,處理PB級(jí)別的容量,這就迫使他們開發(fā)自己的系統(tǒng),實(shí)現(xiàn)更高效的圖片存儲(chǔ)功能,亞馬遜和Rackspace假設(shè),創(chuàng)建云應(yīng)用的用戶同樣希望將豐富的媒體嵌入到圖片上,所以他們想將對(duì)象存儲(chǔ)變成他們公有云的一部分。
上面提到的所有對(duì)象存儲(chǔ)系統(tǒng),Haystack、 MObStor、 S3、Cloud Files/Swift, 他們被開發(fā)都是因?yàn)槲募到y(tǒng)中常規(guī)存儲(chǔ)陣列都存在非常大系統(tǒng)開銷,這是因?yàn)橛脕砀檶?duì)象的元數(shù)據(jù)存在于集群中。對(duì)象存儲(chǔ)剛好忽略了文件系統(tǒng),并將所有數(shù)據(jù)放在同一個(gè)bucket里,然后使用一個(gè)key,比如文件名或web的地址,在集群中找到該數(shù)據(jù)。這樣可以使元數(shù)據(jù)的開銷更小,因?yàn)闆]有文件系統(tǒng)與之抗衡。
十幾年前,早期的雅虎圖片服務(wù)器是由一個(gè)特殊的存儲(chǔ)系統(tǒng)來處理非結(jié)構(gòu)數(shù)據(jù),其之后是一個(gè)由Yahoo開發(fā),被稱為MObStor的系統(tǒng),它是一個(gè)用起來更加復(fù)雜、更具有普遍性的對(duì)象存儲(chǔ)系統(tǒng),Yahoo于2009年的夏天***公開提及MObStor。2005年,雅虎的圖片分享網(wǎng)站Flickr急需一種類似于對(duì)象存儲(chǔ)的技術(shù),然而當(dāng)時(shí)MObStor被雅虎應(yīng)用程序用來儲(chǔ)存JavaScript和HTML代碼以及富媒體,在2010年夏天,雅虎的工程師更新了MObStor,這在當(dāng)時(shí)非常先進(jìn),這也是在六個(gè)月內(nèi)系統(tǒng)的處理能力增長了4X(倍)的一個(gè)因素。當(dāng)Yahoo揭露MObSto的時(shí)候,它仍在運(yùn)作,而且運(yùn)行在專用系統(tǒng)Direct Object Repository Architecture (DORA)上,DORA是針對(duì)MObStor的一個(gè)新后端,被稱作是一個(gè)集群對(duì)象存儲(chǔ)系統(tǒng),它在很多方面與Ceph非常相似。MObStor是DORA 后端系統(tǒng)的接口,Yahoo的程序員寫這個(gè)系統(tǒng)是因?yàn)樗麄冃枰鎯?chǔ)非結(jié)構(gòu)性內(nèi)容,比如照片、視頻和其他類似的數(shù)據(jù)。DORA是運(yùn)行在普通硬件和存儲(chǔ)應(yīng)用上的,雅虎當(dāng)時(shí)還不太明確這些意味著什么,但是DORA后端特點(diǎn)允許Yahoo在更廉價(jià)的系統(tǒng)上做對(duì)象存儲(chǔ),這也就說明了一切。
我們將在數(shù)百個(gè)PB級(jí)規(guī)模上操作,我不知道其他Ceph社區(qū)是否還會(huì)這樣做。如果我們不是***的,那么我們就會(huì)成為***的產(chǎn)品用戶,而且我們很可能會(huì)去尋找適合我們規(guī)模的版本。你只需要看雅虎這個(gè)規(guī)模的數(shù)據(jù),不用看傳統(tǒng)的那些。
經(jīng)過一些改進(jìn),McMillen說貫穿Yahoo所有的服務(wù)和中心數(shù)據(jù),如果將對(duì)象、塊和文件存儲(chǔ)疊加在一起,這將是一個(gè)exabyte級(jí)別的存儲(chǔ)。在發(fā)布過的一篇微博中說到,Yahoo從MObStor遷移到Ceph上是因?yàn)镕lickr上的照片分享服務(wù),公司說那有250億個(gè)對(duì)象,將近500PB的照片、視頻、郵件和博客帖子。這些都是為用戶存儲(chǔ)的,并且存儲(chǔ)量仍以每年百分之20-25速度增長。
根據(jù)McMillen所述,MObStor具有“完整特性”,它廣泛部署于雅虎。那么如果MObStor真的被廣泛應(yīng)用和被看好,為什么Yahoo卻熱衷于一個(gè)新的技術(shù)了?不管怎樣這些都涉及到了錢。
首先,MObStor是一個(gè)閉源項(xiàng)目,這意味著雅虎不得不獨(dú)立完成創(chuàng)建、擴(kuò)展和所有支撐工具。與之對(duì)應(yīng)的是Yahoo所創(chuàng)的Hadoop數(shù)據(jù)分析平臺(tái),這是一個(gè)開源項(xiàng)目,在這個(gè)平臺(tái)有一群資深的工程師,他們?cè)诓粩喔倪M(jìn)平臺(tái)上的所有的layer,這體現(xiàn)出了社區(qū)的價(jià)值。
"我想說,轉(zhuǎn)向Ceph的最主要是因?yàn)槲覀儍H僅想降低存儲(chǔ)費(fèi)用",McMillen解釋,"我們的存儲(chǔ)已經(jīng)增長了許多,我們?cè)诒M可能得縮減成本,盡可能得擁有更多的選擇,而不是堅(jiān)守著一個(gè)系統(tǒng),一種技術(shù)或一種硬件架構(gòu)。
原始的MObStor對(duì)象存儲(chǔ)是運(yùn)行在存儲(chǔ)陣列上,存儲(chǔ)陣列上有動(dòng)態(tài)保護(hù)RAID數(shù)據(jù),保證了文件安全。隨著DORA的使用,雅虎增加了選項(xiàng),用來復(fù)制存儲(chǔ)集群中陣列之間的數(shù)據(jù)。RAID和復(fù)制帶來了一個(gè)很大的開銷,而 McMillen卻不愿意透漏出任何有關(guān)MObStor與Ceph在這個(gè)方面對(duì)比的詳細(xì)信息。但他卻說過,對(duì)傳統(tǒng)對(duì)象存儲(chǔ)系統(tǒng)的檢查發(fā)現(xiàn),這個(gè)開銷對(duì)三路復(fù)制來說為200%,伴隨著糾刪碼技術(shù)運(yùn)用到Ceph及其他的對(duì)象存儲(chǔ),能將開銷降低到40-60%,這些能在雅虎安裝調(diào)試Ceph中看到,McMillen說最接近的40%的開銷在糾刪碼保護(hù)校驗(yàn)來確定數(shù)據(jù)的原始性。這個(gè)意味著雅虎在Ceph上存儲(chǔ)容量的開銷是用傳統(tǒng)對(duì)象存儲(chǔ)的一半,而且還是三副本。
MObStor/DORA不支持糾刪碼,雅虎不得不將這個(gè)移植到該系統(tǒng)上,這可意味著大量的開發(fā)和測試的工作量的產(chǎn)生。另一方面Ceph是一個(gè) exascale級(jí)部署設(shè)計(jì),它有糾刪碼技術(shù)以確保數(shù)據(jù)的內(nèi)建。(有了糾刪碼,少量無結(jié)構(gòu)數(shù)據(jù)碎片和分散存儲(chǔ),或者如果一部分丟失,糾刪碼算法可以重建丟失數(shù)據(jù))
#p#
云對(duì)象存儲(chǔ)
雅虎正在部署***的基于Ceph的系統(tǒng),它被稱為云對(duì)象存儲(chǔ),從去年秋天開始,它已經(jīng)被雅虎stack的Flickr部門試驗(yàn)。Flickr在管理上有“多PB級(jí)別”的Ceph容量,在本年度雅虎計(jì)劃增加10個(gè)基數(shù)來達(dá)到“輕量過百PB級(jí)別”,據(jù)McMillen所說,當(dāng)推出基于Ceph的云對(duì)象存儲(chǔ),將其隸屬于Flickr、雅虎郵箱、Tumblr(輕量博客)。(McMillen說Flickr會(huì)有更多的存儲(chǔ)量,其中的一分部還會(huì)在MObstor中保留一段時(shí)間)
雅虎也曾經(jīng)關(guān)注過swift和Gluster文件系統(tǒng),還有那些為尋找新的對(duì)象存儲(chǔ)系統(tǒng)的特有選擇,最終他們將注意力放在了Ceph上。首先,McMillen說Ceph有吸引力的地方是將支持對(duì)象和塊存儲(chǔ)兩者于一身,如果Ceph社區(qū)永遠(yuǎn)如此高效處理問題,在未來某一天(很有希望)Ceph同樣支持文件系統(tǒng)存儲(chǔ)。
“并不是所有雅虎的存儲(chǔ)都適合對(duì)象存儲(chǔ),但是很多卻適合”,McMillen說到,“我們正在使用塊存儲(chǔ),但是他們卻沒有對(duì)象存儲(chǔ)走的遠(yuǎn)。我們非常喜歡Ceph,除了它因糾刪碼而產(chǎn)生的低成本和它是一個(gè)開源項(xiàng)目,在開發(fā)者的社區(qū)發(fā)展非常迅速外,還因?yàn)樗且粋€(gè)同時(shí)具有塊存儲(chǔ)和對(duì)象存儲(chǔ)能力的單一存儲(chǔ)系統(tǒng)。所以代替塊、對(duì)象分開的存儲(chǔ)系統(tǒng),我們可以靈活掌握一種技術(shù)棧而獲得兩種使用方法。而且如果Ceph有一個(gè)穩(wěn)定的文件系統(tǒng),我們今天絕對(duì)會(huì)使用它。”
Ceph社區(qū)(后臺(tái)是Red Hat,其已經(jīng)在一年前以175 百萬獲得Ceph管理Inktank)仍在專注它 。
McMillen說,當(dāng)Ceph可以從單個(gè)集群擴(kuò)展到exabyte級(jí)存儲(chǔ)系統(tǒng),雅虎將Ceph應(yīng)用于pod架構(gòu),這會(huì)比一個(gè)單一集群具有更好的性能預(yù)測性和錯(cuò)誤隔離性,效果如下:
在雅虎云對(duì)象存儲(chǔ)上,每一個(gè)節(jié)點(diǎn)(被稱作一個(gè)對(duì)象存儲(chǔ)設(shè)備),有60TB的存儲(chǔ),這都是基于X86的服務(wù)器。雅虎已經(jīng)嘗試過每個(gè)節(jié)點(diǎn)配置12-72個(gè)設(shè)備,對(duì)于COS服務(wù),Yahoo沒有透露其硬件配置。每個(gè)集群有54個(gè)這樣的節(jié)點(diǎn),總?cè)萘靠蛇_(dá)3.2 pb。為了向外擴(kuò)展這些服務(wù),雅虎復(fù)制pods并使用哈希算法來打破利用糾刪碼橫跨pods和節(jié)點(diǎn)的無結(jié)構(gòu)數(shù)據(jù)。
依賴這些應(yīng)用,雅虎正在使用常規(guī)的硬件驅(qū)動(dòng)和磁盤,他們使用的是shingled magnetic recording (SMR)技術(shù),在容量和花費(fèi)上都不同;SSDs也被部署到了COS服務(wù)來提供更高的I/O率。
雅虎正在Ceph的variant上使用8/3糾刪碼,這說明8份中的3份共享對(duì)象的服務(wù)或者驅(qū)動(dòng)可以失敗卻仍然可以訪問的到。這是常規(guī)級(jí)別的糾刪碼在Ceph上應(yīng)用的。但是雅虎已經(jīng)計(jì)劃了一個(gè)針對(duì)Ceph的11/3糾刪碼variant,這意味著11個(gè)中的3個(gè)驅(qū)動(dòng)或者服務(wù)可以失敗,更重要的是這個(gè)可以減少40%的讀寫延遲。(根據(jù)McMillen的說法,雅虎計(jì)劃把這項(xiàng)改進(jìn)回饋給Ceph社區(qū),通過這個(gè)方法,它能讓自己參與到“Hummer” 代碼稀釋中)公司已經(jīng)做出了一系列調(diào)整來使Ceph表現(xiàn)出更好的性能,如下圖:
#p#
加入了糾刪碼的更改,雅虎已經(jīng)想出一個(gè)共享bucket索引的方法,那就是一個(gè)索引保持跟蹤對(duì)象存儲(chǔ)到一個(gè)bucket(這是針對(duì)對(duì)象存儲(chǔ)容量單位的亞馬遜術(shù)語)正常Ceph是在一個(gè)單一的服務(wù)器節(jié)點(diǎn)上實(shí)現(xiàn)bucket索引,但是雅虎的工程師為了高可用性和性能方面的改進(jìn),已經(jīng)解決了如何切分和跨節(jié)點(diǎn)傳播。當(dāng)有磁盤或服務(wù)器失效,數(shù)據(jù)恢復(fù)完成,雅虎想出一個(gè)在恢復(fù)數(shù)據(jù)時(shí)將延遲的速率限制到60%的方法。
與此同時(shí),雅虎自支持Ceph的實(shí)現(xiàn),但是McMillen說公司與RehHat關(guān)系非常好,而且也不反對(duì)使用RedHat做一些技術(shù)支持。但是雅虎正處于一個(gè)大量消耗的時(shí)期,而這與超大規(guī)模Ceph有關(guān),也許自支持是他們現(xiàn)在唯一的選擇。
“我們將在數(shù)百個(gè)PB級(jí)規(guī)模上操作,我不知道其他Ceph社區(qū)是否還會(huì)這樣做”,McMillen說。“如果我們不是***的,那么我們就會(huì)成為***的產(chǎn)品用戶,而且我們很可能會(huì)去尋找適合我們規(guī)模的版本。你只需要看雅虎這個(gè)規(guī)模的數(shù)據(jù),不用看傳統(tǒng)級(jí)別。我們正致力于解決所有這些問題,我相信社區(qū)會(huì)從中受益。