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