Red Hat Training

A Red Hat training course is available for RHEL 8

22.4. 使用 LUKS2 加密块设备上的现有数据

这个过程使用 LUKS2 格式加密设备中的数据。新的 LUKS 标头保存在设备的标头中。

先决条件

  • 块设备包含一个文件系统。
  • 已备份了数据。

    警告

    在加密过程中可能会丢失数据:由于硬件、内核或人为故障。在开始加密数据之前,请确保您有可靠的备份。

步骤

  1. 卸载您要加密的设备中的所有文件系统。例如:

    # umount /dev/sdb1
  2. 为存储 LUKS 标头腾出空间。选择适合您场景的以下一个选项:

    • 如果是加密逻辑卷,您可以扩展逻辑卷而无需调整文件系统的大小。例如:

      # lvextend -L+32M vg00/lv00
    • 使用分区管理工具(如 parted )扩展分区。
    • 缩小该设备的文件系统。您可以对 ext2、ext3 或 ext4 文件系统使用 resize2fs 工具。请注意,您无法缩小 XFS 文件系统。
  3. 初始化加密。例如:

    # cryptsetup reencrypt \
                 --encrypt \
                 --init-only \
                 --reduce-device-size 32M \
                 /dev/sdb1 sdb1_encrypted

    该命令会要求您输入密码短语并启动加密过程。

  4. 挂载该设备:

    # mount /dev/mapper/sdb1_encrypted /mnt/sdb1_encrypted
  5. /etc/crypttab 中为永久映射添加一个条目

    1. 查找 luksUUID

      # cryptsetup luksUUID /dev/mapper/sdb1_encrypted

      这将显示所选设备的 luksUUID

    2. 在您选择的文本编辑器中打开 /etc/crypttab 文件,并在此文件中添加一个设备:

      $ vi /etc/crypttab
      /dev/mapper/sdb1_encrypted luks_uuid none
    3. 使用 dracut 刷新 initramfs:

      $ dracut -f --regenerate-all
  6. /etc/fstab 文件中为永久挂载添加一个条目:

    1. 查找活跃 LUKS 块设备的 FS UUID

      $ blkid  -p /dev/mapper/sdb1_encrypted
    2. 在您选择的文本编辑器中打开 /etc/fstab 文件,并在此文件中添加一个设备,例如:

      $ vi  /etc/fstab
      fs__uuid /home auto rw,user,auto 0 0
  7. 启动在线加密:

    # cryptsetup reencrypt --resume-only /dev/sdb1

其他资源

  • cryptsetup(8)lvextend(8)resize2fs(8)parted(8) 手册页