17.5. 使用带有分离标头的 LUKS2 在块设备上加密现有数据


您可以加密块设备上的现有数据,而无需为存储 LUKS 标头创建可用空间。标头存储在分离的位置,它也充当额外的安全层。该流程使用 LUKS2 加密格式。

先决条件

  • 块设备有一个文件系统。
  • 您的数据已备份。

    警告

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

流程

  1. 卸载设备上的所有文件系统,例如:

    # umount /dev/<nvme0n1p1>
    Copy to Clipboard Toggle word wrap

    <nvme0n1p 1> 替换为与您要卸载的分区对应的设备标识符。

  2. 初始化加密:

    # cryptsetup reencrypt --encrypt --init-only --header </home/header> /dev/<nvme0n1p1> <nvme_encrypted>
    
    WARNING!
    ========
    Header file does not exist, do you want to create it?
    
    Are you sure? (Type 'yes' in capital letters): YES
    Enter passphrase for </home/header>:
    Verify passphrase:
    /dev/mapper/<nvme_encrypted> is now active and ready for online encryption.
    Copy to Clipboard Toggle word wrap

    替换:

    • </home/header >,带有分离 LUKS 标头的文件的路径。分离的 LUKS 标头必须可以访问,以便稍后解锁加密设备。
    • <nvme_encrypted > 替换为加密后创建的设备映射器的名称。
  3. 挂载该设备:

    # mount /dev/mapper/<nvme_encrypted> /mnt/<nvme_encrypted>
    Copy to Clipboard Toggle word wrap
  4. /etc/crypttab 文件添加持久映射的一个条目:

    # <nvme_encrypted> /dev/disk/by-id/<nvme-partition-id> none header=</home/header>
    Copy to Clipboard Toggle word wrap

    <nvme-partition-id > 替换为 NVMe 分区的标识符。

  5. 使用 dracut 重新生成 initramfs:

    # dracut -f --regenerate-all -v
    Copy to Clipboard Toggle word wrap
  6. /etc/fstab 文件中添加一个永久挂载条目:

    1. 查找活跃 LUKS 块设备的文件系统 UUID:

      $ blkid -p /dev/mapper/<nvme_encrypted>
      
      /dev/mapper/<nvme_encrypted>: UUID="37bc2492-d8fa-4969-9d9b-bb64d3685aa9" BLOCK_SIZE="4096" TYPE="xfs" USAGE="filesystem"
      Copy to Clipboard Toggle word wrap
    2. 在文本编辑器中打开 /etc/fstab,并在此文件中添加一个设备,例如:

      $ vi /etc/fstab
      
      UUID=<file_system_UUID> /home auto rw,user,auto 0
      Copy to Clipboard Toggle word wrap

      <file_system_UUID > 替换为您的文件系统的 UUID。

  7. 恢复在线加密:

    # cryptsetup reencrypt --resume-only --header </home/header> /dev/<nvme0n1p1>
    
    Enter passphrase for /dev/<nvme0n1p1>:
    Auto-detected active dm device '<nvme_encrypted>' for data device /dev/<nvme0n1p1>.
    Finished, time 00m51s,   10 GiB written, speed 198.2 MiB/s
    Copy to Clipboard Toggle word wrap

验证

  1. 验证使用带有分离标头的 LUKS2 块设备上的现有数据是否已加密:

    # cryptsetup luksDump </home/header>
    
    LUKS header information
    Version:       	2
    Epoch:         	88
    Metadata area: 	16384 [bytes]
    Keyslots area: 	16744448 [bytes]
    UUID:          	c4f5d274-f4c0-41e3-ac36-22a917ab0386
    Label:         	(no label)
    Subsystem:     	(no subsystem)
    Flags:       	(no flags)
    
    Data segments:
      0: crypt
    	offset: 0 [bytes]
    	length: (whole device)
    	cipher: aes-xts-plain64
    	sector: 512 [bytes]
    [...]
    Copy to Clipboard Toggle word wrap
  2. 查看加密的空白块设备的状态:

    # cryptsetup status <nvme_encrypted> --header </home/header>
    
    /dev/mapper/<nvme_encrypted> is active and is in use.
      type: LUKS2
      cipher: aes-xts-plain64
      keysize: 512 bits
      key location: keyring
      device: /dev/<nvme0n1p1>
      sector size: 512
      offset: 0 sectors
      size: 10485760 sectors
      mode: read/write
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat