Device-Mapper 日誌

Device-mapper 日誌程式碼被一些 device-mapper RAID 目標用來跟蹤磁碟上不一致的區域。磁碟的一個區域(或地址空間的一部分)可能不一致,因為 RAID 條帶當前正在操作中,或者機器在區域被修改時崩潰。在映象的情況下,當您向一個區域寫入時,該區域會被認為是髒的/不一致的,因為寫入需要複製到映象的所有腿,並且可能不會同時到達所有腿。一旦所有寫入完成,該區域就會再次被認為是乾淨的。

存在一個通用的日誌介面,device-mapper RAID 實現使用它來執行日誌操作(參見 include/linux/dm-dirty-log.h 中的 dm_dirty_log_type)。提供了各種不同的日誌實現,並提供不同的功能。列表包括

型別

檔案

disk

drivers/md/dm-log.c

core

drivers/md/dm-log.c

userspace

drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h

“disk”日誌型別

此日誌實現將日誌狀態提交到磁碟。這樣,日誌狀態在重啟/崩潰後仍能保留。

“core”日誌型別

此日誌實現將日誌狀態儲存在記憶體中。日誌狀態在重啟或崩潰後不會保留,但可能會帶來少量的效能提升。如果沒有可用於儲存日誌狀態的儲存裝置,也可以使用此方法。

“userspace”日誌型別

這種日誌型別只是提供了一種將日誌 API 匯出到使用者空間的方式,以便日誌實現可以在使用者空間中完成。這是透過將大多數日誌請求轉發到使用者空間來完成的,使用者空間中的守護程序會接收並處理這些請求。

核心和使用者空間之間用於通訊的結構位於 include/linux/dm-log-userspace.h 中。由於核心和使用者空間之間交換的頻率、多樣性和雙向通訊性質,‘connector’ 被用作通訊介面。

目前有兩種利用此框架的使用者空間日誌實現——“clustered-disk”和“clustered-core”。這些實現為共享儲存提供了叢集一致的日誌。當採用叢集日誌實現時,Device-mapper 映象可以在共享儲存環境中使用。