加密 SWAP 是一个好习惯,因为如果根分区加密而 SWAP 不加密,系统可能会将解密后的敏感数据(如密钥、密码)交换到磁盘明文中,导致加密失效。
使用LUKS加密根分区和swap,把解密zfs的key放在根分区里。这样重启后不需要手动输入密码。
以下是实现这一架构的最佳实践建议:
1. 建议的分区布局 (Partition Layout)
由于你计划手动划分 ZFS 分区,建议将磁盘 vda 划分为以下结构:
| 分区 | 类型 | 建议大小 | 说明 |
|---|---|---|---|
vda1 | BIOS/EFI | 1 MB / 512 MB | 引导分区 |
vda2 | /boot | 1 GB | 存放内核,不加密(方便引导) |
vda3 | LUKS | 40 - 60 GB | 加密容器。内部使用 LVM 划分 / 和 swap |
vda4 | ZFS | 剩余所有空间 | 直接作为 ZFS 磁盘/分区 |
2. 为什么在 LUKS 内部使用 LVM 处理 SWAP?
将 / 和 swap 都放在同一个 LUKS 容器(即你的 vda3_crypt)内的 LVM 卷组里,有两大好处:
- 只需输入一次密码:启动时只需解锁
vda3,里面的根目录和交换空间就同时可用了。 - 动态调整:如果你以后发现 16G 内存的机器不需要那么多 SWAP,你可以轻松缩小 swap 逻辑卷并扩大根分区。
手动分区(推荐)
在 VPS 重新安装 PVE/Debian 时:
- 手动创建分区,预留
vda4空间不分配。 - 安装程序会引导你创建 LUKS 并配置 LVM(Root + Swap)。
- 系统装好后,使用
zpool create命令将vda4初始化为 ZFS。