如何在 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 支持等优化可以进一步提升性能;
- 自动化集成到系统启动流程中,增强可用性。
如果你在部署过程中遇到具体瓶颈或特定业务场景的性能需求,还可以根据负载特性进一步细化调优策略。

浙公网安备 33010602011771号