dm-era

簡介

dm-era 是一個行為類似於線性目標的 Target。此外,它會跟蹤在使用者定義的時間段(稱為“紀元”)內寫入了哪些塊。每個紀元 Target 例項都將當前紀元維護為一個單調遞增的 32 位計數器。

用例包括為備份軟體跟蹤已更改的塊,以及在回滾供應商快照後部分失效快取內容以恢復快取一致性。

建構函式

era <metadata dev> <origin dev> <block size>

元資料裝置

用於儲存持久元資料的快速裝置

原始裝置

用於儲存可能更改的資料塊的裝置

塊大小

原始資料裝置的塊大小,即 Target 跟蹤的粒度

訊息

所有 dm 訊息都不帶任何引數。

檢查點

可能移動到一個新的紀元。您不應該假定紀元已遞增。傳送此訊息後,您應該透過狀態行檢查當前紀元。

take_metadata_snap

建立元資料的克隆,以允許使用者空間程序讀取它。

drop_metadata_snap

刪除元資料快照。

狀態

<元資料塊大小> <已用元資料塊數>/<元資料塊總數> <當前紀元> <持有的元資料根 | ‘-‘>

元資料塊大小

每個元資料塊的固定扇區塊大小

已用元資料塊數

已使用的元資料塊數量

元資料塊總數

元資料塊總數量

當前紀元

當前紀元

持有的元資料根

元資料根的位置(以塊為單位),該元資料根已被‘持有’以供使用者空間讀取訪問。‘-’ 表示沒有持有的根。

詳細用例

在開發此 Target 時,回滾供應商快照時使快取失效的場景是主要用例。

建立供應商快照

  • 向 era Target 傳送檢查點訊息

  • 記錄其狀態行中的當前紀元

  • 建立供應商快照(紀元和快照現在應永久關聯)。

回滾到供應商快照

  • 快取進入直通模式(參見:dm-cache 在快取中的文件)

  • 回滾供應商儲存

  • 建立元資料快照

  • 透過檢查每個塊的紀元來確定自快照建立以來哪些塊已被寫入

  • 在快取軟體中使這些塊失效

  • 快取返回回寫/直寫模式

記憶體使用

該 Target 使用位集來記錄當前紀元中的寫入。它還準備了一個備用位集,以便切換到新紀元。除此之外,它使用少量 4k 塊來更新元資料。

(4 * nr_blocks) bytes + buffers

彈性

在對先前未寫入的塊執行寫入操作之前,元資料會在磁碟上更新。因此,dm-era 不會受到電源故障等硬崩潰的影響。

使用者空間工具

使用者空間工具可在命名越來越不佳的 thin-provisioning-tools 專案中找到