20.4. 使用 LUKS2 加密块设备上的现有数据
您可以使用 LUKS2 格式加密尚未加密设备上的现有数据。新的 LUKS 标头保存在设备的标头中。
先决条件
- 块设备有一个文件系统。
已备份了数据。
警告由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
流程
卸载您要加密的设备上的所有文件系统,例如:
# umount /dev/mapper/vg00-lv00
为存储 LUKS 标头腾出空间。使用以下适合您场景的选项之一:
如果是加密逻辑卷,您可以扩展逻辑卷而无需调整文件系统的大小。例如:
# lvextend -L+32M /dev/mapper/vg00-lv00
-
使用分区管理工具(如
parted
)扩展分区。 -
缩小该设备的文件系统。您可以对 ext2、ext3 或 ext4 文件系统使用
resize2fs
工具。请注意,您无法缩小 XFS 文件系统。
初始化加密:
# cryptsetup reencrypt --encrypt --init-only --reduce-device-size 32M /dev/mapper/vg00-lv00 lv00_encrypted /dev/mapper/lv00_encrypted is now active and ready for online encryption.
挂载该设备:
# mount /dev/mapper/lv00_encrypted /mnt/lv00_encrypted
将持久映射的条目添加到
/etc/crypttab
文件中:查找
luksUUID
:# cryptsetup luksUUID /dev/mapper/vg00-lv00 a52e2cc9-a5be-47b8-a95d-6bdf4f2d9325
在您选择的文本编辑器中打开
/etc/crypttab
,并在此文件中添加一个设备:$ vi /etc/crypttab lv00_encrypted UUID=a52e2cc9-a5be-47b8-a95d-6bdf4f2d9325 none
将 a52e2cc9-a5be-47b8-a95d-6bdf4f2d9325 替换为您设备的
luksUUID
。使用
dracut
刷新 initramfs:$ dracut -f --regenerate-all
向
/etc/fstab
文件中添加一个永久挂载条目:查找活跃 LUKS 块设备的文件系统的 UUID:
$ blkid -p /dev/mapper/lv00_encrypted /dev/mapper/lv00-encrypted: UUID="37bc2492-d8fa-4969-9d9b-bb64d3685aa9" BLOCK_SIZE="4096" TYPE="xfs" USAGE="filesystem"
在您选择的文本编辑器中打开
/etc/fstab
,并在此文件中添加一个设备,例如:$ vi /etc/fstab UUID=37bc2492-d8fa-4969-9d9b-bb64d3685aa9 /home auto rw,user,auto 0
将 37bc2492-d8fa-4969-9d9b-bb64d3685aa9 替换为您文件系统的 UUID。
恢复在线加密:
# cryptsetup reencrypt --resume-only /dev/mapper/vg00-lv00 Enter passphrase for /dev/mapper/vg00-lv00: Auto-detected active dm device 'lv00_encrypted' for data device /dev/mapper/vg00-lv00. Finished, time 00:31.130, 10272 MiB written, speed 330.0 MiB/s
验证
验证现有数据是否已加密:
# cryptsetup luksDump /dev/mapper/vg00-lv00 LUKS header information Version: 2 Epoch: 4 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: a52e2cc9-a5be-47b8-a95d-6bdf4f2d9325 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 33554432 [bytes] length: (whole device) cipher: aes-xts-plain64 [...]
查看加密的空白块设备的状态:
# cryptsetup status lv00_encrypted /dev/mapper/lv00_encrypted is active and is in use. type: LUKS2 cipher: aes-xts-plain64 keysize: 512 bits key location: keyring device: /dev/mapper/vg00-lv00
其他资源
-
cryptsetup (8)
,cryptsetup-reencrypt (8)
,lvextend (8)
,resize2fs (8)
, 和parted (8)
man page