WO2019080150A1 - 一种双活存储系统和地址分配方法 - Google Patents
一种双活存储系统和地址分配方法Info
- Publication number
- WO2019080150A1 WO2019080150A1 PCT/CN2017/108641 CN2017108641W WO2019080150A1 WO 2019080150 A1 WO2019080150 A1 WO 2019080150A1 CN 2017108641 W CN2017108641 W CN 2017108641W WO 2019080150 A1 WO2019080150 A1 WO 2019080150A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- lun
- address
- storage array
- assignable
- source
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Definitions
- a fourth aspect of the present application provides an address allocation apparatus for performing the method provided by the third aspect.
- FIG. 2 is a schematic diagram of an address of a primary LUN according to an embodiment of the present invention.
- FIG. 5 is a signaling interaction diagram of an address allocation method according to an embodiment of the present invention.
- the mapping between the original UUID of the LUN and the UUID presented to the host is saved in the storage array where the LUN is located.
- the UUID of the first source LUN 201 is A
- the UUID of the first target LUN 301 is A'.
- the UUIDs presented by the first source LUN 201 and the first target LUN 301 to the host 10 are both A', and the correspondence between A and A' is stored in the first storage array 20.
- the host LUN ID of the second source LUN is the same as the host LUN ID of the second target LUN.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
一种双活存储系统,包括第一存储阵列、第二存储阵列和地址分配装置。其中第一存储阵列包括第一源逻辑单元号LUN,第二存储阵列包括第一目标LUN,第一源LUN和第一目标LUN是一对双活LUN。第一存储阵列,用于向地址分配装置发送第一源LUN的可分配地址集合,第一源LUN的可分配地址集合包括第一源LUN的多个可分配地址。第二存储阵列,用于向地址分配装置发送第一目标LUN的可分配地址集合,第一目标LUN的可分配地址集合包括第一目标LUN的多个可分配地址。地址分配装置,用于从第一源LUN的可分配地址集合和第一目标LUN的可分配地址集合中获取有效地址,有效地址是第一源LUN的多个可分配地址与第一目标LUN的多个可分配地址之间的交集中的一个可分配地址。地址分配装置,还用于将有效地址发送给第一存储阵列,以及将有效地址发送给第二存储阵列。由此实现了LUN地址的统一。
Description
本申请涉及存储技术领域,特别是一种双活存储系统和地址分配方法。
存储双活解决方案是指两个数据中心都处于运行状态,可以同时承担相同业务,提高数据中心的整体服务能力和系统资源利用率。两个数据中心互为备份,当一个数据中心故障时,业务能自动切换到另一个数据中心,业务不中断。两个数据中心的布局是一致的,每个数据中心均包括一级逻辑单元号(Logical Unit Number,LUN)和二级LUN。一级LUN挂载给主机,多个二级LUN挂载给一级LUN,二级LUN为主机提供存储服务,而一级LUN并不存储数据。第一数据中心的每个二级LUN在第二数据中心中都有一个对应的二级LUN,这两个二级LUN是一对双活LUN。它们对主机而言,是以同一个LUN的形式被主机使用的。
当第一数据中心发生故障时,主机多路径将原本应该发送给第一数据中心中的二级LUN的命令,发送给第二数据中心。如果两个数据中心中的二级LUN的地址不一致,第二数据中心就无法根据命令中携带的地址信息找到与第一数据中心的二级LUN对应的双活LUN,数据就可能被写入其他二级LUN中,由此会带来两个双活LUN中数据不一致的问题。
发明内容
本申请提供了一种双活存储系统、地址分配装置和地址分配方法,可以实现二级LUN的地址的统一,从而保证双活LUN中数据的一致性。
本申请第一方面提供一种双活存储系统。该双活存储系统包括第一存储阵列、第二存储阵列和地址分配装置。第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN和所述第一目标LUN是一对双活LUN。所谓第一源LUN和第一目标LUN是一对双活LUN具体是指第一源LUN和第一目标LUN对主机呈现的通用唯一识别码(Universally Unique Identifier,UUID)相同。所述第一存储阵列,用于向所述地址分配装置发送所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址。所述第二存储阵列,用于向所述地址分配装置发送所述第一目标LUN的可分配地址集合,所述第一目标
LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址。所述地址分配装置,用于从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址。所述地址分配装置,还用于将所述有效地址发送给所述第一存储阵列,以及将所述有效地址发送给所述第二存储阵列。第一方面所提供的双活存储系统,第一源LUN和第一目标LUN既可以是一级LUN,也可以是二级LUN。无论第一源LUN和第一目标LUN是一级LUN还是二级LUN,都可以按照第一方面所提供的方式实现LUN地址的统一。
根据第一方面,第一存储阵列和第二存储阵列分别将LUN的可分配地址集合发送给地址分配装置。地址分配装置从两个LUN的可分配地址集合中获取它们之间共同拥有
的有效地址,然后将有效地址分别发送给第一存储阵列和第二存储阵列。实现了第一源LUN和第一目标LUN的地址统一。当主机和第一源LUN之间的链路A发生故障时,主机利用多路径软件切换到主机和第一目标LUN之间的链路B。主机通过链路B将原本要发送给第一存储阵列的写数据命令发送给第二存储阵列。由于第一目标LUN的地址与第一源LUN的地址相同,第二存储阵列能够根据该地址找到第一目标LUN,将写数据命令中携带的数据写入第一目标LUN。由于第一目标LUN和第一源LUN是一对双活LUN,待故障消除时,第二存储阵列可以将所述数据复制到第一源LUN,保证了双活LUN的数据一致性。
在第一方面的第一种实现方式中所述地址分配装置,还用于向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,所述第一存储阵列,具体用于响应于所述第一地址查询命令,向所述地址分配装置发送所述第一源LUN的可分配地址集合。所述地址分配装置,还用于向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,所述第二存储阵列,具体用于响应于所述第二地址查询命令,向所述地址分配装置发送所述第一目标LUN的可分配地址集合。在该种实现方式中,第一存储阵列、第二存储阵列向地址分配装置发送二级LUN的可分配地址的过程在接收地址分配装置发送的地址查询命令之后执行。
结合第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN。所述第一存储阵列,还用于将所述第一源LUN挂载于所述第二源LUN,生成所述第一源LUN的所述多个可分配地址,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID。所述第二存储阵列,还用于将所述第一目标LUN挂载于所述第二目标LUN,生成所述第一目标LUN的所述多个可分配地址,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。在这种实现方式中,进一步明确了第一源LUN和第一目标LUN是二级LUN。其中,第一源LUN是挂载于第二源LUN(一级LUN)的二级LUN,因此第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID。第一目标LUN是挂载于第二目标LUN(一级LUN)的二级LUN,因此第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。并且,按照第二种实现方式,二级LUN的地址统一是在将所述二级LUN挂载到一级LUN的过程中实现的。由于要使得二级LUN正常使用,必然需要将二级LUN挂载到一级LUN上,如果在该过程中实现二级LUN的地址统一就避免了使用额外的操作,简化了流程。
结合第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述第二源LUN的主机LUN ID和所述第二目标LUN的标识主机LUN ID。由于二级LUN的地址包括该二级LUN所挂载的一级LUN的主机LUN ID以及所述二级自己的主机LUN ID,因此也需要保证二级LUN所挂载的一级LUN的主机LUN ID相同。
结合第一方面的第三种实现方式,在第一方面的第四种实现方式中,所述第一存储阵列,还用于向所述地址分配装置发送所述第二源LUN的可分配地址集合,所述第二源
LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID。所述第二存储阵列,用于向所述地址分配装置发送所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID。所述地址分配装置,还用于从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID。所述地址分配装置,还用于将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。这种实现方式是用于保证一级LUN之间地址统一,与二级LUN之间的地址统一方式类似。
结合以上任意一种实现方式,在第一方面的第五种实现方式中,所述双活存储系统还包括主机。所述第一存储阵列,还用于向所述主机发送第一消息,以确认所述有效地址是所述第一源LUN的地址。所述第二存储阵列,还用于向所述主机发送第二消息,以确认所述有效地址是所述第一目标LUN的地址。第一存储阵列和第二存储阵列分别向主机发送消息,是为了确认上述有效地址已作为第一源LUN以及第一目标LUN的地址,也就是确认所述有效地址生效。生效以后,主机就可以用所述有效地址与第一源LUN以及第一目标LUN通信。
需要说明的是,所述地址分配装置可以集成在所述主机中,也就是说主机执行所述地址分配装置的部分。所述地址分配装置也可以作为一个独立服务器,例如仲裁服务器。
本申请第二方面提供一种地址分配装置,所述地址分配装置包括接口和处理器。所述接口,用于与第一存储阵列通信,以及与第二存储阵列通信,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN的和所述第一目标LUN是一对双活LUN。所述处理器用于执行第一方面以及第一方面任意一种实现方式中的地址分配装置所实现的功能。
本申请第三方面提供一种地址分配方法,该方法应用于第二方面提供的地址分配装置中,由地址分配装置执行。当所述地址分配装置集成在主机中时,所述方法由主机执行;当所述地址分配装置是仲裁服务器时,所述方法由所述仲裁服务器执行。
本申请第四方面提供一种地址分配装置,装置用于执行第三方面提供的方法。
本申请第五方面提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可以由上述第二方面或者第四方面的地址分配装置执行,并用于执行上述第三方面的至少一种方法。
本申请第六方面提供了双活存储系统,所述双活存储系统包括第一存储阵列、第二存储阵列和主机。其中,第二存储阵列包括地址分配装置,也就是说所述地址分配装置集成在所述第二存储阵列中。在所述系统中,主机通知第一存储阵列挂载二级LUN。第一存储阵列将挂载二级LUN的事件通知给第二存储阵列。第二存储阵列向第一存储阵列发送第一地址查询命令,要求查询第一源LUN的可分配地址。第一存储阵列将第一源LUN的可分配地址集合发送给第二存储阵列。第二存储阵列根据第一源LUN的可分配地址集合以及本地的第一目标LUN的可分配地址集合获得有效地址。第二存储阵列向第一存储阵列反馈挂载成功,将第一目标LUN的地址发送给第一存储阵列。第一存储阵列
向主机反馈挂载成功,将第一源LUN的地址以及第一目标LUN的地址发送给主机。
按照第六方面提供的双活存储系统,地址分配装置位于第二存储阵列中。第一存储阵列将LUN的可分配地址集合发送给第二存储阵列。第二存储阵列从两个LUN的可分配地址集合中获取它们之间共同拥有的有效地址,然后将有效地址发送给第一存储阵列。实现了第一源LUN和第一目标LUN的地址统一。当主机和第一源LUN之间的链路A发生故障时,主机利用多路径软件切换到主机和第一目标LUN之间的链路B。主机通过链路B将原本要发送给第一存储阵列的写数据命令发送给第二存储阵列。由于第一目标LUN的地址与第一源LUN的地址相同,第二存储阵列能够根据该地址找到第一目标LUN,将写数据命令中携带的数据写入第一目标LUN。由于第一目标LUN和第一源LUN是一对双活LUN,待故障消除时,第二存储阵列可以将所述数据复制到第一源LUN,保证了双活LUN的数据一致性。
本申请第七方面提供了存储阵列,用于执行第六方面提供的双活存储系统中的第二存储阵列所执行的功能。
本申请第八方面提供了地址分配方法,应用于第六方面提供的双活存储系统中,由第一存储阵列和第二存储阵列执行。
本申请第九方面提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可以由上述第六方面的双活存储系统中的第一存储阵列和第二存储阵列执行,并用于执行上述第八方面的至少一种方法。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的系统架构图;
图2是本发明实施例提供的一级LUN的地址的示意图;
图3是本发明实施例提供的另一个系统架构图;
图4是本发明实施例提供的二级LUN的地址的示意图;
图5是本发明实施例提供的地址分配方法的信令交互图;
图6是本发明实施例提供的另一种地址分配方法的信令交互图;
图7是本发明实施例提供的再一种地址分配方法的信令交互图;
图8是本发明实施例提供的地址分配装置的硬件结构示意图;
图9是本发明实施例提供的地址分配装置的结构示意图。
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1是本发明实施例提供的系统架构图。如图1所示,存储系统包括活动-活动式(active-active)阵列,又称双活阵列。其中,双活阵列包括第一存储阵列20和第二存储阵列30。第一存储阵列20和第二存储阵列30都可以承担主机10的业务。第一存储阵列20包括控制器和若干个磁盘或者固态硬盘,控制器可以是一种计算设备,如服务器、台式计算机等等。在控制器上安装有操作系统以及应用程序。控制器通过存储区域网络(storage area network,SAN)与主机10连接。控制器可以接收来自主机的输入输出(I/O)请求,控制器还可以存储I/O请求中携带的数据(如果有的话),并且将该数据写入磁盘中。第二存储阵列30的结构和第一存储阵列20类似。在本实施例中,第一存储阵列
20提供的第一源逻辑单元号(logical unit number,LUN)201,与第二存储阵列30提供的第二目标LUN 301是一对双活LUN,这对双活LUN对主机10而言是以一个LUN的模式提供存储服务的。
主机10中运行有多个虚拟机,图1中的虚拟机101仅为多个虚拟机中的其中一个示例。第一存储阵列20将LUN 201分配给虚拟机101,第二存储阵列30将LUN 301分配给虚拟机101。LUN 201在主机10上映射为LUN 201’,第一存储设备20中保存有LUN201的标识与LUN 201’的标识之间的映射关系。LUN 301在主机10上映射为LUN 301’,第二存储设备30中保存有LUN 301的标识与LUN 301’的标识之间的映射关系。本实施例中将存储阵列映射到主机上的虚拟LUN称为主机LUN。主机LUN的标识,又称为主机LUN ID。为了方便描述,将主机10与第一存储阵列20之间的链路称为链路A,将主机10与第一存储阵列30之间的链路称为链路B。虚拟机101可以通过链路A访问LUN201,也可以通过链路B访问LUN 301。例如,当虚拟机101要写入数据时,主机10通过其多路径软件选择链路A或者链路B。链路选择原则可以是负载均衡原则或者其他原则。假设链路A相对空闲,主机10选择了链路A,虚拟机10将数据写入LUN 201。为了保持LUN 201和LUN 301中的数据一致,在第一存储阵列30接收数据之后,会将所述数据复制到LUN 301。另外,在第一存储阵列201和第二存储阵列301中的任意一个存储阵列发生故障时,另一个存储阵列可以继续接受业务,实现业务的无中断切换。
这里,有必要对LUN的概念进行解释。在实际应用中,将存储阵列中的物理磁盘进行逻辑组合,并应用需要的RAID级别,得到RAID集。RAID集因为将多个磁盘组合,通常容量较大,所以将RAID集的可用容量划分为较小的单元,称为逻辑单元(logical unit),然后根据主机的存储需求将逻辑单元分配给主机。每个逻辑单元都会被分配一个唯一的标识,即逻辑单元编号(logical unit number,LUN),逻辑单元编号向主机隐藏了RAID集的组织和构成。一个逻辑单元也被称为一个LUN设备,在之后的讨论中,LUN设备简称为LUN。LUN具有至少两种不同功能的标识,分别是LUN ID和通用唯一识别码(Universally Unique Identifier,UUID)。LUN ID是LUN在设备内的标识,用于将一个LUN与存储阵列内的其他LUN区别开来。然而,LUN ID只是在第一存储阵列20中是唯一的,有可能会和其他存储阵列(例如第二存储阵列30)中的某个LUN的LUN ID重合。而UUID虽然也是LUN的标识,但UUID是全球唯一的编号。需要说明的是,虽然另外,由于LUN挂载到主机上之后,从主机上看到的LUN是主机LUN,主机LUN的标识称为主机LUN ID。由于主机LUN并不是实际存在的物理空间,只是LUN在主机上的映射。因此,主机LUN ID也可以认为是LUN的标识。为了方便描述,本实施例将存储阵列可见的LUN的标识称为设备LUN ID,将主机可见的LUN的标识称为主机LUN ID。如无特别指明,后续所称的LUN的标识均指该LUN的主机LUN ID。
LUN的地址是由主机LUN ID封装而成的。如图2所示,根据SCSI标准,LUN的地址包括8个字节,其中第一个字节为固定值,例如编址方法(address method)和总线标识(bus identifier)第二个字节用LUN的标识填充,其余字节补0或者为空。
在实际应用,主机通常运行有多个虚拟机,存储阵列中的一个LUN分配给主机上的一个虚拟机,也就是说每个虚拟机对应存储阵列中的一个LUN。如果主机有1000个虚拟机,存储阵列中就需要有1000个LUN与之匹配。然而,根据SCSI标准,存储阵列最多只能挂载256或者512个LUN。显然,挂载到主机的LUN的数量受到了限制。为了
解决LUN的数量受限的问题,引入了代理LUN。为了方便描述,本发明实施例将存储数据的LUN称为二级LUN,挂载给主机的LUN称为一级LUN(也就是代理LUN)。一级LUN与多个二级LUN之间建立映射关系,一级LUN在主机上映射为主机LUN,主机LUN和多个虚拟机建立映射关系。二级LUN在实际应用中,也可以称为VVOL LUN。需要说明的是,一级LUN并不实际存储数据,数据存储在二级LUN中。
请参考图3,在图3所示的存储系统中,第二源LUN 401和第二目标LUN 501是一级LUN。第二源LUN 401映射给主机10的主机LUN为LUN 401’,第二目标LUN 501映射给主机10的主机LUN为LUN 501’。假设图3所示的主机10中安装有多路径软件,那么LUN 401’和LUN 501’被映射为同一个虚拟盘。第二源LUN 401和第二目标LUN 501的二级LUN是一对双活LUN。其中,第一源LUN 201是第二源LUN 401的二级LUN,第一目标LUN 301是第二目标LUN 501的二级LUN。第一源LUN 201和第一目标LUN301是一对双活LUN,双活LUN对主机10呈现的UUID相同。需要说明的是,虽然UUID是LUN的全球唯一的编号,但对于双活LUN而言,其目的就是在主机面前伪装成同一个LUN,因此双活LUN对主机呈现的UUID是相同的。为了实现双活LUN对主机呈现的UUID相同,在本实施例中,一对双活LUN中的其中一个LUN可以将另一个LUN的UUID当做自己的UUID,对主机呈现。而在该LUN所位于的存储阵列中保存该LUN原本的UUID与对主机呈现的UUID之间的对应关系。例如第一源LUN 201的UUID是A,第一目标LUN 301的UUID是A’。第一源LUN 201和第一目标LUN 301对主机10呈现的UUID都是A’,在第一存储阵列20中保存有A和A’之间的对应关系。
下面介绍二级LUN的挂载。二级LUN的挂载分为两个步骤,第一个步骤是将存储阵列中的一级LUN挂载给主机,一级LUN挂载给主机之后,主机和LUN之间的SCSI通道也就建立起来了。主机通过SCSI通道向所述LUN发送读数据命令、写数据命令以及其他命令。第二个步骤是将二级LUN挂载给一级LUN,本实施例重点描述第二个步骤。
主机和存储阵列之间具有管理通道。主机通过所述管理通道向存储阵列发送LUN创建命令以及LUN挂载命令,以指示存储阵列创建LUN并且将二级LUN挂载给一级LUN。具体的,主机通过所述管理通道向存储阵列发送二级LUN创建命令,以指示所述存储阵列创建一个二级LUN。另外,主机还需要通过管理通道向所述存储阵列发送二级LUN挂载命令,以实现将所述LUN挂载给一级LUN。将二级LUN挂载给一级LUN是指将所述二级LUN与所述一级LUN绑定。将二级LUN挂载给一级LUN之后,主机就可以通过SCSI通道访问所述二级LUN了。示例性的,存储阵列20创建第一源LUN 201,为所述第一源LUN 201分配设备LUN ID以及UUID。存储阵列20通过管理通道将第一源LUN 201的设备LUN ID报告给主机10。主机10通过所述管理通道向存储阵列20发送挂载命令,所述挂载命令包括主机ID以及所述第一源LUN 201的设备LUN ID。存储阵列20将所述第一源LUN 201挂载到一个已创建完成并挂载给主机10的一级LUN(例如图3所示的第二源LUN 401)上面,然后向主机10发送所述第一源LUN 201的地址。本实施例中,二级LUN的地址包括该二级LUN的标识以及其挂载的一级LUN的标识。例如,第一源LUN 201的地址包括第一源LUN 201的标识以及第二源LUN 401的标识,第一目标LUN 301的地址包括第一目标LUN 301的标识以及第二目标LUN 501的标识。第一目标LUN 301的挂载过程与第一源LUN 201类似,这里不再赘述。二级LUN挂载
完成之后,在主机10上映射为一级LUN中的子LUN。例如,第一源LUN 201完成挂载之后,映射为第二源LUN 401’中的第一源LUN 201’。第一目标LUN 301完成挂载之后,映射为第二目标LUN 501’中的第一源LUN 301’。
二级LUN的地址的封装可参见图4。如图4所示,所述二级LUN的地址主要包含两部分。其中,第一部分是一级LUN的标识,第二部分是二级LUN的标识。另外,根据SCSI标准,该地址中还封装有一些固定值,例如图3所示的第0个字节以及第2个字节均包括编址方法和总线标识。
当虚拟机101要将数据写入LUN时,用户从多个虚拟盘中选择一个虚拟盘用于接收数据。每个二级LUN对应一个虚拟盘。本实施例以虚拟盘102为例,所述虚拟盘102的盘符与第一源LUN 201的标识之间具有映射关系。因此,选择了虚拟盘102也就确定了将所述数据写入第一源LUN 201。主机10生成一个写数据命令,所述写数据命令包括所述数据以及第一源LUN 201的地址。主机10通过链路A将所述写数据命令发送给第一存储阵列20,第一存储阵列20接收所述写数据命令。根据对图4的描述,第一源LUN201的地址包含两部分,第一部分是第二源LUN 401’的标识,第二部分是第一源LUN 201的标识。由于第一存储阵列20保存有第二源LUN 401的标识和第二源LUN的主机LUN401’的标识之间的映射关系,因此第一存储阵列20可以根据第二源LUN 401’的标识确定待访问的一级LUN为第二源LUN 401。然后,第一存储阵列20再根据第一源LUN 201的标识确定待访问的二级LUN为第一源LUN 201。由此实现将所述数据写入第一源LUN201。
引入了双活机制之后,链路故障对虚拟机来说是不可见的,如果链路A发生故障,主机10利用多路径软件切换到链路B。主机10通过链路B将所述写数据命令发送给第二存储阵列30。理论上,第一目标LUN 301和第一源LUN 201是一对双活LUN,如果能将所述数据写入第一目标LUN 301,待链路A恢复之后再将所述数据从第一目标LUN301复制到第一源LUN 201,那么数据一致性就可以得到保证。然而,在实际应用中,第一目标LUN 301的标识与第一源LUN 201的标识可能是不一致的,那么第二存储阵列30在收到所述写数据命令之后并不认识所述第一源LUN 201的标识,那就有可能将所述数据写入第二存储阵列30中的其他二级LUN中,从而造成数据不一致的问题。
在本实施例中,将从第一存储阵列20上报的二级LUN的可分配地址集合和第二存储阵列30上报的二级LUN的可分配地址集合中选取一个共同的有效地址的装置称为地址分配装置。所述地址分配装置可以集成在主机10中,也可以作为一个独立的服务器,还可以集成在存储阵列中。
当所述地址分配装置集成在主机10中时,本发明实施例提供一种地址分配方法,可以在挂载双活LUN的过程中保证双活LUN的地址的一致性。请参考图5,图5是本发明实施例所提供的地址分配方法的信令交互图。所述方法应用在图3所示的双活存储系统中,如图5所示,该方法包括以下步骤:
S502:第一存储阵列20向主机10发送第一源LUN的可分配地址集合。所述可分配地址集合包括所述第一源LUN的多个可分配地址。第一源LUN是二级LUN,可参见图3所示的第一源LUN 201。
这里的向主机10发送第一源LUN的可分配地址集合,具体是指向主机10中的地址分配装置发送所述可分配地址集合。另外,主机10中安装有VASA组件,VASA组件用
于通知存储阵列将二级LUN挂载到主机,主机10通过所述VASA组件向第一存储阵列20或者第二存储阵列30发送指令要求挂载二级LUN。主机10中的地址分配装置可以向第一存储阵列20发送第一地址查询命令,该命令用于查询第一源LUN 201的可分配地址。具体的,主机10向第一存储阵列20发送所述第一地址查询命令。另外,本实施例也不限定第一存储阵列20只能在接收第一地址查询命令之后才将第一源LUN的可分配地址集合发送给主机,在没有接收所述第一地址查询命令的情况下,第一存储阵列20也可以主动向主机10中的地址分配装置上报所述第一源LUN的可分配地址集合。示例性的,第一存储阵列20接收所述第一地址查询命令之前,已经选择了一个创建成功并且挂载给主机10的一级LUN,例如图3所示的第二源LUN 401。在生成第一源LUN的地址后就可以发送给主机10。按照前面的描述,第一源LUN 201的地址包括其挂载的第二源LUN 301的标识以及第一源LUN 201的标识。其中,这里的标识是指主机LUN ID。按照存储系统预设的主机LUN ID的分配方式,第一源LUN 201可以具有多个可分配的主机LUN ID,因此,第一源LUN 201的可分配地址集合中可以包含多个可分配地址。可分配地址是指主机用于访问二级LUN的地址,它包括二级LUN自己的主机LUN ID,还包括所述二级LUN所挂载的一级LUN的主机LUN ID。举例来说,第一源LUN 201的可分配地址包括第一源LUN 201自己的主机LUN ID,还包括第二源LUN 401的主机LUN ID。在可分配地址集合所包含的多个可分配地址中,每个可分配地址中的第二源LUN 401的主机LUN ID是相同的。需要说明的是,所述本发明实施例中可分配地址集合可以是表格的形式,也可以是位图或者其他形式,只要能包括所述多个可分配地址即可。
S504:第二存储阵列30向主机10发送第一目标LUN的可分配地址集合。同样的,向主机10发送第一目标LUN的可分配地址集合是指向主机10中的地址分配装置发送所述第一目标LUN的可分配地址集合。所述可分配地址集合包括所述第一目标LUN的多个可分配地址。第一源LUN是二级LUN,可参见图3所示的第一目标LUN 301。与第一源LUN 201类似,第一目标LUN也包含多个可分配地址,每个可分配地址包含一个可分配的主机LUN ID。另外,每个可分配地址中还包含第二目标LUN 501的主机LUN ID,每个可分配地址中的第二目标LUN 501的主机LUN ID是确定的,并且第二目标LUN501的主机LUN ID与第二源LUN 401的主机LUN ID相同。
S505:主机10中的地址分配装置从第一源LUN 201的可分配地址集合以及第一目标LUN 301的可分配地址集合中获得有效地址,所述有效地址是第一源LUN 201的可分配地址集合与第一目标LUN 301的可分配地址集合之间的交集中的一个可分配地址。由于第一源LUN 201的多个可分配地址的不同主要是其所包含的第一源LUN 201的可分配的主机LUN ID的不同导致的,因此,步骤S505也可以理解为从第一源LUN 201的多个可分配的主机LUN ID和第一目标LUN 301的多个可分配的主机LUN ID中获得共同的主机LUN ID,然后再封装成所述有效地址。例如,第一源LUN 201的多个可分配的主机LUN ID为[1-100],而第一目标LUN 301的多个可分配的主机LUN ID为[50-100],那么他们之间共同的主机LUN ID为[50-100]。主机10可以从[50-100]获取任意一个ID,封装成所述有效地址。所述有效地址的格式遵从SCSI标准,可以参考图4所示的地址格式。
S506:主机10将所述有效地址发送给第一存储阵列20。具体的,地址分配装置可以将所述有效地址发送给所述第一存储阵列20。
S507:第一存储阵列20向主机10发送第一响应消息,用于确认所述有效地址是所述第一源LUN的地址。
可选的,第一存储阵列20还可以将所述有效地址与第一源LUN 201绑定。将所述有效地址与第一源LUN 201绑定是指第一存储阵列20保存所述有效地址与第一源LUN201的UUID之间的映射关系。所述有效地址就是第一源LUN 201的地址,所述有效地址第2-5字节中所包含的二级LUN的主机LUN ID就是第一源LUN 201和第一目标LUN301所共同拥有的主机LUN ID。绑定之后,第一存储阵列20可以在主机10发起硬件扫描时,将第一源LUN 201的地址发送给主机10。需要说明的是,这里的与所述有效地址绑定的第一源LUN 201的UUID既可以是第一源LUN 201本身的UUID(例如A),也可以是对主机10呈现的UUID(例如A’)。因为第一存储阵列20中保存有A和A’之间的对应关系,无论和哪个UUID绑定,第一存储阵列20都可以通过该有效地址找到第一源LUN 201本身的UUID,从而达到访问第一源LUN 201的目的。
S508:主机10将所述有效地址发送给第二存储阵列30。
S509:第二存储阵列30向主机10发送第二响应消息,用于确认所述有效地址是所述第一目标LUN的地址。
可选的,第二存储阵列30还可以将所述有效地址与第一目标LUN 301绑定。将所述有效地址与第一目标LUN 301绑定是指第一存储阵列30保存所述有效地址与第一目标LUN 301的UUID之间的映射关系。所述有效地址就是第一目标LUN 301的地址,所述有效地址第2-5字节中所包含的二级LUN的主机LUN ID就是第一源LUN 201和第一目标LUN 301所共同拥有的主机LUN ID。绑定之后,第二存储阵列30可以在主机10发起硬件扫描时,将第一源LUN 301的地址发送给主机10。
在步骤S504中曾提到第二目标LUN 501的主机LUN ID与第二源LUN 401的主机LUN ID相同,下面介绍如何保证二级LUN所挂载的一级LUN的主机LUN ID一致。
第一存储阵列20的一级LUN(例如第二源LUN 401)和第二存储阵列30中的一级LUN(例如第二目标LUN 501)挂载到主机10之后,主机10分别对第一存储阵列20和第二存储阵列30进行硬件设备扫描。第一存储阵列20将第二源LUN 401的地址发送给主机10中的地址分配装置,其中第二源LUN 401的地址包括第二源LUN 401的标识。第二存储阵列30将第二目标LUN 501的地址发送给主机10,其中第二目标LUN 501的地址包括第二目标LUN 501的标识。主机10中的地址分配装置判断第二源LUN 401的地址与第二目标LUN 501的地址是否一致。也就是判断第二源LUN 401的主机LUN ID与第二目标LUN 501的主机LUN ID是否一致。若不一致,则主机10中的地址分配装置向第一存储阵列20发送查询指令,所述查询指令用于查询所述第二源LUN 401的可分配地址。第一存储阵列20向主机10中的地址分配装置反馈所述第二源LUN 401的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。同样的,主机10中的地址分配装置向第二存储阵列30发送查询指令,所述查询指令用于查询所述第二目标LUN 501的可分配地址。第二存储阵列30向主机10中的地址分配装置反馈所述第二目标LUN 501的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。主机10中的地址分配装置接收两个存储阵列发送的可分配地址集合之后,从两个可分配地址集合中获取相同的地址作为有效地址。如果有多个有效地址,则主机10从多个有效地址任意选
择一个,并分别发送给第一存储阵列20和第二存储阵列30。第一存储阵列20接收所述有效地址后,向主机发送响应消息,以确认所述有效地址是所述第二源LUN 401的地址。另外,第一存储阵列20可以将所述有效地址与第二源LUN 401的UUID绑定,第二存储阵列30接收所述有效地址后,向主机发送响应消息,以确认所述有效地址是所述第二目标LUN 501的地址。另外,第二存储阵列30可以将所述有效地址与第二目标LUN 501的UUID绑定。待主机10再次对第一存储阵列20和第二存储阵列30进行硬件设备扫描时,第一存储阵列20和第二存储设备30分别将所述有效地址反馈给主机10。
另外,上面描述的地址分配装置还可以位于一个独立的仲裁服务器40中。当所述地址分配装置位于仲裁服务器40中时,本实施例还提供了另一种地址分配方法,请参考图6,图6是另一种地址分配方法的信令交互图。如图6所示,该方法包括以下步骤:
S601:主机10通过VASA组件通知第一存储阵列20挂载二级LUN。这里的二级LUN仍然以图3所示的第一源LUN 201以及第一目标LUN 301为例。第一源LUN 201和第一目标LUN 301是一对双活LUN。主机10也可以将挂载命令发送给第二存储阵列30。
S602:第一存储阵列20通知仲裁服务器40中的地址分配装置主机要求挂载二级LUN。
S603:仲裁服务器40中的地址分配装置向第一存储阵列20发送第一地址查询命令,要求查询第一源LUN 201的可分配地址。
S604:第一存储阵列20将第一源LUN 201的可分配地址集合发送给仲裁服务器40中的地址分配装置。第一存储阵列20接收所述一地址查询命令之前,已经选择了一个创建成功并且挂载给主机10的一级LUN,例如图3所示的第二源LUN 401。按照前面的描述,第一源LUN 201的地址包括其挂载的第二源LUN 301的主机LUN ID以及第一源LUN 201的主机LUN ID。其中,按照存储系统预设的主机LUN ID的分配方式,第一源LUN 201可以具有多个可分配的主机LUN ID,因此,第一源LUN 201的可分配地址集合中可以包含多个可分配地址,每个可分配地址中包含一个可分配的主机LUN ID。另外,每个可分配地址中还包含第二源LUN 401的主机LUN ID,每个可分配地址中的第二源LUN 401的主机LUN ID是确定的。需要说明的是,所述本发明实施例中可分配地址集合可以是表格的形式,可以是位图或者其他形式,只要能包括所述多个可分配地址即可。
S605:仲裁服务器40中的地址分配装置向第二存储阵列30发送第一地址查询命令,要求查询第一目标LUN 301的可分配地址。
S606:第二存储阵列30将第一目标LUN 301的可分配地址集合发送给仲裁服务器40中的地址分配装置。所述可分配地址集合包括所述第一目标LUN的多个可分配地址。与第一源LUN 201类似,第一目标LUN也包含多个可分配地址,每个可分配地址包含一个可分配的主机LUN ID。另外,每个可分配地址中还包含第二目标LUN 501的主机LUN ID,每个可分配地址中的第二目标LUN 501的主机LUN ID是确定的,并且第二目标LUN 501的主机LUN ID与第二源LUN 401的主机LUN ID相同。需要说明的是,第一存储阵列20以及第二存储阵列30也可以主动向仲裁服务器40上报一级LUN的可分配地址集合,而不是在收到仲裁服务器40的查询请求之后才上报。
S607:仲裁服务器40中的地址分配装置从第一源LUN 201的可分配地址集合以及第一目标LUN 301的可分配地址集合中获得至少一个有效地址,所述有效地址是第一源
LUN 201的多个可分配地址的子集,所述有效地址也是第一目标LUN 301的多个可分配地址的子集。也就是说,所述有效地址是第一源LUN 201的多个可分配地址与第一目标LUN 301的多个可分配地址之间的交集。由于第一源LUN 201的多个可分配地址的不同主要是其所包含的第一源LUN 201的可分配的主机LUN ID的不同导致的,因此,步骤S607也可以理解为从第一源LUN 201的多个可分配的主机LUN ID和第一目标LUN 301的多个可分配的主机LUN ID中获得共同的主机LUN ID,然后再封装成所述有效地址。例如,第一源LUN 201的多个可分配的主机LUN ID为[1-100],而第一目标LUN 301的多个可分配的主机LUN ID为[50-100],那么他们之间共同的主机LUN ID为[50-100]。主机10可以从[50-100]获取任意一个ID,封装成所述有效地址。所述有效地址的格式遵从SCSI标准,可以参考图4所示的地址格式。
S608:仲裁服务器40中的地址分配装置将所述有效地址发送给第一存储阵列20。
S609:第一存储阵列20还可以将所述有效地址与第一源LUN 201绑定,具体的,第一存储阵列20保存所述有效地址与第一源LUN 201的UUID之间的映射关系。由此,所述有效地址就是第一源LUN 201的地址,所述有效地址第2-5字节中所包含的二级LUN的主机LUN ID就是第一源LUN 201的主机LUN ID。
S610:仲裁服务器40中的地址分配装置将所述有效地址发送给第二存储阵列30。该步骤与步骤S608之间没有先后顺序之分。
S611:第二存储阵列30还可以将所述有效地址与第一目标LUN 301绑定,具体的,第一存储阵列30保存所述有效地址与第一目标LUN 301的UUID之间的映射关系。由此,所述有效地址就是第一目标LUN 301的地址,所述有效地址第2-5字节中所包含的二级LUN的主机LUN ID就是第一目标LUN 301的主机LUN ID。
S612:第一存储阵列20向主机10反馈挂载成功,将第一源LUN 201的地址发送给主机10。具体的,第一存储阵列20可以向主机10发送消息,所述消息中包括所述有效地址,以确认所述有效地址是所述第一源LUN201的地址。第一存储阵列20向主机10反馈挂载成功,并将第一源LUN 201的地址发送给主机10之后,主机10才能确认第一源LUN 201的身份,后续用所述地址访问第一源LUN 201。需要说明的是,步骤S609是一个可选步骤,第一存储阵列20只要向主机10反馈挂载成功,并将第一源LUN 201的地址发送给主机10,所述有效地址就可以生效了。第一存储阵列20保存所述有效地址和第一源LUN 201的UUID之间的映射关系,是为了后续主机10用所述有效地址访问第一源LUN 201时,第一存储阵列20可以根据该映射关系找到第一源LUN 201。
S613:第二存储阵列30向主机10反馈挂载成功,将第一目标LUN 301的地址发送给主机10。具体的,第二存储阵列30可以向主机10发送消息,所述消息中包括所述有效地址,以确认所述有效地址是所述第一目标LUN301的地址。第二存储阵列30向主机10反馈挂载成功,并将第一目标LUN 301的地址发送给主机10之后,主机10才能确认第一目标LUN 301的身份,后续用所述地址访问第一目标LUN 301。需要说明的是,步骤S611是一个可选步骤,第二存储阵列30只要向主机10反馈挂载成功,并将第一目标LUN 301的地址发送给主机10,所述有效地址就可以生效了。第二存储阵列30保存所述有效地址和第一目标LUN 301的UUID之间的映射关系,是为了后续主机10用所述有效地址访问第一目标LUN 301时,第二存储阵列30可以根据该映射关系找到第一目标LUN 301。
相应的,在图6所示的实施方式中,保证第二源LUN 401的地址和第二目标LUN 501的地址相同的操作也是由仲裁服务器40来完成的。具体的,第一存储阵列20的一级LUN(例如第二源LUN 401)和第二存储阵列30中的一级LUN(例如第二目标LUN 501)挂载到主机10之后,主机10分别对第一存储阵列20和第二存储阵列30进行硬件设备扫描。第一存储阵列20将主机发送硬件设备扫描的事件报告给仲裁服务器40,仲裁服务器40中的地址分配装置分别向第一存储阵列20和第二存储阵列30发送地址查询指令,以查询第二源LUN 401的地址以及第二目标LUN 501的地址。如果第二源LUN 401的地址与第二目标LUN 501的地址不一致,仲裁服务器40中的地址分配装置进一步向第一存储阵列20发送查询指令,所述查询指令用于查询所述第二源LUN 401的可分配地址。第一存储阵列20向仲裁服务器40中的地址分配装置反馈所述第二源LUN 401的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。同样的,仲裁服务器40中的地址分配装置向第二存储阵列30发送查询指令,所述查询指令用于查询所述第二目标LUN 501的可分配地址。第二存储阵列30向仲裁服务器40中的地址分配装置反馈所述第二目标LUN 501的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。仲裁服务器40中的地址分配装置接收两个存储阵列发送的可分配地址集合之后,从两个可分配地址集合中获取相同的地址作为有效地址。如果有多个有效地址,则仲裁服务器40从多个有效地址任意选择一个,并分别发送给第一存储阵列20和第二存储阵列30。第一存储阵列20接收所述有效地址后,将所述有效地址发送给主机10,以确认所述有效地址是所述第二源LUN 401的地址。另外,第一存储阵列20可以将所述有效地址与第二源LUN 401的UUID绑定。第二存储阵列30接收所述有效地址后,将所述有效地址发送给主机10,以确认所述有效地址是所述第二目标LUN 501的地址。另外,第二存储阵列30可以将所述有效地址与第二目标LUN 501的UUID绑定。
另外,上面描述的地址分配装置还可以集成在第一存储阵列20和第二存储阵列30中的任意一个存储阵列中。假设地址分配装置位于第二存储阵列30中时,本实施例还提供了另一种地址分配方法,请参考图7,图7是另一种地址分配方法的信令交互图。如图7所示,该方法包括以下步骤:
S701:主机10通过VASA组件通知第一存储阵列20挂载二级LUN。这里的二级LUN仍然以图3所示的第一源LUN 201以及第一目标LUN 301为例。第一源LUN 201和第一目标LUN 301是一对双活LUN。
S702:第一存储阵列20将挂载二级LUN的事件通知给第二存储阵列30。
可以理解的是,主机10也可以通知第二存储阵列30挂载二级LUN,或者同时通知第一存储阵列20和第二存储阵列30挂载二级LUN,不包含地址分配装置的存储阵列接收该通知后,需要将挂载二级LUN的事件通知给包含地址分配装置的存储阵列。
S703:第二存储阵列3中的地址分配装置向第一存储阵列20发送第一地址查询命令,要求查询第一源LUN 201的可分配地址。
S704:第一存储阵列20将第一源LUN 201的可分配地址集合发送给第二存储阵列30中的地址分配装置。该步骤的具体内容请参见图5所示的步骤S502以及图6所示的步骤S604,这里不再赘述。
S705:第二存储阵列30获得有效地址。具体的,第二存储阵列30中的地址分配装
置根据第一源LUN 201的可分配地址集合以及本地的第一目标LUN 301的可分配地址集合获得有效地址。这里的有效地址与图5所示的步骤S505以及图6所示的步骤S607。
S706:第二存储阵列30中的地址分配装置将所述有效地址发送给第一存储阵列20。
S707:第二存储阵列30向第一存储阵列20反馈挂载成功,将第一目标LUN 301的地址发送给第一存储阵列20。
S708:第一存储阵列20向主机10反馈挂载成功,将第一源LUN 201的地址以及第一目标LUN 301的地址发送给主机10。
另外,当所述有效地址生效之后,第一存储阵列20还可以将所述有效地址与第一源LUN 201绑定。具体的,第一存储阵列20保存所述有效地址与第一源LUN 201的UUID之间的映射关系。所述有效地址就是第一源LUN 201的地址,所述有效地址第2-5字节中所包含的二级LUN的主机LUN ID就是第一源LUN 201的主机LUN ID。同样的,第二存储阵列30也可以将所述有效地址与第一目标LUN 301绑定。
由于地址分配装置位于第二存储阵列30中,因此保证第二源LUN 401的地址和第二目标LUN 501的地址相同的操作也是由第二存储阵列30来完成的。具体的,第一存储阵列20的一级LUN(例如第二源LUN 401)和第二存储阵列30中的一级LUN(例如第二目标LUN 501)挂载到主机10之后,主机10分别对第一存储阵列20和第二存储阵列30进行硬件设备扫描。第二存储阵列30中的地址分配装置向第一存储阵列20发送地址查询指令,以查询第二源LUN 401的地址。如果第二源LUN 401的地址与第二目标LUN 501的地址不一致,第二存储阵列30中的地址分配装置进一步向第一存储阵列20发送查询指令,所述查询指令用于查询所述第二源LUN 401的可分配地址。第一存储阵列20向第二存储阵列30中的地址分配装置反馈所述第二源LUN 401的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。第二存储阵列30本地存储有所述第二目标LUN 501的可分配地址集合,所述可分配地址集合包括多个可分配地址,每个可分配地址包括一个可分配的主机LUN ID。第二存储阵列30中的地址分配装置从两个可分配地址集合中获取相同的地址作为有效地址。如果有多个有效地址,则第二存储阵列30从多个有效地址任意选择一个,并发送给第一存储阵列20。第一存储阵列20接收所述有效地址后,将所述有效地址发送给主机10,以确认所述有效地址是所述第二源LUN 401的地址。另外,第一存储阵列20可以将所述有效地址与第二源LUN 401的UUID绑定。第二存储阵列30将所述有效地址发送给主机10,以确认所述有效地址是所述第二目标LUN 501的地址。另外,第二存储阵列30可以将所述有效地址与第二目标LUN 501的UUID绑定。
按照上述图5或者图6或者图7所示的实施方式,第一存储阵列20和第二存储阵列30分别将二级LUN的可分配地址集合发送给地址分配装置。地址分配装置可集成在主机10、仲裁服务器40,或者第二存储阵列30中。地址分配装置从两个二级LUN的可分配地址集合中获取它们之间共同拥有的有效地址,然后将有效地址分别发送给第一存储阵列20和第二存储阵列30。实现了第一源LUN 201和第一目标LUN 301的地址统一。当链路A发生故障时,主机10利用多路径软件切换到链路B。主机10通过链路B将原本要发送给第一存储阵列20的写数据命令发送给第二存储阵列30。由于第一目标LUN301的地址与第一源LUN的地址相同,第二存储阵列30能够根据该地址找到第一目标LUN 301,将写数据命令中携带的数据写入第一目标LUN 301。由于第一目标LUN 301
和第一源LUN 201是一对双活LUN,待故障消除时,第二存储阵列30可以将所述数据复制到第一源LUN,保证了双活LUN的数据一致性。
另外,在上述图5、图6以及图7任一所示的实施方式中,二级LUN的地址的统一是在二级LUN挂载给一级LUN的过程中实现的。然而,本发明实施例并不限定于上述实现方式。例如,二级LUN的地址的统一可以在二级LUN已经成功挂载给一级LUN之后实现。具体的,第一存储阵列20将第一源LUN 201的地址上报给地址分配装置,第二存储阵列30将第一目标LUN 301的地址上报给地址分配装置。地址分配装置判断第一源LUN 201的地址与第一目标LUN 301的地址是否一致,当地址不一致时,地址分配装置分别向第一存储阵列20和第二存储阵列30发送地址查询命令,第一存储阵列20将第一源LUN的可分配地址集合发送给地址分配装置,第二存储阵列30将第一目标LUN的可分配地址集合发送给地址分配装置。地址分配装置从第一源LUN 201的可分配地址集合以及第一目标LUN 301的可分配地址集合中获得有效地址,并将所述有效地址分别发送给第一存储阵列20和第二存储阵列30。当地址分配装置位于主机10时,由主机10执行。如果地址分配装置位于仲裁服务器40,那么该过程由仲裁服务器40执行。如果地址分配装置组件位于任意一个存储阵列,那么该过程由该存储阵列执行。
如图8所示,本发明实施例提供的地址分配装置80至少包括接口801和处理器802。所述接口801,用于第一存储阵列20通信,以及与第二存储阵列30通信,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN的和所述第一目标LUN是一对双活LUN。所述处理器802可以是一个中央处理器(英文:central processing unit,CPU),也可以是一个现场可编程门阵列(Field-Programmable Gate Array,FPGA)。另外,地址分配装置80还可以包括存储器,存储器包括易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(英文:random-access memory,RAM)。非易失性存储器例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。当处理器802是CPU时,可以运行所述存储器中的程序代码,执行以下功能。当处理器802是FPGA时,可以单独执行以下功能。需要说明的是,地址分配装置80可以是图5、图6、图7所示的任意一种实施方式中的地址分配装置。
例如,通过所述接口801接收所述第一存储阵列20发送的所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;通过所述接口801接收所述第二存储阵列30发送的所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址;从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址;将所述有效地址发送给所述第一存储阵列20,以及将所述有效地址发送给所述第二存储阵列30。
可选的,处理器802还用于向所述第一存储阵列20发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,使得所述第一存储阵列20响应于所述第一地址查询命令向所述处理器发送所述第一源LUN的可分配地址集合。处理器802,还用于向所述第二存储阵列30发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,使得所述第二存储阵列30响应于所述第二
地址查询命令向所述处理器发送所述第一目标LUN的可分配地址集合。
可选的,所述第一存储阵列20还包括所述第二源LUN,所述第二存储阵列30还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一源LUN挂载于所述第二源LUN,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第一目标LUN挂载于所述第二目标LUN,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
可选的,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
可选的,处理器802还用于通过所述接口接收所述第一存储阵列发送的所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;通过所述接口接收所述第二存储阵列发送的所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID;从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID;将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
当地址分配装置80可以集成在主机10中,或者作为一个独立的服务器(例如图6所示的仲裁服务器40),或者集成在第二存储阵列30中,因此所述处理器802的功能也可参见图5、图6以及图7所示的实施例,这里不再赘述。
本发明实施例还提供一种地址分配装置90,所述地址分配装置90位于双活存储系统中。所述双活存储系统包括第一存储阵列20、第二存储阵列30和所述地址分配装置90。第一存储阵列20包括第一源LUN,第二存储阵列包括第一目标LUN。所述第一源LUN和所述第一目标LUN是一对双活LUN。具体的,所述地址分配装置90包括接收模块901、地址获取模块902和发送模块903。需要说明的是,地址分配装置90可以是图5、图6、图7所示的任意一种实施方式中的地址分配装置。
接收模块901,用于接收所述第一存储阵列20发送的所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;还用于接收所述第二存储阵列30发送的所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址。地址获取模块902,用于从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址。发送模块903,用于将所述有效地址发送给所述第一存储阵列20以及将所述有效地址发送给所述第二存储阵列30。
可选的,所述发送模块903还用于向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,使得所述第一存储阵列响应于所述第一地址查询命令向所述接收模块901发送所述第一源LUN的可分配地址集
合;所述发送模块903还用于向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,使得所述第二存储阵列响应于所述第二地址查询命令向所述接收模块901发送所述第一目标LUN的可分配地址集合。
可选的,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一源LUN挂载于所述第二源LUN,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第一目标LUN挂载于所述第二目标LUN,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
可选的,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
可选的,接收模块901还用于接收所述第一存储阵列发送的所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;接收所述第二存储阵列发送的所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID。所述地址获取模块902,还用于从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID。发送模块903,还用于将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
在硬件实现上,接收模块901可以是通过处理器802运行存储器中的程序代码实现,也可以由处理器802单独实现。地址获取模块902可以是通过处理器802运行存储器中的程序代码实现,也可以由处理器802单独实现。发送模块903可以是通过处理器802运行存储器中的程序代码实现,也可以由处理器802单独实现。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、
或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (22)
- 一种双活存储系统,其特征在于,包括第一存储阵列、第二存储阵列和地址分配装置,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN和所述第一目标LUN是一对双活LUN,其中,所述第一存储阵列,用于向所述地址分配装置发送所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;所述第二存储阵列,用于向所述地址分配装置发送所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址;所述地址分配装置,用于从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址;所述地址分配装置,还用于将所述有效地址发送给所述第一存储阵列,以及将所述有效地址发送给所述第二存储阵列。
- 根据权利要求1所述的双活存储系统,所述地址分配装置,还用于向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,所述第一存储阵列,具体用于响应于所述第一地址查询命令,向所述地址分配装置发送所述第一源LUN的可分配地址集合;所述地址分配装置,还用于向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,所述第二存储阵列,具体用于响应于所述第二地址查询命令,向所述地址分配装置发送所述第一目标LUN的可分配地址集合。
- 根据权利要求1或2所述的双活存储系统,其特征在于,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一存储阵列,还用于将所述第一源LUN挂载于所述第二源LUN,生成所述第一源LUN的所述多个可分配地址,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第二存储阵列,还用于将所述第一目标LUN挂载于所述第二目标LUN,生成所述第一目标LUN的所述多个可分配地址,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
- 根据权利要求3所述的双活存储系统,其特征在于,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
- 根据权利要求4所述的双活存储系统,其特征在于,所述第一存储阵列,还用于向所述地址分配装置发送所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每 个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;所述第二存储阵列,用于向所述地址分配装置发送所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID;所述地址分配装置,还用于从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID;所述地址分配装置,还用于将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
- 根据权利要求2-5任一所述的双活存储系统,其特征在于,所述双活存储系统还包括主机,所述地址分配装置位于所述主机中。
- 根据权利要求2-5任一所述的双活存储系统,其特征在于,所述双活存储系统还包括主机和仲裁服务器,所述地址分配装置位于仲裁服务器中,所述仲裁服务器不同于所述主机。
- 一种地址分配装置,其特征在于,所述地址分配装置包括接口和处理器;所述接口,用于与第一存储阵列通信,以及与第二存储阵列通信,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN的和所述第一目标LUN是一对双活LUN;所述处理器,用于通过所述接口接收所述第一存储阵列发送的所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;通过所述接口接收所述第二存储阵列发送的所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址;从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址;将所述有效地址发送给所述第一存储阵列,以及将所述有效地址发送给所述第二存储阵列。
- 根据权利要求8所述的地址分配装置,其特征在于,所述处理器,还用于向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,使得所述第一存储阵列响应于所述第一地址查询命令向所述处理器发送所述第一源LUN的可分配地址集合;所述处理器,还用于向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,使得所述第二存储阵列响应于所述第二地址查询命令向所述处理器发送所述第一目标LUN的可分配地址集合。
- 根据权利要求8或9所述的地址分配装置,其特征在于,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一源LUN挂载于所述第二源LUN,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第一目标LUN挂载于所述第二目标LUN,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
- 根据权利要求10所述的地址分配装置,其特征在于,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
- 根据权利要求11所述的地址分配装置,其特征在于,所述处理器,还用于通过所述接口接收所述第一存储阵列发送的所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;通过所述接口接收所述第二存储阵列发送的所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID;从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID;将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
- 一种地址分配方法,其特征在于,所述方法应用于双活存储系统中,所述双活存储系统包括第一存储阵列、第二存储阵列和地址分配装置,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN和所述第一目标LUN是一对双活LUN,所述方法由所述地址分配装置执行,包括以下步骤:接收所述第一存储阵列发送的所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;接收所述第二存储阵列发送的所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址;从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址;将所述有效地址发送给所述第一存储阵列;将所述有效地址发送给所述第二存储阵列。
- 根据权利要求13所述的方法,其特征在于,还包括:向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述 第一源LUN的可分配地址,使得所述第一存储阵列响应于所述第一地址查询命令向所述处理器发送所述第一源LUN的可分配地址集合;向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,使得所述第二存储阵列响应于所述第二地址查询命令向所述处理器发送所述第一目标LUN的可分配地址集合。
- 根据权利要求13或14所述的方法,其特征在于,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一源LUN挂载于所述第二源LUN,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第一目标LUN挂载于所述第二目标LUN,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
- 根据权利要求15所述的方法,其特征在于,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
- 根据权利要求16所述的方法,其特征在于,还包括:接收所述第一存储阵列发送的所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;接收所述第二存储阵列发送的所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID;从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID;将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
- 一种地址分配装置,其特征在于,所述装置位于双活存储系统中,所述双活存储系统包括第一存储阵列、第二存储阵列和地址分配装置,所述第一存储阵列包括第一源逻辑单元号LUN,所述第二存储阵列包括第一目标LUN,所述第一源LUN和所述第一目标LUN是一对双活LUN,所述装置包括:接收模块,用于接收所述第一存储阵列发送的所述第一源LUN的可分配地址集合,所述第一源LUN的可分配地址集合包括所述第一源LUN的多个可分配地址;还用于接收所述第二存储阵列发送的所述第一目标LUN的可分配地址集合,所述第一目标LUN的可分配地址集合包括所述第一目标LUN的多个可分配地址;地址获取模块,用于从所述第一源LUN的可分配地址集合和所述第一目标LUN的可分配地址集合中获取有效地址,所述有效地址是所述第一源LUN的多个可分配地址与 所述第一目标LUN的多个可分配地址之间的交集中的一个可分配地址;发送模块,用于将所述有效地址发送给所述第一存储阵列以及将所述有效地址发送给所述第二存储阵列。
- 根据权利要求18所述的装置,其特征在于,所述发送模块还用于向所述第一存储阵列发送第一地址查询命令,所述第一地址查询命令用于查询所述第一源LUN的可分配地址,使得所述第一存储阵列响应于所述第一地址查询命令向所述接收模块发送所述第一源LUN的可分配地址集合;所述发送模块还用于向所述第二存储阵列发送第二地址查询命令,所述第二地址查询命令用于查询所述第一目标LUN的可分配地址,使得所述第二存储阵列响应于所述第二地址查询命令向所述接收模块发送所述第一目标LUN的可分配地址集合。
- 根据权利要求18或19所述的装置,其特征在于,所述第一存储阵列还包括所述第二源LUN,所述第二存储阵列还包括第二目标LUN,所述第二源LUN和所述第二目标LUN是一对双活LUN;所述第一源LUN挂载于所述第二源LUN,所述第一源LUN的每个可分配地址包括所述第二源LUN的主机LUN ID以及所述第一源LUN的主机LUN ID;所述第一目标LUN挂载于所述第二目标LUN,所述第一目标LUN的每个可分配地址包括所述第二目标LUN的主机LUN ID以及所述第一目标LUN的主机LUN ID。
- 根据权利要求20所述的装置,其特征在于,所述第二源LUN的主机LUN ID和所述第二目标LUN的主机LUN ID相同。
- 根据权利要求21所述的装置,其特征在于,所述接收模块,还用于接收所述第一存储阵列发送的所述第二源LUN的可分配地址集合,所述第二源LUN的可分配地址集合包括所述第二源LUN的多个可分配地址,每个可分配地址包括所述第二源LUN的一个可分配的主机LUN ID;接收所述第二存储阵列发送的所述第二目标LUN的可分配地址集合,所述第二目标LUN的可分配地址集合包括所述第二目标LUN的多个可分配地址,每个可分配地址包括所述第二目标LUN的一个可分配的主机LUN ID;所述地址获取模块,还用于从所述第二源LUN的可分配地址集合和所述第二目标LUN的可分配地址集合中获取一级LUN的有效地址,所述一级LUN的有效地址是所述第二源LUN的多个可分配地址与所述第二目标LUN的多个可分配地址之间的交集的一个可分配地址,所述有效地址包括所述第二源LUN的主机LUN ID;所述发送模块,还用于将所述一级LUN的有效地址发送给所述第一存储阵列,以及将所述一级LUN的有效地址发送给所述第二存储阵列。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201780002816.XA CN109964208B (zh) | 2017-10-25 | 2017-10-31 | 一种双活存储系统和地址分配方法 |
JP2019503691A JP6747753B2 (ja) | 2017-10-25 | 2017-10-31 | アクティブ/アクティブ記憶システムおよびアドレス割当方法 |
EP17929926.8A EP3528128B1 (en) | 2017-10-25 | 2017-10-31 | Dual active storage system and address allocation method |
US16/854,150 US11507505B2 (en) | 2017-10-25 | 2020-04-21 | Active-active storage system and address assignment method |
US17/977,144 US11704243B2 (en) | 2017-10-25 | 2022-10-31 | Active-active storage system and address assignment method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017107701 | 2017-10-25 | ||
CNPCT/CN2017/107701 | 2017-10-25 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/854,150 Continuation US11507505B2 (en) | 2017-10-25 | 2020-04-21 | Active-active storage system and address assignment method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019080150A1 true WO2019080150A1 (zh) | 2019-05-02 |
Family
ID=66247686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2017/108641 WO2019080150A1 (zh) | 2017-10-25 | 2017-10-31 | 一种双活存储系统和地址分配方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11507505B2 (zh) |
EP (1) | EP3528128B1 (zh) |
JP (1) | JP6747753B2 (zh) |
CN (1) | CN109964208B (zh) |
WO (1) | WO2019080150A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008108871A2 (en) | 2006-07-31 | 2008-09-12 | Lumidigm, Inc. | Spatial-spectral fingerprint spoof detection |
WO2008028045A2 (en) | 2006-08-30 | 2008-03-06 | Lumidigm, Inc. | System and method for robust fingerprint acquisition |
US11017842B2 (en) | 2019-08-29 | 2021-05-25 | Micron Technology, Inc. | Copy data in a memory system with artificial intelligence mode |
CN116466876A (zh) * | 2020-09-11 | 2023-07-21 | 华为技术有限公司 | 一种存储系统及数据处理方法 |
CN113703676B (zh) * | 2021-07-30 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种双活卷的调用方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器系统中的共享存储区域的动态地址协商 |
CN106250048A (zh) * | 2015-06-05 | 2016-12-21 | 华为技术有限公司 | 管理存储阵列的方法及装置 |
CN106557280A (zh) * | 2016-10-31 | 2017-04-05 | 北京华为数字技术有限公司 | 数据存储方法、存储阵列及主机服务器 |
CN106775481A (zh) * | 2016-12-23 | 2017-05-31 | 华为技术有限公司 | 数据读取方法及设备 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996672B2 (en) * | 2002-03-26 | 2006-02-07 | Hewlett-Packard Development, L.P. | System and method for active-active data replication |
DE10256509B4 (de) * | 2002-06-19 | 2008-06-12 | Hyperstone Gmbh | Verfahren zum Adressieren von blockweise löschbaren Speichern |
JP2005196490A (ja) * | 2004-01-07 | 2005-07-21 | Hitachi Ltd | データ多重化のためのシステム及び方法 |
US9032164B2 (en) * | 2006-02-17 | 2015-05-12 | Emulex Corporation | Apparatus for performing storage virtualization |
JP2008269469A (ja) * | 2007-04-24 | 2008-11-06 | Hitachi Ltd | ストレージシステム及びその管理方法 |
JP2009093316A (ja) * | 2007-10-05 | 2009-04-30 | Hitachi Ltd | ストレージシステム及び仮想化方法 |
CN102405460B (zh) * | 2009-02-11 | 2016-05-04 | 艾梵尼达有限公司 | 虚拟存储系统及其运行方法 |
CN101702115B (zh) * | 2009-11-27 | 2012-04-11 | 浪潮电子信息产业股份有限公司 | 一种基于集群存储系统实现块协议接口的方法 |
US9081594B1 (en) * | 2011-09-30 | 2015-07-14 | Emc Corporation | Managing data storage systems in virtual systems based on storage awareness |
US9218252B1 (en) * | 2012-03-27 | 2015-12-22 | Emc Corporation | Techniques for performing data validation |
US8898519B1 (en) * | 2012-03-30 | 2014-11-25 | Emc Corporation | Method and apparatus for an asynchronous splitter |
US9460028B1 (en) * | 2012-12-27 | 2016-10-04 | Emc Corporation | Non-disruptive and minimally disruptive data migration in active-active clusters |
US9400611B1 (en) * | 2013-03-13 | 2016-07-26 | Emc Corporation | Data migration in cluster environment using host copy and changed block tracking |
GB2526031B (en) * | 2013-05-08 | 2020-07-29 | Hitachi Ltd | Storage system and data management method |
CN104423889B (zh) | 2013-08-26 | 2017-06-16 | 国际商业机器公司 | 一种多路径管理方法和系统 |
US9612918B2 (en) * | 2014-10-17 | 2017-04-04 | Netapp, Inc. | Methods and systems for restoring storage objects |
CN106909307B (zh) * | 2015-12-22 | 2020-01-03 | 华为技术有限公司 | 一种管理双活存储阵列的方法及装置 |
CN107526535B (zh) * | 2016-06-22 | 2020-07-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和系统 |
-
2017
- 2017-10-31 CN CN201780002816.XA patent/CN109964208B/zh active Active
- 2017-10-31 JP JP2019503691A patent/JP6747753B2/ja active Active
- 2017-10-31 EP EP17929926.8A patent/EP3528128B1/en active Active
- 2017-10-31 WO PCT/CN2017/108641 patent/WO2019080150A1/zh unknown
-
2020
- 2020-04-21 US US16/854,150 patent/US11507505B2/en active Active
-
2022
- 2022-10-31 US US17/977,144 patent/US11704243B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器系统中的共享存储区域的动态地址协商 |
CN106250048A (zh) * | 2015-06-05 | 2016-12-21 | 华为技术有限公司 | 管理存储阵列的方法及装置 |
CN106557280A (zh) * | 2016-10-31 | 2017-04-05 | 北京华为数字技术有限公司 | 数据存储方法、存储阵列及主机服务器 |
CN106775481A (zh) * | 2016-12-23 | 2017-05-31 | 华为技术有限公司 | 数据读取方法及设备 |
Non-Patent Citations (1)
Title |
---|
See also references of EP3528128A4 * |
Also Published As
Publication number | Publication date |
---|---|
CN109964208A (zh) | 2019-07-02 |
JP6747753B2 (ja) | 2020-08-26 |
CN109964208B (zh) | 2021-07-09 |
EP3528128A1 (en) | 2019-08-21 |
EP3528128A4 (en) | 2019-12-25 |
US11704243B2 (en) | 2023-07-18 |
US11507505B2 (en) | 2022-11-22 |
US20200250085A1 (en) | 2020-08-06 |
JP2019537762A (ja) | 2019-12-26 |
EP3528128B1 (en) | 2021-12-08 |
US20230050016A1 (en) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
EP3188449B1 (en) | Method and system for sharing storage resource | |
WO2019080150A1 (zh) | 一种双活存储系统和地址分配方法 | |
US10635551B2 (en) | System, and control method and program for input/output requests for storage systems | |
JP4219602B2 (ja) | 記憶制御装置および記憶制御装置の制御方法 | |
KR20200017363A (ko) | 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭 | |
US8972656B1 (en) | Managing accesses to active-active mapped logical volumes | |
US8972657B1 (en) | Managing active—active mapped logical volumes | |
WO2017088342A1 (zh) | 业务割接方法、存储控制装置及存储设备 | |
US10025510B1 (en) | Technique for copying unallocated logical regions of thin logical units | |
JP7012010B2 (ja) | 情報処理システム、及び、情報処理システムの制御方法 | |
US20210311654A1 (en) | Distributed Storage System and Computer Program Product | |
US8909816B2 (en) | Implementing a logical unit reset command in a distributed storage system | |
US11579926B2 (en) | Processing rest API requests based on resource usage satisfying predetermined limits | |
US20170075631A1 (en) | Storage system, storage control device, and access control method | |
US10437471B2 (en) | Method and system for allocating and managing storage in a raid storage system | |
US11740838B2 (en) | Array-based copy utilizing one or more unique data blocks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2019503691 Country of ref document: JP Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 2017929926 Country of ref document: EP Effective date: 20190515 |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17929926 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |