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