Raid

如何通過文件系統級 RAID 僅對數據進行一次 dm-crypt 加密?

  • September 11, 2021

我想將 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 相同的糾錯能力,

引用自:https://unix.stackexchange.com/questions/417319