提議的用於在 Linux 中創建塊設備快照的 blksnap 機制

生產備份和災難恢復軟件的 Veeam 公司提出將 blksnap 模塊包含在 Linux 內核中,並實現創建塊設備快照和跟踪塊設備變化的機制。 為了使用快照,已準備好 blksnap 命令行實用程序和 blksnap.so 庫,允許您通過用戶空間的 ioctl 調用與內核模塊進行交互。

創建該模塊的目的是在不停止工作的情況下組織驅動器和虛擬磁盤的備份 - 該模塊允許您在快照中捕獲整個塊設備的當前狀態,為備份提供不依賴於正在進行的更改的隔離片。 blksnap的一個重要特性是能夠同時為多個塊設備創建快照,這不僅可以保證塊設備級別的數據完整性,還可以實現備份中不同塊設備狀態的一致性。

為了跟踪塊設備子系統 (bdev) 的更改,添加了附加過濾器的功能,該過濾器允許您攔截 I/O 請求。 blksnap 實現一個過濾器,用於攔截寫入請求、讀取舊值並將其保存在確定快照狀態的單獨更改列表中。 通過這種方法,使用塊設備的邏輯不會改變,無論快照如何,都會按原樣在原始塊設備中進行記錄,這消除了數據損壞的可能性,即使在出現不可預測的嚴重錯誤時也避免了問題在 blksnap 中和為更改分配的空間溢出。

該模塊還允許您確定在最後一個快照和任何以前的快照之間更改了哪些塊,這對於實施增量備份非常有用。 為了保存相對於快照狀態的更改,可以在任何塊設備上分配任意範圍的扇區,這允許您將更改保存到塊設備上 FS 內的單獨文件中。 用於存儲更改的區域的大小可以隨時增加,甚至在創建快照之後也是如此。

Blksnap 基於 veeamsnap 模塊的代碼,該模塊是 Veeam Agent for Linux 產品的一部分,但針對 Linux 內核主要部分中的交付細節進行了重新設計。 blksnap 和 veeamsnap 之間的概念差異在於使用附加到塊設備的過濾器系統,而不是攔截 I/O 的單獨 bdevfilter 組件。

來源: opennet.ru

添加評論