我使用 dm-crypt/LUKS 加密了我的 SSD,以便在 LVM 容器中安装 Archlinux。以下是结构图(法语,但应该可以理解):
现在我意识到我应该调整分区以获得更好的 SSD 性能(例如这里解释)。
Device Boot Start End Blocks Id System
/dev/sda1 * 63 481949 240943+ 83 Linux
/dev/sda2 481950 250069679 124793865 83 Linux
我的问题是:我可以(以及如何)纠正分区错位吗?还是应该重新安装所有内容?知道第二个分区已加密并包含 LVM 容器。
答案1
问题是,您必须缩小 cryptsetup luks 容器,而这目前是不可能的(可以增大,但不能缩小)。
因此,您必须重新安装所有内容或使用 USB 驱动器中的救援 Linux,并执行以下操作:
- 备份所有 LV 的内容
- 删除卷组和逻辑卷
- 删除 cryptsetup 容器
- 对齐分区(这意味着删除旧的并创建新的对齐分区)
- 创建 cryptsetup 容器(参见下面的注释 1)
- 创建对齐的 PV(参见下文注释 2)
- 创建 VG
- 创建所有需要的 LV
- 创建文件系统
- 恢复您的数据/系统
注1:请记住,您至少不应该对齐您的分区,您应该对齐您的 SSD 或 4KB 扇区 HDD 上的每个容器/块设备。
要正确对齐 4KB 扇区驱动器的 cryptsetup 容器,请使用以下公式:
alignment (512Byte sectors) = (sector size (Byte)) / 512
alignment (512Byte sectors) = (4KB * 1024) / 512 = 8
因此您应该将以下内容添加到您的 cryptsetup 命令中:--align-payload=8
笔记2:要创建对齐的 PV,您应该确保 PV 数据的开始(pe_start)与完整的 4KB 扇区宽度边界对齐。
请记住,您的 physicalextentsize(您可以在创建 VG 时指定)应该是您的对齐的倍数。
因此您应该将以下内容添加到 pvcreate 命令中:--dataalignment 8s