专利名称:支持多协议链路的数据同步方法及服务器的制作方法
技术领域:
本发明涉及计算机数据存储领域,尤其涉及一种支持多协议链路的数据同步方法及服务器。
背景技术:
随着计算机应用的不断普及,计算机用户对数据安全的要求也日益增长。各种天灾人祸引起的数据丢失可能会给用户带来极大的损失,所以出现了能将数据实时同步到远程服务器上的远程复制技术。在意外发生时,能够利用备份到远程服务器上的数据对本地服务器上的数据进行恢复,保障了数据的物理安全。在一个远程复制系统中,本地服务器和远程服务器需要通过网络链路连接起来,并以某种链路协议来传输数据。目前一般的远程复制软件只支持一种链路协议。受制于此种链路协议对应的网络链路硬件的发展,本地服务器和远程服务器间的通信速度提升较为困难,可能难以满足用户对性能的要求。如果用户需要使用另一种网络链路类型,则需要增加专用的链路协议转换软件,将一种链路协议转换为另一种链路协议。但由于软件转换机制会大量占用服务器的计算资源、不同协议的传输机制差异较大、链路中其它硬件缺少对转换后的协议的优化等原因,在链路协议层面进行转换会对网络性能产生明显的影响,也增大了用户配置存储服务器的难度,提高了用户的使用成本。
发明内容
本发明提供了一种支持多协议链路的数据同步方法及服务器,以解决现有远程复制系统支持链路协议单一的缺点。本发明提供了一种服务器,该服务器包括复制操作模块,用于发起请求元数据的小型计算机系统接口(SCSI)命令,向发起 (initiator)模块发送该SCSI命令;接收所述initiator模块返回的读取结果;以及向元数据模块发送调用请求,接收所述元数据模块返回的元数据,将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和备份服务器的数据;所述发起(initiator)模块,用于将来自所述复制操作模块的所述SCSI命令封装为链路协议命令后传递给所述备份服务器中与该initiator模块使用相同链路协议的目标(target)模块,接收所述target模块返回的读取结果,并向所述复制操作模块发送该读取结果;以及所述元数据模块,用于根据所述复制操作模块发送的所述调用请求读取本地的元数据,并向所述复制操作模块返回读取到的所述元数据。优选地,所述复制操作模块,具体用于将该写入请求生成写入SCSI命令后发送给所述initiator模块,或者将该读取请求生成读取SCSI命令后发送给所述initiator模块;所述initiator模块,具体用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;或者接收所述读取SCSI命令,将该读取SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块从所述备份服务器的底层磁盘取出所述链路协议命令所携带的数据。优选地,所述复制操作模块,还用于接收上层应用发送的写入请求,将所述写入的内容写入到本地磁盘,以及将该写入请求生成写入SCSI命令后发送给所述initiator模块;所述initiator模块,还用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;和/或
·
所述请求元数据的SCSI命令和所述链路协议命令是在SCSI标准的协议上扩展出的命令。本发明还提供了一种服务器,该服务器包括目标(target)模块,用于接收对端服务器中与该target模块使用相同协议命令的发起(initiator)模块发送的链路协议命令,根据该协议命令向元数据模块发送调用请求,接收所述元数据模块返回的读取结果,并向所述initiator模块返回所述读取结果;所述元数据模块,用于根据所述目标模块发送的所述调用请求读取本地的元数据,并向所述target模块返回读取结果。优选地,所述target模块,还用于接收所述initiator模块发送的包含写入请求的链路协议命令,将所述包含写入请求的链路协议命令所携带的数据写入所述备份服务器的底层磁盘。本发明另提供了一种支持多协议链路的数据同步方法,该方法包括本地服务器发起请求元数据的小型计算机系统接口(SCSI)命令,将所述SCSI命令封装为链路协议命令后传递给所述备份服务器;本地服务器根据所述SCSI命令读取本地的元数据和接收所述备份服务器返回的读取结果,将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和所述备份服务器的数据。优选地,所述本地服务器根据该读取请求或写入请求同步所述服务器和所述备份服务器的数据,包括所述本地服务器将该写入请求封装为链路协议命令后发送给所述备份服务器,以便所述备份服务器将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;或者将该读取请求封装为链路协议命令后发送给所述备份服务器,以便所述备份服务器从所述备份服务器的底层磁盘取出所述链路协议命令所携带的数据。优选地,该方法还包括本地服务器根据写入请求将该写入请求的内容写入到本地磁盘;根据该写入请求生成写入SCSI命令,将该SCSI命令封装为链路协议命令后传递给该备份服务器,以便所述备份服务器将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;和/或
所述请求元数据的SCSI命令和所述链路协议命令是在SCSI标准的协议上扩展出的命令。本发明又提供了一种支持多协议链路的数据同步方法,该方法包括备份服务器接收对端服务器发送的包含请求元数据的链路协议命令,根据该包含请求元数据的链路协议命令读取本地的元数据;所述备份服务器向所述对端服务器返回读取结果。优选地,该方法还包括所述备份服务器接收所述对端服务器发送的包含写入请求的链路协议命令,将所述包含写入请求的链路协议命令所携带的数据写入所述备份服务器的底层磁盘。
上述支持多协议链路的数据同步方法及服务器,可以支持使用多种网络链路上的多种链路协议创建远程复制关系;且所使用的链路协议iSCS1、FCP、SRP等是行业标准的链路协议,网络链路上的设备对于上述标准协议有充分的优化,可以获得较好的网络性能。本发明使用的在标准SCSI命令的基础上添加自定义命令的方式对系统性能影响非常小,与现有设备兼容度高。本发明使用的target模块也是一般存储服务器多协议系统的基本构成部分,与现有存储服务器系统整合简便。
图1为本发明服务器实施例一的结构示意图2为本发明服务器实施例二的结构示意图3为本发明支持多协议链路的数据同步系统实施例的结构示意图4为本发明中数据重新同步流程的信令流程图5为本发明中复制过程的信令流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明
的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。如图1所示,为本发明服务器实施例一的结构示意图,该服务器包括复制操作模块11、发起(initiator)模块12和元数据模块13,其中复制操作模块,用于发起请求元数据的小型计算机系统接口(SCSI)命令,向发起(initiator)模块发送该SCSI命令;接收所述initiator模块返回的读取结果;以及向元数据模块发送调用请求,接收所述元数据模块返回的元数据,将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和备份服务器的数据;initiator模块,用于将来自所述复制操作模块的所述SCSI命令封装为链路协议命令后传递给所述备份服务器中与该initiator模块使用相同链路协议的目标(target)模块,接收所述target模块返回的读取结果,并向所述复制操作模块发送该读取结果;元数据模块,用于根据所述复制操作模块发送的所述调用请求读取本地的元数据,并向所述复制操作模块返回读取到的所述元数据。
其中,请求元数据的SCSI命令和链路协议命令是在标准SCSI命令的基础上新扩展的。另外,所述复制操作模块根据该读取请求或写入请求同步所述服务器和备份服务器的数据时,具体用于将该写入请求生成写入SCSI命令后发送给所述initiator模块,或者将该读取请求生成读取SCSI命令后发送给所述initiator模块;所述initiator模块,具体用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;或者接收所述读取SCSI命令,将该读取SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块从所述备份服务器的底层磁盘取出所述链路协议命令所携带的数据。进一步地,该服务器在进行一般复制操作(即有写入请求)时,所述复制操作模 块,还用于接收上层应用发送的写入请求,将所述写入的内容写入到本地磁盘,以及将该写入请求生成写入SCSI命令后发送给所述initiator模块;所述initiator模块,还用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘。如图2所示,为本发明服务器实施例二的结构示意图,该服务器包括目标(target)模块21和元数据模块22,其中目标(target)模块,用于接收对端服务器中与该target模块使用相同协议命令的发起(initiator)模块发送的链路协议命令,根据该协议命令向元数据模块发送调用请求,接收所述元数据模块返回的读取结果,并向所述initiator模块返回所述读取结果;所述元数据模块,用于根据所述目标模块发送的所述调用请求读取本地的元数据,并向所述target模块返回读取结果。另外,所述target模块,还用于接收所述initiator模块发送的包含写入请求的链路协议命令,将所述包含写入请求的链路协议命令所携带的数据写入所述备份服务器的
底层磁盘。当然,本发明还提供了一种集成有图1和图2所示复制操作模块、元数据模块、initiator模块和target模块的服务器,即该服务器既可以作为本地服务器使用,又可以作为远程备份服务器使用。本发明还提供了一种支持多协议链路的数据同步系统,该系统包括图1所示结构的本地服务器和图2所示结构的远程备份服务器,如图3所示,对于该系统支持的每一种链路协议,均有一组对应的initiator模块和target模块。每个模块的具体功能如下复制操作模块用于接收上层应用模块提交的读取请求和写入请求,操作本地磁盘读取数据和写入数据。对于写入请求,根据请求生成SCSI命令,将该SCSI命令传递给initiator模块,并接收initiator模块的执行结果。此模块也用于发起请求元数据命令并将该命令传递给initiator模块,并接收initiator模块的执行结果,调用元数据模块比对本地服务器和备份服务器的元数据,根据比对结果构造读取请求和写入请求。
元数据模块用于读取、保存元数据。所述元数据中保存了磁盘未同步部分、磁盘数据创建时间等信息。initiator模块此模块用于接收远程操作模块传递的SCSI命令,将该SCSI命令封装为链路协议的命令,并通过网络链路发送该链路协议命令到备份服务器的相同链路协议的target模块,并接收target模块返回的数据,传递给复制操作模块。target模块用于执行SCSI命令,根据命令对磁盘进行操作或调用元数据模块操作元数据。上述支持多协议链路的数据同步系统可以支持使用多种网络链路上的多种链路协议创建远程复制关系,且所使用的链路协议iSCS1、FCP、SRP等是行业标准的链路协议,网络链路上的设备对于上述标准协议有充分的优化,可以获得较好的网络性能。本发明使用的在标准SCSI命令的基础上添加自定义命令的方式对系统性能影响非常小,与现有设备兼容度高。本发明使用的target模块也是一般存储服务器多协议系统的基本构成部分,与现有存储服务器系统整合简便。另外,本发明还提供了一种支持多协议链路的数据同步方法,该方法从本地服务器的角度进行描述,该方法包括步骤101、本地服务器发起请求元数据的小型计算机系统接口(SCSI)命令,将所述SCSI命令封装为链路协议命令后传递给所述备份服务器;步骤102、本地服务器根据所述SCSI命令读取本地的元数据和接收所述备份服务器返回的读取结果, 将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和所述备份服务器的数据。本发明还提供了一种支持多协议链路的数据同步方法,该方法从备份服务器的角度进行描述,该方法包括步骤201、备份服务器接收对端服务器发送的包含请求元数据的链路协议命令,根据该包含请求元数据的链路协议命令读取本地的元数据;步骤202、所述备份服务器向所述对端服务器返回读取结果。该实施例中提到的对端服务器即是图3中的本地服务器,备份服务器即为图3中的远程备份服务器。下面基于图3,从本地服务器和备份服务器交互的角度对本发明的技术方案进行详细描述实施例一在本地服务器和备份服务器重新进行同步数据,如图4所示,该过程包括步骤301、在本地服务器上,复制操作模块发起请求元数据SCSI命令,并传递给用户使用的链路协议对应的initiator模块;步骤302、在本地服务器上,initiator模块将上述SCSI命令封装为对应的链路协议命令,发送给备份服务器的target模块;步骤303、在备份服务器上,target模块接收上述链路协议命令,调用元数据模块读取元数据,并发送元数据给本地服务器的initiator模块;步骤304、在本地服务器上,initiator模块传递接收到的上述元数据给复制操作模块;
步骤305、在本地服务器上,复制操作模块调用元数据模块读取元数据,与备份服务器的元数据比对,确定本地服务器与备份服务器上数据的新旧;步骤306、在本地服务器上,复制操作模块构造写入请求或读取请求,同步本地服务器和备份服务器的数据。实施例二如图5所示,本地服务器和备份服务器在进行一般复制操作时,包括如下步骤步骤401、在本地服务器上,复制操作模块接收到上层应用的写入请求后,将写入请求的内容写入到本地磁盘,并根据写入请求生成SCSI命令,将该命令 传递给用户使用的链路协议对应的initiator模块;步骤402、在本地服务器上,initiator模块将上述SCSI命令封装为对应的链路协议命令,发送给备份服务器的target模块;步骤403、在备份服务器上,target模块接收上述链路协议命令,并将命令所载的数据写入到底层磁盘中,发送链路协议规定的写入成功信号到本地服务器的initiator模块;步骤404、在本地服务器上,initiator模块将接收到的链路协议写入成功信号转换为SCSI写入成功信号,并将此SCSI写入成功信号传递给复制操作模块。上述实施例中使用的在标准SCSI命令的基础上添加自定义命令的方式对系统性能影响非常小,与现有设备兼容度高。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种服务器,其特征在于,该服务器包括 复制操作模块,用于发起请求元数据的小型计算机系统接口(SCSI)命令,向发起(initiator)模块发送该SCSI命令;接收所述initiator模块返回的读取结果;以及向元数据模块发送调用请求,接收所述元数据模块返回的元数据,将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和备份服务器的数据; 所述发起(initiator)模块,用于将来自所述复制操作模块的所述SCSI命令封装为链路协议命令后传递给所述备份服务器中与该initiator模块使用相同链路协议的目标(target)模块,接收所述target模块返回的读取结果,并向所述复制操作模块发送该读取结果;以及 所述元数据模块,用于根据所述复制操作模块发送的所述调用请求读取本地的元数据,并向所述复制操作模块返回读取到的所述元数据。
2.根据权利要求1所述的服务器,其特征在于 所述复制操作模块,具体用于将该写入请求生成写入SCSI命令后发送给所述initiator模块,或者将该读取请求生成读取SCSI命令后发送给所述initiator模块; 所述initiator模块,具体用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;或者接收所述读取SCSI命令,将该读取SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块从所述备份服务器的底层磁盘取出所述链路协议命令所携带的数据。
3.根据权利要求1或2所述的服务器,其特征在于 所述复制操作模块,还用于接收上层应用发送的写入请求,将所述写入的内容写入到本地磁盘,以及将该写入请求生成写入SCSI命令后发送给所述initiator模块;所述initiator模块,还用于接收所述写入SCSI命令,将该写入SCSI命令封装为链路协议命令后发送给所述备份服务器中使用相同链路协议的target模块,以便所述target模块将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;和/或 所述请求元数据的SCSI命令和所述链路协议命令是在SCSI标准的协议上扩展出的命令。
4.一种服务器,其特征在于,该服务器包括 目标(target)模块,用于接收对端服务器中与该target模块使用相同协议命令的发起(initiator)模块发送的链路协议命令,根据该协议命令向元数据模块发送调用请求,接收所述元数据模块返回的读取结果,并向所述initiator模块返回所述读取结果; 所述元数据模块,用于根据所述目标模块发送的所述调用请求读取本地的元数据,并向所述target模块返回读取结果。
5.根据权利要求4所述的服务器,其特征在于 所述target模块,还用于接收所述initiator模块发送的包含写入请求的链路协议命令,将所述包含写入请求的链路协议命令所携带的数据写入所述备份服务器的底层磁盘。
6.一种支持多协议链路的数据同步方法,其特征在于,该方法包括 本地服务器发起请求元数据的小型计算机系统接口(SCSI)命令,将所述SCSI命令封装为链路协议命令后传递给所述备份服务器; 本地服务器根据所述SCSI命令读取本地的元数据和接收所述备份服务器返回的读取结果,将所述读取结果和所述元数据进行比对,根据比对结果构造读取请求或写入请求,根据该读取请求或写入请求同步所述服务器和所述备份服务器的数据。
7.根据权利要求6所述的方法,其特征在于 所述本地服务器根据该读取请求或写入请求同步所述服务器和所述备份服务器的数据,包括 所述本地服务器将该写入请求封装为链路协议命令后发送给所述备份服务器,以便所述备份服务器将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;或者将该读取请求封装为链路协议命令后发送给所述备份服务器,以便所述备份服务器从所述备份服务器的底层磁盘取出所述链路协议命令所携带的数据。
8.根据权利要求6或7所述的方法,其特征在于 该方法还包括本地服务器根据写入请求将该写入请求的内容写入到本地磁盘;根据该写入请求生成写入SCSI命令,将该SCSI命令封装为链路协议命令后传递给该备份服务器,以便所述备份服务器将所述链路协议命令所携带的数据写入所述备份服务器的底层磁盘;和/或 所述请求元数据的SCSI命令和所述链路协议命令是在SCSI标准的协议上扩展出的命令。
9.一种支持多协议链路的数据同步方法,其特征在于,该方法包括 备份服务器接收对端服务器发送的包含请求元数据的链路协议命令,根据该包含请求元数据的链路协议命令读取本地的元数据; 所述备份服务器向所述对端服务器返回读取结果。
10.根据权利要求9所述的方法,其特征在于,该方法还包括 所述备份服务器接收所述对端服务器发送的包含写入请求的链路协议命令,将所述包含写入请求的链路协议命令所携带的数据写入所述备份服务器的底层磁盘。
全文摘要
本发明提供了一种支持多协议链路的数据同步方法及服务器,其中,该服务器包括复制操作模块,用于发起请求元数据的SCSI命令,向发起模块发送该SCSI命令;接收发起模块返回的读取结果;以及向元数据模块发送调用请求,接收返回的元数据,将读取结果和元数据进行比对,根据比对结果构造读取或写入请求,根据读取或写入请求同步服务器和备份服务器的数据;发起模块,用于将来自复制操作模块的SCSI命令封装为链路协议命令后传递给备份服务器中的目标模块,接收返回的读取结果,并向复制操作模块发送该读取结果;以及元数据模块,用于根据发送的调用请求读取本地的元数据,并返回读取到的元数据。本发明可以支持使用多种链路协议。
文档编号H04L29/08GK103002035SQ201210519890
公开日2013年3月27日 申请日期2012年12月6日 优先权日2012年12月6日
发明者徐旸, 张延枫 申请人:浪潮(北京)电子信息产业有限公司