一种数据处理方法及相关存储设备与流程

文档序号:12176275阅读:187来源:国知局
一种数据处理方法及相关存储设备与流程
本发明涉及存储
技术领域
,尤其涉及一种数据处理方法及相关存储设备。
背景技术
:在由主机集群和若干存储阵列构成的数据处理系统中,如果要在新存储阵列(下面称为第一存储阵列)和原存储阵列(下面称为第二存储阵列)之间实施数据迁移,那么在数据迁移的准备阶段,需要执行以下步骤:将第二存储阵列的待迁移逻辑单元(LogicalUnit,简称LU),通过逻辑单元号(LogicalUnitNumber,简称LUN)映射方式映射至第一存储阵列;在第一存储阵列中创建虚拟LU,并建立待迁移LU与虚拟LU的对应关系;当待迁移LU通过第一存储阵列映射给主机之后,主机通过多路径软件可以获取用于访问待迁移LU的多条路径。路径可以分为两类,第一类路径为主机直接连接至第二存储阵列的路径,第二类路径为主机通过第一存储阵列连接至第二存储阵列的路径。当不同主机(如主机A和主机B)对待迁移LU进行I/O操作时,如果主机A与主机B发生脑裂现象(如通信中断),那么主机A和主机B会向第二存储阵列发送预留抢占命令,以抢占待迁移LU的控制权。在抢占过程中,如果主机A向第二存储阵列发送预留抢占命令,主机B通过第一存储阵列向第二存储阵列发送预留抢占命令,那么第二存储阵列接收主机A发送的预留抢占命令,以实现主机A对待迁移LU进行抢占;第一存储阵列接收主机B发送的预留抢占命令,如果将预留抢占命令原样转发给第二存储阵列,由于第二存储阵列根据第一存储阵列的下发端口识别预留抢占命令的来源,第二存储阵列并不会实现主机B对待迁移LU的抢占,同时第一存储阵列根据预留抢占命令,会执行主机B对第一存储阵列中的虚拟LU进行抢占。若两个都抢占成功,接下来执行数据迁移时,由于待迁移LU和虚拟LU分别被不同的主机占用,当主机A和主机B的命令不一致时,虚拟LU与待迁移LU中的数据无法保持一致,造成原存储阵列与新存储阵列的数据无法保持一致。为了保证数据的一致性,现有的预留抢占方法大致如下:第一存储阵列可以使用端口ID虚拟化(N-PortIdentifierVirtualization,简称NPIV)功能,利用第一存储阵列的端口,对每个主机的主机端口做一对一的模拟。如图1所示,将第一存储阵列的P10'的WWN设置为P10的WWN,将P11'的WWN设置为P11的WWN。当第一存储阵列收到来自P0端口的命令时,第一存储阵列选取与P10对应的P10',从P10'将预留转发命令原样转发给第二存储阵列,第二存储阵列根据P10'的WWN(即P10的WWN),就可以确定预留抢占命令的来源为主机A,再执行主机A抢占待迁移LU的操作。但是,现有技术必须依赖光纤通道(FiberChannel,简称FC)交换机实施NPIV技术。在没有FC交换机的组网场景中,以上预留抢占方法无法实施,具有很大的局限性。技术实现要素:本发明提供了一种数据处理方法以及相关存储设备,能够在不同存储阵列实施在线数据迁移的过程中,当主机集群发生脑裂时,保证不同存储阵列之间数据的一致性,并且不依赖光纤通道交换机,适用场景更广。第一方面提供了一种数据处理方法,该方法应用于存储区域网络,存储区域网络包括第一存储设备和第二存储设备,第二存储设备包括LU,用LUN标识。该数据处理方法包括:主机通过目标端口将第一预留抢占命令发送给第一存储设备,第一存储设备获取第一预留抢占命令包括的目标端口的端口标识、待校验预留密钥以及LUN之后,根据预设的端口映射关系确定目标端口对应的转发端口,再将待校验预留密钥、LUN、目标端口的端口标识以及转发端口的端口标识进行封装得到第二预留抢占命令;然后,通过转发端口将第二预留抢占命令发送给第二存储设备,第二存储设备根据第二预留抢占命令包括的目标端口的端口标识,执行预留抢占操作,因此该主机能够通过第一存储设备抢占第二存储设备的LU。其中,目标端口可以是任意一个主机端口,待校验预留密钥用于第二存储设备对主机进行校验,端口映射关系包括目标端口与转发端口的映射关系。由此可见,第一存储设备将预留抢占命令发送给第二存储设备,而不是在第一存储设备上执行,因此可以解决了不同主机的预留抢占命令在不同存储设备执行的问题。由于在数据迁移过程中新旧存储设备都执行同一主机的控制指令,使得新旧存储设备的数据能够保持一致。并且,根据本发明设置的命令处理方法,每个存储设备都可以识别并处理第二预留抢占命令,因此无需使用NPIV功能进行端口模拟,既可以应用于存储区域网络,也可以应用于无光纤通道交换机的直连式网络,因此本发明数据处理方法的适用场景更广。在第一方面的一种可能实现方式中,在第一存储设备根据预设的端口映射关系,确定目标端口对应的转发端口之前,第一存储设备获取目标端口的端口标识之后,以及从与第二存储设备的目标LU建立有对应关系的端口中选取至少一个端口作为转发端口,再根据目标端口的端口标识建立转发端口与目标端口的端口映射关系。第一存储设备还可以获取目标LU存储的预留密钥,根据转发端口的端口标识与目标端口对应的预留密钥生成预留注册命令,然后,通过转发端口向目标LU发送预留注册命令,第二存储设备根据该预留注册命令记录目标端口对应的预留密钥与转发端口的对应关系。由此可见,本发明通过设置目标端口到转发端口的端口映射关系,并且在目标LU中注册了转发端口,以使得第一存储设备可以通过转发端口将来自目标端口的信息转发给目标LU。由于转发端口与目标端口的预留密钥一致,因此主机可以在完成预留抢占之后传输数据。进一步的,在第一方面的另一种可能实现方式中,在第一存储设备获取目标LU存储的预留密钥之前,第一存储设备读取第二存储设备中目标LU的识别信息,根据识别信息创建虚拟LU;将虚拟LU映射到主机端口。进一步的,在第一方面的另一种可能实现方式中,在通过转发端口向目标LU发送预留注册命令之后,第一存储设备接收主机通过目标端口发送的输入/输出I/O指令,I/O指令用于通过虚拟LU访问目标LU;通过转发端口,将I/O指令发送给第二存储设备中的目标LU。结合第一方面以上实现方式,在第一方面的另一种可能实现方式中,当主机直接连接至第二存储设备的磁盘路径全部被禁用时,第一存储设备接收关闭预留转发指令,根据关闭预留转发指令关闭预留转发功能。第二方面提供一种存储设备,可以实现第一方面的数据处理方法中第一存储设备的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。第三方面提供一种数据处理系统,包括主机、第二存储设备以及第一存储设备。主机可以通过目标端口向第一存储设备发送第一预留抢占命令,第一存储设备获取第一预留抢占命令包括的目标端口的端口标识、待校验预留密钥以及LUN之后,根据预设的端口映射关系确定目标端口对应的转发端口,再将待校验预留密钥、LUN、目标端口的端口标识以及转发端口的端口标识进行封装得到第二预留抢占命令;然后,通过转发端口将第二预留抢占命令发送给第二存储设备,第二存储设备接收第二预留抢占命令之后,确定LUN对应的LU,从LU存储的预留注册信息中查找与目标端口对应的目标预留密钥;若待校验预留密钥与目标预留密钥一致,则根据目标端口的端口标识,执行预留抢占操作。由此可见,第一存储设备将预留抢占命令发送给第二存储设备,而不是在第一存储设备上执行,因此可以解决了不同主机的预留抢占命令在不同存储设备执行的问题。由于在数据迁移过程中新旧存储设备都执行同一主机的控制指令,使得新旧存储设备的数据能够保持一致。并且,根据本发明设置的命令处理方法,每个存储设备都可以识别并处理第二预留抢占命令,因此无需使用NPIV功能进行端口模拟,既可以应用于存储区域网络,也可以应用于无光纤通道交换机的直连组网场景,因此本发明数据处理方法的适用场景更广。从本发明实施例可以看出,第一存储设备接收主机通过目标端口发送的第一预留抢占命令以及目标端口的端口标识,将待校验预留密钥、LUN和目标端口的端口标识进行封装得到第二预留抢占命令,根据预设的端口映射关系确定目标端口对应的转发端口,通过转发端口将第二预留抢占命令发送给第二存储设备,第二存储设备根据第二预留抢占命令删除其他预留密钥。由此可见,第一存储设备接收原预留抢占命令之后,不执行根据原预留抢占命令对虚拟LU进行预留抢占操作,而是将原预留抢占命令和目标端口的端口标识打包生成新的预留抢占命令转发给第二存储设备,第二存储设备收到新的预留抢占命令时,可以根据目标端口的端口标识以及待校验预留密钥,执行预留抢占操作。本发明可以避免在第一存储设备中主机对虚拟LU进行抢占,导致待迁移LU与虚拟LU中数据不一致的问题。同时,本发明无需使用NPIV功能进行端口模拟,可以应用于无光纤通道交换机的直连式网络,具有更好的适用性。附图说明图1为现有技术中数据处理方法的应用场景的一个示意图:图2为现有技术中数据处理方法的应用场景的另一个示意图;图3为本发明实施例中数据处理方法的应用场景的一个示意图;图4为本发明实施例中数据处理方法的应用场景的另一个示意图;图5为本发明实施例中数据处理方法的一个示意图;图6为本发明实施例中数据处理方法的另一个示意图;图7为本发明实施例中数据处理方法的应用场景的另一个示意图;图8为本发明实施例中数据处理方法的另一个示意图;图9为本发明实施例中存储设备的一个示意图;图10为本发明实施例中数据处理系统的一个示意图;图11为本发明实施例中存储设备的另一个示意图。具体实施方式下面先对本发明提供的数据处理方法的应用环境进行介绍,本发明的数据处理系统既可以为存储区域网络(StorageAreaNetwork,简称SAN),也可以为直连式存储(Direct-AttachedStorage,简称DAS)系统。下面以SAN为例,对本发明的数据处理系统进行详细介绍。请参阅图3,SAN系统包括:主机集群、SAN交换网络以及存储阵列。主机集群包括若干主机,每个主机也称作集群节点。每个主机通过SAN交换网络与存储设备相连。每个主机可以包括一个或多个端口,例如主机A包括P10、P11,主机B包括P20、P21等,如图4所示。SAN交换网络:是连接存储设备和主机的专用光纤通道网络,由支持光纤通道的服务器、光纤通道卡(网卡)、光纤通道集线器/交换机和光纤通道存储装置所组成。SAN交换网络最重要的三个组成部分就是:设备接口(如小型计算机系统接口(SmallComputerSystemInterface,简称SCSI)、光纤通道等)、连接设备(如交换机、网关、路由器、集线器等)和通信控制协议(如互联网协议(InternetProtocol,简称IP)和SCSI协议等)。存储设备一般是指由多个存储单元组成的存储阵列。存储单元可以通过LU来描述,每个LU可以用LUN进行标识。存储阵列可以提供一个或多个LU给主机访问。存储设备可以包括多个端口,例如,存储阵列C包括P00、P01,存储阵列D包括P30、P31、P33、P33等,如图4所示。在数据迁移准备阶段中,为了避免主机A和主机B抢占新旧存储阵列,导致数据不一致的情况,现有技术有两种数据处理方法来处理。第一种方法:每个主机设置位于集群软件的下层的悬挂逻辑软件处理层,以截获主机下发的所有命令。当主机向指定LU下发预留抢占命令时,主机可以利用悬挂逻辑软件检测到预留抢占命令,将预留抢占命令悬挂起来,既不发送到旧存储阵列,也不发送到新存储阵列。当新存储阵列接管旧存储阵列之后,再将悬挂的命令下发给新存储阵列。但是,如果悬挂命令的时间太长,主机会认为该命令执行失败,预留抢占无法实行;如果悬挂命令的时间太短,在接管步骤还未完成前就把预留抢占命令下发到存储阵列,数据不一致的问题就不能得到解决。因此,采用悬挂预留抢占命令的缺点在于悬挂时间具有很大的限制,具有一定局限性。第二种方法:第一存储阵列使用NPIV功能利用第一存储阵列的端口,对每个主机的主机端口做一对一的模拟。如图4所示,将第一存储阵列的P10'的全球唯一标识(WorldWideName,简称WWN)设置为P10的WWN,将P11'的WWN设置为P11的WWN。当第一存储阵列收到来自P10端口的命令时,第一存储阵列选取与P10对应的P10',从P10'将预留转发命令原样转发给第二存储阵列,第二存储阵列根据P10'的WWN(即P10的WWN),就可以确定预留抢占命令的来源为主机A,再执行主机A抢占待迁移LU的操作。但是,现有技术必须依赖光纤通道(FiberChannel)交换机实施NPIV技术。在没有FC交换机的组网场景中,以上预留抢占方法无法实施,具有很大的局限性。为了解决以上问题,本发明提供一种数据处理方法,其核心思想是设置一种新预留抢占命令以及存储设备对该新预留抢占命令的处理流程。该预留抢占命令包括主机端口的端口信息,第一存储设备能够将该新预留抢占命令转发给第二存储设备,第二存储设备接收到该预留抢占命令时,能够根据其包含的主机端口的端口信息进行预留抢占。在本发明的数据处理方法实施之前,为了便于理解,首先对本发明数据处理方法的准备阶段进行介绍。在数据处理系统中,主机A和主机B分别向存储阵列C的LU_1发送预留注册命令,假设主机A的预留密钥(reservationkey)为KeyA,主机A下发预留注册命令的端口为P10,主机B的预留密钥为KeyB,主机B下发预留注册命令的端口为P20。存储阵列C可以记录主机端口与预留密钥的对应关系,如下表所示。逻辑单元主机端口预留密钥LU_1P10KeyALU_1P11KeyALU_1P20KeyBLU_1P21KeyB注册成功后,主机A和主机B均具有访问LU_1的权限。当主机进行持续预留操作时,若持续预留成功,就可以获得LU_1的操作权限。主机还可以通过上述主机端口下发I/O指令到LU_1,存储阵列C允许来自上述主机端口的I/O指令对LU_1进行读写操作。若要在第一存储设备与第二存储设备之间实施数据迁移,首先第二存储设备要将LU映射给第一存储设备,具体过程可参阅以下实施例。请参阅图5,本发明的数据处理方法的一个实施例包括:步骤501、第一存储设备读取第二存储设备中目标LU的识别信息。步骤502、第一存储设备根据识别信息创建虚拟LU,将虚拟LU映射到主机端口。本实施例中,目标LU可以为第二存储设备中的任意一个LU。虚拟LU与目标LU是一一对应的。当第一存储设备接入交换网络之后,第一存储设备可以通过交换网络与第二存储设备建立通信连接,建立第一存储设备的端口到目标LU的访问路径。第一存储设备读取第二存储设备中目标LU的识别信息之后,根据识别信息创建虚拟LU,然后将虚拟LU映射到主机端口。当第一存储设备将虚拟LU映射到主机端口之后,若主机在磁盘扫描的过程中访问虚拟LU,第一存储设备可以从第二存储设备的目标LU中读取数据反馈给主机,此时,主机会将主机到虚拟LU的路径认为是主机到目标LU的新路径。对于主机来说,当出现新路径之后,主机的磁盘路径管理程序可以将后续I/O流切换到新路径,在原路径没有被完全禁用的情况下,新路径与原路径共存。步骤503、第一存储设备获取目标端口的端口标识。步骤504、第一存储设备从与第二存储设备的目标LU建立有对应关系的端口中选取至少一个端口作为转发端口,根据目标端口的端口标识建立转发端口与目标端口的端口映射关系。步骤501及步骤502可知,第一存储设备可以通过若干端口访问目标LU。第一存储设备可以选取若干端口的全部或部分作为转发端口,建立转发端口与主机端口的映射关系。需要说明的是,第一存储设备可以根据主机数量,将上述转发端口划分为多个端口组,主机与端口组一一对应。每个主机可以从任意一个主机端口下发I/O流,第一存储设备可以从相应的端口组中选取一个转发端口,将上述I/O流转发给第二存储设备。步骤505、第一存储设备获取目标LU存储的预留密钥,根据转发端口的端口标识与目标端口对应的预留密钥生成预留注册命令。目标LU存储有目标端口与预留密钥的对应关系,第一存储设备获取目标LU存储的预留密钥之后,可以根据目标端口与预留密钥的对应关系,以及转发端口与目标端口的映射关系之后,确定转发端口对应的预留密钥,然后生成转发端口的预留注册命令,该预留注册命令包括转发端口的端口标识与其对应的预留密钥。步骤506、第一存储设备通过转发端口向目标LU发送预留注册命令。步骤507、第二存储设备根据预留注册命令,记录目标端口对应的预留密钥与转发端口的对应关系。第二存储设备获取上述预留注册命令之后,可以获取其包括的转发端口的端口标识、预留密钥等信息,然后利用上述信息注册该转发端口。注册完成后,该转发端口就具有访问目标LU的权限。本实施例中,第一存储设备建立了目标端口到转发端口的端口映射关系,并且在目标LU中注册了转发端口,以使得第一存储设备可以通过转发端口将来自目标端口的信息转发给目标LU。举例来说,在目标LU中,主机端口、转发端口、逻辑单元以及预留密钥的对应关系可以如下表所示:主机端口转发端口逻辑单元预留密钥P10P31LU_1KeyAP11P32LU_1KeyAP20P33LU_1KeyBP21P34LU_1KeyB可以理解的是,如果多个转发端口对应的是同一个主机,那么上述转发端口对应的预留密钥相同。基于图5所示实施例,请参阅图6,本发明的数据处理方法的另一个实施例包括:步骤601、主机通过目标端口发送的I/O指令,I/O指令用于通过虚拟LU访问目标LU。步骤602、第一存储设备根据端口映射关系,确定目标端口对应的转发端口。具体的,第一存储设备接收主机发送的I/O指令之后,可以基于图5建立的端口映射关系,确定目标端口对应的转发端口。步骤603、第一存储设备通过转发端口,将I/O指令发送给第二存储设备中的目标LU。步骤604、第二存储设备根据I/O指令在目标LU中执行读写操作。本实施例中,当第一存储设备建立了目标端口到转发端口的端口映射关系,并且在目标LU中注册了转发端口之后,转发端口具有访问目标LU的权限。因此第一存储设备可以将从目标端口下发的I/O指令,通过转发端口发送给第二存储设备的目标LU。可以理解的是,第一存储设备还可以将从目标端口下发的其他信息转发给目标LU。需要说明的是,当第一存储设备的转发端口在目标LU上注册失败时,转发端口不具有访问目标LU的权限,第二存储设备将不会响应来自转发端口的I/O指令。基于图6所示实施例,下面对本发明提供的数据处理方法进行详细介绍,请参阅图7,本发明提供的数据处理方法的一个实施例包括:步骤701、主机通过目标端口将第一预留抢占命令发送给第一存储设备。本实施例中,第一预留抢占命令也称为持续预留(PersistentReservation,简称PR)命令,其包括目标端口的端口标识、待校验预留密钥以及LUN。LUN对应于主机的访问对象(即目标LU),待校验预留密钥用于第二存储设备对目标端口进行校验。目标端口是指用于发送第一预留抢占命令的主机端口,目标端口的端口标识一般为目标端口的WWN。举例来说,第一预留抢占命令格式可以为:<目标端口的端口标识>+<待校验预留密钥>+<LUN>,当然第一预留抢占命令还可以包括其他信息,由于其他信息并非本发明的发明点,因此不再赘述。步骤702、第一存储设备根据预设的端口映射关系,确定目标端口对应的转发端口。其中,端口映射关系可参阅图5所示实施例中的端口映射关系。步骤703、第一存储设备将待校验预留密钥、LUN、目标端口的端口标识和转发端口的端口标识进行封装,得到第二预留抢占命令。具体的,第一存储设备接收第一预留抢占命令之后,可以将第一预留抢占命令包含的信息(如目标端口的端口标识、待校验预留密钥和LUN等)和转发端口的端口标识进行封装,生成第二预留抢占命令。可以理解的是,第二预留抢占命令的格式可以是<转发端口的端口标识>+<第一预留抢占命令>,或<转发端口的端口标识>+<目标端口的端口标识>+<校验预留密钥>+<LUN>,其中预留抢占命令包括的参数的位置关系并没有固定限制。本发明可以将预留抢占命令格式设置成以上命令格式中的一种,并设置对应的命令处理规则。每个存储设备都可以通过设定的命令处理规则对第二预留抢占命令进行处理,例如识别、封装或解封。步骤704、第一存储设备通过转发端口,将第二预留抢占命令发送给第二存储设备。举例来说,目标LU、主机端口与转发端口的对应关系可以如下表所示:逻辑单元主机端口转发端口LU_1P10P31LU_1P20P33第一存储设备可以将来自P10的I/O流从P31发送给第二存储设备的目标LU。P31既可以接收I/O流,也可以发送I/O流。需要说明的是,第一存储设备还可以设置端口对。端口对包括接收端口和发送端口,接收端口用于接收来自主机端口的I/O流,发送端口用于将接收端口接收的I/O流发送至第二存储设备。步骤705、第二存储设备确定LUN对应的LU,在LU的预留注册信息中查找目标端口对应的目标预留密钥。具体的,第二存储设备接收第二预留抢占命令之后,可以将第二预留抢占命令解封,获取第二预留抢占命令包括的目标端口的端口标识、待校验密钥以及LUN,再确定LUN对应的LU,在LU的预留注册信息中查找目标端口对应的目标预留密钥。可以理解的是,在预留注册信息中,主机与预留密钥一一对应。举例来说,逻辑单元、主机端口与目标预留密钥的对应关系可以如下表所示:逻辑单元主机端口预留密钥LU_1P10KeyALU_1P11KeyALU_1P20KeyBLU_1P21KeyB可以理解的是,若在预留注册信息中没有查找到目标端口的端口信息,则表明目标端口还未注册,不具有访问目标LU的权限。步骤706、若待校验预留密钥与目标预留密钥一致,则第二存储设备根据目标端口的端口标识执行预留抢占操作。第二存储设备将待校验预留密钥与目标预留密钥进行比较,若待校验预留密钥与目标预留密钥不一致,则表明目标端口为未注册端口,不具有访问目标LU的权限。若待校验预留密钥与目标预留密钥一致,则表明目标端口为已注册端口,具有访问目标LU的权限。第二存储设备根据目标端口的端口标识,执行预留抢占操作。具体的,第二存储设备可以删除在预留注册信息中除了目标预留密钥之外的其他预留密钥。由于目标预留密钥与主机一一对应,因此删除了其他预留密钥之后,其他主机就不再具有访问目标LU的权限。举例来说,主机A对应的预留密钥为KeyA,当主机A通过任意一个主机端口下发预留抢占命令,成功抢占目标LU时,第二存储设备将除了KeyA以外的其他预留密钥(如KeyB、KeyC等)进行删除。当主机B发送预留抢占命令时,由于主机B的预留密钥已被删除,目标LU不允许主机B访问。在现有技术中,如果不采用NPIV技术,第二存储阵列根据下发端口识别预留抢占命令的来源,第一存储设备将预留抢占命令转发给第二存储设备时,第二存储阵列认为第一存储阵列对待迁移LU进行抢占,因此主机无法通过第一存储阵列对目标LU进行抢占。本实施例中,第二存储设备可以根据第一存储设备转发的预留抢占命令,正确识别预留抢占命令的来源,从而解决了主机无法通过第一存储阵列对目标LU进行抢占的问题。其次,第一存储设备将预留抢占命令发送给第二存储设备,而不是在第一存储设备上执行,因此可以解决了不同主机的预留抢占命令在不同存储设备执行的问题。由于在数据迁移过程中新旧存储设备都执行同一主机的控制指令,使得新旧存储设备的数据能够保持一致。再次,本发明在存储设备中可以设定对新预留抢占命令的处理规则,每个存储设备都可以识别并处理新预留抢占命令,因此无需使用NPIV功能进行端口模拟,既可以应用于SAN,也可以应用于无光纤通道交换机的直连式网络,因此本发明数据处理方法的适用场景更广。基于图7所示实施例,在本发明的另一个可选实施例中,在步骤706之后,本发明的数据处理方法还包括:当主机直接连接至第二存储设备的磁盘路径全部被禁用时,第一存储设备接收关闭预留转发指令,根据关闭预留转发指令关闭预留转发功能。本实施例中,当主机直接连接至第二存储设备的磁盘路径全部被禁用时,主机只能通过第一存储设备向第二存储设备发送预留类指令或I/O指令。预留类指令包括预留抢占指令(也称为PR指令)、预留注册命令(也称为register指令)、预留查询指令和持续预留指令(也称为reserve指令)等。当第一存储设备关闭预留转发功能后,如果主机A和主机B再发生脑裂时,主机A或主机B下发的预留抢占命令都在第一存储设备上执行,从而保证上述命令的执行结果一致。为便于理解,下面以一个具体应用场景对本发明实施例中提供的数据处理方法进行详细介绍:本发明的具体应用场景中,第一存储设备为阵列D,第二存储设备为阵列C。目标LU以Disk_1来描述,将阵列D接入SAN时,阵列C可以将Disk_1映射给阵列D的端口,阵列D的端口以P30和P31为例,分别建立P30、P31到Disk_1的访问路径。阵列D将主机A的P10、P11,分别与P30、P31建立对应关系,阵列D从Disk_1中读取P10对应的预留密钥,预留密钥以KeyA为例,确定P30对应的预留密钥为KeyA,然后通过P30向阵列C发送预留注册信息(包括P30和KeyA)。P31的注册过程与P30相似。阵列D获取阵列C中Disk_1的识别信息之后,在阵列D内部创建虚拟LU,虚拟LU与阵列C中的Disk_1是一一对应的。然后,将这些虚拟的LU与主机端口(P10/P11)也建立映射关系。当主机执行磁盘扫描程序时,主机访问Disk_1存储的数据文件时,主机可以向阵列D发起I/O指令,然后阵列D按照从阵列C读取的数据反馈给主机。这样,主机既可以直接访问阵列C,也可以访问阵列D的虚拟LU。主机可以将主机到虚拟LU作为主机到Disk_1的新路径。在主机A和主机B访问Disk_1的情况下,当主机A与主机B发生通信中断时,主机A和主机B分别向Disk_1下发预留抢占指令。假定主机A的预留抢占命令先到达Disk_1,主机A通过P10将P10的WWN,LUN和KeyA'发送给阵列D的P30之后,阵列D将P10的WWN,LUN、KeyA'和P30的WWN进行封装得到新预留抢占命令,再通过P30将新预留抢占命令发送给阵列C,阵列C将新预留抢占命令解封,检测到新预留抢占命令包括P10的WWN,则确定预留抢占命令来自P10,阵列C查找P10的WWN对应的预留密钥为KeyA,将KeyA'与KeyA进行比较,如果相同,则调用P10相关的接口执行持续预留抢占流程。例如,阵列C删除其他预留密钥,如KeyB、KeyC等。这样,主机B通过keyB注册的所有端口(如P20、P21、P33)都失去访问Disk_1的访问权限。主机B通过P20将P20的WWN,LUN和KeyB'发送给阵列C,由于KeyB已经被删除,主机B不再具有访问Disk_1的权限,则预留抢占失败。需要说明的是,本发明的预留抢占是根据先后顺序来执行的,如果主机B先于主机A下发预留抢占命令并成功执行,那么存储阵列C将会删除KeyA,仅保留KeyB,这样主机A就无法执行持续预留抢占流程。以上从方法角度对本发明实施例中的数据处理方法进行了描述,下面从装置角度对本发明实施例中的数据处理方法进行介绍。请参阅图9,本发明提供一种存储设备,可以实现图5至图6所示实施例中第一存储设备的功能。本发明提供的存储设备900的一个实施例包括:接收模块901,用于接收主机通过目标端口发送的第一预留抢占命令以及目标端口的端口标识,第一预留抢占命令包括待校验预留密钥以及LUN,待校验预留密钥用于第二存储设备对主机进行校验;处理模块902,用于根据预设的端口映射关系,确定目标端口对应的转发端口,端口映射关系包括目标端口与转发端口的映射关系;处理模块902,还用于将待校验预留密钥、LUN、目标端口的端口标识以及转发端口的端口标识进行封装,得到第二预留抢占命令;发送模块903,用于通过转发端口,将第二预留抢占命令发送给第二存储设备,第二预留抢占命令用于指示第二存储设备根据目标端口的端口标识执行预留抢占操作。基于图9所示实施例,在本发明的一个可选实施例中,在第一存储设备根据预设的端口映射关系,确定目标端口对应的转发端口之前,处理模块902还用于获取目标端口的端口标识,从与第二存储设备的目标LU建立有对应关系的端口中选取至少一个端口作为转发端口,根据目标端口的端口标识建立转发端口与目标端口的端口映射关系;获取目标LU存储的预留密钥,根据转发端口的端口标识与目标端口对应的预留密钥生成预留注册命令,通过转发端口向目标LU发送预留注册命令,预留注册命令用于指示第二存储设备记录目标端口对应的预留密钥与转发端口的对应关系。基于图9所示实施例,在本发明的一个可选实施例中,处理模块902还用于读取第二存储设备中目标LU的识别信息,根据识别信息创建虚拟LU,将虚拟LU映射到主机端口。基于图9所示实施例,在本发明的一个可选实施例中,处理模块902还用于接收主机通过目标端口发送的输入/输出I/O指令,I/O指令用于通过虚拟LU访问目标LU,通过转发端口将I/O指令发送给第二存储设备中的目标LU。基于图9所示实施例,在本发明的一个可选实施例中,处理模块902还用于当主机直接连接至第二存储设备的全部磁盘路径被禁用时,接收关闭预留转发指令,根据关闭预留转发指令关闭预留转发功能。请参阅图10,本发明提供数据处理系统1000的一个实施例包括:主机1001、第一存储设备1002以及第二存储设备1003。主机1001,用于通过目标端口向第一存储设备发送第一预留抢占命令,第一预留抢占命令包括目标端口的端口标识、待校验预留密钥以及LUN,待校验预留密钥用于第二存储设备对主机进行校验;第一存储设备1002与图9所示实施例或可选实施例中的第一存储设备相似。第一存储设备1002执行本发明数据处理方法的过程与图5至图7所示实施例相似,此处不再赘述。第二存储设备1003,用于接收第一存储设备发送的第二预留抢占命令;确定LUN对应的LU,从LU存储的预留注册信息中查找与目标端口对应的目标预留密钥;若待校验预留密钥与目标预留密钥一致,则根据目标端口的端口标识,执行预留抢占操作。为便于理解,下面以一个具体应用场景对本发明实施例提供的数据处理系统中各装置之间的交互进行详细描述:目标LU以Disk_1来描述,将第一存储设备1002接入SAN时,第二存储设备1003以将Disk_1映射给第一存储设备1002的端口,第一存储设备1002的端口以P30和P31为例,分别建立P30、P31到Disk_1的访问路径。第一存储设备1002将主机A的P10、P11,分别与P30、P31建立对应关系,第一存储设备1002从Disk_1中读取P10对应的预留密钥,预留密钥以KeyA为例,确定P30对应的预留密钥为KeyA,然后通过P30向阵列C发送预留注册信息(包括P30和KeyA)。P31的注册过程与P30相似。第一存储设备1002获取第二存储设备1003中Disk_1的识别信息之后,在第一存储设备1002内部创建虚拟LU,虚拟LU与第二存储设备1003中的Disk_1是一一对应的。然后,将这些虚拟的LU与主机端口(P10/P11)也建立映射关系。当主机执行磁盘扫描程序时,主机访问Disk_1存储的数据文件时,主机可以向第一存储设备1002发起I/O指令,然后第一存储设备1002按照从第二存储设备1003读取的数据反馈给主机。这样,主机既可以直接访问第二存储设备1003,也可以访问第一存储设备1002的虚拟LU。主机可以将主机到虚拟LU作为主机到Disk_1的新路径。在主机A和主机B访问Disk_1的情况下,当主机A与主机B发生通信中断时,主机A和主机B分别向Disk_1下发预留抢占指令。假定主机A的预留抢占命令先到达Disk_1,主机A通过P10将P10的WWN,LUN和KeyA'发送给第一存储设备1002的P30之后,第一存储设备1002将P10的WWN,LUN、KeyA'和P30的WWN进行封装得到新预留抢占命令,再通过P30将新预留抢占命令发送给第二存储设备1003,第二存储设备1003将新预留抢占命令解封,检测到新预留抢占命令包括P10的WWN,则确定预留抢占命令来自P10,第二存储设备1003查找P10的WWN对应的预留密钥为KeyA,将KeyA'与KeyA进行比较,如果相同,则调用P10相关的接口执行持续预留抢占流程。例如,第二存储设备1003删除其他预留密钥,如KeyB、KeyC等。这样,主机B通过keyB注册的所有端口(如P20、P21、P33)都失去访问Disk_1的访问权限。主机B通过P20将P20的WWN,LUN和KeyB'发送给第二存储设备1003,由于KeyB已经被删除,主机B不再具有访问Disk_1的权限,则预留抢占失败。需要说明的是,本发明的预留抢占是根据先后顺序来执行的,如果主机B先于主机A下发预留抢占命令并成功执行,那么第二存储设备1003将会删除KeyA,仅保留KeyB,这样主机A就无法执行持续预留抢占流程。下面从硬件装置角度来对本发明实施例中的存储设备1100进行介绍,图5至图8所示实施例中第一存储设备以及第二存储设备均可以基于该存储设备的结构,实现本发明提供的数据处理方法。本发明提供的存储设备1100的一个实施例包括:存储设备1100,可以是磁盘或磁盘阵列等设备,用于存储数据以及操作指令。存储设备1100包括通讯接口1101、控制器1102、存储器1103以及总线1104;通讯接口1101、控制器1102和存储器1104之间通过总线1104相互连接。存储器1104用于存储数据以及操作指令,其中,通过调用存储器1104存储的操作指令,控制器1102可以执行图5至图7所示实施例中的数据处理方法。其中,控制器1102可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,简称FPGA)或者其他可编程逻辑器件等。存储器1103可以包括随机存取存储器(RandomAccessMemory,简称RAM)11031实现,也可能包括非易失性存储器(Non-VolatileMemory,简称NVM)11032,例如至少一个磁盘存储器。在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1