導讀谷歌三大核心技術之一 GoogleFileSystem(一)

GoogleFileSystem設計構想

為滿足Google數據處理的需求,Google工程師設計并實現了GoogleFileSystem(GFS)。GFS與傳統分布式文件系統類似,也需要滿足高性能、可伸縮性、可靠性以及可用性。與傳統分布式文件系統思路不不同的是:

  1. GFS認為組件失效是常態而非意外,GFS由大量廉價設備組成
  2. 文件數量異常巨大
  3. 絕大部分文件修改采用文件尾部追加數據而非覆蓋原有數據
  4. 應用和文件系統協同設計

GFS架構設計

一個GFS包含一個單獨的Master節點、多臺Chunk服務器,并同時被多個客戶端訪問。
image

存儲方式

GFS存儲的文件被分割成固定大小的Chunk,Master分配給每個Chunk一個不變的64位唯一標識。每個Chunk備份到多個服務器上,以提高可靠性。

Master服務器

Master服務器管理所有Chunk的元數據,以管理各Chunk數據(類似于Linux文件系統的inode)。每個Chunk大小為64M,Chunk元數據大小為64字節,而且由于大多數文件包含多個Chunk因此可以將所有Chunk的元數據存儲在Master的內存中,增強系統的簡潔性、可靠性、高性能和靈活性。

Chunk信息

Master服務器不永久保存Chunk服務器有指定Chunk的副本的信息。因為在一個擁有數百臺服務器的集群中,Chunk服務器加入集群、離開集群、更名、失效、以及重啟的時候,Master服務器和Chunk服務器數據同步的問題會非常頻繁。Master服務器在啟動時候輪詢Chunk服務器,并在之后定期輪詢更新。

GFS的日志系統(災備)

操作日志包含了關鍵的元數據變更歷史記錄。操作日志是元數據唯一的持久化存儲記錄,同時也是判斷同步操作順序的邏輯時間基線(類似LSN),必須確保日志文件的完整,確保只有在元數據的變化被持久化后,日志才對客戶端是可見的。GFS把日志復制到多臺遠程機器,只有相應的日志記錄寫入到本地以及遠程機器的硬盤后,才會響應客戶端的操作請求。Master服務器會收集多個日志記錄后批量處理,以減少寫入磁盤和復制對系統整體性能的影響。

GFS災難恢復

Master服務器在災難恢復時,通過重演操作日志把文件系統恢復到最近的狀態。為了縮短Master啟動的時間,重演系統操作的日志量盡量的少。Master服務器在日志增長到一定量時對系統狀態做一次Checkpoint(對數據庫的快照)。在災難恢復的時候,Master服務器就通過從磁盤上讀取這個Checkpoint文件,以及重演Checkpoint之后的有限個日志文件就能夠恢復系統。Checkpoint文件以壓縮B-樹形勢的數據結構存儲,可以直接映射到內存,在用于命名空間查詢時無需額外的解析。Master服務器恢復只需要最新的Checkpoint文件和后續的日志文件。舊的Checkpoint文件和日志文件可以被刪除。通常會多保存一些歷史文件。Checkpoint失敗不會對正確性產生任何影響,因為恢復功能的代碼可以檢測并跳過沒有完成的Checkpoint文件。

資料
The Google File System – Research at Google
谷歌三大核心技術(一)Google File System中文版 譯者:alex

原創文章,作者:easyTang,如若轉載,請注明出處:http://www.www58058.com/74893

(13)
easyTangeasyTang
上一篇 2017-05-07 13:55
下一篇 2017-05-07 15:35

相關推薦

  • linux程序包管理

    Linux程序包管理        API:Application Program Interface        ABI:Application Binary Interface           Unix-like, &n…

    Linux干貨 2016-12-30
  • ntp時間服務器

    前言   ntp(Network Time protocol)是網絡時間協議,是用來使網絡中的各個計算機時間同步的一種協議。 ntp配置  1)ntp是由ntp軟件提供,如果沒有可以使用yum進行安裝  2)ntp配置文件介紹:/etc/ntp.conf   利用restrict來管理權限控制;語法格式:restric…

    Linux干貨 2015-06-24
  • Linux作業管理、并發執行、計劃任務

    概述     本章將為大家介紹一些進程管理的補充部分作業管理和任務的并發執行,同時也將介紹一下Linux系統上計劃任務的相關內容,具體分為:         1、Linux作業管理     &nbsp…

    Linux干貨 2016-09-09
  • 循環結構

    循環結構 循環執行:     講一段代碼重復執行一次或多次          進入條件:條件滿足時進入循環     退出條件:每一個循環都應該有退出條件,以有機會退出循環;   &…

    Linux干貨 2016-08-21
  • Linux簡述

    計算機誕生                                                  …

    2017-03-18
  • Linux之bash shell腳本編程入門篇(二)以及文件查找和壓縮的使用

    bash shell腳本編程入門篇(二) read命令的使用 作用:     使用read來把輸入值分配給一個或多個shell變量:         -p指定要顯示的提示      &nbs…

    Linux干貨 2016-08-18
欧美性久久久久