本发明涉及固件升级技术领域,具体地说是一种服务器自动批量刷RAID卡FW的方法。
背景技术:
RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。
RAID是一种把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,从而提供比单个硬盘有着更高的性能和提供数据冗余的技术。
RAID卡一般分为硬RAID卡和软RAID卡两种,通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。通过软件并使用CPU的RAID卡是指使用CPU来完成RAID的常用计算,软件RAID占用CPU资源较高,绝大部分服务器设备是硬件RAID。
固件,Firmware,简称FW,是写入EROM,可擦写只读存储器或EEPROM,电可擦可编程只读存储器中的程序。是指设备内部保存的设备"驱动程序",通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
随着目前测试技术的不断发展,各种测试工具、测试软件及方法被越来越多的应用于服务器产品及各种部件的测试。
大型机房的通用服务器机柜里通常有20至80个相同类型的服务器,在测试和日常维护的过程中,需要对这些服务器的各种外插卡(网卡、RAID卡、HBA卡等)驱动进行固件升级刷新。一般情况下,升级一个RAID卡的FW,需要停掉所有业务,重启机器进入DOS界面下刷新,刷新完成后再重启一遍才能生效,完整升级需要大约5至10分钟,如果在每个服务器逐个进行刷新,则会需要四五个小时以上,而且在大量重复操作的情况下,难免会出现一些难以避免的错误。
技术实现要素:
本发明的技术任务是提供一种服务器自动批量刷RAID卡FW的方法。
本发明的技术任务是按以下方式实现的,具体方法如下:
第一步,登录各服务器,顺序分配IP地址,通过命令依次点亮所有节点的BMC标识LED,检测通畅;
第二步,将自动刷新RAID卡FW脚本和相应的RAID卡管理工具拷贝到测试服务器,并执行自动刷新脚本;
第三步,等待各服务器刷新完毕后重启服务器后,等待自动刷新RAID卡FW脚本反馈测试结果;
第四步,查看测试服务器,自动刷新RAID卡FW脚本反馈的check.txt文件,确认各服务器是否刷新成功。
优选的,详细的方法步骤如下:前置工作:将机柜中的全部服务器按照物理位置从下到上顺序设置节点名称并分配IP地址,cu1/192.168.1.1;cu2/192.168.1.2;……;cu40/192.168.1.40,分配完成后配置好ssh自动登陆,
然后通过命令:
for i in {1..40}
do ssh cu$i ipmitool chassis identify
依次点亮所有通用服务器的BMC标识LED,检测各节点网络是否通畅,检测完成后即可应用本文中介绍的方法进行BIOS刷新作业;
方法脚本:
A:实现登陆至各个服务器,并执行指定命令后转入后台;
#!/bin/bash
function logon()
命名程序为logon
{ssh $1 $2 }
logon程序主体为ssh远程登陆至$1($1此部分定义为服务器ip地址),执行$2($2为实现后续各部分功能的具体程序)
for i in {1..40}
定义参数“i”从1循环至40
do
执行以下操作
echo "-----------$i--------"
显示循环至当前“i”的值
logon 192.168.1.$i "$1" &
执行logon程序,登陆至当前循环至服务器的ip,并执行“$1”(此处$1不同于前面定义程序时的$1,而是代表前面的$2),最后的“&”符号则表示此命令转入后台操作,可直接循环至下一步,此处比较重要,如果没有这个命令,本程序则会完成所执行的命令才会继续循环程序,造成运行时间上的增加。
done
程序结束
B:将RAID卡FW文件以及相应的RAID卡管理工具拷入待测服务器;
#!/bin/bash
function scopy()
命名程序为scopy
{scp $1 $2 $3}
scopy程序主体为远程拷贝scp,将$1(RAID卡FW文件)与$2(RAID卡的管理工具)拷贝到$3(目标节点的具体目录下,此处$3延用第一部分中当前循环至的节点ip)
scopy afulnx rom 192.168.1.$i:/root/Drive/
执行scopy程序,将本地的各种外插卡驱动文件以及需要编译的内容文件远程拷贝到当前循环至服务器的根目录Drive文件夹内
done
程序结束
C: 执行自动编译刷新脚本,进行RAID卡FW刷新升级作业;
执行自动编译刷新RAID卡FW脚本,进行RAID卡FW刷新升级作业,此步骤结合logon程序使用,作为logon程序的$2部分,
cd /root/FW/
进入到根目录FW文件夹内
执行自动编译刷新RAID卡FW脚本,根据不同的内核,使用不同的RAID卡管理工具,
将A、B、C三部分整合为一个脚本,在logon部分后使用,即可完成刷新作业;
D:重启服务器后抓取服务器RAID卡FW版本信息,以验证是否刷新成功;
首先将第四部分脚本放置在etc/rc.d/rc.local中,作为开机自启动部分,reboot服务器后执行以下操作,
for i in {1..40}
定义参数“i”从1循环至40
do echo “cu$i”>> check.txt
将当前循环至服务器的名称写入check.txt文档
ssh 192.168.1.$i arcconf getconfig 1 |grep firmware -i >> check.txt
在dmesg中抓取各种外插卡驱动版本号信息,写入check.txt
done
完成操作
将A、B、C、D四部分整合为一个脚本,即可完成全部刷新作业并检查刷新是否成功。
优选的,PMC的RAID卡使用arcconf管理工具;
系统下FW刷新指令为:arcconf romupdate 1 xxx.ufi;
系统下FW刷新指令为:arcconf getconfig 1 |grep firmware –i。
优选的,LSI的RAID卡使用storcli管理工具;
系统下FW刷新指令为:storcli /c0 download file=xxx.rom noverchk;
系统下FW刷新指令为:storcli /c0 show |grep ‘FW Version’。
优选的,所述的方法基于Linux操作系统。
本发明的一种服务器自动批量刷RAID卡FW的方法和现有技术相比,有益效果如下:
1、此方法是一种自动化、快捷方便、易操作、并能避免人工出错的适用于各种通用服务器的自动批量刷新RAID卡FW的方法。它可以实现自动将RAID卡FW文件和RAID卡管理工具传输到各个节点,并且完成RAID卡FW的刷新。能帮助我们快速准确的完成大量节点的RAID卡FW升级工作。
2、该测试方法适用于目前业界内所有服务器,实现了无需繁琐的手动操作,简洁、省时、自动化的刷新各种外插卡驱动。
3、适用于大型机房里机柜上大量服务器的RAID卡FW进行快速的同步自动刷新,大量节省了逐个服务器刷新RAID卡FW的时间,由于刷新命令和FW文件已经整合在脚本中,避免重复操作造成的错误,提升服务器后期维护的整体质量。
附图说明
附图1为一种服务器自动批量刷RAID卡FW的方法的流程示意图。
具体实施方式
本发明是通过在Linux系统下编译一个简单的bash脚本,对机柜上全部节点进行远程操作,按各自的内核编译各种外插卡驱动程序并刷新驱动,刷新完成后重新启动节点完成刷新,在重启之后利用arcconf getconfig 1 |grep firmware -i(此命令针对PMC的RAID卡,LSI的RAID卡的命令在下文有给出)读取节点RAID卡的FW版本信息后统一存入文档以便检查刷新是否成功。
实施例1:
下面以40台通用服务器,PMC的RAID卡为例,对本方法进行逐步说明,
1.1 前置工作:
将机柜中的全部服务器按照物理位置从下到上顺序设置节点名称并分配IP地址,例如cu1/192.168.1.1;cu2/192.168.1.2;……;cu40/192.168.1.40。分配完成后配置好ssh自动登陆。(由于本方法的核心内容不在于此,所以具体配置方法略过。)
然后通过命令:
for i in {1..40}
do ssh cu$i ipmitool chassis identify
依次点亮所有通用服务器的BMC标识LED,检测各节点网络是否通畅。检测完成后即可应用本文中介绍的方法进行BIOS刷新作业。
1.2 方法脚本
本文中介绍的方法主体循环执行四个部分,第一部分,实现登陆至各个服务器,并执行指定命令后转入后台,第二部分,将RAID卡FW文件以及相应的RAID卡管理工具拷入待测服务器,第三部分,执行自动编译刷新脚本,进行RAID卡FW刷新升级作业,第四部分,重启服务器后抓取服务器RAID卡FW版本信息,以验证是否刷新成功。
(1)下面介绍第一部分的主要脚本,如何实现登陆至各个服务器,
#!/bin/bash
function logon()
命名程序为logon
{ssh $1 $2 }
logon程序主体为ssh远程登陆至$1($1此部分定义为服务器ip地址),执行$2($2为实现后续各部分功能的具体程序)
for i in {1..40}
定义参数“i”从1循环至40
do
执行以下操作
echo "-----------$i--------"
显示循环至当前“i”的值
logon 192.168.1.$i "$1" &
执行logon程序,登陆至当前循环至服务器的ip,并执行“$1”(此处$1不同于前面定义程序时的$1,而是代表前面的$2),最后的“&”符号则表示此命令转入后台操作,可直接循环至下一步,此处比较重要,如果没有这个命令,本程序则会完成所执行的命令才会继续循环程序,造成运行时间上的增加。
done
程序结束
(2)第二部分,将各种RAID卡FW文件以及相应的RAID卡管理工具拷入待测服务器,
#!/bin/bash
function scopy()
命名程序为scopy
{scp $1 $2 $3}
scopy程序主体为远程拷贝scp,将$1(RAID卡FW文件)与$2(RAID卡的管理工具)拷贝到$3(目标节点的具体目录下,此处$3延用第一部分中当前循环至的节点ip)
scopy afulnx rom 192.168.1.$i:/root/Drive/
执行scopy程序,将本地的各种外插卡驱动文件以及需要编译的内容文件远程拷贝到当前循环至服务器的根目录Drive文件夹内
done
程序结束
(3)第三部分,执行自动编译刷新RAID卡FW脚本,进行RAID卡FW刷新升级作业,此步骤必须结合logon程序使用,作为logon程序的$2部分,
cd /root/FW/
进入到根目录FW文件夹内
执行自动编译刷新RAID卡FW脚本,根据不同的内核,使用不同的RAID卡管理工具。
将上述部分整合为一个脚本,在logon部分后使用,即可完成刷新作业。
(4)第四部分,重启服务器后抓取节点BIOS版本信息,以验证是否刷新成功。
首先将第四部分脚本放置在etc/rc.d/rc.local中,作为开机自启动部分,reboot服务器后执行以下操作,
for i in {1..40}
定义参数“i”从1循环至40
do echo “cu$i”>> check.txt
将当前循环至服务器的名称写入check.txt文档
ssh 192.168.1.$i arcconf getconfig 1 |grep firmware -i >> check.txt
在dmesg中抓取各种外插卡驱动版本号信息,写入check.txt
done
完成操作。
由于服务器号与服务器信息是顺序写入check.txt,所以在check.txt中可以很直观的检查所有服务器的各种外插卡驱动版本号以验证刷新作业是否成功。
将上述四部分整合为一个脚本,即可完成全部刷新作业并检查刷新是否成功。
1.3针对两家主流厂商,分别有不同的刷新指令和FW信息的读取方法,下面分别列出:
MSCC/PMC
PMC的RAID卡使用arcconf管理工具
系统下FW刷新指令为:arcconf romupdate 1 xxx.ufi
系统下FW刷新指令为:arcconf getconfig 1 |grep firmware -i
BROADCOM/LSI
LSI的RAID卡使用storcli管理工具
系统下FW刷新指令为:storcli /c0 download file=xxx.rom noverchk
系统下FW刷新指令为:storcli /c0 show |grep ‘FW Version’
本方法可以快速、高效、准确、自动化的对机柜上的大量通用服务器进行同步刷新作业,大大节省了操作工时,并且由于RAID卡刷新指令和管理工具已预先写入脚本,还避免了在手动刷新时,由于大量重复操作造成的指令输入错误。不仅在测试工作中提高了工作效率,对服务器后期的维护工作也提供了便捷。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。