一种保障Linux操作系统正常启动的方法与流程

文档序号:12463852阅读:377来源:国知局
一种保障Linux操作系统正常启动的方法与流程

本发明涉及Linux操作系统领域,尤其涉及一种保障Linux操作系统正常启动的方法。



背景技术:

目前,由于MTCA平台广泛应用于环境稳定性不高的场合,经常面临一些设备整框断电的情况,会给正在读写中的硬盘造成一定影响,比如数据不完整、文件系统损坏等问题,尤其是后者,严重时会导致板卡上的系统无法启动,板卡因而无法正常工作。MTCA平台中配备硬盘的板卡主要是x86计算板,由于x86架构的通用性,各个厂家为节约成本、方便使用、快速部署等方面考虑,一般不会专门为其开发系统,而是直接安装成熟稳定的Linux发行版,如Redhat、CentOS、Ubuntu Server等,这些系统在启动时如果检测到硬盘上的文件系统损坏,会采取保守修复,即仅当文件并无实际损坏、只是文件系统记录表为非clean状态时,才进行轻微的状态修复,修复成功后正常启动。如果确实有文件损坏,则系统不进行修复,也不会正常启动,而是进入一种维护模式,需要用户连接显示器进入系统,手动做一些备份数据、修复系统之类的工作;该模式只是一个最小化系统,不会运行用户部署的各种软件和服务,也就是说板卡没有正常工作。目前,安装这些系统的x86计算板一旦出现文件损坏、系统无法启动的情况,主要是靠用户连接显示器手工修复,不仅对用户的技术能力要求高,而且在MTCA应用场合中,显示器和有技能的人并非经常在现场,发现和解决问题将大大滞后,该问题对工作的不良影响较大。



技术实现要素:

本发明的主要目的在于提供一种保障Linux操作系统正常启动的方法,在硬盘上的文件系统损坏时,仍可保证该Linux操作系统能够正常启动。

为实现上述目的,本发明提供的保障Linux系统正常启动的方法,包括下列步骤:在硬盘分区时,创建一与原始根分区大小相同的分区作为快照分区;安装所述Linux操作系统至所述原始根分区中;修改/boot中的原始initramfs镜像文件;所述修改/boot中的原始initramfs镜像文件的步骤具体包括:用gunzip命令和cpio命令将所述原始initramfs镜像文件解包到一预定目录中;在所述预定目录中加入device-mapper软件包;当sbin子目录中不存在dmsetup命令,则将所述所含device-mapper软件包里面的dmsetup命令放到所述sbin子目录中;编辑init脚本程序,修改其挂载根文件系统的代码,加入相应的代码逻辑;生成新的initramfs镜像文件以覆盖所述原始initramfs镜像文件。

优选地,所述原始initramfs镜像文件是一个gz格式压缩的cpio文件。

优选地,所述修改/boot中的原始initramfs镜像文件具体是修改所述原始initramfs镜像文件的init脚本程序,并视存在与否加入dmsetup程序到sbin目录。

优选地,所述Linux系统为Red hat、CentOS或Ubuntu Server发行版系统。

优选地,所述保障Linux系统正常启动的方法应用于MTCA环境中硬盘文件系统损坏的情况。

优选地,所述Packages存在于安装光盘中。

优选地,所述相应的代码逻辑包括:根据配置文件的内容确定是否挂载快照分区、是否对文件系统进行检查和修复、以及是否对新文件的合并处理。

优选地,所述生成新的initramfs镜像文件以覆盖所述原始initramfs镜像文件文件的步骤具体是采用cpio命令和gzip命令生成新的initramfs镜像文件以覆盖所述原始initramfs镜像文件。

优选地,所述预定目录为目录initramfs-new,所述device-mapper软件包具体是Packages中的device-mapper软件包。

在本发明中,通过采用以上这种保障Linux系统正常启动的方法之后,在硬盘上的文件系统损坏时,不需要人工参与,即可自动恢复系统而正常启动,可保证操作系统能够正常启动。

附图说明

图1为本发明保障Linux系统正常启动的方法一实施例的流程示意图;

