我想使用 LVM 安装具有全盘加密的 Ubuntu,但分成多个驱动器。
例如,如果我想要 /dev/sda 上的所有内容,但 /var 除外,而 /var 转到了 /dev/sdb?我可以看到如何在不使用 LVM 的情况下通过使用“其他”选项编辑分区来做到这一点
从安装程序来看,选择 LVM 时似乎只能安装到单个驱动器。我是否遗漏了什么?
答案1
安装程序不支持这种情况,因此您必须手动执行此操作。
您可以采用多种方法,并且因为您/var
明确希望位于单独的物理卷上,所以我将执行以下操作:
首先,使用安装程序在第一个物理卷 (sda) 上使用 LUKS 加密和 LVM 安装 Ubuntu,然后添加第二个卷。这将安装
/var
在您不想要的驱动器上,但这只是暂时的。然后在第二个物理卷 (sdb) 上设置 LUKS。您可以使用密码:
cryptsetup luksFormat /dev/sdb1 # Assuming that sdb1 is the partition where # you want to create the LUKS container. # You can also use your entire drive (/dev/sdb) # and have no partition table.
打开刚刚创建的 LUKS 容器:
cryptsetup luksOpen /dev/sdb1 lvm-var
现在如果你检查的话,
dmsetup
你应该会看到两个 LUKS 容器:一个是在 Ubuntu 安装期间创建的(我们lvm-ubuntu
为了简单起见就这么称呼它,尽管名称会有所不同),另一个是我们刚刚创建的:$ dmsetup ls --target=crypt lvm-ubuntu ... lvm-var ...
初始化 LUKS 容器以便与 LVM 一起使用:
pvcreate /dev/mapper/lvm-var
现在如果你输入,
pvs
你应该会看到两个 LVM 物理卷:一个是你安装 Ubuntu 的地方,另一个是新的物理卷lvm-var
:$ pvs PV VG Fmt Attr PSize PFree /dev/mapper/lvm-ubuntu ubuntu-vg lvm2 ... ... ... /dev/mapper/lvm-var lvm2 ... ... ...
在我们的新 LVM 物理卷内创建一个新的 LVM 卷组:
vgcreate var-vg /dev/mapper/lvm-var
现在
vgs
应该将其与安装期间创建的卷组一起列出:$ vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 ... var-vg 1 0 ...
在组内创建一个新的 LVM 逻辑卷:
lvcreate -L<size> -n var var-vg # Choose a size for your volume group. You can # specify 100%, but I always recommend using a # fraction of the available space, because you # can always grow logical volumes and # filesystems online, but shrinking it is a # pain.
并
lvs
应反映我们的变化:LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root ubuntu-vg -wi-ao---- ... var var-vg -wi-a----- ...
在该逻辑卷上初始化 ext4 文件系统(或您喜欢的任何文件系统类型):
mkfs.ext4 /dev/var-vg/var
确认文件系统已使用 创建
lsblk
。快完成了!现在我们需要告诉 Ubuntu 在启动时自动打开安装 LUKS 容器和文件系统。为此:
将此行添加到
/etc/crypttab
:var-vg UUID=<uuid of /dev/sdb1> none luks,discard,keyscript=decrypt_keyctl
您可以使用 获取 UUID
lsblk -f
。这样keyscript=decrypt_keyctl
您就不必在启动时输入两次相同的短语(以防您的两个 LUKS 容器使用相同的短语)。将此行添加到
/etc/fstab
:/dev/var-vg/var /var ext4 defaults 0 1
大功告成!现在您可以将/var
第一个驱动器上的所有文件复制到第二个驱动器上的新逻辑卷。