如何通過文件系統級 RAID 僅對數據進行一次 dm-crypt 加密?
我想將 dm-crypt 與 btrfs 一起使用,因為這個文件系統的 bitrot 保護。我擔心的是 RADI1 位於 dm-crypt 之上的文件系統級別,所以如果我寫一個文件,它將被加密兩次。
HDD.x ⇄ dm-crypt.x ↰ btrfs-raid1 ⇒ btrfs HDD.y ⇄ dm-crypt.y ↲
有沒有辦法只加密一次數據,例如通過
dm-crypt.x
在兩個 HDD 上儲存完全相同的副本?(根據btrfs FAQ我需要 encryptfs 來做這樣的事情:HDD.x ↰ btrfs-raid1 ⇒ btrfs ⇄ ecryptfs HDD.y ↲
但如果使用 btrfs RAID1 可能不會獲得額外的性能損失,我寧願使用 dm-crypt。
對於 BTRFS,目前沒有直接集成這樣的選項。過去在 BTRFS 郵件列表上曾討論過添加對 VFS 加密 API 的支持(ext4 和 F2FS 用於透明文件加密的相同東西),但似乎從未有過。
目前,實現您想要的唯一方法是將複製放在 BTRFS 之外,這消除了 BTRFS 中校驗和的大部分好處。eCryptFS 是一個選項,但它幾乎總是比在 BTRFS 下使用 dm-crypt 慢。EncFS 可能是一種選擇,但我對它的性能一無所知(雖然它也是基於 FUSE 的,並且作為一般規則,BTRFS 之上的 FUSE 層非常緩慢)。
作為所有這一切的替代方案,您可以考慮在正常 RAID 之上(通過 MD 或 LVM)使用更傳統的文件系統,將其放在 dm-integrity 目標之上(它對儲存的數據進行加密驗證,本質上像 Android 和 ChromeOS 用於完整性檢查其係統分區的 dm-verity 目標的可寫版本一樣工作),然後將其放在 dm-crypt 之上。這樣做需要一個支持 dm-integrity 的核心(我不記得它是什麼時候添加的,但它是在過去一年內),以及一個支持它的 cryptsetup 版本。這將為您提供與 AEAD 樣式加密相同級別的完整性檢查。不幸的是,為了提供與 BTRFS 相同的糾錯能力,