我拥有的:
在 56G SSD 上安装带有加密 LVM2 的 Solus OS,无需交换 - 效果非常好。我有 32G RAM,所以交换现在不是问题 - 它是我未来的主要设备,主要用作办公室、Web、Daw 和 Rust 编程的桌面(不是同时使用所有功能)。
我想做的事:
将两个在 raid 1 配置中使用 btrfs 格式化的 1T hds 添加到实际的 lvm2 卷组中,它们应该包含 /home (以及已经存在的所有内容)并在引导期间安装为 /home,以便我将拥有 1T 空间对于/home,带有软件镜像。 RAID 级别 1 必须用于数据和元数据。
/home 应使用已使用的密钥短语保持加密状态。另外,我想使用 -o 压缩力安装 btrfs,这必须在 fstab 和 fscrypt 中完成。我目前不确定它是 fscrypt 还是其他听起来类似的东西。
到目前为止我所理解的:
- 创建 btrfs raid
- 将 /home 中的所有内容复制到临时安装的 /home-btrfs
- 做一些魔法来获得:ssd 上的 /home 消失,卸载 /home-btrfs 将 btrfs-raid 添加到卷组并将 btrfs-raid 挂载为 /home - 一切都再次加密,但有更多空间
有谁可以向我解释一下吗?我不确定我是否理解得足以开始。我不害怕终端或任何 cli。我刚刚决定退出 Windows 10 的供应商锁定,转而使用 Linux。我知道该配置会带来一些性能影响,但这对我来说没关系。
我目前的计划是这样做:
- gparted 将创建一个分区表 (gpt) 并使用 btrfs 格式化 /dev/sdb1
- 打开终端/外壳
- sudo 安装 /dev/sdb1 /home-btrfs
- 使用 cp -var /home /home-btrfs 将所有内容从 /home 复制到 /home-btrfs
- gparted 将在 /dev/sdc -> /dev/sdc1 上创建分区表 (gpt)
- btrfs 设备添加 /dev/sdc1 /home-btrfs
- btrfs fi 平衡启动 -mconvert=raid1,soft -dconvert=raid1,soft /home-btrfs
- 打开第二个 shell 来观察 raid 转换进度
- btrfs 文件系统平衡状态 /home-btrfs
- btrfs 平衡开始 -dusage=0 -musage=0 /mnt/btrfs (摆脱空块)
- 我陷入困境,因为现在我无法将 lvextend、pvcreate、vgextend 和 lvm2 中的其他内容纳入我的计划。
我为我糟糕的语法道歉。是的,我花了很多时间使用这里的搜索功能和谷歌,但找不到我需要的答案。
答案1
Solus OS 使用 systemd,因此/etc/crypttab
用于配置需要解锁的 LUKS 设备,以便可以使用/etc/fstab
.程序如下。
使用 LUKS 和 BTRFS 镜像 (raid1) /home
- 使用软件中心安装
btrfs-progs
. - 创建一个 LUKS 密钥文件,该文件将存储在您的加密文件中
/
,并用于解锁以下内容的新 LUKS 容器/home
:sudo dd bs=512 count=4 if=/dev/urandom of=/root/home.key
。 - 使用密钥文件在两台设备上创建 LUKS 容器:
sudo cryptsetup luksFormat /dev/sdb /root/home.key && sudo cryptsetup luksFormat /dev/sdc /root/home.key
- 解锁两个 LUKS 容器:
sudo cryptsetup open --type luks /dev/sdb home0 --key-file /root/home.key && sudo cryptsetup open --type luks /dev/sdc home1 --key-file /root/home.key
- 创建 BTRFS 文件系统:
sudo mkfs.btrfs -d raid1 -m raid1 /dev/mapper/home0 /dev/mapper/home1
- 将 BTRFS 文件系统挂载到某处(您只需指定其中一个设备):
mount /dev/mapper/home0 /mnt
- 创建
/home
子卷,为您提供 BTRFS 的更多灵活性:sudo btrfs subvol create /mnt/home
- 将您的主目录复制到子卷:
cp -var /home /mnt
- 创建/修改
/etc/crypttab
,以便解锁新的 LUKS 容器:sudo echo "home0 /dev/sdb /root/home.key" >> /etc/crypttab && sudo echo "home1 /dev/sdc /root/home.key"
- 进行修改
/etc/fstab
,使其安装在您的新家中:sudo echo "/dev/mapper/home0 /home btrfs defaults,subvol=/home" >> /etc/fstab
- 重启。
当您重新启动时,您的新 raid1 BTRFS 文件系统将安装在 /home 处。剩下的项目是删除旧的 /home。要做到这一点:
删除旧的 /home
- 重新启动,但当出现 systemd-boot 菜单时,按e钥匙。
- 现在您将能够编辑内核命令行。添加
"systemd.unit=rescue"
- 按 ENTER 键以使用添加的内核命令行进行引导,以便引导至单用户模式。这将允许您卸载
/home
. - 卸载
/home
:umount /home
. - 删除旧的
/home
.请小心,我建议进行备份:cd /home && rm -fR .
- 重启。
请注意,分区和 LVM 都不需要,因为您仅将整个设备用于 BTRFS。您也不需要重新平衡 BTRFS,因为它是使用两个设备创建的,并且从一开始就采用 RAID1 配置。
此外,LUKS 容器是使用密钥文件解锁的,因此系统不会提示您输入密码三次。但您可能需要将密码添加到另一个 LUKS 插槽中,以防密钥文件发生问题。
提示
最后,我强烈建议备份所有三个 LUKS 标头。如果任何标头损坏并且您没有备份,那么您不妨将磁盘发送到垃圾填埋场。