图2为图1中修改/boot中的原始initramfs镜像文件步骤的具体流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种保障Linux系统正常启动的方法,适用于MTCA环境中硬盘文件系统损坏的情况下使用。主要是利用Linux系统的设备映射(device mapper)机制和文件系统快照(snapshot)功能,并且不需要修改Linux内核或已有程序,解决硬盘上的文件系统损坏时操作系统的启动问题,而该Linux系统包括但不限于Redhat、CentOS、Ubuntu Server等发行版。

图1为本发明保障Linux系统正常启动的方法一实施例的流程示意图。图2为图1中修改/boot中的原始initramfs镜像文件步骤的具体流程示意图。请结合参照图1和图2,该保障Linux系统正常启动的方法的工作流程如下:

步骤S10:在硬盘分区时,创建一与原始根分区大小相同的分区,以作为快照分区。

在本实施中,开始的准备工作:硬盘分区,与平时的操作过程相同,唯一要注意的是硬盘分区时要多划分出一个与根分区大小相同的分区,后面作为快照分区使用。

步骤S20:安装Linux操作系统至所述原始根分区中。

在本实施中,还包括安装相关部署软件等操作。

步骤S30:修改/boot中的原始initramfs镜像文件。

上述步骤中,具体是修改原始initramfs镜像文件中的init脚本程序。其中,原始initramfs镜像文件是一个gz格式压缩的cpio文件。

步骤S30具体步骤如下:

步骤S310:用gunzip命令和cpio命令将所述原始initramfs镜像文件解包到一预定目录中,可定义该预定目录为目录initramfs-new;

步骤S320:在所述预定目录中加入Packages(Packages可存在于安装光盘中)中所含device-mapper软件包,当sbin子目录中不存在dmsetup命令,则将所含device-mapper软件包里面的dmsetup命令放到sbin子目录中。如果当sbin子目录中已经存在dmsetup命令,则无需此操作。

步骤S330:编辑init脚本程序,修改其挂载根文件系统的代码,加入相应的代码逻辑。

其中,该相应的代码逻辑:根据配置文件的内容确定是否挂载快照分区、是否对文件系统进行检查和修复、以及是否对新文件的合并处理。

步骤S340:采用cpio命令和gzip命令生成新的initramfs镜像文件以覆盖所述原始initramfs镜像文件。

在执行上述方法之后,启动该Linux系统,内核运行修改后的init程序,并解析/boot/snapshot.cfg配置文件;根据解析后的配置文件内容决定下一步流程,具体包括以下3种流程:

第1种流程:如果解析后的配置文件内容为不启用快照功能,则按原来的方式挂载根分区,该Linux系统将正常启动。

第2种流程:如果解析后的配置文件内容为启用快照功能,则挂载快照分区,并用fsck命令检查文件系统是否损坏,当检查结果为无损坏则该Linux系统将正常启动。当检查结果为有损坏则擦除快照分区、重新挂载,修复系统状态回到创建快照时的状态,该Linux系统将正常启动。

第3种流程:如果解析后的配置文件内容为合并快照分区中的文件到根分区中,则将快照分区用snapshot-merge类型挂载,挂载后内核会自动开始合并,用dmsetup status命令检查到合并完成后,擦除快照分区,将配置文件内容改为启用快照,然后重启该Linux系统,重启后,该Linux系统将正常启动。

在本实施例中,通过执行采用本发明这种保障Linux系统正常启动的方法之后,在硬盘上的文件系统损坏时,不需要人工参与,即可自动恢复系统而正常启动,可保证操作系统能够正常启动。

另外,在其它实施例中,可根据设备映射机制中snapshot类型的写时复制(COW)技术,对新根分区上文件的写操作会写入到硬盘的快照分区,原来的根分区中的所有文件不受影响,也就是受到保护。每次系统启动时,修改过的init程序如果检测到快照分区中的数据有损坏,则擦除快照分区,重新挂载,系统状态回到创建快照时的状态。系统启动挂载文件系统时,是否挂载快照分区可以根据配置文件进行选择。刚装完系统、服务软件没有部署好时不用挂载,等服务软件部署好之后再配置为需要挂载(称为创建快照),这样如果文件损坏系统状态回退时能回到一个健康完整、服务良好的状态。系统运行过程中可能会产生新的数据文件,如果希望把这些数据合并到原根分区中保护起来,也可以修改配置文件,下次系统启动时修改过的init脚本程序会自动把快照分区中的文件合并到原根分区,然后重新创建快照。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1