本发明涉及固件升级的技术领域,特别涉及一种Linux系统下透过RAID卡实现硬盘固件在线批量升级的方法。
背景技术:
随着浪潮服务器产业的不断发展和壮大,作为国内最大的服务器供应商,服务器市场已经囊括各个领域,尤其是金融、互联网等主流领域,互联网的高速发展,信息的高安全性和系统的高可靠性越来越成为公司、企业、政府最为关注的事情,而硬盘作为数据存储的主要载体,其稳定性和可靠性也越来越受到重视,由于客户应用的复杂化和多样性,难免会出现一些客户应用与硬盘的兼容性问题,这样硬盘势必要进行固件的升级以解决和优化出现的问题,这样在测试端、生产端以及客户端不可避免的会经常出现固件升级的情况,简单快捷安全的固件升级方法显得尤为重要。
硬盘作为一个及其重要的服务器部件,其安全可靠性直接影响着客户数据的安全可靠,当前在直连模式或者SAS卡模式下,硬盘的固件可以直接用厂商提供工具实现,但是RAID卡模式下,硬盘厂商的工具则无法透过RAID卡实现对硬盘固件的升级,所以能实现RAID卡模式下,能否实现硬盘固件的在线升级是非常有必要的,尤其是在测试端、生产端以及客户端配有RAID卡且有大批量硬盘需要固件升级时,能硬盘固件实现批量在线升级显得尤为重要。
此外,在RAID卡的整个生命周期内,不可避免的会对客户服务器上的RAID卡进行例行的固件升级,此时的服务器都会在线上运行业务,如果是用常规的升级方式虽然简单,但关机停业务这个过程会十分的繁琐和费时,在系统下暂停业务不重启服务器的方式升级固件就十分的必要和高效。另外,大型机房的通用服务器机柜里通常几十上百的相同类型的服务器,在测试和日常维护的过程中,需要对这些服务器的RAID卡驱动进行固件升级刷新,通常情况下,完整更新需要大约10至15分钟,如果在每个服务器逐个进行刷新,则会需要四五个小时以上,而且在大量重复操作的情况下,难免会出现一些难以避免的错误。
基于以上需求,需要用某种简单快捷的方法,来实现透过RAID卡实现硬盘固件批量在线升级的方法。
技术实现要素:
由于硬盘在复杂化和多样的客户环境下运行,难免会出现一些这样那样的问题,因此硬盘厂商会定期进行固件的升级,以解决和优化客户端出现的各种问题,这样在测试端、生产端以及客户端不可避免的会经常出现固件升级的情况。
当前在直连模式或者SAS卡模式下,硬盘的固件可以直接用厂商提供工具实现;但随着客户需求越来越高,需要的配置也越来越丰富,RAID卡作为主力的客户配置,一旦硬盘出现问题需要升级固件,在客户不要去断电在线升级的情况下,就显得尤为被动,所以,实现透过RAID卡实现硬盘固件批量在线升级的方法势在必行。
为解决如上的技术问题,本发明提出了一种Linux系统下透过RAID卡实现硬盘固件在线批量升级的方法:包括如下操作步骤:
第一步,搭建测试环境;
第二步,在上述测试环境中安装Linux操作系统;
第三步,在上述测试环境中安装工具包;
第四步,通过指令来获取RAID阵列的相关参数;
第五步,运行Linux系统中的shell命令进行固件批量升级;
第六步,确认升级成功。
较佳地,第三步中所安装的工具包为对应于RAID的工具包,优选为Storcli工具包;
较佳地,第三步之前先判断系统中是否已经安装了工具包,如果还没有安装则执行工具包的安装,具体通过如下的指令来实现:[!-f/opt/MegaRAID/storcli/storcli*]&&rpm-i Storcli-*.noarch.rpm>/dev/null||2>/dev/null
!-f/opt/MegaRAID/storcli/storcli*没有安装Storcli管理工具
rpm-i storcli-*.noarch.rpm安装Storcli管理工具
如上的指令的功能即判断系统中是否安装有RAID卡管理工具Storcli,如果没有安装则安装,如果己经安装则进行下一步。
较佳地,第四步中所获取的RAID阵列的相关参数为Ctl Model、EID与DID;
较佳地,第五步中运行Linux系统中的shell命令进行固件批量升级包括了创建单盘升级命令以及创建批量升级命令,其中单盘升级命令为:/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i(drive slot id)download src=filename path,批量升级命令为:for i in{0..x};do echo device$i;/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i download src=filename path;done。
较佳地,第六步中确认升级成功包括了创建单盘固件升级确认命令以及创建批量确认命令,其中单盘固件升级确定命令为/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i(drive slot id)show all|grep-i Revision,批量确定命令为for i in{0..x};do echo$i&&/opt/MegaRAID/storcli/storcli64(storecli工具存储路径)/c0/e22/s$i show all|grep-i Revision;donesmartctl--all--device=megaraid,DID/dev/sda。
另一方面,本发明的实施例提供一种Linux系统下透过RAID卡实现硬盘固件在线批量升级的装置,包括:
环境搭建模块,用于搭建测试环境;
系统安装模块,用于在环境搭建模块所搭建的测试环境中安装Linux操作系统;
工具包安装模块,用于在环境搭建模块所搭建的测试环境中安装工具包;
参数获取模块,用于通过指令获取RAID阵列的相关参数;
升级模块,用于运行Linux系统中的shell命令进行固件批量升级;
确认模块,用于在升级模块执行后确认升级成功。
较佳地,工具包安装模块所安装的工具包为对应于RAID的工具包,优选为Storcli工具包;
较佳地,工具包安装模块在执行工具包的安装之前先判断系统中是否已经安装了工具包,如果还没有安装则执行工具包的安装,具体通过如下的指令来实现:[!-f/opt/MegaRAID/storcli/storcli*]&&rpm-i Storcli-*.noarch.rpm>/dev/null||2>/dev/null
!-f/opt/MegaRAID/storcli/storcli*没有安装Storcli管理工具
rpm-i storcli-*.noarch.rpm安装Storcli管理工具
如上的指令的功能即判断系统中是否安装有RAID卡管理工具Storcli,如果没有安装则安装,如果己经安装则进行下一步。
较佳地,参数获取模块所获取的RAID阵列的相关参数为Ctl Model、EID与DID;
较佳地,升级模块运行Linux系统中的shell命令进行固件批量升级包括了创建单盘升级命令以及创建批量升级命令,其中单盘升级命令为:/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i(drive slot id)download src=filename path,批量刷新命令为:for i in{0..x};do echo device$i;/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i download src=filename path;done。
较佳地,确认模块确认升级成功包括了创建单盘固件升级确认命令以及创建批量确认命令,其中单盘固件确定命令为/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i(drive slot id)show all|grep-i Revision,批量确定命令为for i in{0..x};do echo$i&&/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)/c0/e22/s$i show all|grep-i Revision;donesmartctl--all--device=megaraid,DID/dev/sda。
由以上可知,本发明公开了一种在Linux系统下利用RAID卡厂商的Storcli工具,再结合Linux系统下标准的指令来实现硬盘固件批量在线刷新的方法与装置。这种设计方案能够做到在测试阶段和生产阶段简单快捷安全的进行固件在线批量升级,大大缩短了固件升级时间,提供了工作效率,减少人力成本。另外,当硬盘本身出现问题时,能够快速进行硬盘固件验证,从而提高解决问题的效率,当确定硬盘固件解决方案时,能够实现客户现场的批量重工,提供效率,为公司节约成本。
附图说明
图1是本发明实施例的工作流程示意图;
图2是本发明实施例中升级装置的结构示意图;
具体实施例
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
本发明提供一种Linux系统下透过RAID卡实现硬盘固件在线批量升级的方法与装置,其能够结合RAID卡厂商的Storcli工具以及Linux操作系统下的标准Shell脚本指令,实现在线、批量升级。
本发明的技术方案是通过软件的方式来实现,更具体而言,是在Linux系统下用RAID卡对应的工具读出RAID阵列的参数,例如Ctl Model和EID,然后通过Linux系统命令编写脚本直接实现硬盘固件的批量在线刷新,并且在批量升级后通过版本信息来确认升级成功。
为了更清楚地描述本发明的技术方案,对本发明的具体实施方式做出如下更详细的介绍,参见图1,其描述了本发明实施例的工作流程示意图;
如图1所示,该方法包括以下步骤:步骤101,搭建测试环境;本发明中可以以需要进行批量升级的服务器机组为基础来搭建该测试环境,其具体所包括的硬件基础设备属于本领域技术人员的公知常识,在此不再赘述;
步骤102,在上述测试环境中安装Linux操作系统;本发明实现批量升级要基于Linux系统的标准脚本指令,因此在本系统环境中需要安装Linux操作系统;
步骤103,在上述测试环境中安装工具包;本发明中要透过RAID实现硬盘固件的升级,为能够克服现有技术中的在RAID卡模式下硬盘厂商的工具无法透过RAID卡实现对硬盘固件的升级,本发明中需要提供对应于该RAID的工具包,优选该工具包为Storcli工具包;
在该步骤103之前还可以包括如下步骤:先判断系统中是否已经安装了工具包,如果还没有安装则执行工具包的安装,具体通过如下的指令来实现:[!-f/opt/MegaRAID/storcli/storcli*]&&rpm-i Storcli-*.noarch.rpm>/dev/null||2>/dev/null
!-f/opt/MegaRAID/storcli/storcli*没有安装Storcli管理工具
rpm-i storcli-*.noarch.rpm安装Storcli管理工具
如上的指令的功能即判断系统中是否安装有RAID卡管理工具Storcli,如果没有安装则安装,如果己经安装则进行下一步。
步骤104,通过指令来获取RAID阵列的相关参数;在本发明的技术方案中,经过如上步骤101-103的准备工作,则可以执行参数获取与批量升级的操作,更具体而言,在该步骤104中要获取RAID的相关参数,具体可以包括如下的子步骤:步骤1041:打开Storcli工具所在文件夹,打开工具文件夹可以具体通过如下的指令来实现:cd/opt/MegaRAID/storcli/;步骤1042:查看Ctl Model,通过运行如下指令来实现Ctl Model的查看:./storcli64/show,执行该命令可以显示Ctl、Model、Ports等参数信息;步骤1043:用命令获取RAID阵列的相关参数:运行如下指令./storcli64/c0show,即可获取例如EID、slt、DID、state等等参数信息。
步骤105,运行Linux系统中的shell命令进行固件批量升级;本步骤中将采用Linux系统的标准指令进行批量升级,进行固件批量升级要先后创建单盘升级命令以及创建批量升级命令并执行,其中:
单盘升级命令为:
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i(drive slot id)download src=filename path
批量升级命令为:
for i in{0..x};
do echo device$i;
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i download src=filename path;
done
通过执行如上的指令,即可实现在线批量升级操作,其中的批量升级命令中首先定义一个循环,随后针对每一个装置逐个进行硬盘固件的升级操作。
步骤106,确认升级成功;在执行完步骤105之后,在步骤106中对升级的结果进行确认,即确认升级是否成功。确认升级是否成功的步骤要首先创建单盘固件升级确认命令以及创建批量确认命令并执行这些指令,其中:
单盘固件升级确定命令为:
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i(drive slot id)show all|grep-i Revision
批量确定命令为:
for i in{0..x};
do echo$i&&/opt/MegaRAID/storcli/storcli64(storecli工具存储路径)
/c0/e22/s$i show all|grep-i Revision;
done smartctl--all--device=megaraid,DID/dev/sda
通过执行如上的指令,即可实现在线批量升级的确认操作,其中的批量确认命令中首先定义一个循环,随后针对每一个装置逐个进行硬盘固件的升级成功与否的确认操作,在确认过程中通过版本信息(revision)来判断是否升级成功。
通过如上的操作步骤,即可实现透过RAID来实现硬盘固件的在线、批量更新,其结合了Linux操作系统标准脚本与RAID工具包的指令来实现升级以及升级确认操作,升级方式简单易行,缩短了固件升级时间,提供了工作效率,减少人力成本。
此外,本发明的实施例中还提供了一种Linux系统下透过RAID卡实现硬盘固件在线批量升级的装置,参见图2,其描述了本发明实施例的装置的组成图;
如图2所示,该装置包括:环境搭建模块201、系统安装模块202、工具包安装模块203、参数获取模块204、升级模块205、确认模块206。
环境搭建模块201,用于搭建测试环境;本发明中可以以需要进行批量升级的服务器机组为基础来搭建该测试环境,其具体所包括的硬件基础设备属于本领域技术人员的公知常识,在此不再赘述;
系统安装模块202,用于在环境搭建模块201所搭建的测试环境中安装Linux操作系统;本发明实现批量升级要基于Linux系统的标准脚本指令,因此在本系统环境中需要安装Linux操作系统;
工具包安装模块203,用于在环境搭建模块201所搭建的测试环境中安装工具包;本发明中要透过RAID实现硬盘固件的升级,为能够克服现有技术中的在RAID卡模式下硬盘厂商的工具无法透过RAID卡实现对硬盘固件的升级,本发明中需要提供对应于该RAID的工具包,优选该工具包为Storcli工具包;
该工具包安装模块203还可以在安装工具包之前执行如下步骤:先判断系统中是否已经安装了工具包,如果还没有安装则执行工具包的安装,具体通过如下的指令来实现:[!-f/opt/MegaRAID/storcli/storcli*]&&rpm-i Storcli-*.noarch.rpm>/dev/null||2>/dev/null
!-f/opt/MegaRAID/storcli/storcli*没有安装Storcli管理工具
rpm-i storcli-*.noarch.rpm安装Storcli管理工具
如上的指令的功能即判断系统中是否安装有RAID卡管理工具Storcli,如果没有安装则安装,如果己经安装则进行下一步。
参数获取模块204,用于通过指令来获取RAID阵列的相关参数;在本发明的技术方案中,经过如上环境搭建模块201、系统安装模块202、工具包安装模块203的准备工作,则可以执行参数获取与批量升级的操作,更具体而言,参数获取模块204要获取RAID的相关参数,具体可以包括如下的子步骤:打开Storcli工具所在文件夹,打开工具文件夹可以具体通过如下的指令来实现:cd/opt/MegaRAID/storcli/;查看Ctl Model,通过运行如下指令来实现Ctl Model的查看:./storcli64/show,执行该命令可以显示Ctl、Model、Ports等参数信息;用命令获取RAID阵列的相关参数:运行如下指令./storcli64/c0show,即可获取例如EID、slt、DID、state等等参数信息。
升级模块205,用于运行Linux系统中的shell命令进行固件批量升级;采用Linux系统的标准指令进行批量升级,进行固件批量升级要先后创建单盘升级命令以及创建批量升级命令并执行,其中:
单盘升级命令为:
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i(drive slot id)download src=filename path
批量升级命令为:
for i in{0..x};
do echo device$i;
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i download src=filename path;
done
通过执行如上的指令,即可实现在线批量升级操作,其中的批量升级命令中首先定义一个循环,随后针对每一个装置逐个进行硬盘固件的升级操作。
确认模块206,用于确认升级成功;在升级模块205执行之后,确认模块206对升级的结果进行确认,即确认升级是否成功。确认升级是否成功的步骤要首先创建单盘固件升级确认命令以及创建批量确认命令并执行这些指令,其中:
单盘固件升级确定命令为:
/opt/MegaRAID/storcli/storcli64(Storcli工具存储路径)
/c0/e22/s$i(drive slot id)show all|grep-i Revision
批量确定命令为:
for i in{0..x};
do echo$i&&/opt/MegaRAID/storcli/storcli64(storecli工具存储路径)
/c0/e22/s$i show all|grep-i Revision;
done smartctl--all--device=megaraid,DID/dev/sda
通过执行如上的指令,即可实现在线批量升级的确认操作,其中的批量确认命令中首先定义一个循环,随后针对每一个装置逐个进行硬盘固件的升级成功与否的确认操作,在确认过程中通过版本信息(revision)来判断是否升级成功。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。