内容提要
本文记录了作者从LUKS迁移到LUKS + LVM的过程,解决了加密交换分区无法休眠的问题。作者备份数据,删除原有分区,建立新的分区,创建LUKS容器和LVM逻辑卷,最后恢复数据。系统成功实现休眠和唤醒。
延伸解读
加密交换分区与休眠的兼容性问题
文章指出,使用随机密钥加密的交换分区在休眠后无法恢复,因为密钥仅存于内存,断电即丢失。这导致系统无法从休眠中唤醒,且systemd会因等待交换分区而超时,造成启动延迟。作者的经历表明,若需休眠功能,交换分区必须使用持久密钥加密,而LUKS+LVM方案通过将交换分区置于LUKS容器内,解决了这一问题。
LUKS+LVM方案的技术优势
LUKS提供密钥管理,LVM则允许在加密容器内灵活划分逻辑卷。作者将LVM叠加在LUKS之上,创建root和swap两个LV,使交换分区与根分区共享同一加密容器。这样,系统启动时只需解锁一次LUKS,即可同时访问root和swap,且swap的密钥持久存在,支持休眠。此外,LVM还带来快照、动态调整等潜在好处。
迁移过程中的备份与恢复策略
作者使用BorgBackup备份LUKS解密后的明文块设备,利用其去重和压缩功能,将235 GiB数据压缩至162 GiB,存储于未加密的移动硬盘。恢复时通过管道将归档写回新块设备。这种方法避免了直接复制加密数据或创建临时加密容器的麻烦,且Borg仓库本身加密,保障了数据安全。迁移后需更新内核参数中的LUKS UUID,并确保initrd包含LVM模块。
Q&A
LUKS和LVM的结合有什么优势?
LUKS和LVM结合后,可以灵活地管理逻辑卷,解决加密交换分区无法休眠的问题,并提供快照等功能。
如何备份LUKS加密分区的数据?
可以使用BorgBackup直接读取LUKS解密后的明文块设备进行备份,确保数据安全。
迁移到LUKS + LVM的步骤是什么?
迁移步骤包括备份数据、删除原有分区、创建新的LUKS容器和LVM逻辑卷,最后恢复数据。
加密交换分区无法休眠的原因是什么?
加密交换分区使用随机密钥,断电后密钥丢失,导致系统无法恢复到之前的状态。
如何解决systemd等待交换分区的问题?
可以通过创建一个新的交换分区并更新UUID来解决systemd等待的问题。
LVM的主要功能是什么?
LVM主要用于在块设备上灵活地映射多个逻辑卷,允许动态调整和提供快照功能。