NVMe-CLI 2.11版本中NVMe over Fabrics连接失败问题分析

NVMe-CLI 2.11版本中NVMe over Fabrics连接失败问题分析

【免费下载链接】nvme-cli NVMe management command line interface. 【免费下载链接】nvme-cli 项目地址: https://gitcode.com/gh_mirrors/nv/nvme-cli

问题现象

在使用NVMe over Fabrics(NVMe-oF)时,用户发现当升级到nvme-cli 2.11版本和libnvme 1.11版本后,无法成功进行发现和连接操作。具体表现为:

  • 执行nvme connect命令时返回"Operation not supported"错误
  • 执行nvme discover命令同样失败
  • 问题仅出现在libnvme 1.11版本中,使用libnvme 1.10版本时功能正常

问题根源

经过分析,这个问题与libnvme 1.11版本中的一个关键改动有关。在libnvme的Linux系统接口实现中,当尝试从配置导入密钥时,如果系统没有安装keyutils库,函数会错误地返回ENOTSUPP(操作不支持)错误码。

具体来说,在__nvme_import_keys_from_config函数中,当检测到系统没有keyutils支持时,直接返回了ENOTSUPP,这导致后续的NVMe控制器添加操作失败。

解决方案

针对这个问题,开发团队已经提出了修复方案:

  1. 正确的做法应该是当系统不支持keyutils时,函数应该返回0(成功),而不是错误码。因为密钥导入功能是可选的,不应该影响基本的NVMe功能。

  2. 用户也可以选择安装keyutils库来完整支持所有功能。keyutils是Linux内核提供的一个工具库,用于管理内核密钥环。

影响范围

这个问题影响以下组合环境:

  • nvme-cli 2.11 + libnvme 1.11
  • 任何使用libnvme 1.11版本的工具

而不影响:

  • nvme-cli 2.10.2 + libnvme 1.10
  • 其他版本组合

临时解决方案

对于急需解决问题的用户,可以采取以下临时方案之一:

  1. 降级到libnvme 1.10版本
  2. 手动修改libnvme源代码,将__nvme_import_keys_from_config函数中的错误返回改为返回0
  3. 安装keyutils库

长期解决方案

开发团队已经提交了修复补丁,后续版本将会正确处理keyutils缺失的情况。建议用户关注官方更新,及时升级到修复后的版本。

总结

NVMe over Fabrics是现代存储架构中的重要技术,而nvme-cli工具是其管理的关键。这次的问题提醒我们,在开源软件的版本升级过程中,需要特别注意依赖库的变化和兼容性。对于存储管理员来说,保持工具链的稳定性和及时了解已知问题非常重要。

【免费下载链接】nvme-cli NVMe management command line interface. 【免费下载链接】nvme-cli 项目地址: https://gitcode.com/gh_mirrors/nv/nvme-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值