看到过几个关于这个问题的问题,但一般的答案都是重新安装。虽然这是最好和最简单的解决方案,但不幸的是,在我的情况下这是不可能的。
我正在考虑以下解决方案。
当前分区布局
/dev/vda1 linux/boot 250mb
/dev/vda2 extended 15GiB
|_/dev/vda5 Linux LVM 15GiB
LVM 有 2 个 LV,分别为 13GiB /root 和 2GiB /swap
这是一个干净的最低 VPS 安装,占用空间小于 1GB。所以我的想法是
- 删除交换驱动器
- 缩小 LVM 分区
- 创建一个新的临时 2gb 分区
- 将根移动到临时分区
- 删除 LVM,在 LUKS 分区上设置新的 LVM。
- 将临时根目录移至 LUKS 上的新 LVM
- 删除临时根,将 LUKS/LVM 分区大小调整回 15gb,以再次设置 2GB 交换。
有什么原因导致此方法无效?如果无效,我被困在第 2/3 步
删除交换 lv 后,我将 PV /dev/vda5 的大小调整为 13GiB,pvdisplay 正确显示 13GiB。
但是,当我进入 cfdisk 创建新的临时根分区时,它仍然显示 /dev/vda5 为 15GiB
我感觉我这里缺少了一个步骤来将已移除的交换驱动器中的 2GiB 放入未分区的空间?
答案1
我最终通过制作 1gb ramdrive 并将 root + 整个系统转移到其中解决了这个问题。然后删除 LVM 分区,在 luks 上重新创建 LVM 并将 root 移动到新驱动器上。
对于任何感兴趣的人。
- 创建 tmpfs ramdisk 并移动根目录
- 删除/创建分区(如果布局有任何变化,则运行 partprobe)
- 设置新的加密 luks LVM,复制所有内容并使系统再次可启动
在不拥有主机的虚拟机中执行此操作时要小心。迈克尔·汉普顿正确指出
它不会帮助你解决真正的问题。加密 VPS 没有任何意义。必须加密的是主机系统。如果你想保护你的数据不受 VPS 主机的影响,不幸的是这是不可能的。
任何有权访问主机的人都可以拍摄包含 LUKS 解密密钥的 RAM 快照。