掌桥专利:专业的专利平台
掌桥专利
首页

一种操作系统升级备份方法

文献发布时间:2024-04-18 20:00:50


一种操作系统升级备份方法

技术领域

本发明涉及操作系统升级备份技术领域,具体涉及一种操作系统升级备份方法。

背景技术

在使用yum update 更新系统时,由于内部或外部不同故障原因可能会导致升级后系统不稳定,出现如文件系统不完整、某个软件包存在严重bug或某个服务终止等问题,在银河麒麟高级服务器操作系统(Host)V10中,为了提高系统升级的可靠性和稳定性,一般会设置主备根分区,其中主根分区用于正常安装操作系统,备份根分区则用于备份主分区数据,并能够在主根分区系统不可用时切换到备份根分区。这种主备根分区设计可以避免系统升级时由于外部意外中断或内部软件故障等原因造成系统升级后无法正常使用的情况,保障系统能够恢复到可用状态安全稳定地持续运行,对于企业级应用和生产环境尤为重要。

中国专利CN201410337284公开了《一种 BSD 系统的冗余备份系统及方法》通过在一块硬盘上使用主备分区来实现系统的冗余备份,减少设备硬件成本及设备的复杂性;其系统由硬盘系统及软件系统构成,硬盘系统包括引导分区、主要分区和备份分区;软件系统通过对引导加载模块增加了一个主备自动切换的功能,使得系统的主备分区可以自动切换。其系统结构图见图1,软件流程图见图2:系统结构包括引导区100、工作区200和备份区300,引导区100包括配置文件101和引导加载器102,工作区200包括用户配置201、应用程序202及操作系统203,备份区300包括用户配置301、应用程序302和操作系统303。

其硬件系统中引导分区内安装有配置文件模块和引导加载模块,配置文件模块包括有分别对应主要分区和备份分区的配置文件以及计数装置,引导加载模块包括有主备自动切换装置,硬件系统中主要分区和备份分区分别安装独立的软件系统。

系统启动时,引导分区启动并运行引导加载模块,引导加载模块根据其保存的配置, 找到对应分区, 并且在配置文件中将该对应分区的启动计数加一(对应图2中“将已活跃分区的启动计数加一”);如果上述已活跃的对应分区的启动计数值≧ 2,例如启动计数的值﹥ 3,则认为该分区出现故障,引导加载模块将上述对应分区的状态切换成非活跃的,同时把另一分区置成活跃的状态(对应图2中“当前的活跃分区置成非活跃,当前的非活跃分区置成活跃”);若启动计数值小于或等于3,则系统自动从新的活跃分区加载系统软件(对应图2中“从已活跃的分区加载系统软件”);当系统完全启动后,将引导分区中的启动计数清零(对应图2中“将当前活跃分区的启动计数清零”)。如果启动过程中出现故障或异常,则系统重新启动。

然而,该同步方法存在如下缺点:

1、现有技术主备分区没有进行数据同步备份,这样切换备份分区后相当于进入了全新安装的系统,而非数据完整的原系统,在需要恢复完整原系统的场景下现有技术具有一定限制;

2、现有技术只有在主分区无法引导进入系统两次以上才切换备份分区,但实际过程中并非只有在主分区完全崩溃无法引导时才需要切换备份分区,如主分区系统由于某种故障导致文件系统不完整或某个服务异常终止或某个软件出现严重bug,也需要切换到具有完整备份数据的备份分区还原系统,但此时主分区仍可进入系统,则无法切换备份分区,故现有技术主备切换场景单一,有一定的局限性。

发明内容

为解决已有技术存在的不足,本发明提供了一种操作系统升级备份方法,包括如下步骤:

步骤S1:系统收到kyroot -s主备根分区数据同步指令后开始进行主备根分区数据同步,将主根分区数据同步至备份根分区;

步骤S2:系统升级后,如果不需要切换分区则直接结束流程,如果需要,则执行步骤S3-步骤S5;

步骤S3:通过 kyroot -c主备根分区切换指令对系统启动时所引导的根分区进行切换;

步骤S4:通过kyroot -l命令查看系统下次启动时是否会进行根分区的切换,如否,则重新执行步骤S3;如是,则执行步骤S5;

步骤S5:系统重启后,通过根分区UUID的值验证是否发生了根分区的切换,如是,则结束流程,如否,则重新执行步骤S3。

其中,所述步骤S3中,kyroot -c主备根分区切换指令通过将grub.kyroot文件的值设置为1对系统启动时所引导的根分区进行切换;

