堆叠系统中实现软件升级的方法、装置及系统
技术领域
本发明涉及网络通信领域的堆叠技术,尤其涉及堆叠系统中实现软件升级的方法、装置及系统。
背景技术
堆叠技术可以将两台及以上的网络设备构成一个独立运行的虚拟设备,这些网络设备称为堆叠成员设备,简称成员设备。堆叠系统可以提高网络传输的稳定性和可靠性,且可自由扩展数据传输的端口数和带宽。参与堆叠的所有成员设备使用相同的全局配置;其中一台成员设备为主设备(Master设备),其他成员设备都为从设备(Slave设备),其中,Master设备为Active(活动)状态,充当管理者和控制者的角色,其配置生效,而Slave设备则为Standby(备用)状态。堆叠系统虽然对外呈现为一台设备,但各成员设备运行独立的软件。堆叠系统的各成员设备中,一般只有主设备与软件版本服务器(或者网管服务器)通过公网IP地址进行通信,而从设备之间是通过内部私网IP地址进行通信,从设备无法与软件版本服务器(网管服务器)直接通信,所以从设备的软件升级依赖于主设备。
现有技术中,主设备通常采用将软件升级文件下载并写到主设备Flash中后通知从设备,从设备收到通知建立到主设备的FTP连接,将主设备Flash中的软件升级文件下载到从设备本地,然后从设备写入本地Flash完成堆叠系统的升级。该升级方案存在的问题是:由于主设备必须首先在Flash中保存软件升级文件,然后通知从设备来取,受限于Flash读写速度,效率较低;而且由于必须要在Flash中形成文件,因此受限于Flash空间大小;再加上由于主设备要先写到Flash形成文件,从设备再下载并写入本地Flash,从设备与主设备写Flash是串行操作,浪费时间,用户体验不好。
FTP必须以文件传输,并且目前软件升级文件较大,对Flash空间大小要求较高,且读写速度较慢,升级速度慢。因此,有必要提出一种新的堆叠系统中实现软件升级的方法,以解决上述问题。
发明内容
有鉴于此,本发明提供了一种堆叠系统中实现软件升级的方法、装置以及系统,以解决现有技术中受限于Flash读写速度,效率较低、对Flash空间大小要求较高的问题。
为解决上述技术问题,本发明的技术方案是这样实现的:
一方面,本发明提供一种堆叠系统中实现软件升级的方法,用于包括一个主设备和至少一个从设备的堆叠系统中,该方法包括:
A.主设备将软件升级文件下载到本地由非连续内存块形成的内存链中,并向从设备发送升级通知;
B.所述从设备接收到来自主设备的升级通知后,向所述主设备发送携带FTP访问参数的升级请求;
C.主设备收到从设备的升级请求后,将按照所述FTP访问参数与所述从设备建立FTP连接;
D、所述从设备依据建立的FTP连接,读取主设备上保存在非连续内存链中的软件升级文件并下载到本地FLASH后进行升级操作。
本发明的另一方面,提供一种装置,应用于堆叠系统的主设备中,该装置包括:
文件保存模块,用于将软件升级文件下载到本地由非连续内存块形成的内存链中,并通知升级通知模块;
升级通知模块,用于向各个从设备发送软件升级的通知;
FTP服务模块,用于接收从设备的升级请求,按照所述升级请求中携带的FTP访问参数与所述从设备建立FTP连接,对所述内存链中的软件升级文件执行文件读取操作。
本发明的另一发明,提供一种装置,应用于堆叠系统的从设备中,该装置包括:
通知接收模块,用于在接收到主设备发送的升级通知后,通知FTP客户端模块;
FTP客户端模块,用于向主设备发送携带FTP访问参数的升级请求,与主设备的FTP服务模块建立FTP连接,读取主设备上保存在非连续内存链中的软件升级文件并下载到本地FLASH中进行升级操作;所述升级请求携带操作已在主设备的输入输出IO驱动层注册的虚拟设备的FTP访问参数;所述FTP访问参数包括:用户名、密码、主设备IP地址以及包括所述虚拟设备名的远端文件名。
最后一方面,本发明提供一种堆叠系统,所述堆叠系统包括主设备和至少一个从设备,其特征在于,所述主设备包括上述应用于堆叠系统的主设备的装置,所述从设备包括应用于上述堆叠系统的从设备的装置。
综上所述,本发明的有益效果包括:堆叠系统中从设备的软件升级不依赖于主设备Flash中的软件升级文件,直接从主设备的内存链中读取,并且保证各成员设备仍然通过文件传输协议FTP从主设备获取软件升级文件,并实现主设备与从设备可以并行完成软件升级文件的下载。
附图说明
图1为本发明实施例一提供的堆叠系统中实现软件升级的方法流程图;
图2为本发明实施例二提供的堆叠系统中实现软件升级的方法流程图;
图3为本发明实施例三提供的一种装置结构框图;
图4为本发明实施例四提供的一种装置结构框图;
图5为本发明实施例五提供的一种装置结构框图;
图6为本发明实施例六提供的一种装置结构框图;
图7为本发明实施例七提供的一种装置结构框图;
图8为本发明实施例八提供的一种堆叠系统构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,图1为本发明实施例提供的一种堆叠系统中实现软件升级的方法流程图。该堆叠系统中实现软件升级的方法流程图具体包括如下步骤:
S101,主设备将软件升级文件下载到本地由非连续内存块形成的内存链中,并向从设备发送升级通知。
本发明实施例中,堆叠系统的主设备通过FTP将软件升级文件下载到本地内存,本地内存使用非连续内存块形成的链存储此文件,称之为内存链。
S102,所述从设备接收到来自主设备的升级通知后,向所述主设备发送携带FTP访问参数的升级请求。
在本步骤中,堆叠系统的从设备收到主设备的升级通知后,填充相关的FTP访问参数,包括用户名、密码、主设备IP地址以及远端文件名。
S103,主设备收到从设备的升级请求后,将按照所述FTP访问参数与所述从设备建立FTP连接。
本步骤中,堆叠系统的主设备收到从的升级请求,将按照从设备FTP客户端填充的FTP访问参数,建立FTP连接。按照FTP访问参数的远端文件名进行文件操作。
S104,所述从设备依据建立的FTP连接,读取主设备上保存在非连续内存链中的软件升级文件并下载到本地FLASH后进行升级操作。
本发明实施例通过各从通过文件传输协议FTP从主设备内存链中读取软件升级文件,并实现主设备与从设备可以并行完成软件升级文件下载到本地FLASH。
实施例二
如图2所示,图2为本发明实施例提供的一种堆叠系统中实现软件升级的方法流程图。该堆叠系统中实现软件升级的方法流程图具体包括如下步骤:
S201,预先在所述主设备的IO驱动层注册一个虚拟设备,以使对所述虚拟设备的文件操作重定向到新定义的接口函数,添加所述虚拟设备和所述新定义的接口函数到所述主设备的IO驱动层。
本发明实施例中,首先向系统IO驱动层注册一个虚拟设备,比如文件名为/sysupd,能够在对此虚拟设备的操作都重定向到新定义的接口函数,新定义的主要操作接口函数包括delete、open、close、read、write、ioctl等,然后向IO层添加此虚拟设备和新定义的接口函数。FTP服务端对软件升级文件进行操作的接口函数,详细定义如下:
open函数:创建一个内存链维护结构用于维护当前FTP客户端对该内存链的访问信息(包括各成员设备对该文件链的操作信息如已读大小、read位置等),并将该维护结构添加到当前维护的内存链访问信息表,并且将该信息添加到系统的文件描述符表(简称FD表),open函数返回该信息在FD表中的位置,即通常我们所说的fd。
read函数:根据fd映射到要访问的内存链的内存地址,并且根据要读的buffer大小记录当前读的内存地址以及当前读的内存块,将对应内存内容拷贝到buffer,以及更新实际读的数据大小。
close函数:将对应FTP客户端的内存链访问信息表控制结构清空,表示该FTP客户端访问结束。
lseek:将对应该FTP客户端的内存链访问信息表控制结构记录的当前访问位置进行更新。
S202,主设备将软件升级文件下载到本地由非连续内存块形成的内存链中,并向从设备发送升级通知。
本步骤中,本发明实施例的堆叠系统主设备的IO驱动层维护一个虚拟设备与保存软件升级文件的内存链的映射关系表,依据所述映射关系表,主设备的FTP服务依据从设备发送的FTP访问参数中的虚拟设备名找到对应的内存链,获取访问所述内存链的起始地址。在所有从设备对该内存链访问结束后关闭,释放内存链访问控制结构。
本发明中,主设备向从设备发送升级通知采用已有的主从设备的交互机制完成,例如采用类似TCP协议的可靠报文传输机制,可由开发者自由定义。
S203,所述从设备接收到来自主设备的升级通知后,向所述主设备发送携带FTP访问参数的升级请求。
本实施例的堆叠系统中,从设备收到主设备的升级通知后,填充相关的FTP访问参数,包括用户名、密码、主设备IP地址以及远端文件名,远端文件名就以注册的虚拟设备名开始,仍然以/sysupd为例,则远端文件名应该是/sysupd/xxx。
S204,主设备收到从设备的升级请求后,将按照所述FTP访问参数与所述从设备建立FTP连接。
本步骤中,主设备收到从设备的升级请求后,依据所述从设备发送的FTP访问参数,所述主设备的IO驱动层判断操作的对象是所述虚拟设备后,与所述从设备建立FTP连接,使用所述新定义的接口函数对保存在非连续内存链中的软件升级文件进行读取操作。
S205,所述从设备依据建立的FTP连接,读取主设备上保存在非连续内存链中的软件升级文件并下载到本地FLASH后进行升级操作。
本步骤中,主设备收到从设备的文件拷贝请求,将FTP访问参数中的文件采用新定义的open函数打开,IO驱动层发现打开的文件名前缀是注册的虚拟设备的文件名/sysupd,则通过IO层维护的映射关系,建立对内存链访问的控制信息结构并对内存链进行读取,同时读取过程中更新对内存链的访问位置以及当前的正在访问的内存块直到读取结束。
本发明实施例重点是将对不连续内存块的访问虚拟为对文件的访问,而不修改FTP服务器对文件的固有访问接口,所以实现简单,升级速度快。
实施例三
如图3所示,为本发明实施例提供的一种装置的结构框图,该装置30应用于堆叠系统的主设备中,包括:
文件保存模块301,用于将软件升级文件下载到本地由非连续内存块形成的内存链中,并通知升级通知模块302。
升级通知模块302,用于向各个从设备发送软件升级的通知。本发明实施例子中,升级通知模块302向从设备发送升级通知采用已有的主从设备的交互机制完成,例如采用类似TCP协议的可靠报文传输机制,可由开发者自由定义。
FTP服务模块303,用于接收从设备的升级请求,按照所述升级请求中携带的FTP访问参数与所述从设备建立FTP连接,对所述内存链中的软件升级文件执行文件读取操作。具体的,所述FTP服务模块303接收从设备的升级请求,依据所述从设备发送的FTP访问参数,判断操作对象是所述虚拟设备后,与所述从设备建立FTP连接,使用所述新定义的接口函数对保存在非连续内存链中的软件升级文件进行读取操作。
本发明实施例中,主设备在获取到软件升级文件后,不用等待保存到本地FLASH中后再通知从设备,而是在将升级文件保存到内存后就通知从设备,提高了从设备升级的速度。
实施例四
如图4所示,为本发明实施例提供的一种装置的结构框图,该装置30应用于堆叠系统的主设备中,除了包括图3中的文件保存模块301、升级通知模块302、FTP服务模块303。还包括预设置模块300,用于预先在IO驱动层注册一个虚拟设备,以使对所述虚拟设备的文件操作重定向到新定义的接口函数,添加所述虚拟设备和所述新定义的接口函数到所述IO驱动层。
本发明实施例中,预设置模块300,首先向系统IO驱动层注册一个虚拟设备,比如文件名为/sysupd,能够在对此虚拟设备的操作都重定向到新定义的接口函数,新定义的主要操作接口函数包括delete、open、close、read、write、ioctl等,然后向IO层添加此虚拟设备和新定义的接口函数。FTP服务端对软件升级文件进行操作的接口函数在上述实施例二中已经有详细举例说明,在此不再赘述。
实施例五
如图5所示,为本发明实施例提供的一种装置的结构框图,该装置30应用于堆叠系统的主设备中,除了包括图4中的文件保存模块301、升级通知模块302、FTP服务模块303、预设置模块300,还包括信息保存模块305,用于根据收到的从设备的升级请求,维护一个用于记录各从设备对内存链中软件升级文件访问情况的内存链访问信息表。信息保存模块305,创建一个内存链维护结构用于维护当前FTP客户端对该内存链的访问信息(包括各成员设备对该文件链的操作信息如已读大小、read位置等),并将该维护结构添加到当前维护的内存链访问信息表。
本发明实施例中,主设备通过维护一个内存链访问信息表,用于保存各个从设备对内存链中软件升级文件的访问情况。
实施例六
如图6所示,为本发明实施例提供的一种装置的结构框图,该装置30应用于堆叠系统的主设备中,除了包括图4中的文件保存模块301、升级通知模块302、FTP服务模块303、预设置模块300,还包括IO驱动层模块306,用于维护一个虚拟设备与保存软件升级文件的内存链的映射关系表,依据所述映射关系表,主设备的FTP服务依据从设备发送的FTP访问参数中的虚拟设备名找到对应的内存链,获取所述内存链的起始地址。所述IO驱动层模块306,还用于接受预设置模块300注册的虚拟设备以及接受对所述虚拟设备的文件操作重定向到新定义的接口函数的注册。
实施例七
如图7所示,为本发明实施例提供的一种装置的结构框图,该装置70应用于堆叠系统的从设备中,该装置包括:
通知接收模块701,用于在接收到主设备发送的升级通知后,通知FTP客户端模块702。
FTP客户端模块702,用于向主设备发送携带FTP访问参数的升级请求,与主设备的FTP服务模块建立FTP连接,读取主设备上保存在非连续内存链中的软件升级文件并下载到本地FLASH中进行升级操作;所述升级请求携带操作已在主设备的IO驱动层注册的虚拟设备的FTP访问参数;所述FTP访问参数包括:用户名、密码、主设备IP地址以及包括所述虚拟设备名的远端文件名。
实施例八
参见图8所示,本发明提供一种堆叠系统。所述堆叠系统包括主设备和至少一个从设备,所述主设备包括图3或图4或图5或图6所示的装置30,所述从设备包括图7所示的装置70。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。