作為排名世界領(lǐng)先的社交網(wǎng)站,F(xiàn)acebook經(jīng)歷了迅速崛起的過程。從2004年上線開始,其用戶數(shù)量在2007年7月已經(jīng)達(dá)到三千四 百萬(wàn)。時(shí)至今日,F(xiàn)acebook每月的活躍用戶量已經(jīng)超過20億,占全球總?cè)丝诘娜种弧M瑫r(shí),作為一個(gè)全球排名領(lǐng)先的照片分享站點(diǎn),網(wǎng)站每天會(huì)收到 上億張照片。伴隨著用戶數(shù)量以及用戶上傳資源的增多,F(xiàn)acebook網(wǎng)站的后臺(tái)服務(wù)器數(shù)量也從1臺(tái)迅速增加到數(shù)十萬(wàn)臺(tái)。為了滿足長(zhǎng)期發(fā)展需 求,F(xiàn)acebook于2010年在美國(guó)俄勒岡州的Prineville建設(shè)了第一個(gè)數(shù)據(jù)中心。之后,該公司又分別在美國(guó)的北卡羅來納州和愛荷華州等地方 建立了若干個(gè)數(shù)據(jù)中心。這些高性能數(shù)據(jù)中心很好的解決了網(wǎng)站發(fā)展的迫切需求。即使是在西方的萬(wàn)圣節(jié),服務(wù)器也可以完美支持用戶成功上傳10億到20億張圖 片。然而,這些數(shù)據(jù)中心在滿足用戶需求的同時(shí),也給公司帶來了巨大的花銷。除卻構(gòu)建基礎(chǔ)設(shè)施(包括機(jī)房、服務(wù)器等)的龐大花費(fèi),F(xiàn)acebook數(shù)據(jù)中心 每年消耗的上億度電就是一筆很大的開銷。因此,F(xiàn)acebook從2011年開始考慮冷存儲(chǔ)技術(shù),來解決硬件花銷及能源消耗問題。
Facebook的冷存儲(chǔ)技術(shù)起源于對(duì)自身數(shù)據(jù)存儲(chǔ)方式及數(shù)據(jù)訪問模式的思考。在以往,網(wǎng)站對(duì)于所有的照片、個(gè)人資料等基本采用同樣的方式進(jìn)行存 儲(chǔ)。但是,不同的數(shù)據(jù)在訪問頻率、訪問次數(shù)等方面存在很大的不同。例如,用戶在萬(wàn)圣節(jié)上傳的大量照片基本上在幾天或幾周之后就不會(huì)再被訪問。而用戶主頁(yè)的 資料則是經(jīng)常被訪問的內(nèi)容。鑒于這種情況,F(xiàn)acebook提出冷存儲(chǔ)的計(jì)劃以更低能耗、更低成本和不變的響應(yīng)時(shí)間來存儲(chǔ)這些“冷”照片數(shù)據(jù)。經(jīng)過幾年的 籌劃,F(xiàn)acebook目前已經(jīng)建成了擴(kuò)建了兩個(gè)數(shù)據(jù)中心,用來放置包含全新設(shè)計(jì)的硬件和軟件的冷存儲(chǔ)系統(tǒng)。盡管行業(yè)界對(duì)于數(shù)據(jù)中心相關(guān)的技術(shù)都諱莫如 深,F(xiàn)acebook卻成立開放計(jì)算項(xiàng)目(OCP),公布了定制數(shù)據(jù)中心和服務(wù)器的一系列設(shè)計(jì)細(xì)節(jié)。近期, Facebook員工Krish Bandaru和Kestutis Patiejunas更是在博客中透露了新的冷存儲(chǔ)系統(tǒng)在設(shè)計(jì)時(shí)遇到的各種難題,以及系統(tǒng)的一些設(shè)計(jì)細(xì)節(jié)。接下來,本文就從硬件、軟件以及系統(tǒng)的可靠性和可擴(kuò)展性等方面對(duì)Facebook的冷存儲(chǔ)系統(tǒng)進(jìn)行介紹。
首先,在硬件方面,新建的存儲(chǔ)系統(tǒng)只配備了原本系統(tǒng)1/6的電量供應(yīng)。此時(shí),每個(gè)數(shù)據(jù)機(jī)柜機(jī)房仍然要能夠支持1000PB的數(shù)據(jù)存儲(chǔ)。為了到達(dá)這樣 的目標(biāo),F(xiàn)acebook在Open Vault OCP標(biāo)準(zhǔn)的基礎(chǔ)上,進(jìn)行了修改。其中,最大的改變?cè)谟诿總€(gè)面板只支持一個(gè)驅(qū)動(dòng)器的供電。為此,公司特別修改了電路設(shè)計(jì),使得即使會(huì)出現(xiàn)系統(tǒng)啟動(dòng)時(shí)沒有加 載任何驅(qū)動(dòng)器的情況,也絕對(duì)不會(huì)有多個(gè)驅(qū)動(dòng)器在同時(shí)運(yùn)行的情況。在此基礎(chǔ)上,每個(gè)存儲(chǔ)節(jié)點(diǎn)的風(fēng)扇數(shù)量從6個(gè)減少到了4個(gè),同時(shí)電源架數(shù)量從3個(gè)減少到了1 個(gè),電源架上的電源個(gè)數(shù)也從7個(gè)減少到了5個(gè)。這些變化使得Open Rack的總線數(shù)量從3個(gè)減少到1個(gè)。最終,反映到功耗方面,一個(gè)2PB的機(jī)柜可以在原來四分之一功耗的情況下正常工作。此外,數(shù)據(jù)中心還移除了無間斷電 源(DCUPS)以及發(fā)電機(jī)等來減少硬件開銷。在設(shè)計(jì)這個(gè)全新的存儲(chǔ)系統(tǒng)時(shí),F(xiàn)acebook的設(shè)計(jì)師遇到了很多前所未有的困難和問題。例如,在測(cè)試中, 設(shè)計(jì)師才發(fā)現(xiàn)全新設(shè)計(jì)的機(jī)柜在攜帶480個(gè)4TB驅(qū)動(dòng)器時(shí)竟然重達(dá)1100千克。之前一直在使用的運(yùn)輸車根本不能負(fù)載這么重的貨物。
然后,另外一方面重要的工作就是設(shè)計(jì)一個(gè)能夠支持冷存儲(chǔ)的軟件系統(tǒng)。鑒于硬件設(shè)計(jì)中已經(jīng)去除了電池和不間斷電源,軟件需要在隨時(shí)可能斷電的情況下保 證數(shù)據(jù)的完整性和持久性。根據(jù)設(shè)計(jì)目標(biāo),F(xiàn)acebook在軟件設(shè)計(jì)階段堅(jiān)持了幾個(gè)準(zhǔn)則。第一,數(shù)據(jù)的持久性是軟件系統(tǒng)必須要保證的內(nèi)容。尤其是對(duì)于冷存 儲(chǔ)系統(tǒng),很多照片或其他數(shù)據(jù)可能只在該系統(tǒng)中保留有備份。作為數(shù)據(jù)恢復(fù)的最后一道防線,該系統(tǒng)一定要保證數(shù)據(jù)不會(huì)丟失或損壞。第二,硬件方面的約束使得軟 件設(shè)計(jì)要十分小心。非企業(yè)級(jí)的硬件配置、隨時(shí)可能掉電的電源配置等情況都是軟件需要應(yīng)對(duì)的問題。最后,軟件一定要考慮未來大規(guī)模系統(tǒng)的需求,保證硬件擴(kuò)展 后系統(tǒng)還可以高效率工作。
在硬件和軟件設(shè)計(jì)基本確定以后,F(xiàn)acebook仍然需要解決硬盤失效以及數(shù)據(jù)中心電源不穩(wěn)定等帶來的可靠性問題。該公司采用了傳統(tǒng)的數(shù)據(jù)冗余備份 的方式來增加可靠性。其中,所采用的冗余備份策略為Reed-Solmon錯(cuò)誤檢測(cè)編碼。例如,一個(gè)1GB大小的文件會(huì)被分割成10個(gè)100MB的文件。 然后,這個(gè)10個(gè)文件的Reed-Solmon編碼會(huì)將其轉(zhuǎn)變成14個(gè)文件互相冗余的文件。通過這種轉(zhuǎn)換,Reed-Solmon編碼保證通過其中任意 10個(gè)文件仍然能夠?qū)⒃瓉淼臄?shù)據(jù)成功恢復(fù)。因此,只要把這些文件分開存儲(chǔ),即使其中4個(gè)文件損壞,系統(tǒng)仍然能夠正確恢復(fù)數(shù)據(jù)。數(shù)據(jù)中心根據(jù)存儲(chǔ)媒介的失效 率等參數(shù)調(diào)整編碼方式中冗余數(shù)據(jù)的個(gè)數(shù),即可完成系統(tǒng)對(duì)可靠性的要求。此外,數(shù)據(jù)中心會(huì)緊挨著數(shù)據(jù)本身存儲(chǔ)一份校驗(yàn)和,來方便檢查數(shù)據(jù)的完整性,及時(shí)發(fā)現(xiàn) 數(shù)據(jù)完整性問題。
Facebook數(shù)據(jù)中心關(guān)心的另外一個(gè)問題就是“bit rot”問題。之前,該公司就發(fā)現(xiàn)在大規(guī)模存儲(chǔ)系統(tǒng)中存在無訪問的情況下數(shù)據(jù)失效的問題。為了應(yīng)對(duì)該問題,冷存儲(chǔ)的數(shù)據(jù)中心采用了定期對(duì)所有數(shù)據(jù)進(jìn)行掃描 的策略。目前,服務(wù)器一個(gè)月左右會(huì)把所有的數(shù)據(jù)掃描一遍并向軟件匯報(bào)相應(yīng)情況。針對(duì)發(fā)現(xiàn)的數(shù)據(jù)失效問題,軟件會(huì)利用備份的數(shù)據(jù)片重新構(gòu)建數(shù)據(jù),并放置到一 個(gè)新的地方進(jìn)行存儲(chǔ)。通過這種方法,數(shù)據(jù)中心保證所有的數(shù)據(jù)都可以得以完整保存。
最后,為了應(yīng)對(duì)擴(kuò)展服務(wù)器的問題,系統(tǒng)軟件一直均衡所有服務(wù)器的負(fù)載。對(duì)于新加入的服務(wù)器,軟件會(huì)迅速把數(shù)據(jù)轉(zhuǎn)移到該機(jī)器,實(shí)現(xiàn)所有服務(wù)器負(fù)載均 衡。這樣,即保證了數(shù)據(jù)存儲(chǔ)的平等,也保證了服務(wù)器使用率的平衡。據(jù)Krish Bandaru和Kestutis Patiejunas表示,F(xiàn)acebook的冷存儲(chǔ)系統(tǒng)會(huì)在將來繼續(xù)升級(jí),所涉及的方面包括新型媒介(如flash和藍(lán)光光盤等)的使用和應(yīng)對(duì)頻繁映射 /反映射的文件系統(tǒng)升級(jí)等。
分享到微信 ×
打開微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁(yè)分享至朋友圈。