Google檔案系統
来自维基百科,自由的百科全书
Google檔案系統(英語:Google File System,縮寫為GFS或GoogleFS),一種專有分布式文件系統,由Google公司開發,運行於Linux平台上[1]。儘管Google在2003年公布了該系統的一些技術細節,但Google並沒有將該系統的軟件部分作為開源軟件發布[2]。
2013年,Google公布了Colossus專案,作為下一代的Google檔案系統[3]。
設計
GFS專門為Google的核心數據即頁面搜索的存儲進行了優化。數據使用大到若干G字節的大文件持續存儲,而這些文件極少被刪除、覆蓋或者減小;通常只是進行添加或讀取操作。它也是針對Google的計算機集群進行的設計和優化,這些節點是由廉價的「常用」計算機組成,這就意味着必須防止單個節點的高損害率和隨之帶來的數據丟失。其它設計理念包括高數據吞吐率,甚至這帶來了存取反應期變差。
節點分為兩類:主節點和Chunkservers。Chunkservers存儲數據文件,這些單個的文件象常見的文件系統中的簇或者扇區那樣被分成固定大小的數據塊(這也是名字的由來)。每個數據塊有一個唯一的64位標籤,維護從文件到組成的數據塊的邏輯映射。每個數據塊在網絡上複製一個固定數量的次數,缺省次數是3次,對於常用文件如可執行文件的次數要更多。
主服務器通常並不存儲實際的大塊數據,而是存儲與大塊數據相關的元數據,這樣的數據如映射表格將64位標籤映射到大塊數據位置及其組成的文件、大塊數據副本位置、哪個進程正在讀寫特定的大數據塊或者追蹤複製大塊數據的「快照」(通常在主服務器的激發下,當由於節點失敗的時候,一個大數據塊的副本數目降到了設定的數目下)。所有這些元數據通過主服務器周期性地接收從每個數據塊服務器來的更新(「心跳消息」)保持最新狀態。
操作的允許授權是通過限時的、倒計時「租期」系統來處理的,主服務器授權一個進程在有限的時間段內訪問數據塊,在這段時間內主服務器不會授權其它任何進程訪問數據塊。被更改的chunkserver——總是主要的數據塊存儲器,然後將更改複製到其它的chunkserver上。這些變化直到所有的chunkserver確認才存儲起來,這樣就保證了操作的完整性和原子性。
訪問大數據塊的程序首先查詢主服務器得到所要數據塊的位置,如果大數據塊沒有進行操作(沒有重要的租約),主服務器回答大數據塊的位置,然後程序就可以直接與chunkserver進行聯繫接收數據(類似於Kazaa和它的超級節點)。
批評意見
只能有一個主服務器——代碼不允許存在多個主服務器。這看起來是限制系統可擴展性和可靠性的一個缺陷,因為系統的最大存儲容量和正常工作時間受制於主服務器的容量和正常工作時間,也因為它要將所有的元數據進行編制,並且因為幾乎所有的動作和請求都經過它;但是Google的工程師們辯解說事實並不是這樣。元數據是非常緊湊的,僅僅只有數K到數M的大小,並且主服務器通常是網絡上性能最好的節點之一;至於可靠性,通常有一個「影子」主服務器製作主服務器的鏡像,一旦主服務器失敗它將接替工作。另外,主服務器極少成為瓶頸,因為客戶端僅僅取得元數據然後將它們緩存起來;隨後的交互工作是直接與chunkservers進行。同樣,使用單個的主服務器可以大幅度地降低軟件的複雜性,如果有多個的主服務器,軟件將變得複雜以能夠保證數據完整性、自動操作、負載均衡和安全性。
參考文獻
外部連結
參見
Wikiwand - on
Seamless Wikipedia browsing. On steroids.