基于Windows内核脚本的试飞数据自主备份工具设计

2014-09-26 03:48覃杨森刘成玉霍朝晖
电子设计工程 2014年2期
关键词:配置文件脚本内核

覃杨森,刘成玉,祁 春,霍朝晖

(中国飞行试验研究院 陕西 西安 710089)

飞行试验过程中关键试验参数与日剧增,从而导致了试飞数据量也随之增大,数据的处理过程愈趋复杂[1]。由于试验数据是充分了解飞行过程的主要途径,因而保持数据完整性的重要意义也愈现突出,极有可能因某些飞行试验科目的分析及讲评需要,会使用到之前一年甚至更早期的试飞数据,用以帮助重现飞机的特性及安全健康状况变化分析[2-3]。正因此,需要在飞行事后完成大数据量的备份存储工作。单靠人工操作,逐型号逐架次完成数据的备份难免会引入误操作,有可能使得某些重要数据出现误存、漏存和复存的现象。而如果可以利用操作系统自带的文件管理功能,完成数据的自主备份,将节省下大量的人工操作时间,而且还可以防止人为因素而引起的错误,以保证飞行试验备份数据的准确性、及时性及完整性。目前所利用的飞行数据备份工具,大部分都是脱离系统内核脚本运行而设计开发,难以避免会存在因备份进程长时占用操作系统资源和网络带宽造成的网络中断或网络阻塞现象。当备份数据量过大时,便很容易导致系统或网络崩溃,从而保证不了数据的完整性。而基于windows内核的 Windows Resource Kit tools(WRK)工具的出现,为备份工具实现提供了很好的兼容性平台,并且省去了实现过程中对线程调度及网络进程的管理,大大简化了工具的复杂度,也增加了工具的实用性和用户友好性。

1 内核脚本及WRK组件

内核脚本最常用于系统管理工作,或是用于结合现有程序用以完成小型的、特定的工作,可以把用到的命令串在一起,放进一个独立的程序或脚本里,此后只要直接执行该程序便能完成工作。内核脚属于解释型语言,由解释器(interpreter)读入程序代码,并将其转换成内部的形式,再执行[4]。这样一来,便克服了所处理的是字节、整数、浮点数或是其他机器层级的对象这一缺点,使得类似“将一个目录里所有的文件复制到另一个目录中”之类的操作简单化。

Windows Resource Kit tools(WRK)是一组为管理员、开发者和高级用户设计的内核组件工具,包括管理活动目录、组策略、TCP/IP网络、注册表、系统安全、监测等涉及Windows Server 2003操作系统的其他很多方面非常规安装的内核脚本工具组。在WRK的脚本命令中,支持了更多重要的文件复制任务,从而能够真正简化了工作,支持创建两个文件结构的完全镜像副本而不复制任何不需要的文件,也支持只复制源位置中的新文件或更新后的文件。例如,Robocopy还允许用户选择是否保留所有相关文件信息,包括日期和时间戳、安全访问控制列表(ACL)及更多内容。

2 自主备份工具设计实现

自主备份工具的配置管理、任务脚本生成及日志记录功能主要基于C++builder开发环境实现,脚本命令的运行及线程调度管理由操作系统内核运行实现,其框架如图1所示。配置管理通过用户操作控制组件激活配置组件。配置组件在获得用户配置操作之后,在系统的内核文件目录下生成相应的配置文件和任务计划文件。当自主备份工具判断到用户已经完成配置之后,将配置文件和任务计划文件进行解析,转换成windows内核命令脚本,并在用户的激活操作下启动运行。内核命令脚本由系统自身的命令解析器分解,在操作系统环境下完成相应的网络管理及进程调用,利用文件管理子系统完成文件的备份任务,同时将计划任务写入系统自身的任务计划组件中,实现定时备份的功能。

图1 工具架构图Fig.1 Tool architecture

为了标准化XML配置文件,结合工具的配置项,需要先定义与脚本模块对应的 DTD (Document Type Definition)文档,用于规范存储各项配置操作及计划任务,具体定义如下所示:

2.1 用户操作组件实现

用户操作控制组件主要基于C++builder6.0[5]开发环境完成。在用户操作控制组件设计中,使用了suiskin3.4界面插件,提高了用户操作界面的美观性,由于界面插件与开发环境的密切兼容性,使得工具获得了与windows风格更为兼容的运行效果,操作界面如图2所示。操作控制组件完成了数据备份的源路径选择及目的路径选择,用户可通过“配置”按钮激活配置界面对话框。

图2 工具操作界面Fig.2 Operator interface

为了避免误操作,采用了操作状态相关性互斥设计[6],以增强工具与用户的友好性,其逻辑关系如表1所示。

