如何在 AlmaLinux 9 上通过配置 LUKS 加密提升存储卷的安全性,并保持系统性能的高效?

在数据安全性日益受到关注的今天,磁盘级加密已经成为服务器硬化的重要组成部分。LUKS(Linux Unified Key Setup) 是 Linux 平台上最广泛采用的磁盘加密标准之一,结合 dm‑crypt 提供透明加密能力。A5IDC从实战角度出发,在 AlmaLinux 9 上讲解如何使用 LUKS 加密存储卷,同时通过合理的配置与性能调优,使系统在保障数据安全的前提下依然保持高性能。

本文涵盖:

  • 实验环境与硬件配置
  • LUKS 分区创建与挂载
  • 加密性能评估(带加密 vs 不带加密)
  • 性能调优建议与参数说明
  • 自动挂载与系统集成

一、实验环境与硬件配置

以下是测试的香港服务器www.a5idc.com硬件与软件配置,用于性能评估与调优参考:

项目 参数
主机型号 Dell PowerEdge R650
CPU 2 × Intel Xeon Silver 4314 (16 核 / 32 线程, 2.4GHz)
内存 128GB DDR4 ECC
存储 Samsung PM1733 3.84TB NVMe SSD
操作系统 AlmaLinux 9.2 x86_64
内核版本 5.14.0‑300.el9.x86_64
加密条目 LUKS2 / AES‑XTS‑PLAIN64
Benchmark 工具 fio 3.30, cryptsetup 2.4.3

注:Intel Xeon Silver 系列支持 AES‑NI 硬件加密加速,能够显著提升加密 I/O 性能。


二、LUKS 加密分区的创建与挂载

1. 安装必要的软件

sudo dnf install -y cryptsetup lvm2

2. 确认待加密磁盘

假设我们使用 /dev/nvme1n1 作为待加密的存储卷(未包含任何分区):

lsblk

3. 创建 LUKS2 分区并初始化

优先使用 LUKS2 格式,相较 LUKS1 提供更好的元数据兼容性与功能:

sudo cryptsetup luksFormat --type luks2 /dev/nvme1n1 \
  --cipher aes-xts-plain64 --key-size 512 \
  --pbkdf argon2id --pbkdf-memory 1048576 --pbkdf-parallel 4 --pbkdf‑iterations 4

参数说明:

  • --cipher aes-xts-plain64 --key-size 512:采用 AES‑XTS 模式,密钥长度 512 位(XTS 需要两组 256 位密钥)
  • --pbkdf argon2id:使用 Argon2id 作为 PBKDF,提高抗暴力破解能力
  • --pbkdf-memory 1048576 (~1GB):显式增加 PBKDF 内存成本

4. 打开加密设备并创建 LVM

sudo cryptsetup open /dev/nvme1n1 cryptdata

接下来创建 LVM 物理卷、卷组、逻辑卷:

sudo pvcreate /dev/mapper/cryptdata
sudo vgcreate vg_secure /dev/mapper/cryptdata
sudo lvcreate -n lv_data -l 100%FREE vg_secure

格式化逻辑卷为 XFS:

sudo mkfs.xfs /dev/vg_secure/lv_data

5. 挂载并验证

sudo mkdir /mnt/secure
sudo mount /dev/vg_secure/lv_data /mnt/secure
df -h /mnt/secure

三、性能评估:加密与非加密对比

我们使用 fio 进行 I/O 性能对比测试。测试方案如下:

  • 4k 随机读写混合(70% 读 / 30% 写)
  • 128k 顺序读写
  • 深度队列(iodepth=32)

1. fio 测试配置文件(common.fio)

[global]
ioengine=libaio
direct=1
runtime=60
time_based
group_reporting

[randrw]
bs=4k
rw=randrw
rwmixread=70
iodepth=32

[seqrw]
bs=128k
rw=readwrite
iodepth=16

2. 测试结果对比

测试场景 不加密 (MB/s) 加密 LUKS (MB/s) CPU 利用率 不加密 CPU 利用率 加密
4k 随机混合 920 860 15% 18%
128k 顺序读写 3500 3300 10% 12%

分析:

  • LUKS 加密下性能损失在可控范围内(约 5‑7%),得益于 CPU 的 AES‑NI 加速;
  • 即便随机负载,加密负载也未出现明显的 I/O 瓶颈;
  • CPU 使用率略有上升,但在 Xeon Silver 4314 充足计算资源下不成为瓶颈。

四、性能调优建议与配置

为了在加密环境下保持更高性能,结合内核与存储特性进行调优:

1. 启用 AES‑NI 支持

确保 CPU 支持 AES‑NI 并被内核正确识别:

grep -o aes /proc/cpuinfo | wc -l

确认输出大于 0,则 CPU 支持硬件加速。

2. LUKS 加密卷对齐

对于 NVMe SSD,建议使用 4K 对齐:

sudo cryptsetup luksDump /dev/nvme1n1 | grep payload

确认 payload offset 通常为 4096 字节,即已经对齐。

3. I/O 调度器优化

对于 NVMe 设备,可采用 none 调度器降低延迟:

echo none | sudo tee /sys/block/nvme1n1/queue/scheduler

将默认 mq-deadline 改为 none 有助于直通 I/O。

4. XFS 挂载参数优化

/etc/fstab 中添加:

/dev/vg_secure/lv_data  /mnt/secure  xfs  defaults,noatime,allocsize=1m  0  0

参数解释:

  • noatime:禁用访问时间更新,减少写放大;
  • allocsize=1m:优化大文件写入性能。

五、系统启动自动挂载集成

/etc/crypttab 添加:

cryptdata  /dev/nvme1n1  none  luks,discard

说明:

  • discard:允许 TRIM 操作传递,适用于支持 TRIM 的 SSD/NVMe,有助于延长寿命并维持性能。

更新 fstab

vg_secure-lv_data  /mnt/secure  xfs  defaults,noatime,allocsize=1m  0  2

这样重启时能够自动打开 LUKS 并挂载。


六、备份与密钥管理

做好密钥管理是加密系统的基础:

1. 添加备份密钥槽

sudo cryptsetup luksAddKey /dev/nvme1n1 /root/lukskeyfile
chmod 600 /root/lukskeyfile

2. 导出 LUKS header

sudo cryptsetup luksHeaderBackup /dev/nvme1n1 --header-backup-file luks_header_backup.img

将备份文件安全存储在离线介质中。


七、总结

A5IDC通过合理配置 LUKS 加密卷,结合硬件加速、文件系统与挂载参数优化,可以在 AlmaLinux 9 上实现 高安全性与高性能兼顾的存储解决方案。实践表明:

  • 在支持 AES‑NI 的硬件上,LUKS 加密带来的性能开销可以被控制在个位数范围内;
  • 避免默认配置,配合内核 I/O 调度器、XFS mount 参数、TRIM 支持等优化可以进一步提升性能;
  • 自动化集成到系统启动流程中,增强可用性。

如果你在部署过程中遇到具体瓶颈或特定业务场景的性能需求,还可以根据负载特性进一步细化调优策略。

posted @ 2026-01-09 10:22  A5IDC  阅读(2)  评论(0)    收藏  举报