RHEL 9.2中使用nvme-cli启用内核态TLS生成密钥失败报错126
在RHEL 9.2中启用NVMe内核态TLS时生成密钥失败(Error 126)
问题详情
已通过TCP导出NQN为testnqn的NVMe目标(本地地址127.0.0.1,端口4420),正常执行nvme-connect可成功连接,但运行命令nvme gen-tls-key --subsysnqn=testnqn生成TLS握手密钥时,返回错误:Failed to insert key, error 126。
对应的NVMe目标配置文件test.json内容如下:
{ "ports": [ { "addr": { "adrfam": "ipv4", "traddr": "127.0.0.1", "treq": "not specified", "trsvcid": "4420", "trtype": "tcp" }, "ana_groups": [ { "ana": { "state": "optimized" }, "grpid": 1 } ], "param": { "inline_data_size": "16384", "pi_enable": "0" }, "portid": 1, "referrals": [], "subsystems": [ "testnqn" ] } ], "subsystems": [ { "allowed_hosts": [], "attr": { "allow_any_host": "1", "cntlid_max": "65519", "cntlid_min": "1", "model": "Linux", "pi_enable": "0", "qid_max": "128", "serial": "8d56b289fe7f0a73eff8", "version": "1.3" }, "namespaces": [ { "ana_grpid": 1, "device": { "nguid": "00000000-0000-0000-0000-000000000000", "path": "/dev/sdb", "uuid": "45446286-372f-43e8-bfde-024ca4ef7bf1" }, "enable": 1, "nsid": 10 } ], "nqn": "testnqn" } ] }
原因分析与解决步骤
Error 126对应内核错误码EOPNOTSUPP(操作不支持),以下是具体排查和解决方法:
1. 检查内核NVMe TLS配置
RHEL 9.2默认内核可能未开启NVMe TLS的必要配置项,需确认以下配置已启用:
CONFIG_NVME_TLS=yCONFIG_CRYPTO_USER_API_HASH=yCONFIG_CRYPTO_USER_API_SKCIPHER=y
执行命令检查当前内核配置:
grep -E 'CONFIG_NVME_TLS|CONFIG_CRYPTO_USER_API_HASH|CONFIG_CRYPTO_USER_API_SKCIPHER' /boot/config-$(uname -r)
- 若配置项为
m(模块形式),手动加载对应模块:
sudo modprobe nvme-tls sudo modprobe crypto_user_hash sudo modprobe crypto_user_skcipher
- 若配置项未开启,需重新编译内核或升级到支持该特性的内核版本。
2. 升级nvme-cli版本
低版本nvme-cli可能不支持内核态TLS密钥生成功能,执行升级:
sudo dnf update nvme-cli
升级完成后重新运行密钥生成命令。
3. 启用NVMe目标端TLS支持
修改test.json,在端口的param字段中添加tls_enable": "1",开启目标端TLS:
"param": { "inline_data_size": "16384", "pi_enable": "0", "tls_enable": "1" }
保存配置后重启NVMe目标服务:
sudo systemctl restart nvmet
4. 使用sudo执行命令
内核密钥环操作需要root权限,确保命令以sudo运行:
sudo nvme gen-tls-key --subsysnqn=testnqn
内容的提问来源于stack exchange,提问作者VATSAL TIWARI
相关产品推荐
相关产品推荐

