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) .

外部連結

參見