表1 状态迁移表Tab.1 State transition table

2.2 配置组件实现

通过操作控制组件的“配置按钮”,用户可以激活配置组件,完成备份工具的配置操作,其与用户交互界面如图3所示。

通过完成对“文件类型”、“操作选项”及“运行计划”的配置,形成相应的配置文件和计划任务。配置文件形成过程如图4所示,形成的配置文件如下所示。

图3 配置组件交互界面Fig.3 Configuration components interface

图4 配置文件形成流程Fig.4 Configuration files formation process

其中操作选项、DTD元素与脚本命令符部分对应关系如表2所示。

表2 对应关系Tab.2 Corresponding relationship

配置组件通过识别配置文件和计划任务文件,生成后缀为.cmd的windows NT命令脚本。脚本形成过程如图5所示,部分脚本代码如图6所示。

图5 脚本形成流程Fig.5 Script formation process

图6 部分脚本代码Fig.6 Part of script code

在操作面板的“执行”按钮激活之后,命令脚本开始运行,以启动windows内核中的robocopy工具命令。Windows Resource Kit tools包含有robocopy命令解析器,将脚本命令项逐项解析,在内核脚本中调用对应的脚本执行体,例如网络管理、进程线程管理及文件系统管理等,以实现对备份文件的操作。对于设计过程而言,由于系统对内核进行了封装,就省去了文件操作和进程调用管理的代码实现,也不需要考虑网络传输过程中的协议编程。从另一个方面而言,由于现有windows操作系统由基于windows NT内核升级或者完善而来,因此,提高了工具在不同系统平台下的兼容性。

2.3 备份日志生成

日志文件记录了备份工具运行的开始时间、源路径及目的路径,并包含了备份的文件列表及文件的属性信息,例如大小、子路径及类型等。对于比较大的文件,完整的记录下了文件备份的百分比进度,利于监视备份工具的运行状态。同时,支持了文件断点续传的功能,每次在备份运行之前,通过读取日志记录的百分比进程,判断上一次文件备份的断点,查找文件的簇头,从而完成未结束的备份任务,确保了备份文件的完整性及一致性。如果在配置组件中选择了“创建日志文件”选项,则内核脚本在任务执行文件备份过程中,可将备份进度完整记录到相应的日志文件中。日志文件内容如图7所示。

3 性能测试

图7 日志文件Fig.7 Log files

为了测试自主备份工具的性能特点,设计了如下实验:从飞行数据服务器上将数据备份到同一主机上,同时使用手动操作、系统备份工具及自主备份工具将同一文件进行备份。实验结果记录如表3所示。

表3 性能实验记录Tab.3 Performance Test Record

4 结束语

基于windows内核脚本的自主备份工具为解决飞行试验大数据量备份的难题提供了一种新的途径。工具利用C++builder环境实现的操作控制组件和配置组件,完成了内核脚本命令和计划任务的生成。工具在开发实现中充分结合操作系统内核管理机制,提高了运行的稳定性及平台的兼容性,并可以将全程记录生成日志文件,保证了飞行试验数据备份的及时性、完整性和准确性,是提高试飞数据分析精准度的有效保障。

[1]霍朝晖,覃杨森,祈春.飞行试验机载关键参数快速处理系统设计[J].现代电子技术,2012,36(5):121-124.

HUO Zhao-hui,QIN Yang-sen,QI Chun.Design of rapid processing system of flight test airborne key parameters[J].Modern Electronics Technique,2012,36(5):121-124.

[2]袁炳南,张建琳.PCM与网络数据采集系统技术分析[J].测控技术,2009,28(4):29-31.

YUAN Bing-nan,ZHANG Jian-lin.Technical review of data acquisition systems based on PCM and network[J].Measurement&Control Technology,2009,28(4):29-31.

[3]袁炳南,霍朝晖,白效贤.航空飞行试验遥测标准概况[J].测控技术,2010,29(11):15-19.

YUAN Bing-nan,HUO Zhao-hui,BAI Xiao-xian.The survey of telemetry standard in aviation flight test[J].Measurement&Control Technoloy,2010,29(11):15-19.

[4]潘爱民.Windows内核原理与实现[M].北京:电子工业出版社,2010.

[5]黄晓春.C++沉思录[M].北京:人民邮电出版社,2002.

[6]姜静波,佟金荣.编程精粹[M].北京:电子工业出版社,2009.

[7]刘滨.C++Builde高级编程实例精解[M].北京:国防工业出版社,2000.

猜你喜欢
配置文件脚本内核
酒驾
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
安奇奇与小cool 龙(第二回)
互不干涉混用Chromium Edge
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
为View桌面准备父虚拟机