Google檔案系統

Google檔案系統(英語:Google File System,縮寫為GFS或GoogleFS),一種專有分散式檔案系統,由Google公司開發,運行於Linux平台上[1]。儘管Google在2003年公佈了該系統的一些技術細節,但Google並沒有將該系統的軟件部分作為開源軟件發佈[2]

Google檔案系統
作業系統Linux內核
類型叢集檔案系統
許可協定專有軟件

2013年,Google公佈了Colossus專案,作為下一代的Google檔案系統[3]

設計

GFS專門為Google的核心數據即頁面搜尋的儲存進行了最佳化。數據使用大到若干G位元組的大檔案持續儲存,而這些檔案極少被刪除、覆蓋或者減小;通常只是進行添加或讀取操作。它也是針對Google的電腦叢集進行的設計和最佳化,這些節點是由廉價的「常用」電腦組成,這就意味着必須防止單個節點的高損害率和隨之帶來的數據遺失。其它設計理念包括高數據吞吐率,甚至這帶來了存取反應期變差。

節點分為兩類:節點和Chunkservers。Chunkservers儲存數據檔案,這些單個的檔案象常見的檔案系統中的簇或者磁區那樣被分成固定大小的數據塊(這也是名字的由來)。每個數據塊有一個唯一的64位元標籤,維護從檔案到組成的數據塊的邏輯對映。每個數據塊在網絡上複製一個固定數量的次數,預設次數是3次,對於常用檔案如可執行檔案的次數要更多。

主伺服器通常並不儲存實際的大塊數據,而是儲存與大塊數據相關的元數據,這樣的數據如對映表格將64位元標籤對映到大塊數據位置及其組成的檔案、大塊數據副本位置、哪個行程正在讀寫特定的大數據塊或者追蹤複製大塊數據的「快照」(通常在主伺服器的激發下,當由於節點失敗的時候,一個大數據塊的副本數目降到了設定的數目下)。所有這些元數據通過主伺服器周期性地接收從每個數據塊伺服器來的更新(「心跳訊息」)保持最新狀態。

操作的允許授權是通過限時的、倒計時「租期」系統來處理的,主伺服器授權一個行程在有限的時間段內訪問數據塊,在這段時間內主伺服器不會授權其它任何行程訪問數據塊。被更改的chunkserver——總是主要的數據塊記憶體,然後將更改複製到其它的chunkserver上。這些變化直到所有的chunkserver確認才儲存起來,這樣就保證了操作的完整性和原子性

訪問大數據塊的程式首先查詢主伺服器得到所要數據塊的位置,如果大數據塊沒有進行操作(沒有重要的租約),主伺服器回答大數據塊的位置,然後程式就可以直接與chunkserver進行聯絡接收數據(類似於Kazaa和它的超級節點)。

批評意見

只能有一個主伺服器——代碼不允許存在多個主伺服器。這看起來是限制系統可延伸性和可靠性的一個缺陷,因為系統的最大儲存容量和正常工作時間受制於主伺服器的容量和正常工作時間,也因為它要將所有的元數據進行編制,並且因為幾乎所有的動作和請求都經過它;但是Google的工程師們辯解說事實並不是這樣。元數據是非常緊湊的,僅僅只有數K到數M的大小,並且主伺服器通常是網絡上效能最好的節點之一;至於可靠性,通常有一個「影子」主伺服器製作主伺服器的鏡像,一旦主伺服器失敗它將接替工作。另外,主伺服器極少成為瓶頸,因為客戶端僅僅取得元數據然後將它們快取起來;隨後的互動工作是直接與chunkservers進行。同樣,使用單個的主伺服器可以大幅度地降低軟件的複雜性,如果有多個的主伺服器,軟件將變得複雜以能夠保證數據完整性、自動操作、負載均衡和安全性。

參考文獻

  1. ^ Google提供的論文The Google File System頁面存檔備份,存於互聯網檔案館)中,多處提到
  2. ^ "Despite having published details on technologies like the Google File System, Google has not released the software as open source and shows little interest in selling it. The only way it is available to another enterprise is in embedded form--if you buy a high-end version of the Google Search Appliance, one that is delivered as a rack of servers, you get Google's technology for managing that cluster as part of the package." "How Google Works"[失效連結]
  3. ^ Google's Colossus Makes Search Real-Time by Dumping MapReduce, High Scalability (World Wide Web log), 2010-09-11 [2014-09-24], (原始內容存檔於2020-11-09) .

外部連結

參見