ZFS的元數據

SAN最終給客戶提供的是基於塊設備的存儲,客戶實際分區格式化用到的文件系統的類型決定了上層的data/ meta data的組織形式,但是對提供塊存儲設備的系統而言,上層的data/medta data都是它的data,都需要根據上層傳遞進來的flag (O_DIREC/O_SYNC/O_DSYNC)到達io 隊列或者磁盤。而提供塊存儲的 文件系統中的其他數據結構都是meta data。

因此,zfs中的meta data包括:

  • 首尾的四個label

ZFS的元數據

其中每個Label存儲了跟整個系統池相關的全局信息,結構如下:
ZFS的元數據

  • uber block、name value pair
    super block 如何定位到具體的磁盤偏移super block中是索引數據的入口? 下圖紅線部分指出了相關數據結構之間的關聯:
    ZFS的元數據

  • 基於葉子節點的vtree
    在上面112KB的Label 區間,有一個叫做vdev tree 的name-value pairs,內容如下:

ZFS的元數據
兩個或多個vdev可以構成不同類型和級別的vtree,比如RAID1/2/3//5/10等。以下面的截圖爲例來說明一個基於兩個葉子節點的mirror 的name-value pairs:

ZFS的元數據

上面中的ubber-block框圖可以由來解釋基於塊的zfs on-disk靜態數據的layout結構,那麼這些塊block又是如何管理的呢?實際是由zfs DMU統一管理文件系統操作的所有的對象,比如dnode/directory/zvol/intent log 都抽象成一個object。 由SPA層根據object/object set的需求一塊塊申請和分配、釋放的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章