CN105790985A - 数据倒换的方法、第一设备、第二设备及设备 - Google Patents
数据倒换的方法、第一设备、第二设备及设备 Download PDFInfo
- Publication number
- CN105790985A CN105790985A CN201410812351.2A CN201410812351A CN105790985A CN 105790985 A CN105790985 A CN 105790985A CN 201410812351 A CN201410812351 A CN 201410812351A CN 105790985 A CN105790985 A CN 105790985A
- Authority
- CN
- China
- Prior art keywords
- information
- equipment
- nfs
- module
- tcp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000005540 biological transmission Effects 0.000 claims abstract description 38
- 230000010076 replication Effects 0.000 claims description 21
- 230000008878 coupling Effects 0.000 claims description 12
- 238000010168 coupling process Methods 0.000 claims description 12
- 238000005859 coupling reaction Methods 0.000 claims description 12
- 239000012634 fragment Substances 0.000 claims description 10
- 238000005538 encapsulation Methods 0.000 claims description 9
- 238000011084 recovery Methods 0.000 abstract description 36
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 230000005012 migration Effects 0.000 description 14
- 238000013508 migration Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000002372 labelling Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/34—Signalling channels for network management communication
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据倒换的方法,通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socket ID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socket ID对应的socket连接中。本发明还公开了一种设备,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
Description
技术领域
本发明涉及网络数据存储领域,尤其涉及一种数据倒换的方法、第一设备、第二设备及设备。
背景技术
文件锁是保持文件同步的一种手段,当多个用户同时操作同一个文件时,文件锁可以保证数据不发生冲突,很多数据库软件在进行数据的读写过程中都需要文件锁的支持。网络文件系统(NetworkFileSystem,NFS)作为一种强大的网络文件系统,文件锁对其保持文件同步有着至关重要的作用,所以对于文件锁的维护对于NFS来说也是至关重要。在集群模式下,若数据访问中某节点出现异常,则可能会面临着文件锁信息丢失的危险,在多数情况下客户端通过状态协议进行检查锁的状态来进行锁的恢复,但通过锁状态的监测来恢复锁一则时间较长,二则在特殊情况下某些锁不能恢复,急需一种能快速恢复或保存锁状态的技术来解决此问题。
发明内容
本发明提供一种数据倒换的方法及设备,主要目的在于解决节点发生故障的情况下如何快速恢复文件锁信息的技术问题。
为实现上述目的,本发明提供的一种数据倒换的方法,所述方法包括:
在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述在第一设备接收到TCP倒换请求的情况下,所述向第二设备发送第一信息,包括:
在所述第一设备接收到TCP倒换请求的情况下,所述第一TCP模块获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
所述第一TCP模块将所述第一信息发送给所述第二TCP模块。
优选地,所述向所述第二设备发送第二信息,包括:
所述第一TCP模块获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
所述第一TCP模块通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
优选地,所述向所述第二设备发送第三信息,包括:
所述第一设备的网络文件系统NFS模块获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的IO请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
所述第一NFS模块通过集群通道将所述第三信息发送给所述第二NFS模块。
优选地,所述向所述第二设备发送第三信息,包括:
所述第一NFS模块获取NFS锁信息;
所述第一NFS模块将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
所述第一NFS模块将封装后的NFS锁信息发送给所述第二NFS模块。
优选地,所述向第二设备发送第一信息之后,还包括:
接收所述第二设备发送的零窗口的报文。
优选地,所述向所述第二设备发送第二信息及第三信息之后,还包括:
所述第一TCP模块向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则所述第一NFS模块关闭所述TCP倒换请求;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则所述第一NFS模块在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
此外,为实现上述目的,本发明还提供一种数据倒换的方法,所述方法包括:
在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,包括:
所述第二TCP模块接收所述第二信息;
所述第二TCP模块将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块接收所述第三信息;
所述第二NFS模块根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接,若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
优选地,所述第二NFS模块根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接,若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接之后,还包括:
所述第二NFS模块向所述第二TCP模块发送倒换完成的消息;
所述第二设备的协议栈IP层开放NET的收发包,所述第二TCP模块发送窗口恢复报文给所述第一设备,所述第二NFS模块收发报文。
优选地,所述在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息之后,还包括:
向所述第二设备发送零窗口的报文。
此外,为实现上述目的,本发明还提供一种第一设备,所述第一设备包括第一TCP模块和第一NFS模块;
所述第一TCP模块,用于在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
所述第一TCP模块,用于向所述第二设备发送第二信息,所述第二信息用于所述第二设备生成所述socket连接的socketID;
所述第一NFS模块,用于向所述第二设备发送第三信息,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述第一TCP模块,包括:
第一获取单元,用于在所述第一设备接收到TCP倒换请求的情况下,获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
第一发送单元,用于将所述第一信息发送给所述第二TCP模块。
优选地,所述第一TCP模块,包括:
第二获取单元,用于获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
第二发送单元,用于通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
优选地,所述第一NFS模块,包括:
第三获取单元,用于获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的IO请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
第三发送单元,用于通过集群通道将所述第三信息发送给所述第二NFS模块。
优选地,所述第一NFS模块,包括:
第四获取单元,用于获取NFS锁信息;
封装单元,用于将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
第四发送单元,用于将封装后的NFS锁信息发送给所述第二NFS模块。
优选地,第一TCP模块,还包括:
第一接收单元,用于接收所述第二设备发送的零窗口的报文。
优选地,所述第一TCP模块还包括:
第五发送单元,用于向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
所述第一NFS模块,还包括:
关闭单元,用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则关闭所述TCP倒换请求;
关闭单元,还用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
此外,为实现上述目的,本发明还提供一种第二设备,所述第二设备包括第二TCP模块以及第二NFS模块;
所述第二TCP模块,用于在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
所述第二TCP模块,用于接收第一设备发送的第二信息,根据所述第二信息生成所述socket连接的socketID;
所述第二NFS模块,用于接收第一设备发送的第三信息,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述第二TCP模块,包括:
第二接收单元,用于接收所述第二信息;
生成单元,用于将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块,包括:
第三接收单元,用于接收所述第三信息;
匹配单元,用于根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接;
赋值单元,用于若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
优选地,所述第二NFS模块还包括:
第六发送单元,用于向所述第二TCP模块发送倒换完成的消息;
所述第二TCP模块还包括:
第七发送单元,用于发送窗口恢复报文给所述第一设备。
优选地,所述第二TCP模块还包括:
第八发送单元,用于向所述第二设备发送零窗口的报文。
优选地,所述设备包括如上所述的第一设备以及如上所述的第二设备。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
附图说明
图1为数据倒换的方法第一实施例的流程示意图;
图2为数据倒换的方法第二实施例的流程示意图;
图3为数据倒换的方法第三实施例的流程示意图;
图4为数据倒换的方法第四实施例的流程示意图;
图5为数据倒换的方法第五实施例的流程示意图;
图6为数据倒换的方法第六实施例的流程示意图;
图7为数据倒换的方法第七实施例的交互流程示意图;
图8为本发明第一设备第一实施例的功能模块示意图;
图9为本发明第一设备第二实施例的功能模块示意图;
图10为本发明第一设备第三实施例的功能模块示意图;
图11为本发明第二设备第一实施例的功能模块示意图;
图12为本发明第二设备第二实施例的功能模块示意图;
图13为本发明第二设备第三实施例的功能模块示意图;
图14为本发明系统第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种数据倒换的方法。
参照图1,图1为数据倒换的方法第一实施例的流程示意图。
在第一实施例中,该数据倒换的方法包括:
步骤101,在第一设备接收到TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
优选地,所述在第一设备接收到传输控制协议(TransmissionControlProtocol,TCP)倒换请求的情况下,所述向第二设备发送第一信息,包括:
在所述第一设备接收到TCP倒换请求的情况下,所述第一TCP模块获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
所述第一TCP模块将所述第一信息发送给所述第二TCP模块。
其中,所述第一设备可以为故障节点,所述第二设备可以为接管节点。
具体的,故障节点因故障或者故障节点在升级的情况下,用户可以手动将IP迁移到接管节点,再下电故障节点,故障节点的IP迁移后,故障端的TCP模块会获取当前切换IP上的连接,故障端TCP模块获取TCP模块的控制块结构和socket模块的管理结构中的关键字段,将获取到的TCP模块的控制块结构和socket模块的管理结构中的关键字段通过集群通道发送到接管节点的TCP模块,以便接管节点的TCP模块能在第一时间克隆出新的socket连接。
步骤102,向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述向所述第二设备发送第二信息,包括:
所述第一TCP模块获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
所述第一TCP模块通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
优选地,所述向所述第二设备发送第三信息,包括:
所述第一设备的网络文件系统(NetworkFileSystem,NFS)模块获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的输入输出(Input/Output,IO)请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
所述第一NFS模块通过集群通道将所述第三信息发送给所述第二NFS模块。
具体的,故障端的TCP层通知NFS业务层,NFS业务和TCP层同时开始连接的倒换。NFS收到切换的消息,NFS停止对后端磁盘的IO操作和前端的报文发送;NFS收集本次倒换连接的信息,包括NFS控制面管理结构和未完成的IO请求通过集群通道发送到对端节点上,所述NFS控制面管理结构中包括NFS锁信息。同时,TCP层也会收集TCP发送缓存中的数据报文和socket接收环中的报文,通过集群通道发送到接管节点TCP层,接管节点TCP层需要将这些信息赋值到新的socket连接中,完成TCP连接的迁移。NFS和TCP两者在此处是同时进行。
接管节点的TCP模块将接收到的倒换数据恢复到新的socket连接中,待接管节点的TCP模块将所有数据处理完毕,再将新的socketID发送给接管节点的NFS模块。接管节点的NFS模块需要将接收到的倒换数据暂存再把NFS锁信息恢复。NFS锁的恢复过程是将暂存的倒换数据与新的socketID匹配,匹配的条件是TCP层的五元组信息(协议、源-目的IP、源-目的端口)与所述新的socketID对应的socket连接相匹配。
优选地,所述向所述第二设备发送第三信息,包括:
所述第一NFS模块获取NFS锁信息;
所述第一NFS模块将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
所述第一NFS模块将封装后的NFS锁信息发送给所述第二NFS模块。
具体的,为了实现NFS锁信息的快速恢复,在系统检测到故障节点访问异常时触发故障节点的端口倒换,待确定倒换的目标节点之后开始进行NFS锁信息迁移。
在故障节点收到NFS锁信息迁移消息后先根据socket信息找到相对应的sokcet信息的锁,并将锁信息按照表1所示的报文格式进行封装,当锁信息过多时进行消息分片,在接管节点收到消息后根据消息分片的序号进行组包处理,当NFS锁信息发送成功后清除掉本节点相应连接的NFS锁信息,直至故障节点上所有需要倒换的连接发送完成为止。
报文类型 | Socket链接信息 | 报文分片号 | 锁1 | 锁2 | ... | 锁n | 结束标志 |
表1
在接管节点收到故障节点的倒换报文后,会根据报文类型进行相应的处理。当收到锁迁移的报文信息时根据报文结束标记和需要将收到的文件锁信息进行组包,并判断若当前相应连接的端口倒换已成功,则在本节点上解析迁移过来的文件锁信息,并主动发起锁的恢复操作,将故障节点上的文件锁在接管节点上恢复;若当前连接的端口倒换未完成则会进行等待,当超过客户端锁操作的最大延迟时间(NFSv4协议默认90s为租赁时间)时,将迁移的锁信息进行释放,因为此时就算恢复,该锁在客户端已经失效,失去了恢复的价值,不过端口倒换的速度往往要远大于锁迁移的速度,只有在极少数情况下才出现锁迁移超前于端口倒换且延迟超过客户端默认最大延迟的情况。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
本发明进一步提供一种数据倒换的方法。
参照图2,图2为数据倒换的方法第二实施例的流程示意图。
在第二实施例中,在步骤101之后还包括:
步骤103,接收所述第二设备发送的零窗口的报文。
具体的,接管节点建立新的socket连接之后,接管节点会发送一个零窗口的报文给故障节点,并在网络层IP层暂时禁止对应的NET收取报文。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参照图3,图3为数据倒换的方法第三实施例的流程示意图。
在第一实施例中,在步骤102之后还包括:
步骤104,所述第一TCP模块向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则所述第一NFS模块关闭所述TCP倒换请求;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则所述第一NFS模块在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
具体的,故障端的TCP倒换完毕,会发送倒换完成的消息给NFS业务,NFS收到此消息,如果NFS也倒换完毕了,那么NFS就主动关闭请求;如果NFS还未完成数据的倒换,那么NFS倒换完成后在关闭连接。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参照图4,图4为数据倒换的方法第四实施例的流程示意图。
在第四实施例中,所述数据倒换的方法包括:
步骤401,在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
其中,所述第一设备可以为故障节点,所述第二设备可以为接管节点。
具体的,故障节点因故障或者故障节点在升级的情况下,用户可以手动将IP迁移到接管节点,再下电故障节点,故障节点的IP迁移后,故障端的TCP模块会获取当前切换IP上的连接,故障端TCP模块获取TCP模块的控制块结构和socket模块的管理结构中的关键字段,将获取到的TCP模块的控制块结构和socket模块的管理结构中的关键字段通过集群通道发送到接管节点的TCP模块,以便接管节点的TCP模块能在第一时间克隆出新的socket连接。
步骤402,接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,包括:
所述第二TCP模块接收所述第二信息;
所述第二TCP模块将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块接收所述第三信息;
所述第二NFS模块根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接,若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
具体的,故障端的TCP层通知NFS业务层,NFS业务和TCP层同时开始连接的倒换。NFS收到切换的消息,NFS停止对后端磁盘的IO操作和前端的报文发送;NFS收集本次倒换连接的信息,包括NFS控制面管理结构和未完成的IO请求通过集群通道发送到对端节点上,所述NFS控制面管理结构中包括NFS锁信息。同时,TCP层也会收集TCP发送缓存中的数据报文和socket接收环中的报文,通过集群通道发送到接管节点TCP层,接管节点TCP层需要将这些信息赋值到新的socket连接中,完成TCP连接的迁移。NFS和TCP两者在此处是同时进行。
接管节点的TCP模块将接收到的倒换数据恢复到新的socket连接中,待接管节点的TCP模块将所有数据处理完毕,再将新的socketID发送给接管节点的NFS模块。接管节点的NFS模块需要将接收到的倒换数据暂存再把NFS锁信息恢复。NFS锁的恢复过程是将暂存的倒换数据与新的socketID匹配,匹配的条件是TCP层的五元组信息(协议、源-目的IP、源-目的端口)与所述新的socketID对应的socket连接相匹配。
为了实现NFS锁信息的快速恢复,在系统检测到故障节点访问异常时触发故障节点的端口倒换,待确定倒换的目标节点之后开始进行NFS锁信息迁移。
在故障节点收到NFS锁信息迁移消息后先根据socket信息找到相对应的sokcet信息的锁,并将锁信息按照表1所示的报文格式进行封装,当锁信息过多时进行消息分片,在接管节点收到消息后根据消息分片的序号进行组包处理,当NFS锁信息发送成功后清除掉本节点相应连接的NFS锁信息,直至故障节点上所有需要倒换的连接发送完成为止。
报文类型 | Socket链接信息 | 报文分片号 | 锁1 | 锁2 | ... | 锁n | 结束标志 |
表1
在接管节点收到故障节点的倒换报文后,会根据报文类型进行相应的处理。当收到锁迁移的报文信息时根据报文结束标记和需要将收到的文件锁信息进行组包,并判断若当前相应连接的端口倒换已成功,则在本节点上解析迁移过来的文件锁信息,并主动发起锁的恢复操作,将故障节点上的文件锁在接管节点上恢复;若当前连接的端口倒换未完成则会进行等待,当超过客户端锁操作的最大延迟时间(NFSv4协议默认90s为租赁时间)时,将迁移的锁信息进行释放,因为此时就算恢复,该锁在客户端已经失效,失去了恢复的价值,不过端口倒换的速度往往要远大于锁迁移的速度,只有在极少数情况下才出现锁迁移超前于端口倒换且延迟超过客户端默认最大延迟的情况。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参照图5,图5为数据倒换的方法第五实施例的流程示意图。
在第四实施例中,步骤402之后还包括:
步骤403,所述第二NFS模块向所述第二TCP模块发送倒换完成的消息;
所述第二设备的协议栈IP层开放NET的收发包,所述第二TCP模块发送窗口恢复报文给所述第一设备,所述第二NFS模块收发报文。
具体的,故障端的TCP倒换完毕,会发送倒换完成的消息给NFS业务,NFS收到此消息,如果NFS也倒换完毕了,那么NFS就主动关闭请求;如果NFS还未完成数据的倒换,那么NFS倒换完成后在关闭连接。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参照图6,图6为数据倒换的方法第六实施例的流程示意图。
在第四或者第五实施例中,步骤401之后还包括:
步骤404,向所述第二设备发送零窗口的报文。
具体的,接管节点建立新的socket连接之后,接管节点会发送一个零窗口的报文给故障节点,并在网络层IP层暂时禁止对应的NET收取报文。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参考图7,图7为数据倒换的方法第七实施例的交互流程示意图。
在第七实施例中,所述数据倒换的方法包括:
步骤701,故障节点的协议栈TCP层获取到接管节点以后,通知NFS开始倒换;
步骤702,TCP模块通过跨节点集群通道,先把TCP层协议控制块等关键信息(key)发送到接管节点,在接管节点建立socket连接;
步骤703,故障节点的TCP模块和NFS模块同时通过集群通道发送各自的数据到接管节点;
步骤704,故障节点的TCP模块的数据传输完毕,故障节点通知NFS关闭socket,接管节点通知NFS新连接(socket)到来;
步骤705,接管端NFS模块获取到了新的socket连接,通知TCP开始正常工作。
本发明的目的在于能提供一种在集群模式下的NFS倒换和倒换过程中快速完成锁迁移的技术,原理是通过拷贝NFS连接的方式,把服务端NFS连接拷贝到接管端,而客户端不感知,拷贝的信息按类别区分包括两部分:控制信息和数据信息,控制面的信息主要拷贝关键字段即可,数据面信息需要把所有的未完成已发起的数据请求报文拷贝到接管端;其中控制面关键信息中包括NFS锁信息,对NFS锁的处理,能避免对文件的冲突访问。在故障端收集NFS锁信息,在接管端恢复所信息。
本发明采用以下的技术方案:在前端IP迁移完成,故障端通知本端的TCP层倒换,TCP再通知应用层倒换,相当于把服务端的TCP连接迁移到接管端;在整个过程中必须要有一条集群通道来作为倒换的数据通道,该集群通道可以使各种形式的物理通道,而且各个节点控制器都能访问到后端的共享存储池。当应用层收到倒换消息后,将NFS文件锁和NFS请求数据等相关信息通过集群内部通信转移到切换的节点之上,并在接管节点上将锁信息快速恢复。整个过程分为TCP层和NFS的数据迁移,为了提高数据迁移的速度,TCP和NFS数据迁移是并行进行,而且集群通道是一条高速可靠通道,故数据迁移速度快,整个迁移过程在毫秒级别。
本发明适用于集群模式下的分布式网络文件系统NFS的高可用性,应用到的技术包括应用服务的可靠接入及集群模式下的分布式网络文件系统的可靠访问。主要解决大数据存储集群环境下,在单点链路故障的情况下,保证NFS服务的可靠性和稳定性。具体方案为:当客户端与访问节点之间出现链路故障时,该节点通过基于网口的NFS倒换将文件锁及相关信息发送到另一个接管节点,在接管节点上克隆拷贝出一条新的连接,把旧的NFS连接数据复制到新的连接上,新的连接拥有旧连接的所有属性和状态,包括NFS锁的信息,从而在客户端看来,服务端的连接并为发生改变,客户端不感知服务端NFS服务切换的状态下完成了文件锁的迁移。通过该技术可以实现一主多备,即通过添加集群中的各节点的端口为访问节点端口的备用端口,可将访问节点上的锁信息迁移到集群内任意节点之上。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
本发明提供一种设备。
参考图8,图8为本发明第一设备第一实施例的功能模块示意图。
在第一实施例中,该第一设备包括:
第一TCP模块801和第一NFS模块802;
所述第一TCP模块801,用于在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
优选地,所述第一TCP模块801,包括:
第一获取单元8011,用于在所述第一设备接收到TCP倒换请求的情况下,获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
第一发送单元8012,用于将所述第一信息发送给所述第二TCP模块。
其中,所述第一设备可以为故障节点,所述第二设备可以为接管节点。
具体的,故障节点因故障或者故障节点在升级的情况下,用户可以手动将IP迁移到接管节点,再下电故障节点,故障节点的IP迁移后,故障端的TCP模块会获取当前切换IP上的连接,故障端TCP模块获取TCP模块的控制块结构和socket模块的管理结构中的关键字段,将获取到的TCP模块的控制块结构和socket模块的管理结构中的关键字段通过集群通道发送到接管节点的TCP模块,以便接管节点的TCP模块能在第一时间克隆出新的socket连接。
所述第一TCP模块801,用于向所述第二设备发送第二信息,所述第二信息用于所述第二设备生成所述socket连接的socketID;
所述第一NFS模块802,用于向所述第二设备发送第三信息,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述第一TCP模块801,包括:
第二获取单元8013,用于获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
第二发送单元8014,用于通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
优选地,所述第一NFS模块802,包括:
第三获取单元8021,用于获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的IO请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
第三发送单元8022,用于通过集群通道将所述第三信息发送给所述第二NFS模块。
具体的,故障端的TCP层通知NFS业务层,NFS业务和TCP层同时开始连接的倒换。NFS收到切换的消息,NFS停止对后端磁盘的IO操作和前端的报文发送;NFS收集本次倒换连接的信息,包括NFS控制面管理结构和未完成的IO请求通过集群通道发送到对端节点上,所述NFS控制面管理结构中包括NFS锁信息。同时,TCP层也会收集TCP发送缓存中的数据报文和socket接收环中的报文,通过集群通道发送到接管节点TCP层,接管节点TCP层需要将这些信息赋值到新的socket连接中,完成TCP连接的迁移。NFS和TCP两者在此处是同时进行。
接管节点的TCP模块将接收到的倒换数据恢复到新的socket连接中,待接管节点的TCP模块将所有数据处理完毕,再将新的socketID发送给接管节点的NFS模块。接管节点的NFS模块需要将接收到的倒换数据暂存再把NFS锁信息恢复。NFS锁的恢复过程是将暂存的倒换数据与新的socketID匹配,匹配的条件是TCP层的五元组信息(协议、源-目的IP、源-目的端口)与所述新的socketID对应的socket连接相匹配。
优选地,所述第一NFS模块802,包括:
第四获取单元8023,用于获取NFS锁信息;
封装单元8024,用于将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
第四发送单元8025,用于将封装后的NFS锁信息发送给所述第二NFS模块。
具体的,为了实现NFS锁信息的快速恢复,在系统检测到故障节点访问异常时触发故障节点的端口倒换,待确定倒换的目标节点之后开始进行NFS锁信息迁移。
在故障节点收到NFS锁信息迁移消息后先根据socket信息找到相对应的sokcet信息的锁,并将锁信息按照表1所示的报文格式进行封装,当锁信息过多时进行消息分片,在接管节点收到消息后根据消息分片的序号进行组包处理,当NFS锁信息发送成功后清除掉本节点相应连接的NFS锁信息,直至故障节点上所有需要倒换的连接发送完成为止。
报文类型 | Socket链接信息 | 报文分片号 | 锁1 | 锁2 | ... | 锁n | 结束标志 |
表1
在接管节点收到故障节点的倒换报文后,会根据报文类型进行相应的处理。当收到锁迁移的报文信息时根据报文结束标记和需要将收到的文件锁信息进行组包,并判断若当前相应连接的端口倒换已成功,则在本节点上解析迁移过来的文件锁信息,并主动发起锁的恢复操作,将故障节点上的文件锁在接管节点上恢复;若当前连接的端口倒换未完成则会进行等待,当超过客户端锁操作的最大延迟时间(NFSv4协议默认90s为租赁时间)时,将迁移的锁信息进行释放,因为此时就算恢复,该锁在客户端已经失效,失去了恢复的价值,不过端口倒换的速度往往要远大于锁迁移的速度,只有在极少数情况下才出现锁迁移超前于端口倒换且延迟超过客户端默认最大延迟的情况。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
本发明进一步提供一种第一设备。
参考图9,图9为本发明第一设备第二实施例的功能模块示意图。
在第一实施例的基础上,所述第一TCP模块801还包括:
第一接收单元8015,用于接收所述第二设备发送的零窗口的报文。
具体的,接管节点建立新的socket连接之后,接管节点会发送一个零窗口的报文给故障节点,并在网络层IP层暂时禁止对应的NET收取报文。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参考图10,图10为本发明第一设备第三实施例的功能模块示意图。
在第一实施例的基础上,所述第一TCP模块801还包括:
第五发送单元8016,用于向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
所述第一NFS模块802,还包括:
关闭单元8026,用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则关闭所述TCP倒换请求;
关闭单元8026,还用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
具体的,故障端的TCP倒换完毕,会发送倒换完成的消息给NFS业务,NFS收到此消息,如果NFS也倒换完毕了,那么NFS就主动关闭请求;如果NFS还未完成数据的倒换,那么NFS倒换完成后在关闭连接。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参考图11,图11为本发明第二设备第一实施例的功能模块示意图。
在第一实施例中,所述第二设备包括第二TCP模块1101以及第二NFS模块1102;
所述第二TCP模块1101,用于在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
其中,所述第一设备可以为故障节点,所述第二设备可以为接管节点。
具体的,故障节点因故障或者故障节点在升级的情况下,用户可以手动将IP迁移到接管节点,再下电故障节点,故障节点的IP迁移后,故障端的TCP模块会获取当前切换IP上的连接,故障端TCP模块获取TCP模块的控制块结构和socket模块的管理结构中的关键字段,将获取到的TCP模块的控制块结构和socket模块的管理结构中的关键字段通过集群通道发送到接管节点的TCP模块,以便接管节点的TCP模块能在第一时间克隆出新的socket连接。
所述第二TCP模块1101,用于接收第一设备发送的第二信息,根据所述第二信息生成所述socket连接的socketID;
优选地,所述第二TCP模块1101,包括:
第二接收单元11011,用于接收所述第二信息;
生成单元11012,用于将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块1102,用于接收第一设备发送的第三信息,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
优选地,所述第二NFS模块1102,包括:
第三接收单元11021,用于接收所述第三信息;
匹配单元11022,用于根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接;
赋值单元11023,用于若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
具体的,故障端的TCP层通知NFS业务层,NFS业务和TCP层同时开始连接的倒换。NFS收到切换的消息,NFS停止对后端磁盘的IO操作和前端的报文发送;NFS收集本次倒换连接的信息,包括NFS控制面管理结构和未完成的IO请求通过集群通道发送到对端节点上,所述NFS控制面管理结构中包括NFS锁信息。同时,TCP层也会收集TCP发送缓存中的数据报文和socket接收环中的报文,通过集群通道发送到接管节点TCP层,接管节点TCP层需要将这些信息赋值到新的socket连接中,完成TCP连接的迁移。NFS和TCP两者在此处是同时进行。
接管节点的TCP模块将接收到的倒换数据恢复到新的socket连接中,待接管节点的TCP模块将所有数据处理完毕,再将新的socketID发送给接管节点的NFS模块。接管节点的NFS模块需要将接收到的倒换数据暂存再把NFS锁信息恢复。NFS锁的恢复过程是将暂存的倒换数据与新的socketID匹配,匹配的条件是TCP层的五元组信息(协议、源-目的IP、源-目的端口)与所述新的socketID对应的socket连接相匹配。
为了实现NFS锁信息的快速恢复,在系统检测到故障节点访问异常时触发故障节点的端口倒换,待确定倒换的目标节点之后开始进行NFS锁信息迁移。
在故障节点收到NFS锁信息迁移消息后先根据socket信息找到相对应的sokcet信息的锁,并将锁信息按照表1所示的报文格式进行封装,当锁信息过多时进行消息分片,在接管节点收到消息后根据消息分片的序号进行组包处理,当NFS锁信息发送成功后清除掉本节点相应连接的NFS锁信息,直至故障节点上所有需要倒换的连接发送完成为止。
报文类型 | Socket链接信息 | 报文分片号 | 锁1 | 锁2 | ... | 锁n | 结束标志 |
表1
在接管节点收到故障节点的倒换报文后,会根据报文类型进行相应的处理。当收到锁迁移的报文信息时根据报文结束标记和需要将收到的文件锁信息进行组包,并判断若当前相应连接的端口倒换已成功,则在本节点上解析迁移过来的文件锁信息,并主动发起锁的恢复操作,将故障节点上的文件锁在接管节点上恢复;若当前连接的端口倒换未完成则会进行等待,当超过客户端锁操作的最大延迟时间(NFSv4协议默认90s为租赁时间)时,将迁移的锁信息进行释放,因为此时就算恢复,该锁在客户端已经失效,失去了恢复的价值,不过端口倒换的速度往往要远大于锁迁移的速度,只有在极少数情况下才出现锁迁移超前于端口倒换且延迟超过客户端默认最大延迟的情况。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参考图12,图12为本发明第二设备第二实施例的功能模块示意图。
在第一实施例中,所述第二NFS模块1102还包括:
第六发送单元11024,用于向所述第二TCP模块发送倒换完成的消息;
所述第二TCP模块1101还包括:
第七发送单元11013,用于发送窗口恢复报文给所述第一设备。
具体的,故障端的TCP倒换完毕,会发送倒换完成的消息给NFS业务,NFS收到此消息,如果NFS也倒换完毕了,那么NFS就主动关闭请求;如果NFS还未完成数据的倒换,那么NFS倒换完成后在关闭连接。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
参考图13,图13为本发明第二设备第三实施例的功能模块示意图。
在第一或者第二实施例中,所述第二TCP模块1101还包括:
第八发送单元11014,用于向所述第二设备发送零窗口的报文。
具体的,接管节点建立新的socket连接之后,接管节点会发送一个零窗口的报文给故障节点,并在网络层IP层暂时禁止对应的NET收取报文。
另外,在实际设备中,可以同时集合如图8至图10所示的第一设备800的模块功能以及如图11至13所示的第二设备110的模块功能。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
本发明进一步提供一种系统。
参考图14,图14为本发明系统第一实施例的系统架构示意图。所述系统包括如图8至图10所示的第一设备800以及如图11至13所示的第二设备110。
本发明实施例通过在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中,从而实现故障节点出现问题时可将故障节点的锁信息及其相应的数据连接迁移到另外一个正常的节点,从而保证文件锁的快速恢复。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (23)
1.一种数据倒换的方法,其特征在于,所述方法包括:
在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
向所述第二设备发送第二信息及第三信息,所述第二信息用于所述第二设备生成所述socket连接的socketID,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
2.根据权利要求1所述的方法,其特征在于,所述在第一设备接收到TCP倒换请求的情况下,所述向第二设备发送第一信息,包括:
在所述第一设备接收到TCP倒换请求的情况下,所述第一TCP模块获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
所述第一TCP模块将所述第一信息发送给所述第二TCP模块。
3.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送第二信息,包括:
所述第一TCP模块获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
所述第一TCP模块通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
4.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送第三信息,包括:
所述第一设备的网络文件系统NFS模块获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的IO请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
所述第一NFS模块通过集群通道将所述第三信息发送给所述第二NFS模块。
5.根据权利要求4所述的方法,其特征在于,所述向所述第二设备发送第三信息,包括:
所述第一NFS模块获取所述NFS锁信息;
所述第一NFS模块将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
所述第一NFS模块将封装后的NFS锁信息发送给所述第二NFS模块。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述向第二设备发送第一信息之后,还包括:
接收所述第二设备发送的零窗口的报文。
7.根据权利要求1至5任意一项所述的方法,其特征在于,所述向所述第二设备发送第二信息及第三信息之后,还包括:
所述第一TCP模块向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则所述第一NFS模块关闭所述TCP倒换请求;
若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则所述第一NFS模块在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
8.一种数据倒换的方法,其特征在于,所述方法包括:
在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
9.根据权利要求8所述的方法,其特征在于,所述接收第一设备发送的第二信息及第三信息,根据所述第二信息生成所述socket连接的socketID,包括:
所述第二TCP模块接收所述第二信息;
所述第二TCP模块将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块接收所述第三信息;
所述第二NFS模块根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接,若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
10.根据权利要求9所述的方法,其特征在于,所述第二NFS模块根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接,若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接之后,还包括:
所述第二NFS模块向所述第二TCP模块发送倒换完成的消息;
所述第二设备的协议栈IP层开放NET的收发包,所述第二TCP模块发送窗口恢复报文给所述第一设备,所述第二NFS模块收发报文。
11.根据权利要求8至10所述的方法,其特征在于,所述在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息之后,还包括:
向所述第二设备发送零窗口的报文。
12.一种设备,其特征在于,所述第一设备包括第一TCP模块和第一NFS模块;
所述第一TCP模块,用于在第一设备接收到传输控制协议TCP倒换请求的情况下,向第二设备发送第一信息,所述第一信息用于所述第二设备复制所述第一设备的socket连接;
所述第一TCP模块,用于向所述第二设备发送第二信息,所述第二信息用于所述第二设备生成所述socket连接的socketID;
所述第一NFS模块,用于向所述第二设备发送第三信息,所述第三信息用于将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
13.根据权利要求12所述的第一设备,其特征在于,所述第一TCP模块,包括:
第一获取单元,用于在所述第一设备接收到TCP倒换请求的情况下,获取第一信息,所述第一信息至少包括所述第一设备TCP模块中的控制块结构的关键字和第一设备socket模块中的管理结构的关键字;
第一发送单元,用于将所述第一信息发送给所述第二TCP模块。
14.根据权利要求12所述的第一设备,其特征在于,所述第一TCP模块,包括:
第二获取单元,用于获取所述第二信息,所述第二信息至少包括所述TCP模块发送缓存中的报文以及socket接收缓存中的报文;
第二发送单元,用于通过集群通道将所述第二信息发送给所述第二TCP模块,以使得所述第二TCP模块将所述第二信息赋值到复制后的socket连接中。
15.根据权利要求12所述的第一设备,其特征在于,所述第一NFS模块,包括:
第三获取单元,用于获取所述第三信息,所述第三信息至少包括所述NFS模块的控制面管理结构的信息和所述NFS模块未完成的IO请求,所述NFS模块的控制面管理结构的信息包括NFS锁信息;
第三发送单元,用于通过集群通道将所述第三信息发送给所述第二NFS模块。
16.根据权利要求15所述的第一设备,其特征在于,所述第一NFS模块,包括:
第四获取单元,用于获取NFS锁信息;
封装单元,用于将所述NFS锁信息根据报文格式进行封装,所述报文格式至少包括所述socket连接的信息、报文分片号、所述NFS锁信息的编号以及所述报文的结束标识;
第四发送单元,用于将封装后的NFS锁信息发送给所述第二NFS模块。
17.根据权利要求12至16任意一项所述的第一设备,其特征在于,第一TCP模块,还包括:
第一接收单元,用于接收所述第二设备发送的零窗口的报文。
18.根据权利要求12至16任意一项所述的第一设备,其特征在于,所述第一TCP模块还包括:
第五发送单元,用于向所述第二设备发送所述第二信息后,向所述第一NFS模块发送倒换完成的消息;
所述第一NFS模块,还包括:
关闭单元,用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块已向所述第二设备发送完所述第三信息,则关闭所述TCP倒换请求;
关闭单元,还用于若所述第一NFS模块收到所述第一NFS模块发送倒换完成的消息,并且所述第一NFS模块未向所述第二设备发送完所述第三信息,则在向所述第二设备发送完所述第三信息后关闭所述TCP倒换请求。
19.一种设备,其特征在于,所述第二设备包括第二TCP模块以及第二NFS模块;
所述第二TCP模块,用于在第一设备接收到TCP倒换请求的情况下,接收所述第一设备发送的第一信息,根据所述第一信息复制出所述第一设备的socket连接;
所述第二TCP模块,用于接收第一设备发送的第二信息,根据所述第二信息生成所述socket连接的socketID;
所述第二NFS模块,用于接收第一设备发送的第三信息,根据所述第三信息将所述第一设备的NFS相关信息赋值到与所述socketID对应的socket连接中。
20.根据权利要求19所述的第二设备,其特征在于,
所述第二TCP模块,包括:
第二接收单元,用于接收所述第二信息;
生成单元,用于将所述第二信息赋值到复制后的socket连接中,生成所述socket连接的socketID;
所述第二NFS模块,包括:
第三接收单元,用于接收所述第三信息;
匹配单元,用于根据所述第三信息中的五元组信息匹配与所述socketID对应的socket连接;
赋值单元,用于若匹配,则将所述第三信息赋值给所述与所述socketID对应的socket连接。
21.根据权利要求20所述的第二设备,其特征在于,所述第二NFS模块还包括:
第六发送单元,用于向所述第二TCP模块发送倒换完成的消息;
所述第二TCP模块还包括:
第七发送单元,用于发送窗口恢复报文给所述第一设备。
22.根据权利要求19至21所述的第二设备,其特征在于,所述第二TCP模块还包括:
第八发送单元,用于向所述第二设备发送零窗口的报文。
23.一种系统,其特征在于,所述设备包括权利要求12至18所述的第一设备以及权利要求19至22所述的第二设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812351.2A CN105790985B (zh) | 2014-12-23 | 2014-12-23 | 数据倒换的方法、第一设备、第二设备及系统 |
PCT/CN2015/073416 WO2016101409A1 (zh) | 2014-12-23 | 2015-02-28 | 数据倒换的方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812351.2A CN105790985B (zh) | 2014-12-23 | 2014-12-23 | 数据倒换的方法、第一设备、第二设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105790985A true CN105790985A (zh) | 2016-07-20 |
CN105790985B CN105790985B (zh) | 2020-06-16 |
Family
ID=56149037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410812351.2A Active CN105790985B (zh) | 2014-12-23 | 2014-12-23 | 数据倒换的方法、第一设备、第二设备及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105790985B (zh) |
WO (1) | WO2016101409A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109412891A (zh) * | 2018-10-19 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种检测客户端状态的方法和装置 |
CN109862088A (zh) * | 2019-01-23 | 2019-06-07 | 新华三云计算技术有限公司 | Tcp连接迁移方法及装置 |
CN111225020A (zh) * | 2019-11-07 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种用户态网络文件系统双栈访问方法、装置及设备 |
CN111240833A (zh) * | 2019-12-31 | 2020-06-05 | 厦门网宿有限公司 | 一种资源迁移方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004110509A (ja) * | 2002-09-19 | 2004-04-08 | Nec Corp | 冗長構成システムにおける系切替制御処理方式 |
CN1921369A (zh) * | 2006-08-08 | 2007-02-28 | 华为技术有限公司 | 一种网络连接的接管方法 |
JP2009017344A (ja) * | 2007-07-06 | 2009-01-22 | Nippon Telegr & Teleph Corp <Ntt> | Tcpセッション切替装置および方法、プログラムおよび記録媒体 |
CN101399692A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 业务迁移的方法和系统 |
US20090271412A1 (en) * | 2008-04-29 | 2009-10-29 | Maxiscale, Inc. | Peer-to-Peer Redundant File Server System and Methods |
CN102035687A (zh) * | 2011-01-06 | 2011-04-27 | 华为技术有限公司 | Tcp连接的备份方法及其设备 |
CN102375955A (zh) * | 2010-08-17 | 2012-03-14 | 伊姆西公司 | 网络文件系统联合命名空间内文件加锁的系统与方法 |
CN102510408A (zh) * | 2011-11-30 | 2012-06-20 | 武汉烽火网络有限责任公司 | 实现tcp应用主备热倒换的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101132347A (zh) * | 2006-08-24 | 2008-02-27 | 华为技术有限公司 | 一种实现tcp连接备份的系统及方法 |
CN101764738B (zh) * | 2008-12-25 | 2012-07-11 | 华为技术有限公司 | 一种支持tcp协议连接的备份方法及其设备 |
CN102521300B (zh) * | 2011-11-30 | 2015-03-04 | 华中科技大学 | 基于嵌入式虚拟化平台的域间文件数据共享方法 |
-
2014
- 2014-12-23 CN CN201410812351.2A patent/CN105790985B/zh active Active
-
2015
- 2015-02-28 WO PCT/CN2015/073416 patent/WO2016101409A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004110509A (ja) * | 2002-09-19 | 2004-04-08 | Nec Corp | 冗長構成システムにおける系切替制御処理方式 |
CN1921369A (zh) * | 2006-08-08 | 2007-02-28 | 华为技术有限公司 | 一种网络连接的接管方法 |
JP2009017344A (ja) * | 2007-07-06 | 2009-01-22 | Nippon Telegr & Teleph Corp <Ntt> | Tcpセッション切替装置および方法、プログラムおよび記録媒体 |
CN101399692A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 业务迁移的方法和系统 |
US20090271412A1 (en) * | 2008-04-29 | 2009-10-29 | Maxiscale, Inc. | Peer-to-Peer Redundant File Server System and Methods |
CN102375955A (zh) * | 2010-08-17 | 2012-03-14 | 伊姆西公司 | 网络文件系统联合命名空间内文件加锁的系统与方法 |
CN102035687A (zh) * | 2011-01-06 | 2011-04-27 | 华为技术有限公司 | Tcp连接的备份方法及其设备 |
CN102510408A (zh) * | 2011-11-30 | 2012-06-20 | 武汉烽火网络有限责任公司 | 实现tcp应用主备热倒换的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109412891A (zh) * | 2018-10-19 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种检测客户端状态的方法和装置 |
CN109412891B (zh) * | 2018-10-19 | 2022-04-22 | 郑州云海信息技术有限公司 | 一种检测客户端状态的方法和装置 |
CN109862088A (zh) * | 2019-01-23 | 2019-06-07 | 新华三云计算技术有限公司 | Tcp连接迁移方法及装置 |
CN111225020A (zh) * | 2019-11-07 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种用户态网络文件系统双栈访问方法、装置及设备 |
CN111225020B (zh) * | 2019-11-07 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种用户态网络文件系统双栈访问方法、装置及设备 |
CN111240833A (zh) * | 2019-12-31 | 2020-06-05 | 厦门网宿有限公司 | 一种资源迁移方法及装置 |
CN111240833B (zh) * | 2019-12-31 | 2023-03-17 | 厦门网宿有限公司 | 一种资源迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016101409A1 (zh) | 2016-06-30 |
CN105790985B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109451065B (zh) | 一种软负载均衡分流自动化系统及其运行方法 | |
EP3435606B1 (en) | Message processing method, computing device, and message processing apparatus | |
CN101557317B (zh) | 双机热备组网中实现会话主动备份的系统、设备及方法 | |
CN100369413C (zh) | 代理响应设备及用于代理响应设备的方法 | |
CN104104570A (zh) | Irf系统中的聚合处理方法及装置 | |
EP2961112B1 (en) | Message forwarding system, method and device | |
CN104506513A (zh) | 防火墙流表备份方法、防火墙及防火墙系统 | |
CN105790985A (zh) | 数据倒换的方法、第一设备、第二设备及设备 | |
CN108959167A (zh) | 一种坐席系统管理方法、装置及坐席系统 | |
PH12014502594B1 (en) | Service node switching method and system | |
CN102523118A (zh) | 一种局域网内多套控制计算机构成的冗余控制系统与方法 | |
CN101651626B (zh) | 一种流量转发的方法及设备 | |
CN104202255A (zh) | 一种高效多链路数据传输实现方法 | |
CN105681087B (zh) | 基于轻量级虚拟机的虚拟控制平面资源管理方法 | |
CN109845192A (zh) | 用于动态地适配软件定义的网络的计算机系统和方法 | |
CN101145972B (zh) | 一种容灾网管系统及其网管客户端的登陆方法 | |
CN107800737A (zh) | 一种服务器集群中主节点的确定方法、装置及服务器集群 | |
CN108234358B (zh) | 一种组播报文传输方法、装置及机器可读存储介质 | |
CN105141526A (zh) | 虚拟网络通信的方法及装置 | |
KR20160090485A (ko) | 소프트웨어 정의 네트워크에서 분산 컨트롤러를 운용하는 방법 및 장치 | |
CN101621526A (zh) | 一种防止无用连接占用系统资源的iSCSI方法及装置 | |
CN103457795B (zh) | Vcf网络中的mad方法及设备 | |
CN105391565A (zh) | 备份业务配置实现同步的方法 | |
CN105634955A (zh) | 流表更新方法及装置 | |
KR102286913B1 (ko) | 네트워크 관리 장치 및 그 제어방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |