升级固件是服务器日常维护工作中比较常见也是非常重要的一项内容。如果服务器数量庞大,手动升级的工作量是极大的,同时是无法满足维护要求的。ThinkSystem服务器支持通过联想专有的OneCli工具进行服务器操作升级固件的操作,这大大减轻了服务器维护的难度。 这里我们以批量升级XCC固件为例,简单介绍如何通过OneCli Tool批理更新服务器固件。
一、目标
本文档介绍如何通过联想XClarity Essentials OneCLI multiflash程序,对联想ThinkSystem服务器进行远程(OOB)批量升级/降级系统固件。详细支持服务器型号请参考联想XClarity Essentials OneCLI用户指南。
https://sysmgt.lenovofiles.com/help/topic/toolsctr_cli_lenovo/onecli_bk.pdf
二、 Windows平台
a) 准备工作
1, 从联想支持网站下载联想XClarity Essentials OneCLI工具。
注意: 本图片仅供参考,当前最新版本要比图中所示版本更高。
2,将工具包解压,例如解压到C盘根目录。然后新建两个目录,一个用来存放固件,一个用来存放配置文件。目录名称可以自定义,这里我们使用code目录存放固件文件,script目录存放配置文件。
3,进入Sample目录,这里面是OneCli需要使用的配置文件的样本,批量更新固件需要使用“credentials_config.json”(明文密码)和“multi_task_config.json”(多任务调度)这两个配置文件。
4, 将这两个文件拷贝到新建的script目录,不建议在Sample目录直接编辑,这样可以方便管理,编辑时也可以对格式进行参考。拷贝完成后,可以自定义文件名方便管理。如下图pwd.json是明文密码配置文件,task.jason是多任务调度配置文件。
5, 如果所有XCC使用相同的用户名和密码,则不需要配置明文密码文件,只需配置task.json文件即可。这里我们假设XCC有许多不同的用户名和密码(有些XCC使用默认的USERID/PASSW0RD,有些XCC使用用户定义的帐户)。
注意: 请确保JSON文件的格式正确。在JSON文件的对象中,“键值对”使用逗号分隔,但注意最后一个键值后面不要用逗号。
如下面的例子所示,最后一个键值("key3": "value3")末尾没有","。
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
6,编辑pwd.json文件,如下图所示,在“connection_credentials”这里输入默认帐户信息到“default_alias”,输入用户自定义帐户信息到“alias_user1”。可根据实际情况配置多个“alias_user”,如“alias_user2”、“3”。在“target_systems”中输入XCC IP地址,该IP地址需要与alias_user匹配,并且它还支持多种格式的XCC IP设置,例如“127.0.[2-3].[3-253]表示为127.0.2.3 ~ 127.0.3.253地址段内的所有IP地址。
7,如下图所示,这里我们批量更新两台服务器的固件。地址为10.245.54.210的服务器XCC使用默认用户名和密码,地址为141的地址使用alias_user1中定义的用户名和密码。
8,编辑task.json文件,修改 “password_decrypt_mode”的值从0变为1。请注意,如步骤5所述,如果所有XCC使用相同的用户名和密码,并且您只使用task.json文件,则不需要更改此设置。
9,对于task.json文件,确保“bmc_credential”中配置的别名和“target_bmc”中配置的IP地址组合与明文密码配置文件(pwd.json)中的配置保持一致。
10, 使用OneCli encrypt命令加密明文密码文件,“–unattended”是一个可选参数,如果指定,将不需要输入密码。否则,您需要设置一个密码,并在运行multiflash时提供它。
OneCli.exe encrypt [--unattended] –configfile <pwd.json>
11,加密完成后,会在onecli根目录下生成一个crypt.json文件。注意: 如果您将此文件移动到新位置,则需要编辑global.config文件来指定新路径。
ENCRYPTED_CREDENTIALS_FILE_PATH
12,crypt.json将明文密码进行了加密。
b) 固件更新
1,执行如下命令开始批量更新固件,按您的实际情况输入文件名和路径。
OneCli.exe update multiflash --configfile ./script/task.json --dir ./code
2,在提示输入passphrase时,输入前面生成crypt.json时所设置的加密密码。
3,提示固件更新过程中目标系统将会发生reboot,这里我们只更新XCC,所以这里的目标系统是指XCC会进行reboot。按提示输入“yes”。
4,开始进行批量更新固件,等待任务执行完成即可。注意:对于XCC升级,在XCC固件升级完成、XCC完成重启并启动所有服务器后显示成功。对于uEFI升级,固件升级后会显示成功,但需要手动重启服务器才能生效。
5, 任务执行完成后,它会显示有多少成功和多少失败。并且它将指示在哪里可以找到详细日志文件。
6, “multi_task_status”文件是升级状态的摘要,以“SUCCESS”或“FAIL”开头的文件夹包含每台服务器的详细固件升级日志。
三、 Linux平台
1,如果您需要在Linux平台上运行OneCli进行批量固件更新,所有步骤与在Windows平台上相同。请按照同样的步骤准备升级。这里只是一些补充说明。
2,从联想支持网站下载联想XClarity Essentials OneCLI。例如,下载RHEL版本,它也可以在CentOS下使用。
Download link:
3, 在Linux系统中使用的升级命令与Windows系统相同,如password文件加密命令:
./OneCli encrypt --configfile ./script/pwd.json
4,执行以下命令开始批量升级固件:
./OneCli update multiflash –configfile ./script/task.json –dir ./code
四、 批量降级固件
1, 如同“flash”命令,multiflash同样也支持批量降级系统固件。
2, 使用“–forceid”选项,它支持为更新ID添加force标签来强制降级。它还支持
3, 命令示例:
OneCli.exe update multiflash --forceid all --configfile ./script/task.json --dir ./code
五、 带内升级固件
1,注意: 这里介绍的带内升级固件不是必需的操作。带内升级操作仅作为后备计划使用并且带内升级不是multiflash,需要逐个升级服务器固件。如果在multiflash期间任何升级失败,您可以尝试带内升级。
2, 在进行带内升级之前,首先要做的是确认带内网络是否正常,确保XCC带内接口已启用并且可以访问。确保在操作系统中会有一个USB0网络接口(不同OS中此网卡名称可能会不同),其IP地址为169.254.95.120。XCC控制器的带内IP地址为169.254.95.118,您可以在OS中Ping此IP地址或SSH登录,以确保它可以访问。
3,通过以下命令进行带内XCC固件升级操作。固件目录和LOG目录自定义即可。
./OneCli update flash --nocompare --includeid lnvgy_fw_xcc_cdi358p-4.80_anyos_noarch --dir ./code --output ./logs --bmc USERID:PASSW0RD@169.254.95.118
六、 关于FPGA固件升级
1, FPGA固件不是一个独立的固件,而是嵌入在XCC固件中。但并不是每个XCC固件版本发布都会包含FPGA固件更新。升级XCC固件前,需要检查待升级的XCC版本是否包含FPGA升级。您跳过的XCC版本也需要检查。
2, 如果涉及到的XCC固件包含FPGA升级,则需要在XCC固件升级后对服务器进行重启操作,这样才会使新的FPGA固件激活。如果涉及到的XCC固件升级不包括FPGA固件升级,则不需要对服务器进行重启。您可通过OS或XCC对服务器进生重启,或通过IPMITool等工具来执行。
3, 注意: 这是一个强制性的要求,如果FPGA固件升级后没有对服务器进行重启,将导致服务器不稳定,可能出现任何未知问题影响服务器正常运行。所以在批量更新XCC固件之前,请先根据实际情况来合理规划维护窗口。
4, 您可以通过查看XCC固件更改历史文件(change history),以确认您的XCC升级是否包含FPGA升级。下面的链接以SR650 XCC固件更改历史文件为例。
https://download.lenovo.com/servers/mig/2023/10/19/58570/lnvgy_fw_xcc_cdi3b2o-9.87_anyos_noarch.chg
5, 大多数较新版本的XCC固件支持在XCC网页上查看FPGA版本。但是不同型号的服务器可能有不同的版本来支持这一点。请参考XCC CHG文件来检查哪个XCC版本支持你的服务器在XCC网页上查看FPGA版本。
七、 其它注意事项
1、对于uEFI固件升级/降级,服务器会自动重启并检查新固件是否生效。这是基于当前的OneCli multiflash工具设计的正常行为。
2、操作系统可能无法正常响应,可能导致意外数据丢失或操作系统崩溃。在对uEFI固件进行multiflash之前,请确保服务器上的数据或操作系统已经完全备份。
3、XCC用户帐号权限级别必须为“Supervisor”。
4、请使用XCC本地用户帐号,不要使用AD/LDAP用户帐号。
5、只将需要升级的固件文件放入“code”文件夹。例如,如果只升级XCC,则只需将XCC固件文件和XML文件放入文件夹中即可。请勿在该文件夹中存储任何其他固件文件,以避免意外的固件更新。