所述步骤S4中,kyroot -l命令通过查看grub.kyroot文件的值判断系统下次启动时是否会进行根分区的切换。

其中,所述步骤S1中,将主根分区数据同步至备份根分区包括:将当前使用的主根分区中除系统硬件信息、系统运行信息、系统进程信息、系统临时文件、系统备份文件、外接设备挂载信息、备份分区挂载目录、数据同步日志文件之外的其他内容全部拷贝到备份根分区中。

其中,将主根分区数据同步至备份根分区时,排除如下文件:数据同步的日志文件以及/var/lib/udisks2/

其中,将主根分区数据同步至备份根分区时,排除如下目录:备份分区挂载目录、/boot、/dev、/mnt、/ghost、/backup、/proc、/run、/sys、/media、/tmp。

其中,将主根分区数据同步至备份根分区后,核查备份根分区中是否存在/dev、/sys、/run、/proc文件,若不存在,则新建/dev、/sys、/run、/proc。

其中,所述步骤S3中,kyroot -c主备根分区切换指令通过将grub.kyroot文件的值设置为1对系统启动时所引导的根分区进行切换;

系统重启后,Systemd通过调用kyroot.service修改grub配置文件,以将grub.cfg中根分区的UUID切换为所欲切换的目标根分区的UUID,同时,Systemd服务通过将/etc/fstab文件中的根分区的路径修改为所欲切换的目标根分区的路径,以实现根分区的切换。

本发明的操作系统升级备份方法,使用主备根分区实现系统冗余备份,实现了单个硬盘上实现系统双分区冗余备份,降低了硬件成本,提高了系统的健壮性。且该方法能够实现主备根分区之间文件系统备份,系统升级后若系统不稳定该工具能够在主根分区不可用时切换到备份根分区恢复为数据完整的原系统,保证系统升级出现问题后能够回到可用状态,提高了系统运行的安全性和稳定性。

附图说明

图1:已有技术的备份系统的系统架构图。

图2:已有技术的备份系统的实现流程图。

图3:本发明的系统升级备份方法实现流程图。

图4:本发明的系统升级备份方法中数据同步流程图。

图5:本发明的系统升级备份方法中根分区切换流程图。

具体实施方式

为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。

本发明中出现的术语约定及解释如下:

分区同步:将源分区文件系统内容同步到目的分区。

主备分区:硬盘上存在两个根分区,其中一个作为主根分区,另一个作为备份根分区,系统升级后若不可用,则可以切换到另一个分区,回到可用状态,保证系统的稳定性。

系统备份:系统升级前备份可用状态的系统,系统升级后可借此备份回到可用状态。

kyroot:系统备份工具,其提供kyroot命令,可实现银河麒麟高级服务器操作系统(Host)V10的主备根分区数据同步及分区切换。

一、整体执行流程

图3为本发明的系统升级备份方法,如图3所示:

系统收到kyroot -s主备根分区数据同步指令后开始进行主备根分区数据同步,系统升级完成后若主根分区不可用则需要切换分区,通过 kyroot -c主备根分区切换指令来修改文件的值,grub.kyroot为主备根分区切换开关文件,其取值为0或1,取值为0时系统不会切换分区,kyroot -l命令通过查看grub.kyroot的值来确定系统下次启动是否会切换分区。

grub.kyroot取值为1系统重启时Systemd服务会调用kyroot.service来修改grub配置文件里根分区的内核命令行参数以及/etc/fstab文件里根分区的挂载路径来切换系统引导根分区,系统关机后会切换到备份根分区引导重启,重启进入系统后核验当前系统引导根分区的UUID是否为备份根分区的UUID,相同则确认主备根分区切换完成。

切换备份根分区后若主根分区故障修复,则可继续将备份根分区的数据同步至原主根分区。并且,在下次系统启动之后,将启动的根分区再次由备份根分区切换到主根分区之后,再在下次系统启动之前,将grub.kyroot的值重置为0。

二、数据同步过程

请参见图4所示,本发明中,在主备根分区的数据同步实现如下:

在银河麒麟高级服务器操作系统(Host)V10中主备根分区数据同步需要在系统安装时提前准备一个不小于主根分区空间的空分区作为备份根分区,且需要分别为两个分区添加Label为ROOTFS1和ROOTFS2作为识别方式,系统加载完成后会验证Label为ROOTFS的分区个数是否为2,个数不等于2个会提示错误,个数为2才可进行主备根分区数据同步。系统硬盘中至少包括引导分区、主根分区和备份根分区三个分区 ,kyroot系统升级备份工具仅用于备份根分区数据,而引导分区用于在切换主备分区时引导两个分区的系统,故引导分区为主备分区共用,无需在数据同步时备份引导分区数据,则主备根分区数据同步时会排除引导分区即/boot分区以提高主备分区数据同步的效率。

由于硬盘中存在如devtmpfs、tmpfs等格式的文件系统,其中存放计算机硬件信息、系统运行信息等数据,系统收到kyroot -s同步命令后,会把当前使用的主根分区中除系统硬件信息、系统运行信息、系统进程信息、系统临时文件、系统备份文件、外接设备挂载信息、备份分区挂载目录、数据同步日志文件之外的其他内容全部拷贝到备份根分区中,以提高备份效率。主备根分区数据同步时具体排除的内容如下:排除的文件包括:"数据同步的日志文件"、"/var/lib/udisks2/

数据同步使用rsync远程同步算法,对当前使用的主根分区文件系统内容进行增量备份,在kyroot工具中以下三种数据同步命令执行结果均认定为数据无错同步成功:数据同步过程未出现任何错误,认定为主备根分区全部数据无错同步成功;数据同步过程中由于主根分区源文件缺失导致只同步了一部分文件,如同步过程中手动删除了主根分区的部分源文件,但除缺失文件外其他文件无错同步成功,认定为主备根分区全部数据无错同步成功;数据同步过程中同步命令被中断,但命令中断前所同步的文件无错同步成功,均认定为主备根分区全部数据无错同步成功。

由于数据同步过程中排除了系统硬件信息、系统运行信息、系统进程信息,同步完成后备份根分区缺少/dev、/sys、/run、/proc,这可能导致切换备份根分区后系统无法启动,故需要在备份根分区新建/dev、/sys、/run、/proc以确保切换备份根分区后可以成功启动系统。

三、根分区切换流程

请参见图5所示,本发明中,主备根分区的切换流程如下:

kyroot工具通过修改grub.kyroot文件的flag值来控制系统主备根分区切换,具体实现是在系统重启时通过Systemd服务调用kyroot.service修改grub配置文件及/etc/fstab文件来修改系统所用分区,重启系统后实现分区切换。

系统收到kyroot -c切换分区命令后,首先会确认grub.kyroot文件是否存在,不存在则创建并写入值为0,该文件用于调控系统下次启动是否会切换分区,grub.kyroot值为0则系统重启后不会切换分区,grub.kyroot值为1则系统重启时Systemd会调用kyroot.service修改grub配置文件及/etc/fstab文件,kyroot工具会根据当前系统是否支持EFI引导方式来确定grub.cfg文件位置,grub.cfg若不存在则报错退出,若存在则备份grub.cfg文件,磁盘分区的UUID具有唯一性,kyroot工具通过修改grub.cfg文件中根分区的UUID来改变系统所用根分区,通过修改/etc/fstab文件里根分区的挂载路径来改变系统切换后所用根分区的挂载路径,系统重启后会切换成对应的根分区:也即,判断grub.cfg中根分区UUID与主根分区UUID是否相同,若相同,则修改grub.cfg中根分区为备份根分区UUID并修改/etc/fstab中根分区路径为备份根分区路径,若不相同,则修改grub.cfg中根分区为主根分区UUID并修改/etc/fstab中根分区路径为主根分区路径。

kyroot工具同时支持LVM分区,切换分区时会判断系统所用根分区是标准分区还是LVM分区,如检测到系统根分区为LVM分区(对应图5中“备份根分区为LVM分区”或“主根分区为LVM分区”),kyroot工具会通过 lvdisplay 命令来找到系统切换后所用根分区的 LVM路径,然后将 rd.lvm.lv 内核参数更新为该路径(对应图5中“更新rd.lvm.lv 内核参数指定该LVM分区”),rd.lvm.lv 内核参数用于在系统启动过程中指定LVM的引导路径,以确保GRUB能够正确地引导 LVM分区。

系统重启之前kyroot工具会将grub.kyroot的值归零(对应图5中“kyroot值重置为0”),保证切换分区后系统能够不受影响地正常重启,直至下次切换分区。

本发明的操作系统升级备份方法,可基于银河麒麟高级服务器操作系统(Host)V10进行,其使用主备根分区实现系统冗余备份,实现了单个硬盘上实现系统双分区冗余备份,降低了硬件成本,提高了系统的健壮性。且该方法能够实现主备根分区之间文件系统备份,系统升级后若系统不稳定该工具能够在主根分区不可用时切换到备份根分区恢复为数据完整的原系统,保证系统升级出现问题后能够回到可用状态,提高了系统运行的安全性和稳定性。

虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

技术分类

06120116541712