我想将 dm-crypt 与 btrfs 一起使用,因为该文件系统具有 bitrot 保护。我担心的是 RADI1 位于 dm-crypt 之上的文件系统级别,因此如果我写入一个文件,它将被加密两次。
HDD.x ⇄ dm-crypt.x ↰
btrfs-raid1 ⇒ btrfs
HDD.y ⇄ dm-crypt.y ↲
有没有办法只加密一次数据,例如通过在dm-crypt.x
两个硬盘上存储完全相同的副本? (根据btrfs 常见问题解答我需要 encryptfs 来做这样的事情:
HDD.x ↰
btrfs-raid1 ⇒ btrfs ⇄ ecryptfs
HDD.y ↲
但如果可以通过使用 btrfs RAID1 避免额外的性能损失,我宁愿使用 dm-crypt。
答案1
目前 BTRFS 还没有直接集成这样的选项。过去,BTRFS 邮件列表上曾讨论过添加对 VFS 加密 API 的支持(ext4 和 F2FS 的透明文件加密也使用同样的 API),但似乎从未有过任何进展。
目前实现您想要的唯一方法是将复制放在 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 相同的纠错能力,您必须将 dm-crypt 和 dm-integrity 放在 RAID 层下(否则,RAID 将看不到 dm-integrity 的 I/O 错误)层,因此永远不会被它正确纠正)。
答案2
以下设置介绍了如何在同一驱动器上的单个 LUKS 容器内设置 RAID 1。
视频说明: https://youtu.be/PWxxV98DB4c
如果需要的话卸载(使用磁盘)
查看我们正在与哪个开发人员合作
lsblk
假设我们正在使用 sdb - 仔细检查 - 备份所有数据,以防出现问题。
创建 luks 容器
sudo cryptsetup luksFormat /dev/sdb
打开容器
sudo cryptsetup luksOpen /dev/sdb mount_name
您可以将 mount_name 更改为您喜欢的名称。
选修的:
sudo wipefs --all --backup /dev/mapper/mount_name
LVM2 PV 创建:
sudo pvcreate /dev/mapper/mount_name
可选检查PV是否已创建:
sudo pvdisplay
创建卷组
sudo vgcreate backup /dev/mapper/mount_name
创建逻辑卷
sudo lvcreate -n part_one -l 50%FREE backup
sudo lvcreate -n part_two -l 100%FREE backup
改成%
需要的。将part_one、part_two更改为你喜欢的内容
转到磁盘:它们将安装为:
/dev/backup/part_one
/dev/backup/part_two
创建突袭:
sudo mkfs.btrfs -L laptop_backup_c -d raid1 -m raid1 -f /dev/backup/part_one /dev/backup/part_two
laptop_backup_c 是一个标签。换成你喜欢的。
使用 gnome 磁盘安装其中任何一个。它将出现在
/media/<user>/laptop_backup_c
user 是你的用户名
或者,创建挂载文件夹,挂载它,然后删除该挂载文件夹
卸载:
sudo umount /media/<user>/laptop_backup_c
关闭组中所有打开的卷
sudo lvchange -an backup
关闭 luks 容器
sudo cryptsetup luksClose mount_name
现在,当您插入驱动器时,它只会要求输入一次密码。/media/<user>/laptop_backup_c
如果您使用 gnome 磁盘或 CLI(此处未显示)挂载任何一个逻辑卷,您的 raid 1 将被挂载。