本文将详细介绍如何使用 nvme-cli
工具在 Linux 环境下对 NVMe 固态硬盘进行固件升级。该教程包括准备工作、关键命令、以及升级后的检查与重启步骤,旨在帮助用户顺利完成固件升级。
在开始升级之前,请确保以下条件满足:
1. 操作系统:Linux OS
2. 已安装 nvme-cli
工具软件,支持固件更新的版本需为 v2.10 及以上
在不同的 Linux 发行版上安装 nvme-cli
的命令:
Ubuntu/Debian:
sudo apt-get install nvme-cli
CentOS/RHEL:
sudo yum install nvme-cli
Fedora:
sudo dnf install nvme-cli
Arch Linux:
sudo pacman -S nvme-cli
如果当前版本的 nvme-cli
不支持固件更新操作,可以手动下载最新版:
1. 硬盘连接与识别
首先,确保 NVMe 设备已正确连接到系统,并通过以下命令进行识别:
nvme list
输出结果应列出已连接的 NVMe 设备,确认其设备名称 Node(如 /dev/nvme0n1
)。
2. 上传固件文件
下载并上传固件文件到 Linux 系统中,建议将其存放在 /root
目录下以便于访问。
1. 下载固件
使用 nvme-cli
的 fw-download
命令将固件下载到 NVMe 设备的指定插槽。将
<指定升级磁盘符>
和 <固件文件路径>
替换为固件文件的实际路径:
# nvme fw-download <指定升级磁盘符> -f <固件文件路径>
nvme fw-download /dev/nvme0n1 -f /root/firmware.bin
2. 执行升级操作
使用 fw-commit
命令执行固件升级操作。请根据现场服务器环境需要,选择升级方法:
# nvme fw-commit /dev/nvme0 -s <插槽号> -a 1
nvme fw-commit /dev/nvme0 -s 2 -a 3
此命令将固件写入指定插槽并激活更新。
-A 解释:参数用于指定固件激活方式。各个选项的含义如下:
-a 1 立即激活(无需重启)。固件更新会立即应用并激活,不需要重启设备。这种方式适用于需要快速生效的更新。
-a 2 手动重置激活。固件更新会在用户手动执行重置操作后生效。这适用于需要手动干预以确保更新成功的场景。
-a 3 重启后激活。固件更新会在设备重启后生效。这种方式通常用于需要系统稳定重启的情况下,以确保更新顺利应用。
-S 解释:参数用于指定要操作的固件槽(slot)。标准定义中,SSD 支持最多 7 个固件存放槽,每个槽有不同的用途和权限。
-s 1 用于存放出厂固件,该槽是只读的,不允许进行写操作。它保存了 SSD 出厂时预装的固件版本。
-s 2~3 这些槽可以用于下载新的固件版本。当进行固件升级时,通常会将新的固件下载到这些槽中。
-s 4~7 企业级 SSD 最大支持 7 个固件版本,通常也用于存储和更新固件,但具体用途可能取决于 SSD 制造商和产品类型的支持情况。
3. 执行固态硬盘 reset 上下电操作。
nvme reset /dev/nvme* (reset使固件生效,如果第二步用的是 -a 3 就不用执行 reset)
***通过实际应用测试,若 reset 命令无法使固件生效,可以通过重启reboot :Linux OS系统后使固件生效。
1. 检查设备状态
升级完成后,使用 nvme list
命令检查设备状态,确保固件升级成功。
2. 查看固件历史记录
nvme fw-log /dev/nvme0n1
***fw-log命令可以查询(slot)固件升级记录
通过上述步骤,你可以成功使用 nvme-cli
工具在 Linux 环境中升级 NVMe 固态硬盘的固件。在升级前,请务必备份重要数据,并仔细检查各项参数以确保升级过程顺利完成。