发明内容
为了提高恢复配置信息的效率,本发明实施例提供了一种恢复配置信息的方法和装置。所述技术方案如下:
本发明实施例提供了一种恢复配置信息的方法,所述方法包括:
当硬件中的配置信息丢失时,读取预先保存的配置文件,所述配置文件中包含同类配置命令;
当读取到所述同类配置命令时,解析所述同类配置命令中的第一条配置命令,并缓存所述第一条配置命令的地址;
根据所述地址对应的配置命令的内容和所述同类配置命令中的参数信息,逐条执行所述同类配置命令,生成配置信息并保存在所述硬件中。
另外,本发明实施例还提供了一种恢复配置信息的装置,当所述装置中的硬件的配置信息丢失时,所述装置包括:
读取模块,用于读取预先保存的配置文件,所述配置文件中包含同类配置命令;
解析及缓存模块,用于当所述读取模块在所述配置文件中读取到所述同类配置命令时,解析所述同类配置命令中的第一条配置命令,并缓存所述第一条配置命令的地址;
恢复模块,用于根据所述解析及缓存模块缓存的地址对应的配置命令的内容和所述同类配置命令中的参数信息,逐条执行所述同类配置命令,生成配置信息并保存在所述硬件中。
本发明实施例提供的技术方案的有益效果是:
通过缓存同类配置命令中第一条配置命令的地址,根据缓存的地址直接执行同类配置命令,而且对同类配置命令不进行参数合法性检查,避免了对同类配置命令多次重复执行命令解析,极大地节省了配置信息恢复的时间,缩短了数据通信设备重新启动的时间,极大地提高了系统的处理效率。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例中的数据通信设备有固定的配置文件,其中保存有用来在设备中生成或恢复配置信息的配置命令,且配置文件中包含同类配置命令,即一组连续的相同的配置命令,但是命令中的参数不同。同类配置命令中的每一条配置命令都对应着相同的地址,该地址内保存的是同类配置命令的内容,通常为函数。在执行配置命令时,通过传入配置命令中的参数执行该配置命令的地址对应的函数,可以生成对应的配置信息。另外,设备内还有多个缓冲区,分别用来缓存不同的信息,如缓存地址的缓冲区、缓存配置信息的缓冲区等等。
实施例1
参见图1,本发明实施例提供了一种恢复配置信息的方法,具体包括以下步骤:
步骤101:当数据通信设备中的硬件的配置信息丢失需要进行配置信息恢复时,读取预先保存的配置文件中的配置命令。如数据通信设备中软件故障导致设备重新启动时,需要进行配置信息的恢复。
步骤102:当读取到同类配置命令时,解析同类配置命令中的第一条配置命令,并在地址缓冲区中缓存第一条配置命令的地址。
为了识别配置文件中的同类配置命令,可以预先对配置文件中的同类配置命令添加标识,如在配置文件中的每组同类配置命令的首条配置命令和末条配置命令之前分别添加标识,用来标识同类配置命令的开始和结束。添加的标识可以为便于识别的符号,如“*”,添加的标识在配置文件中单独占用一行,作为一条特殊的配置命令保存在配置文件中。读取配置文件时,如果当前配置命令为添加的标识,则表明后续的配置命令为同类配置命令,如果是首次读到该标识,则为当前同类配置命令中的第一条配置命令,如果是第二次读到该标识,则为当前同类配置命令中的最后一条配置命令。
其中,解析当前同类配置命令中的第一条配置命令的过程与现有技术相同,解析成功后,命令树返回第一条配置命令的执行函数指针,即地址,将该地址缓存在设备中用来缓存地址的缓冲区中。
其中,缓存第一条配置命令的地址时,还可以先判断地址缓冲区中是否已经存储有地址,如果没有,则将第一条配置命令的地址缓存到缓冲区中。当配置命令不是同类配置命令时,地址缓冲区中也没有缓存的地址,为了区别这种情况,进一步地,还可以设置一个标识set,初始化时置为0,当读取到同类配置命令时,将该标识置为1,即set=1,则在缓存第一条配置命令的地址时,可以判断标识set是否为1且缓冲区是否为空,如果set为1且缓冲区为空,表明当前配置命令为同类配置命令中的第一条配置命令,则在缓冲区中缓存第一条配置命令的地址,缓存后将该标识置为0,即set=0;如果缓冲区为空但是set为0,表明当前配置命令为非同类配置命令,则按照现有的流程执行命令解析和参数合法性检查的过程。
步骤103:根据缓存的地址对应的配置命令的内容和同类配置命令中的参数信息,逐条执行同类配置命令,生成配置信息并保存在上述硬件中。
由于同类配置命令中的每一条配置命令的地址(即执行函数指针)都相同,仅参数不同,因此在执行同类配置命令时,不需要对其中的每一条配置命令进行解析,可以直接根据缓冲区中的地址,找到对应的配置命令的内容,然后依次执行每一条配置命令,传入不同的参数,生成相应的配置信息。
其中,恢复配置信息的过程可以具体包括:
对同类配置命令中的每一条配置命令,根据缓存的地址对应的配置命令的内容和该条配置命令中的参数信息,执行该条配置命令,生成对应的配置信息并在配置信息缓冲区中缓存该条配置信息;如果该缓冲区已满,或者缓存的当前配置信息为同类配置命令中的最后一条配置命令对应的配置信息,则将缓存的所有配置信息保存在上述硬件中。
例如,当前同类配置命令中有1000条配置命令,当配置信息缓冲区中缓存了这1000条配置命令对应的配置信息时,通过主控板的CPU,批量将此1000条配置信息一次下发给相关的接口板的CPU,如接口板1的CPU和接口板2的CPU,每个收到配置信息的接口板将相应的配置信息发送给相应的硬件,硬件根据配置信息执行相应的操作保存配置信息,然后返回响应给主控板,主控板收到响应后,继续读取配置文件中的其他配置命令。
进一步地,在执行同类配置命令的过程中还可以增加下面的步骤:
读取当前配置命令时,判断当前读取的配置命令是否已经达到配置文件的末尾,如果是,则结束读取,完成配置信息的恢复;否则,继续读取下一条配置命令。
为了节省配置信息缓冲区的空间,进一步地,上述方法还可以包括下面的步骤:
将缓存的所有配置信息保存在上述硬件中后,在缓存所有配置信息的缓冲区中删除所有配置信息。
为了节省地址缓冲区的空间,进一步地,上述方法还可以包括下面的步骤:
当当前同类配置命令中的所有配置命令全部执行完成后,在地址缓冲区中删除缓存的第一条配置命令的地址。其中,还可以设置标识clear,初始化时置为0,当读取到同类配置命令中的最后一条配置命令之前的特殊配置命令“*”时,将该标识置为1,即clear=1,执行完最后一条配置命令后,判断该标识是否为1,如果为1,则将地址缓冲区中的地址删除,并置该标识为0,即clear=0,然后继续读取配置文件中的其他配置命令。
本实施例通过缓存同类配置命令中第一条配置命令的地址,根据缓存的地址直接执行同类配置命令,而且对同类配置命令不进行参数合法性检查,避免了对同类配置命令多次重复执行命令解析,极大地节省了配置信息恢复的时间,缩短了数据通信设备重新启动的时间,提高了效率。采用缓存后批量下发配置信息的方式,减少了设备内部子系统之间的消息通讯,避免了每次执行配置命令后都等待子系统响应,与现有技术中采用单条命令下发配置信息(即每条命令都等待子系统响应)的方式相比,极大地提高了系统的处理效率,并缩短了配置信息恢复的时间,尤其对于高端分布式系统,缩短了系统重新启动的时间和故障恢复的时间,克服了用户体验差的缺点。
实施例2
参见图2,本实施例提供了一种恢复配置信息的装置,当装置中的硬件的配置信息丢失时,装置包括:
读取模块,用于读取预先保存的配置文件,该配置文件中包含同类配置命令;
解析及缓存模块,用于当读取模块在配置文件中读取到同类配置命令时,解析同类配置命令中的第一条配置命令,并缓存第一条配置命令的地址;
恢复模块,用于根据解析及缓存模块缓存的地址对应的配置命令的内容和同类配置命令中的参数信息,逐条执行同类配置命令,生成配置信息并保存在上述硬件中。
为了节省设备内地址缓冲区的空间,进一步地,上述装置还可以包括:
删除模块,用于当恢复模块执行完同类配置命令后,在缓存地址的缓冲区中删除所缓存的地址。
其中,上述恢复模块可以采用批量下发配置信息的方式,具体包括:
缓存单元,用于对读取模块读到的同类配置命令中的每一条配置命令,根据解析及缓存模块缓存的地址对应的配置命令的内容和该条配置命令中的参数信息,执行该条配置命令,生成对应的配置信息并缓存该条配置信息;
下发单元,用于当缓存配置信息的缓冲区已满,或者缓存单元缓存的当前配置信息为同类配置命令中的最后一条配置命令对应的配置信息时,将缓存单元缓存的所有配置信息保存在上述硬件中。
为了节省设备内配置信息缓冲区的空间,进一步地,上述恢复模块还可以包括:
删除单元,用于当下发单元将缓存单元缓存的所有配置信息保存在硬件中后,在缓存所有配置信息的缓冲区中删除所有配置信息。
本实施例通过解析及缓存模块缓存同类配置命令中第一条配置命令的地址,恢复模块根据缓存的地址对应的配置命令的内容和同类配置命令中的参数信息,逐条执行同类配置命令,而且对同类配置命令不进行参数合法性检查,避免了对同类配置命令多次重复执行命令解析,极大地节省了配置信息恢复的时间,缩短了数据通信设备重新启动的时间,提高了效率。采用缓存后批量下发配置信息的方式,减少了设备内部子系统之间的消息通讯,避免了每次执行配置命令后都等待子系统响应,与现有技术中采用单条命令下发配置信息(即每条命令都等待子系统响应)的方式相比,极大地提高了系统的处理效率,并缩短了配置信息恢复的时间,尤其对于高端分布式系统,缩短了系统重新启动的时间和故障恢复的时间,克服了用户体验差的缺点。
采用本发明实施例中的技术方案,对4k子接口的数据通信设备和16k子接口的数据通信设备进行配置信息恢复的时间进行比较,可以得到表1中的数据。从表1可以看出,本发明实施例中的技术方案可以极大地缩短系统配置信息恢复的时间,且设备子接口数目呈线性增加时配置信息恢复的时间不呈线性增加。
表1
|
现有技术方案配置信息恢复时间 |
本发明实施例技术方案配置信息恢复时间 |
4K子接口 |
7分11秒 |
63秒 |
16K子接口 |
28分钟 |
129秒 |
本发明实施例可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如交换机或路由器的硬盘或缓存中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。