天天看點

Frangipani論文閱讀筆記

論文位址:https://pdos.csail.mit.edu/6.824/papers/thekkath-frangipani.pdf

一、概述

理想的分布式檔案系統應該是可以提供一緻性的檔案通路、存儲可以按需擴容、性能可以橫向擴充、最小化人工維護成本。Frangipani就是這樣的一個分布式檔案系統。

Frangipani提供以下幾個特性:

  1. 所有使用者都具有檔案相同的一緻性視圖
  2. 運作時增加伺服器,伺服器數量變更不會打亂運作的服務
  3. 管理者增加新使用者不需要擔心存儲的配置設定
  4. 一緻行備份、線上備份、允許使用者快速通路誤删除的檔案
  5. 高容錯性

二、系統架構

Frangipani論文閱讀筆記

上層的frangipani server通過petal通路檔案,并且petal使用lock service保證file的一緻性。

Frangipani論文閱讀筆記

此圖frangipani server沒有畫出來,它可能跟petal在一台機器,也可能沒有。同時lock service是獨立與其它系統的,但是也可以和其它系統一起運作。

使用者将修改的資料暫存到本地直到下一次系統同步被調用,他們的redo log會被存到petal的不同位置,使用者崩潰恢複。

三、磁盤布局

Frangipani論文閱讀筆記

frangipani利用petal大且稀疏的磁盤空間簡化了它的資料結構。

四、日志與恢複

日志

  1. frangipani采用WAL的方式,在寫資料以前先寫日志
  2. log在petal有特定的位置儲存
  3. 每個日志有LSN,并且有version number用于recovery
  4. log是儲存在一個環型的存儲空間上,當環滿了,會擦除前面25%的部分
  5. 每個日志目前最大是128KB

崩潰恢複

當一台frangipani崩潰後,崩潰的server的client或者lock service會檢測到。recovery demon會被給予lock和log,recovery demon按序執行未完的日志,隻要在petal是可用的情況下,可容忍無限的frangipani server崩潰。

確定logging和recovery work的細節

  1. 通過lock protocal確定對相同資料的請求是串行的,在擷取write lock之前確定之前的髒資料被寫到petal
  2. 為了防止某些block被重複寫,是以在block中加入version number(log中也有),是以當将要寫入的log的version number小于block中的時,則不寫入此log
  3. lock service確定隻有一台server在執行recovery
  4. log會有crc校驗

五、緩存一緻

frangipani通過多讀/單寫的鎖來實作同步。當lock service檢測到有沖突的lock時,目前的holder會被要求釋放lock。

當write lock被釋放時,髒資料會被寫到磁盤。read lock被釋放時,會清空自己的緩存。

繼續閱讀