GFS(Google File System,谷歌文件系統)----(1)文件系統簡介


分布式文件系統

  • 系統是構建在普通的、廉價的機器上,因此故障是常態而不是意外

  • 系統希望存儲的是大量的大型文件(單個文件size很大)

  • 系統支持兩種類型讀操作:大量的順序讀取以及小規模的隨機讀取(large streaming reads and small random reads.)

  • 系統的寫操作主要是順序的追加寫,而不是覆蓋寫

  • 系統對於大量客戶端並發的追加寫有大量的優化,以保證寫入的高效性與一致性,主要歸功於原子操作record append

  • 系統更看重的是持續穩定的帶寬而不是單次讀寫的延遲GFS架構

 

GFS架構:

由三部分組成:GFS master、GFS Client、GFS chunkserver。其中,GFS master任意時刻只有一個,而chunkserver和gfs client可能有多個。

一份文件被分為多個固定大小的chunk(默認64M),每個chunk有全局唯一的文件句柄 (一個64位的chunk ID),每一份chunk會被復制到多個chunkserver(默認值是3),以此保證可用性與可靠性。chunkserver將chunk當做普通的Linux文件存儲在本地磁盤上。

GFS master是系統的元數據服務器,維護的元數據包括:命令空間(GFS按層級目錄管理文件)、文件到chunk的映射,chunk的位置。其中,前兩者是會持久化的,而chunk的位置信息來自於Chunkserver的匯報。

GFS master還負責分布式系統的集中調度:chunk lease管理,垃圾回收,chunk遷移等重要的系統控制。master與chunkserver保持常規的心跳,以確定chunkserver的狀態。

GFS client是給應用使用的API。GFS Client會緩存從GFS master讀取的chunk信息(即元數據),盡量減少與GFS master的交互。

 

讀取數據的流程:

  • 應用程序調用GFS client提供的接口,表明要讀取的文件名、偏移、長度。

  • GFS Client將偏移按照規則翻譯成chunk序號,發送給master

  • master將chunk id與chunk的副本位置告訴GFS client

  • GFS client向最近的持有副本的Chunkserver發出讀請求,請求中包含chunk id與范圍

  • ChunkServer讀取相應的文件,然后將文件內容發給GFS client。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM