本发明涉及操作系统故障定位技术领域,具体地说是一种复现centos7操作系统故障的系统及方法。
背景技术:
现有的计算机领域中,对于一些操作系统的定位故障只能通过对显示器截屏,或者查看系统日志等定位方法,这些对程序故障无法进行精确定位。此种定位方式还浪费人力物力,而且还容易产生由于人为因素造成的差错。
技术实现要素:
本发明的目的在于提供一种复现centos7操作系统故障的系统及方法,用于解决现有技术对操作系统故障无法精确定位,而且容易造成差错的问题。
本发明解决其技术问题所采取的技术方案是:一种复现centos7操作系统故障的系统,其特征是,包括两台配置相同的服务器:服务器A和服务器B;服务器A和服务器B通过光纤网卡相连;服务器A和服务器B上均安装有centos7.0操作系统,文件系统格式为btrfs;服务器A上设置有快照执行环境,服务器B上设置有快照挑选脚本;服务器A将实时快照通过光纤网卡发送给服务器B,服务器B进行快照挑选。
进一步地,所述的快照执行环境包括single类型快照和snapper脚本。
进一步地,所述的single类型快照对文件系统执行一次快照的时间间隔是1秒,且快照名称以时间命名。
进一步地,在服务器A将实时快照通过光纤网卡发送给服务器B的同时,snapper脚本通过snapper删除指令删除服务器A上的快照,snapper指令删除的快照的最小生存期为1秒。
进一步地,服务器A还包括破坏性测试脚本,用于对centos7操作系统进行破坏性测试。
进一步地,服务器A停止快照的条件是:破坏性测试脚本测试centos7操作系统产生死机故障。
进一步地,服务器B上的快照挑选脚本通过snapper回滚命令执行。
一种复现centos7操作系统故障的方法,利用一种复现centos7操作系统故障的系统,其特征是,具体包括以下步骤:
1)、两台配置相同的服务器A和服务器B通过光纤网卡相连;
2)、在服务器A和服务器B上均安装有centos7.0操作系统,文件系统格式为btrfs,并运行系统;
3)、在服务器A上搭建快照执行环境和破坏性测试脚本,快照执行环境包括single类型快照和snapper脚本,在服务器B上搭建快照挑选脚本;
4)、服务器A的single类型快照每隔1秒钟对文件系统执行一次快照,并以时间对快照进行命名;
5)、将服务器A产生的实时快照通过光纤网卡发送给服务器B,同时服务器A上的snapper脚本通过snapper删除指令将已经发送过去的快照进行删除;
6)、服务器B的快照挑选脚本通过snapper回滚命令检查从服务器A上传过来的快照;
7)、在服务器A执行快照执行环境的同时,运行破坏性测试脚本;
8)、当服务器A产生死机故障时,停止快照,并通过光纤网卡进行快照传递;
9)、服务器B通过快照挑选的snapper回滚命令,选择死机故障前的快照进行回滚,直到回滚到死机前的快照;
10)、服务器B通过快照差异,找出故障产生过程,对服务器A的操作系统故障进行复现。
进一步地,步骤5)中snapper指令删除的快照的最小生存期为1秒。
进一步地,步骤7)中服务器A运行破坏性测试脚本的具体方法包括:
71)、对临界挂载模块进行写操作;
72)、申请两个读写锁,产生一个读写死锁;
73)、继续执行步骤71)操作;
74)、产生更多的读写锁;
75)、直至读写死锁耗尽所有的资源,产生死机故障。
本发明的有益效果是:
本发明通过创建系列备份,恢复一系列备份过程,来查询故障信息产生的环境,实现了自动化查找操作系统故障,能对故障进行精确定位。
本发明通过两台配置相同的服务器,安装有相同的操作系统,在每台服务器上安装有不同的脚本,通过脚本的运行对操作系统进行快照、破坏性测试、快照挑选、找出故障产生过程,实现了操作系统故障的复现。
附图说明
图1为本发明的系统结构图;
图2为本发明的方法流程图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,一种复现centos7操作系统故障的系统,包括两台配置相同的服务器:服务器A和服务器B;配置相同指的是有相同的操作系统。
服务器A和服务器B通过光纤网卡相连;服务器A和服务器B上均安装有centos7.0操作系统,文件系统格式为btrfs;创建新的centos7系统,在创建磁盘时修改格式,由于/boot目录只能是xfs格式的不能修改,所以只需将根目录/创建为btrfs格式即可,安装完系统后进入,直接是btrfs文件系统。
服务器A上设置有快照执行环境,服务器B上设置有快照挑选脚本;服务器A将实时快照通过光纤网卡发送给服务器B,服务器B进行快照挑选。
服务器A上的快照执行环境包括single类型快照和snapper脚本。
single类型快照对文件系统执行一次快照的时间间隔是1秒,且快照名称以时间命名:
>\#snapper-c allfs create-t single
创建single类型快照
\#snapper-c allfs create--command"yum install redis"
执行命令"yum install redis"并为其创建前后快照。
在服务器A将实时快照通过光纤网卡发送给服务器B的同时,snapper脚本通过snapper删除指令删除服务器A上的快照,snapper指令删除的快照的最小生存期为1秒:可通过snapper命令设置,把snapper的NUMBER_MIN_AGE="1800"清理前的快照最小生存期(s)设置成1秒钟。
服务器A还包括破坏性测试脚本,用于对centos7操作系统进行破坏性测试。破坏性测试是对临界挂载模块进行写操作,然后申请两个读写锁,此时产生一个读写死锁,然后进行循环调用申请读写锁,以致产生越来越多的读写死锁,直至读写死锁耗尽所有资源,产生死机故障。
服务器A停止快照的条件是:破坏性测试脚本测试centos7操作系统产生死机故障。
服务器B上的快照挑选脚本通过snapper回滚命令执行:通过命令#snapper-c allfs undochange 32..0进行回滚恢复。
如图2所示,一种复现centos7操作系统故障的方法,具体包括以下步骤:
1)、两台配置相同的服务器A和服务器B通过光纤网卡相连;
2)、在服务器A和服务器B上均安装有centos7.0操作系统,文件系统格式为btrfs,并运行系统;
3)、在服务器A上搭建快照执行环境和破坏性测试脚本,快照执行环境包括single类型快照和snapper脚本,在服务器B上搭建快照挑选脚本;
4)、服务器A的single类型快照每隔1秒钟对文件系统执行一次快照,并以时间对快照进行命名;
5)、将服务器A产生的实时快照通过光纤网卡发送给服务器B,同时服务器A上的snapper脚本通过snapper删除指令将已经发送过去的快照进行删除;
6)、服务器B的快照挑选脚本通过snapper回滚命令检查从服务器A上传过来的快照;
7)、在服务器A执行快照执行环境的同时,运行破坏性测试脚本;
8)、当服务器A产生死机故障时,停止快照,并通过光纤网卡进行快照传递;
9)、服务器B通过快照挑选的snapper回滚命令,选择死机故障前1min的快照进行回滚,直到回滚到死机前的快照;回滚可通过snapper命令获取(snapper-c allfs undochange 32..0);死机故障前的时间点可以根据需求进行设置,本实施例选择1分钟。
10)、服务器B通过快照差异,找出故障产生过程:(snapper-c allfs diff 31..32),对服务器A的操作系统故障进行复现。
步骤5)中snapper指令删除的快照的最小生存期为1秒。
步骤7)中服务器A运行破坏性测试脚本的具体方法包括:
71)、对临界挂载模块进行写操作;
72)、申请两个读写锁,产生一个读写死锁;
73)、继续执行步骤71)操作;
74)、产生更多的读写锁;
75)、直至读写死锁耗尽所有的资源,产生死机故障。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。