本申请涉及计算机应用技术领域,特别是涉及一种raid可执行文件更新方法、装置、设备及存储介质。
背景技术:
随着计算机技术的快速发展,存储设备在各行各业的使用越来越频繁。在使用存储设备过程中,用户可能会针对现有业务提出新的需求,这就需要对存储设备的系统进行升级。
但是,受功能限制,有的存储设备的系统无法通过专门的升级包升级,对于这种情况,只能在当前系统上在线替换内核ko文件,如内核raid(redundantarraysofindependentdrives,磁盘阵列)可执行文件。然而,存储设备前期的系统每次启动时,都会重新解压启动文件、依赖文件等压缩包到系统盘第一分区,这将导致启动前替换的文件无法生效,无法进行系统升级。
技术实现要素:
本申请的目的是提供一种raid可执行文件更新方法、装置、设备及存储介质,以进行raid可执行文件的有效更新,完成存储设备的系统升级。
为解决上述技术问题,本申请提供如下技术方案:
一种raid可执行文件更新方法,包括:
在要对系统的内核磁盘阵列raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,所述设定分区非第一分区;
重启所述系统,在所述系统开机启动过程中,基于所述校验文件,确定所述升级压缩包是否完整;
如果确定所述升级压缩包完整,则解压所述升级压缩包,获得待使用的raid可执行文件;
将获得的各raid可执行文件分别替换所述系统中相应的原文件。
在本申请的一种具体实施方式中,所述校验文件中记录有所述升级压缩包的原校验值,所述基于所述校验文件,确定所述升级压缩包是否完整,包括:
计算所述升级压缩包的第一校验值;
如果所述第一校验值与所述校验文件中记录的所述原校验值相同,则确定所述升级压缩包是完整的。
在本申请的一种具体实施方式中,在所述将获得的各raid可执行文件分别替换所述系统中相应的原文件之后,还包括:
计算由所述系统中更新后的raid可执行文件构成的压缩包的第二校验值;
如果所述第二校验值与所述校验文件中记录的所述原校验值相同,则确定所述系统的内核raid可执行文件更新成功。
在本申请的一种具体实施方式中,还包括:
如果所述第二校验值与所述校验文件中记录的所述原校验值不同,则输出针对所述系统的内核raid可执行文件更新失败的提示信息。
在本申请的一种具体实施方式中,所述在所述系统开机启动过程中,基于所述校验文件,确定所述升级压缩包是否完整,包括:
在所述系统开机启动过程中,调用初始化系统文件,执行所述初始化系统文件的加载模块函数起始位置的更新脚本,以基于所述校验文件,确定所述升级压缩包是否完整。
在本申请的一种具体实施方式中,所述初始化系统文件处于系统盘第二分区挂载目录。
在本申请的一种具体实施方式中,所述升级压缩包为基于待使用的raid可执行文件对应的原文件在所述系统中的目录进行打包压缩生成的。
一种raid可执行文件更新装置,包括:
文件拷贝模块,用于在要对系统的内核磁盘阵列raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,所述设定分区非第一分区;
完整性校验模块,用于重启所述系统,在所述系统开机启动过程中,基于所述校验文件,确定所述升级压缩包是否完整;
压缩包解压模块,用于如果确定所述升级压缩包完整,则解压所述升级压缩包,获得待使用的raid可执行文件;
文件替换模块,用于将获得的各raid可执行文件分别替换所述系统中相应的原文件。
一种raid可执行文件更新设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一项所述raid可执行文件更新方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述raid可执行文件更新方法的步骤。
应用本申请实施例所提供的技术方案,在要对系统的内核raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,重启系统,在系统开机启动过程中,基于校验文件,确定升级压缩包完整时,可以解压升级压缩包,获得待使用的raid可执行文件,将各raid可执行文件分别替换系统中相应的原文件,实现文件的更新,完成系统升级。将待使用的升级压缩包拷贝到非第一分区的设定分区的设定目录中,可以保证系统开机启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区时,升级压缩包不会被解压出来的启动文件、依赖文件等替换,可以实现raid可执行文件的有效更新。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种raid可执行文件更新方法的实施流程图;
图2为本申请实施例中一种raid可执行文件更新装置的结构示意图;
图3为本申请实施例中一种raid可执行文件更新设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,为本申请实施例所提供的一种raid可执行文件更新方法的实施流程图,该方法可以包括以下步骤:
s110:在要对系统的内核磁盘阵列raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中。
设定分区非第一分区。
在实际应用中,在使用存储设备的过程中,用户针对现有业务可能会有新的需求,这就有可能需要对系统的内核raid可执行文件进行更新。如背景技术中所描述的,简单的进行raid可执行文件的替换,会因为系统启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区,导致启动前替换的文件无法生效,使得raid可执行文件没有替换成功。
基于这样的问题,本申请实施例在要对系统的内核raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中。该设定分区非第一分区。这样可以保证系统开机启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区时,升级压缩包不会被解压出来的启动文件、依赖文件等替换。
具体的,可以将升级压缩包和校验文件拷贝到系统目录/mnt/log中,/mnt/log目录处于系统盘第六分区。
在本申请实施例中,升级压缩包为基于待使用的raid可执行文件对应的原文件在系统中的目录进行打包压缩生成的。可以先获得系统中要进行更新的raid可执行文件在系统中的目录,基于该目录格式,在控制设备上建立相应目录,将待使用的raid可执行文件放入该目录中,进行打包压缩生成升级压缩包。
待使用的raid可执行文件是指要替换系统中相应原文件的文件。待使用的raid可执行文件可以包括bmbo.ko、md-mod.ko、raid0.ko、raid10.ko、raid456.ko、rdbk.ko等文件。生成的升级压缩包格式为:dcs02-版本号.update.tar.bz2。
在生成升级压缩包后,可以同时生成该升级压缩包的校验值,如md5码,记录到校验文件中。校验文件可以是chksum.txt文件。
s120:重启系统,在系统开机启动过程中,基于校验文件,确定升级压缩包是否完整。
步骤s110的操作可视为在要对系统的内核磁盘阵列raid可执行文件进行更新时需要进行的准备工作。在将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中后,可以重启系统。
在系统开机启动过程中,可以基于校验文件,确定升级压缩包是否完整。即通过校验文件中记录的校验值,确定在该设定目录中的升级压缩包是否完整。以及时发现因拷贝过程中没有拷贝完全而导致的升级压缩包损坏或者不完整的情况。校验文件中记录的升级压缩包的校验值即为该升级压缩包的原校验值。
在本申请的一种具体实施方式中,可以通过以下步骤确定升级压缩包是否完整:
步骤一:计算升级压缩包的第一校验值;
步骤二:如果第一校验值与校验文件中记录的原校验值相同中,则确定升级压缩包是完整的。
即可以先计算设定目录中升级压缩包的第一校验值,将第一校验值和校验文件中记录的原校验值进行比较,如果第一校验值与校验文件中记录的原校验值相同,则可以确定升级压缩包是完整的。如果不相同,则可以确定升级压缩包不完整,在这种情况下,不再执行本申请实施例的后续操作,略过更新步骤启动存储设备即可,或者可以输出针对升级压缩包不完整的提示信息,以方便技术人员及时进行问题排查。
对升级压缩包进行完整性验证,可以避免损坏的raid可执行文件替换相应原文件后,导致存储设备无法正常使用的情况发生。
s130:如果确定升级压缩包完整,则解压升级压缩包,获得待使用的raid可执行文件。
在确定升级压缩包完整后,可以对升级压缩包进行解压操作,获得待使用的raid可执行文件。
s140:将获得的各raid可执行文件分别替换系统中相应的原文件。
在本申请实施例中,获得待使用的raid可执行文件之后,可以将获得的各raid可执行文件分别替换系统中相应的原文件。升级压缩包为基于待使用的raid可执行文件对应的原文件在系统中的目录进行打包压缩生成的,对升级压缩包进行解压,可以获知获得的各raid可执行文件对应的原文件在系统中的目录,据此可将各raid可执行文件分别替换相应的原文件,实现文件的更新,完成系统升级。
应用本申请实施例所提供的方法,在要对系统的内核raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,重启系统,在系统开机启动过程中,基于校验文件,确定升级压缩包完整时,可以解压升级压缩包,获得待使用的raid可执行文件,将各raid可执行文件分别替换系统中相应的原文件,实现文件的更新,完成系统升级。将待使用的升级压缩包拷贝到非第一分区的设定分区的设定目录中,可以保证系统每次开机启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区时,升级压缩包不会被解压出来的启动文件、依赖文件等替换,可以实现raid可执行文件的有效更新。
在本申请的一个实施例中,在步骤s140将获得的各raid可执行文件分别替换系统中相应的原文件之后,该方法还可以包括以下步骤:
第一个步骤:计算由系统中更新后的raid可执行文件构成的压缩包的第二校验值;
第二个步骤:如果第二校验值与校验文件中记录的原校验值相同,则确定系统的内核raid可执行文件更新成功。
为便于描述,将上述两个步骤结合起来进行说明。
在将获得的各raid可执行文件分别替换系统中相应的原文件之后,可以计算由系统中更新后的raid可执行文件构成的压缩包的第二校验值,将第二校验值与校验文件中记录的原校验值进行比较,如果二者相同,则可以确定系统的内核raid可执行文件更新成功,可以输出更新成功的提示信息。
如果第二校验值与校验文件中记录的原校验值不同,则表明系统的内核raid可执行文件未更新成功,可以输出针对系统的内核raid可执行文件更新失败的提示信息,以使技术人员进行相应问题排查。
在本申请的一个实施例中,步骤s120可以包括以下步骤:
在所示系统开机启动过程中,调用初始化系统文件,执行初始化系统文件的加载模块函数起始位置的更新脚本,以基于校验文件,确定升级压缩包是否完整。
在本申请实施例中,可以预先编写更新脚本update.sh,该更新脚本可以基于校验文件,确定升级压缩包是否完整。进一步,可以在确定升级压缩包完整时,解压升级压缩包,分别将获得的各raid可执行文件分别替换系统中相应的原文件。
可以预先修改初始化系统文件rc.sysinit,在该初始化系统文件的加载模块load_modules函数起始位置,增加执行更新脚本update.sh的命令。初始化系统文件rc.sysinit是每次开机启动时调用的脚本,在每次开机启动时,将待使用的raid可执行文件替换到系统中,从而实现文件的更新。
初始化系统文件处于系统盘第二分区挂载目录,具体可以将修改后的初始化系统文件rc.sysinit拷贝到系统目录/etc/rc.d中,实现rc.sysinnit的替换。/etc目录是系统盘第二分区挂载目录,保证系统开机启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区时,初始化系统文件不会被解压出来的启动文件、依赖文件等替换。
在系统开机启动过程中,调用初始化系统文件,因初始化系统文件的加载模块函数起始位置增加有执行更新脚本的命令,所以,在调用初始化系统文件过程中,即可执行该更新脚本,以基于校验文件,确定升级压缩包是否完整,进一步可以在确定升级压缩包完整时,解压升级压缩包,将获得的各raid可执行文件分别替换系统中相应的原文件。
通过更新脚本可以使得对于升级压缩包完整性校验、解压、文件替换等操作自动完成,提高文件更新效率和准确率。
在本申请实施例中,还可以编写一键执行脚本install.sh,用于执行步骤s110至步骤s140的操作,这样在每次需要进行raid可执行文件的更新时,不需要手动一步步操作,只需按照install.sh编写的命令执行即可。提高文件更新效率和准确率。
相应于上面的方法实施例,本申请实施例还提供了一种raid可执行文件更新装置,下文描述的一种raid可执行文件更新装置与上文描述的一种raid可执行文件更新方法可相互对应参照。
参见图2所示,该装置包括:
文件拷贝模块210,用于在要对系统的内核磁盘阵列raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,设定分区非第一分区;
完整性校验模块220,用于重启系统,在系统开机启动过程中,基于校验文件,确定升级压缩包是否完整;
压缩包解压模块230,用于如果确定升级压缩包完整,则解压升级压缩包,获得待使用的raid可执行文件;
文件替换模块240,用于将获得的各raid可执行文件分别替换系统中相应的原文件。
应用本申请实施例所提供的装置,在要对系统的内核raid可执行文件进行更新时,预先将待使用的升级压缩包和校验文件拷贝到系统盘的设定分区的设定目录中,重启系统,在系统开机启动过程中,基于校验文件,确定升级压缩包完整时,可以解压升级压缩包,获得待使用的raid可执行文件,将各raid可执行文件分别替换系统中相应的原文件,实现文件的更新,完成系统升级。将待使用的升级压缩包拷贝到非第一分区的设定分区的设定目录中,可以保证系统开机启动时重新解压启动文件、依赖文件等压缩包到系统盘第一分区时,升级压缩包不会被解压出来的启动文件、依赖文件等替换,可以实现raid可执行文件的有效更新。
在本申请的一种具体实施方式中,校验文件中记录有升级压缩包的原校验值,完整性校验模块220,具体用于:
计算升级压缩包的第一校验值;
如果第一校验值与校验文件中记录的原校验值相同,则确定升级压缩包是完整的。
在本申请的一种具体实施方式中,还包括更新成功确认模块,用于:
在将获得的各raid可执行文件分别替换系统中相应的原文件之后,计算由系统中更新后的raid可执行文件构成的压缩包的第二校验值;
如果第二校验值与校验文件中记录的原校验值相同,则确定系统的内核raid可执行文件更新成功。
在本申请的一种具体实施方式中,还包括更新失败提示信息输出模块,用于:
如果第二校验值与校验文件中记录的原校验值不同,则输出针对系统的内核raid可执行文件更新失败的提示信息。
在本申请的一种具体实施方式中,完整性校验模块220,具体用于:
在系统开机启动过程中,调用初始化系统文件,执行初始化系统文件的加载模块函数起始位置的更新脚本,以基于校验文件,确定升级压缩包是否完整。
在本申请的一种具体实施方式中,初始化系统文件处于系统盘第二分区挂载目录。
在本申请的一种具体实施方式中,升级压缩包为基于待使用的raid可执行文件对应的原文件在系统中的目录进行打包压缩生成的。
相应于上面的方法实施例,本申请实施例还提供了一种raid可执行文件更新设备,如图3所示,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述raid可执行文件更新方法的步骤。
相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述raid可执行文件更新方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。