這是 MIT 6.824 課程GFS部分的一些總結.

GFS (Google File System) 是Google為了管理海量數據而開發的一個分佈式文件系統.

直接進入正題.

在GFS中文件是以Chunk的形式存儲。所謂的Chunk是一個儲存塊。一個Chunk的大小為64MB.一個文件會分為多個Chunk.儲存在不同的服務器裡。當然也會有2-3份Chunk的拷貝。

GFS中還存在一個Master,Master收集所有文件的metadata, 保存在一張表中。

下面簡單的解釋一下讀操作的交互。

  • Client指定的文件名和字節偏移轉換成文件的一個塊索引(Chunk Index)。
  • Master發送一個包含文件名和塊索引的請求。
  • master回應對應的Chunk Handle(存儲數據服務器以Chunk Handle標識Chunk)和副本的位置(多個副本)。
  • Client以文件名和塊索引為鍵緩存這些信息。(handle和副本的位置)
  • Client向其中一個副本發送一個請求,很可能是最近的一個副本。請求指定了Chunk Handle和塊內的一個字節區間。
  • 除非緩存的信息不再有效(cache for a limited time)或文件被重新打開,否則以後對同一個塊的讀操作不再需要client和master間的交互。