CN104536702B - 一种存储阵列系统及数据写请求处理方法 - Google Patents

一种存储阵列系统及数据写请求处理方法 Download PDF

Info

Publication number
CN104536702B
CN104536702B CN201410856048.2A CN201410856048A CN104536702B CN 104536702 B CN104536702 B CN 104536702B CN 201410856048 A CN201410856048 A CN 201410856048A CN 104536702 B CN104536702 B CN 104536702B
Authority
CN
China
Prior art keywords
controller
switching equipment
data
address
storage
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.)
Active
Application number
CN201410856048.2A
Other languages
English (en)
Other versions
CN104536702A (zh
Inventor
张巍
张陈怡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410856048.2A priority Critical patent/CN104536702B/zh
Priority to CN201710982805.4A priority patent/CN107844270A/zh
Publication of CN104536702A publication Critical patent/CN104536702A/zh
Application granted granted Critical
Publication of CN104536702B publication Critical patent/CN104536702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种存储阵列系统及数据写请求处理方法,第一输入输出管理器接收数据写请求,将数据写请求发送至第一控制器;第一控制器确定待写入数据的归属控制器为第二控制器,将数据写请求通过第一交换设备和第二交换设备发送给第二控制器;第二控制器在第二缓存设备上为待写入数据分配缓存地址,将缓存地址通过第二交换设备和第一交换设备发送给第一控制器;第一控制器将缓存地址发送给第一输入输出管理器;第一输入输出管理器通过第一交换设备和第二交换设备将待写入数据写入到所述缓存地址中。这样,写入的数据可以直接从输入输出管理写入到缓存设备中,不会占用控制器的内容和CPU的计算资源,提高了存储阵列系统的性能。

Description

一种存储阵列系统及数据写请求处理方法
技术领域
本发明涉及信息技术领域,尤其涉及一种存储阵列系统及数据写请求处理方法。
背景技术
目前的存储阵列系统中,包含有多个存储阵列,存储阵列之间通过无限带宽(Infiniband,IB)通道等物理接口通讯。每个存储阵列中包括两个控制器,通常称为双控制器结构。如图1所示,存储阵列1中包括输入输出管理器(Input/Output Manager,IOM)A和输入输出管理器B,控制器A和控制器B。输入输出管理器A与控制器A连接,输入输出管理器B与控制器B连接。控制器A包括外围组件快速互联(Peripheral Component Interconnectexpress,PCIe)交换A、中央处理单元(Central Processing Unit,CPU)A和内存A;控制器B包括外围组件快速互联(Peripheral Component Interconnect express,PCIe)交换B、中央处理单元(Central Processing Unit,CPU)B和内存B。PCIE交换A与PCIe交换B连接。存储阵列2的结构与存储阵列1的结构相同。图1所示的存储阵列系统以两个存储阵列为例,当有多个存储阵列时,各个存储阵列的结构均与存储阵列1的结构相同,且存储阵列之间的两两连接与图1中所示的两个存储阵列的连接方式相同,在此不再赘述。
存储阵列之间通过IB通道连接,相互不能共享彼此的内部架构,将其他存储阵列当做一个对象来操作。
在图1所示的存储阵列系统中,存储阵列1中的输入输出管理器B1接收主机发送的数据写入请求,数据写入请求的目标逻辑单元(Logical Unit,LU)归属于存储阵列2中控制器A2时,即由存储阵列2中的控制器A2将该数据写入请求携带的数据写入目标LU,所述目标LU为与控制器A2连接的存储设备的逻辑存储空间。输入输出管理器B1将数据写入请求通过控制器B1的交换B1发送到CPU B1通知申请缓存空间,CPU B1准备好缓存空间后将缓存地址返回给主机,主机通过直接内存访问方式(Direct Memory Access,DMA)将数据传输到控制器B1的CPUB1,CPUB1将数据存储到内存B1的缓存中。CPU B1接收到数据写入请求之后确定所述数据写入请求的目标LU的归属控制器为存储阵列2中控制器A2,将所述数据写入请求通过交换B1转发至目标LU的归属控制器A2,在接收到归属控制器B2发送的缓存地址之后,将缓存的数据通过DMA传输给归属控制器B2。归属控制器B2将数据写入请求中携带的数据及元数据写入内存B2。根据存储阵列的设置,CPU B1将内存B1中的数据及元数据写入目标LU。
上述存储阵列数据写入过程中,在数据到达目标存储设备之前,需要在经过的存储阵列的控制器的内存上暂存数据,导致不必要的资源浪费,通过存储阵列中的交换转发的次数越多,浪费的资源也越多,将严重影响系统的性能。
发明内容
本发明实施例提供了一种存储阵列系统和数据写请求处理方法。
本发明第一方面提供一种存储阵列系统,所述存储阵列系统至少包括第一存储阵列和第二存储阵列,所述第一存储阵列包括第一输入输出管理器,第一交换设备、第一控制器和第一缓存设备,其中,所述第一输入输出管理器与所述第一交换设备连接;所述第一控制器与所述第一交换设备连接;所述第一缓存设备与所述第一交换设备连接;所述第二存储阵列包括第二输入输出管理器,第二交换设备、第二控制器和第二缓存设备,其中,所述第二输入输出管理器与所述第二交换设备连接;所述第二控制器与所述第二交换设备连接;所述第二缓存设备与所述第二交换设备连接;所述第一交换设备与所述第二交换设备连接;所述第一输入输出管理器用于接收主机发送的数据写请求,并通过所述第一交换设备将所述数据写请求发送至所述第一控制器;所述数据写请求中携带有待写入数据地址;所述第一控制器用于根据所述数据写请求中携带的待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,并将所述数据写请求通过所述第一交换设备和所述第二交换设备发送给所述第二控制器;所述第二控制器用于根据所述数据写请求通过所述第二交换设备在所述第二缓存设备上为所述待写入数据分配缓存地址,并将所述缓存地址通过所述第二交换设备和所述第一交换设备发送给所述第一控制器;所述第一控制器还用于将接收的所述缓存地址通过所述第一交换设备发送给所述第一输入输出管理器;所述第一输入输出管理器还用于通过所述第一交换设备和所述第二交换设备将所述待写入数据写入到所述第二缓存设备的所述缓存地址中。
结合本发明的第一方面的实现方式,在本发明第一方面的第一种可能的实现方式中,所述第二控制器还用于通过所述第二交换设备接收所述第二缓存设备发送的所述待写入数据写成功响应消息;所述第二控制器还用于根据所述通知,建立所述待写入数据地址、所述第二缓存设备的标识和所述缓存地址的对应关系。
结合本发明的第一方面的第一种可能的实现方式,在本发明第一方面的第二种可能的实现方式中,所述待写入数据地址包括所述待写入数据的目标逻辑单元LU的标识、所述待写入数据的逻辑块地址和所述待写入数据的长度;所述第一控制器用于根据所述待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,具体包括:所述第一控制器用于根据所述目标LU的标识,查询所述第一控制器存储的目标LU与控制器的对应关系,确定所述目标LU的归属控制器为所述第二控制器。
结合本发明的第一方面的实现方式,在本发明第一方面的第三种可能的实现方式中,第一存储阵列还包括第一存储设备,所述第一存储设备与所述第一交换设备连接;所述第二存储阵列还包括第二存储设备,所述第二存储设备与所述第二交换设备连接;所述第一控制器用于接收所述第二控制器通过所述第一交换设备和所述第二交换设备转发的所述第二缓存设备计算的待重删数据块的特征值,并在数据块特征值索引集合中查找所述待重删数据块的特征值;当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,通过所述第一交换设备和所述第二交换设备,从所述第二缓存设备获取所述待重删数据块在所述第二缓存设备中的缓存地址;所述第一控制器还用于,通过所述第一交换设备向所述第一存储设备发送数据获取指令,所述第一存储设备为所述重删数据块的目标存储设备;所述数据获取指令携带所述第二缓存设备的标识和所述缓存地址;所述第一存储设备用于根据所述第二缓存设备的标识和所述缓存地址,通过所述第一交换设备和所述第二交换设备,从所述缓存地址中获取所述待重删数据块。
结合本发明的第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,所述第一存储设备还用于通过所述第一交换设备,向所述第一控制器发送所述待重删数据块的存储地址;所述存储地址包括所述第一存储设备归属的第一控制器的控制器标识和所述第一存储设备中存储所述待重删数据块的逻辑存储地址;所述第一控制器还用于在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引;所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
结合本发明的第一方面的第四种可能的实现方式,在本发明第一方面的第五种可能的实现方式中,所述第一控制器还用于通过所述第一交换设备和所述第二交换设备向所述第二控制器发送成功响应消息;所述第二控制器还用于通过所述第二交换设备通知所述第二缓存设备释放所述待重删数据块的缓存地址。
本发明第二方面提供一种在存储阵列系统中数据写请求的处理方法,所述存储阵列系统至少包括第一存储阵列和第二存储阵列,所述第一存储阵列包括第一输入输出管理器,第一交换设备、第一控制器和第一缓存设备,其中,所述第一输入输出管理器与所述第一交换设备连接;所述第一控制器与所述第一交换设备连接;所述第一缓存设备与所述第一交换设备连接;所述第二存储阵列包括第二输入输出管理器,第二交换设备、第二控制器和第二缓存设备,其中,所述第二输入输出管理器与所述第二交换设备连接;所述第二控制器与所述第二交换设备连接;所述第二缓存设备与所述第二交换设备连接;所述第一交换设备与所述第二交换设备连接;所述方法包括:所述第一输入输出管理器接收主机发送的数据写请求,并通过所述第一交换设备将所述数据写请求发送至所述第一控制器;所述数据写请求中携带有待写入数据地址;所述第一控制器根据所述数据写请求中携带的待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,并将所述数据写请求通过所述第一交换设备和所述第二交换设备发送给所述第二控制器;所述第二控制器根据所述数据写请求通过所述交换设备2在所述第二缓存设备上为所述待写入数据分配缓存地址,并将所述缓存地址通过所述第二交换设备和所述第一交换设备发送给所述第一控制器;所述第一控制器将接收的所述缓存地址通过所述第一交换设备发送给所述第一输入输出管理器;所述第一输入输出管理器通过所述第一交换设备和所述第二交换设备将所述待写入数据写入到所述第二缓存设备的所述缓存地址中。
结合本发明的第二方面的实现方式,在本发明第二方面的第一种可能的实现方式中,所述第二控制器通过所述第二交换设备接收所述第二缓存设备发送的所述待写入数据写成功响应消息;所述第二控制器根据所述通知,建立所述待写入数据地址、所述第二缓存设备的标识和所述缓存地址的对应关系。
结合本发明的第二方面的第一种可能的实现方式,在本发明第二方面的第二种可能的实现方式中,所述待写入数据地址包括所述待写入数据的目标逻辑单元LU的标识、所述待写入数据的逻辑块地址和所述待写入数据的长度;所述第一控制器根据所述待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,具体为:所述第一控制器根据所述目标LU的标识,查询所述第一控制器存储的目标LU与控制器的对应关系,确定所述目标LU的归属控制器为所述第二控制器。
结合本发明的第二方面的实现方式,在本发明第二方面的第二种可能的实现方式中,所述第一存储阵列还包括第一存储设备,所述第一存储设备与所述第一交换设备连接;所述第二存储阵列还包括第二存储设备,所述第二存储设备与所述第二交换设备连接;所述方法还包括:所述第一控制器接收所述第二控制器通过所述第一交换设备和所述第二交换设备转发的所述第二缓存设备计算的待重删数据块的特征值;所述第一控制器在数据块特征值索引集合中查找所述待重删数据块的特征值;所述第一控制器当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,通过所述第一交换设备和所述第二交换设备,从所述第二缓存设备获取所述待重删数据块在所述第二缓存设备中的缓存地址;所述第一控制器通过所述第一交换设备向所述第一存储设备发送数据获取指令,所述第一存储设备为所述重删数据块的目标存储设备;所述数据获取指令携带所述第二缓存设备的标识和所述缓存地址;所述第一存储设备根据所述第二缓存设备的标识和所述缓存地址,通过所述第一交换设备和所述第二交换设备,从所述缓存地址中获取所述待重删数据块。
结合本发明的第二方面的第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,所述第一存储设备通过所述第一交换设备,向所述第一控制器发送所述待重删数据块的存储地址;所述存储地址包括所述第一存储设备归属的第一控制器的控制器标识和所述第一存储设备中存储所述待重删数据块的逻辑存储地址;所述第一控制器在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引;所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
本发明实施例提供的存储阵列系统和数据写请求处理方法,存储阵列中的控制器、输入输出管理器、缓存设备和存储设备分别与交换设备连接,并通过交换设备实现通信;存储阵列之间通过交换设备连接,这样存储阵列之间的设备可以通过各自的交换设备实现通信。这样控制器根据数据写请求在缓存设备中为待写入数据分配缓存地址,而输入输出管理器通过交换设备直接将待写入数据写入到缓存设备中,待写入数据不再需要途径控制器,节省了控制器的CPU的计算资源和控制器的内存资源,提高数据写入效率和存储阵列系统的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这些附图获得其他的附图。
图1为现有技术存储阵列系统的结构图;
图2为本发明实施例存储阵列系统的结构图;
图3为本发明实施例数据写请求处理流程图;
图4为数据块特征值索引集合示意图;
图5为本发明实施例重复数据删除处理流程图。
具体实施例
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明提供的实施例所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的存储阵列系统,如图2所示。图2中以存储阵列系统中包括两个存储阵列为例进行说明,存储阵列的的结构与实现原理类似,在此以一个存储阵列为例进行说明。
如图2所示,存储阵列1中,包括输入输出管理器(IOM)1、控制器A1、控制器B1、交换设备1、缓存设备1、存储设备A1和存储设备B1。其中,控制器A1包括CPU和内存,CPU和内存通过总线进行通信;控制器B1也包括有CPU和内存,CPU和内存通过总线进行通信。控制器A1和控制器B1互为冗余。存储阵列2的结构与存储阵列1的结构相同,为了以示区别,将标注1修改为2,具体构成在此不再赘述。
存储阵列中以交换设备为中心,其他器件部署在交换设备的周围,通过交换设备实现两两互通。如图2所示,在存储阵列1中,输入输出管理器(IOM)1与交换设备1连接,控制器A1与交换设备1连接,控制器B1与交换设备1连接,缓存设备1和交换设备1连接,存储设备A1与交换设备1连接,存储设备B1与交换设备1连接。存储阵列之间通过各自的交换设备实现互联互通。如图2所示,存储阵列1的交换设备1与存储阵列2的交换设备2连接,实现存储阵列1与存储阵列2之间的通信。基于上述描述,围绕交换设备1和交换设备2,组成了存储阵列1中的输入输出管理器(IOM)1、控制器A1、控制器B1、缓存设备1、存储设备A1和存储设备B1与存储阵列2中的输出管理器(IOM)2、控制器A1、控制器A2、缓存设备2、存储设备B2和存储设备A2之间的全互连架构。
在图2中,为了使存储阵列的结构以及各个部件之间的交互更清晰,在一个存储阵列中,只给出了一个缓存设备,一个输入输出管理器和两个存储设备。在实际使用中,在一个存储阵列中,可以存在有多个缓存设备、多个输入输出管理器和多个存储设备,在此不再另行描述。
图2所示存储阵列中,交换设备1与存储设备A1和存储设备B1连接,如前所述,在存储阵列1中有多个存储设备时,交换设备1与所述多个存储设备连接。控制器A1与控制器B1互为冗余,并且分别通过交换设备1与缓存设备1、输入输出管理器1、存储设备1或者存储设备2实现通信。例如控制器A1通过交换设备1与存储阵列1中的所有存储设备1通信。控制器A1将存储阵列中的存储设备虚拟化,形成多个逻辑单元LU,并提供某个LU(例如LU A)给主机A使用,主机A挂载LU A,主机A通过控制器A1对LU A进行数据访问操作,这里将控制器A1称为该LU A的归属控制器,即LU A的归属控制器是控制器A1。同理,对于存储阵列2中的存储设备提供的LU的归属控制器为控制器A2。这里的主机可以为物理主机(或称物理服务器),也可以为虚拟主机(或称虚拟服务器)。逻辑单元LU,业界通常称为逻辑单元号(Logical Unit Number,LUN)。分配给主机LUN,实际是指将某一LU的标识分配给主机,以使主机挂载该LU,因此,这里LU与LUN具有相同含义。
图2所示的存储阵列中,交换设备1和交换设备2可以为PCIe交换设备,也可以为非易失性存储介质的高速传输总线(Non-Volatile Memory express,NVMe)交换设备或者串行小型计算机系统接口(Serial attached SCSI,SAS)交换设备等,本发明实施例不作限定。当交换设备1和交换设备2为PCIe交换设备时,则与PCIe交换设备连接的存储设备为PCIe协议接口的硬盘;当交换设备1和交换设备2为NVMe交换设备时,则与NVMe交换设备连接的存储设备为NVMe协议接口的硬盘;当交换设备1和交换设备2为SAS交换设备时,则与SAS交换设备连接的存储设备为SAS协议接口的硬盘;硬盘可以是机械硬盘,也可以是固态存储硬盘(Solid State Disk,SSD),或者其他介质的硬盘。图2所示的存储阵列中的存储设备,不同存储设备的存储介质可以不同,从而组成混合硬盘存储阵列,本发明实施例不作限定。
缓存设备1和缓存设备2可以为由易失性存储介质或非易失性存储介质组成的存储设备,如相变存储器(Phase Change Memory,PCM)等,其他适合用来作为缓存设备的非易失性存储介质也可,本发明实施例对此不作限定。缓存设备1和缓存设备2用于缓存数据。
本发明实施例中以交换设备1为PCIe交换设备、交换设备1为PCIe交换设备和存储设备为PCIe协议接口SSD为例进行说明。
图2所示的存储阵列,输入输出管理器1用于接收主机发送的数据写请求,并通过交换设备1将所述数据写请求发送至控制器A1,其中,数据写请求中携带有待写入数据地址。在本发明实施例中,控制器A1与输入输出管理器1位于同一存储阵列中,因此,控制器A1为所述输入输出管理器1的归属控制器。因此,输入输出管理器1接收到主机发送的数据操作请求,在没有改变输入输出管理器1的请求发送策略的情况下,默认向控制器A1发送数据操作请求。本发明实施例中,输入输出管理器1接收主机发送的数据写请求后,通过交换设备1,向控制器A1发送数据写请求。
输入输出管理器1接收到的数据写请求携带有待写入数据地址,其中,待写入数据地址包括待写入数据的目标逻辑单元LU的标识、待写入数据的逻辑块地址(Logical BlockAddress,LBA)及待写入数据的长度。
控制器A1用于在接收到数据写请求之后,根据所述数据写请求中携带的待写入数据地址确定所述待写入数据地址的归属控制器为控制器A2,将所述数据写请求通过所述交换设备1和交换设备2发送给控制器A2。控制器中存储有各个LU地址与各个控制器之间的归属关系。例如,LU A归属控制器为A1,即是由控制器A1将数据写入LU A;LU B的归属控制器为A2,则由控制器A2将数据写入LU B。当控制器将本存储阵列中的存储设备进行虚拟化处理生成LU时,会在本地存储LU与本控制器的对应关系,并通过交换设备发送给其他的控制器。如图2所示,控制器A1将存储设备A1进行虚拟化处理,生成LU A,此时控制器A1为LU A的归属控制器,则控制器A1在本地存储LU A的归属控制器为控制器A1。另外,控制器A1通过交换设备1将LU A与控制器A1的对应关系发送给控制器B1;通过交换设备1和交换设备2将LUA与控制器A1的对应关系发送给控制器A2,通过交换设备1和交换设备2将LU A与控制器A1的对应关系发送给控制器B2。LU与控制器之间的对应关系可以由表格的方式来记录,在此不再详述。LU与控制器之间的对应关系,可以通过LU的标识与控制器的名称对应,也可以通过LU的标识与控制器的ID对应,在本发明实施例中不做限定。
控制器A1根据接收到的数据写请求中携带的待写入数据地址中的目标LU的标识,查询在本地存储的LU与控制器的归属关系,确定所述目标LU的归属控制器为控制器A2。在本发明实施例中,以目标LU的标识为LU B,对应的归属控制器为A2为例进行说明。即,本发明实施例说明的是两个存储阵列之间的数据写入处理方法,对于一个存储阵列中的数据写入方法,此时控制器A1根据数据写请求中携带的目标LU的标识确定出的归属控制器为自身或者为控制器B1,其实现原理类似,在此不再详述。
由于在存储阵列中,是以交换设备为中心部署的各个器件,因此,整个器件之间均需要经过交换设备来实现互通。控制器A1确定数据写请求中携带的待写入数据地址的归属控制器为控制器A2后,将数据写请求发送给交换设备1,交换设备1将所述数据写请求发送给交换设备2,交换设备2将所述数据写请求发送给控制器A2。至于控制器与交换设备之间的交互以及两个交换设备之间的交互可以已有的技术进行通信,在此不再另行说明。
控制器A2接收到数据写请求之后,根据所述数据写请求通过交换设备2在缓存设备2上为所述待写入数据分配缓存地址。控制器A2是缓存设备2的归属控制器,因此在控制器A2需要缓存地址存储数据时,通过交换设备2在向缓存设备2上为待写入数据分配缓存地址。
在另一种实现方式中,控制器A2根据数据写请求,通过交换设备2指示缓存设备2为待写入数据分配缓存地址,缓存设备2根据待写数据长度分配缓存地址,并将分配的缓存地址通过交换设备2返回给控制器A2。控制器A2获取缓存设备2为待写入数据分配的缓存地址(以下称缓存设备2为待写入数据分配的缓存地址为缓存地址),缓存地址包括缓存的起始地址和长度。
在本发明实施例中,缓存设备的介质可以是DDR,也可以是PCM,或者其他介质。在本发明实施例中,缓存设备具有智能特性的双端口,可以通过交换设备被其他的设备访问。
控制器A2获得在缓存设备2上为所述待写入数据分配的缓存地址2后,将所述缓存地址通过所述交换设备2和交换设备1发送给控制器A1。控制器A2将获得的缓存地址转发给交换设备2,交换设备2将所述缓存地址转发给交换设备1,交换设备1将所述缓存地址转发给控制器A1。
控制器A1将接收到的缓存地址通过交换设备1发送给输入输出管理器1。
输入输出管理器1接收到缓存地址后,通过交换设备1和交换设备2将所述待写入数据写入到所述第二缓存设备的缓存地址中。输入输出管理器1接收到控制器A1通过交换设备1发送的缓存地址后,将所述数据写请求对应的待写入数据发送给交换设备1,交换设备1发送给交换设备2,交换设备2直接将数据发送到缓存设备2的缓存地址2中。
控制器A2还可以通过交换设备2和交换设备1将所述缓存设备2的标识同所述缓存地址一起发送给控制器A1。
控制器A1将缓存设备2的标识同所述缓存地址一起发送给输入输出管理器1,输入输出管理器1根据接收到的缓存地址和缓存设备2的标识,通过交换设备1和交换设备2将所述待写入数据写入到所述第二缓存设备的缓存地址中。
这样,通过本发明实施例提供的存储阵列系统,控制器只需要获取为待写入数据分配的缓存地址,输入输出管理器通过交换设备,直接向缓存地址写入待写入数据,相对于现有技术,节省了存储阵列中的多个控制器的CPU的计算资源和控制器的内存资源,提高数据写入效率,提高了存储阵列系统的性能。
控制器A2通过交换设备2接收到缓存设备2发送的所述待写入数据写成功响应消息。
缓存设备2将所述待写入数据成功写入缓存地址2后,将写成功响应消息发送给交换设备2,交换设备2将所述写成功响应消息发送给控制器A2。此处写成功响应消息在各设备之间的流转可以使用已有的技术,在此不再赘述。
控制器A2根据所述通知消息,建立待写入数据的目标逻辑单元、缓存设备2的标识以及缓存地址的对应关系。这样,在需要读取该待写入数据时,控制器A1可以根据记录的对应关系向输入输出管理器1发送待写入数据的缓存地址,输入输出管理器1可从待写入数据的缓存地址中读取该待写入数据(也可称为直接从待写入数据的缓存地址中读取该待写入数据),从而节省控制器A1的CPU的计算资源和控制器A1的内存资源,提高数据读取效率。
所述待写入数据成功写入到缓存设备的缓存地址中后,在满足一定条件后,所述待写入数据还需要存入到目标存储设备中。目标存储设备是指存储待写入数据的存储设备。在本发明实施例中,缓存设备可以通过交换设备将所述待写入数据直接写入到存储设备中。如图2所示,待写入数据写入缓存设备2后,此时目标存储设备为存储设备A2,缓存设备2通过交换设备2将所述待写入数据写入所述存储设备A2中。如果目标存储设备是存储设备B1,则缓存设备2将所述待写入数据发送给交换设备2,交换设备2将所述待写入数据发送给交换设备1,交换设备1将所述待写入数据发送给存储设备A2。待写入数据通过交换设备实现在不同设备之间的传输,可以采用目前已有的技术,在此不再另行描述。
这样,在将数据写入存储设备2的过程中,所述待写入数据不会占用控制器A2和控制器A1的计算资源和内存资源,提高了数据的写入效率,提高了存储阵列系统的性能。本实施例中以输入输出管理器1接收的数据存储到缓存设备2中的缓存地址为例进行说明,在实际应用中,输入输出管理器1接收的数据还可以存储到其他缓存设备中。例如,在本发明实施例提供的存储阵列中还有存储阵列3,存储阵列3可以通过交换设备3和交换设备1与存储阵列1实现连接,通过交换设备3和交换设备2与存储阵列2实现连接。存储阵列3也可以通过交换设备3和交换设备2与存储阵列2实现连接,并通过交换设备3、交换设备2和交换设备1与存储阵列1实现连接,具体连接不再另行描述。当存储阵列3通过交换设备3、交换设备2和交换设备1与存储阵列1实现连接时,若此时输入输出管理器1接收的待写入数据需要写入存储阵列3的缓存设备3中时,数据写请求或者待写入的数据则需要通过交换设备3、交换设备2和交换设备1实现,其实现原理与两个存储阵列中的数据写入方法相似,在此不再另行描述。
在当前的数据存储中,为了提高存储效率,节省空间,还可以使用重复数据删除技术,使用重复的数据块不会重复存储。
本发明实施例提供的存储阵列系统可以用来实现存储时的重复数据删除。下面以把存储阵列2的缓存设备2中的数据存储到存储阵列1中的存储设备A1中为例进行说明。
如图2所示,控制器A2通过交换设备从缓存设备2中选取需要存储到存储设备A1中的数据块(下文称为待重删数据块),并通过交换设备2向缓存设备2请求所述待重删数据块的特征值。缓存设备2计算所述待重删数据块的特征值,并通过交换设备2发送给所述控制器A2。控制器A2在向缓存设备2请求所述待重删数据块的特征值时,在请求指令中可以携带目标LU、LBA、LEN等信息,在此不再详述。
控制器A2通过所述交换设备2从缓存设备2接收到所述待重删数据块的特征值之后,根据存储的目标LU与控制器的对应关系,确定所述待重删数据块的目标LU的归属控制器。在本实施例中,以目标LU的归属控制器为控制器A1为例进行说明。控制器A2将所述待重删数据块的特征值通过交换设备2和交换设备1发送给控制器A1,即控制器A2将所述待重删数据块的特征值发送给交换设备2,交换设备2将所述特征值发送给交换设备1,交换设备1将所述特征值发送给控制器A1。
控制器A1通过所述交换设备2和所述交换设备1接收所述控制器A2发送的所述待重删数据块的特征值,并在本地保存数据块特征值索引集合中查找所述待重删数据块的特征值。
当在所述数据块特征值索引集合中查找到所述特征值时,说明存储的数据块有数据块与所述待重删数据块相同,此时不需要再存储所述待重删数据块。控制器A1更新重删元数据,并通过交换设备1和交换设备2通知所述缓存设备2释放所述待重删数据块占用的空间。控制器A1更新重删元数据可以采用已有的重删技术,在此不再赘述。
当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,控制器A1通过所述交换设备1和第二交换设备2,从所述缓存设备2获取所述待重删数据块在所述缓存设备2中的缓存地址。缓存设备2通过所述交换设备2和交换设备1向控制器A1返回所述待重删数据块的缓存地址。
控制器A1通过交换设备1向存储设备A1发送数据获取指令,存储设备A1为所述待重删数据块的目标存储设备,所述数据获取指令中携带有缓存设备2的标识和所述缓存地址。
存储设备A1根据所述缓存设备2的标识和所述缓存地址,通过交换设备1和交换设备2从所述缓存地址中获取所述待重删数据块。存储设备A1接收到数据获取指令之后,根据数据获取指令中携带的缓存设备2的标识和缓存地址,通过直接内存访问(DMA)从缓存设备2中获得所述待重删数据块,并存储到目标LU中。
这样在待重删数据块与目标存储设备中已存储的数据块不重复时,缓存设备中的数据块可以直接存储到存储设备中,不会占用控制器的内存和计算资源,提高了存储阵列系统的性能。
存储设备A1还可以通过交换设备1向控制器A1发送所述待重删数据块的存储地址,存储地址中包括存储设备A1归属的控制器A1的控制器标识和存储设备1中存储所述待重删数据块的逻辑存储地址。控制器A1接收到所述存储地址之后,在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引,所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
控制器A1通过交换设备1和交换设备2向所述控制器A2发送成功响应消息。
所述控制器A2通过所述第二交换设备通知缓存设备2释放所述待重删数据块的缓存地址。控制器A2确定所述待重删数据块已从缓存设备2写入存储设备A1之后,通知通知所述第二缓存设备释放所述待重删数据块的缓存地址。
通过本发明实施例提供的存储阵列系统来实现数据重删请求时,待重删数据块直接由缓存设备写入到目标存储设备中,不需要经过存储阵列的控制器,节省了控制器的CPU的计算资源和内存资源,提高了存储阵列系统的性能。
本实施例中以缓存设备2中的数据块存储到存储设备A1中为例进行说明的,在实际应用中,存储阵列系统中可能有多个存储阵列,任意缓存设备中的数据块存储到任意一个存储设备的实现原理类似,在此不再另行说明。
下文以一个完整的数据写请求处理流程为例说明本发明实施例提供的存储阵列系统中是如何实现数据写入以及数据重删过程的。
具体流程图3所示:
步骤301:输入输出管理器1接收主机发送的数据写请求。
输入输出管理器2为存储阵列1的输入输出接收管理设备,负责接收主机发送的数据操作请求,并通过交换设备转发到所述输入输出管理器1的归属控制器(即为控制器A1)。本发明实施例中,主机向输入输出管理器1发送携带待写入数据地址的数据写请求。示例性地,数据写请求可以使用小型计算机系统接口(Small Computer System Interface,SCSI)协议,即SCSI协议数据写请求,当然还可以使用其他协议,本发明实施例对此不作限定。
步骤302:输入输出管理器1通过交换设备1向控制器A1发送所述数据写请求。
本发明实施例中,输入输出管理器1通常与特定的一个控制器进行通信。关于输入输出管理器如何建立与某一个控制器的对应关系,可以有多种方式,比如根据控制器的负载,或者根据特定的路径选择算法,本发明对此不作限定,输入输出管理器与某个控制器建立起对应关系后,对应的控制器即为所述输入输出管理器的归属控制器。在本发明实施例中,输入输出管理器1的归属控制器为控制器A1,因此输入输出管理器1接收到数据写请求,通过交换设备1向控制器A1发送数据写请求。
步骤303:控制器A1获取待写入数据的缓存地址,确定缓存待写入数据的缓存设备和缓存设备的归属控制器。
控制器A1接收输入输出设备1发送的数据写请求,确定缓存待写入数据的缓存设备和缓存设备的归属控制器。控制器A1中存储有各个缓存设备与控制器之间的对应关系。控制器A1接收到数据写请求之后,根据数据写请求中携带的待写入数据缓存地址确定缓存待写入数据的缓存设备,并根据缓存设备与控制器之间的对应关系,确认所述缓存设备的归属控制器。本发明实施例中,控制器A1根据数据写请求确认出的缓存设备为缓存设备2,缓存设备2的归属控制器是控制器A2。
步骤304:控制器A1将数据写请求通过交换设备1和交换设备2发送给控制器A2。
控制器A1确定所述数据写请求对应的缓存设备为缓存设备2并且所述缓存设备2的归属控制器为控制器2之后,将数据写请求发送给交换设备1,交换设备1将数据写请求发送给交换设备2,交换设备2将数据写请求发送给控制器A2。
步骤305:控制器A2根据所述数据写请求通过交换设备2在缓存设备2上为所述待写入数据分配缓存地址。
缓存设备2分配给控制器A2一段缓存地址。控制器A2在该段缓存地址中,根据待写入数据的长度,为待写入数据分配缓存地址。在另一种实现方式中,控制器A2通过交换设备2向缓存设备2发送指令,指令中携带待写入数据的长度,指示缓存设备2为待写入数据分配缓存地址。
步骤306:控制器A2获得缓存设备2为所述待写入数据分配的缓存地址,将所述缓存地址通过交换设备2和交换设备1发送给控制器A1。
如果是缓存设备2为待写入数据分配缓存地址,缓存设备2分配好缓存地址后,将所述缓存地址通过交换设备2发送给控制器A2。控制器A2接收到缓存地址之后,将所述缓存地址发送给交换设备2,交换设备2将所述缓存地址发送给交换设备1,交换设备1将缓存地址发送给控制器A1。控制器A2在向控制器A1发送缓存地址信息中,还携带有缓存设备2的设备标识。
这些操作指令在缓存设备、控制器与交换设备之间传输,可以采用已有的技术,在此不再另行描述。
步骤307:控制器A1将接收的缓存地址通过交换设备1发送给输入输出管理器1。
控制器A1获得缓存地址,通过交换设备1向输入输出管理器1发送缓存设备2的标识和缓存地址。其中,缓存设备M的标识可以为缓存设备的编号或者IP地址,在本发明实施例中不做限制。
步骤308:输入输出管理器1接收主机发送的待写入数据。
步骤309:输入输出管理器1通过交换设备1和交换设备2将所述待写入数据写入到所述缓存设备2的缓存地址。
输入输出管理器1根据缓存设备2的标识和缓存地址,通过交换设备1和交换设备2直接向缓存设备2的缓存地址中写入待写入数据。
通过本发明实施例提供的数据写入方法,待写入的数据直接由输入输出管理器写入到目标缓存设备中,不需要发送给存储阵列1和存储阵列2中的控制器,节省了控制器的CPU的计算资源和内存资源,提高了存储阵列系统的性能。
步骤310:控制器A2通过交换设备2,接收缓存设备2发送的所述待写入数据写成功响应。
缓存设备2将所述待写入数据写到所述缓存地址中后,通过交换设备2向控制器A2发送写成功响应消息。
步骤311:控制器A2根据所述通知建立待写入数据地址、缓存设备2的标识和缓存地址的对应关系。
控制器A2接收通过交换设备2接收缓存设备2返回的写成功响应,建立待写入数据地址、缓存设备的标识和缓存地址的对应关系。
建立待写入数据地址、缓存设备的标识和缓存地址的对应关系建立的一种实现方式:缓存设备2为所述待写入数据分配缓存地址,待写入数据地址与缓存地址之间产生了对应关系。缓存设备2可以从控制器A2发送的缓存地址分配指令中获得待写入数据地址,缓存设备2分配缓存地址M后,建立待写入数据地址与缓存地址的对应关系。
另一种实现方式,缓存设备2为目标LU的专属缓存设备,即只用来缓存目标LU的数据,则缓存设备2默认保存目标LU、目标LU中的LBA和缓存地址的对应关系。缓存设备2默认保存目标LU、目标LU中的LBA与缓存设备2的某一段缓存地址的对应关系,缓存设备2在该段缓存地址中为待写入数据分配缓存地址。
为提高存储阵列的可靠性,可将待写入数据缓存多份。在图1所示的现有技术中,输入输出管理器1发送待写入数据给控制器A1,控制器A1的CPU将待写入数据写入内存,CPU从内存中读取待写入数据,通过交换设备A将待写入数据发送到控制器B1的CPU,CPUB将待写入数据写入内存。而在本发明实施例中,防止缓存设备中待写入数据丢失,存储阵列可以将待写入数据缓存在多个缓存设备上。因此,以在两个缓存设备上分别缓存待写入数据为例,图2所示的存储阵列2中还可以包括缓存设备B2。缓存设备B2与交换设备2连接。因此,控制器A1接收到输入输出管理器1发送的数据写请求,确定缓存设备2作为主缓存设备缓存待写入数据,缓存设备B2作为备份缓存设备缓存待写入数据。控制器A1分别获取缓存设备2和缓存设备B2中为待写入数据分配的缓存地址。控制器获取缓存设备为待写入数据分配的缓存地址的方法在前文已进行了介绍,在此不再另行说明。控制器A1通过交换设备1向输入输出管理器1发送缓存设备2的标识和存缓存地址,通过交换设备1向输入输出管理器2发送缓存设备B2的标识和缓存地址。具体实现中,控制器A1可以通过一条消息将缓存设备2的标识和缓存地址,以及缓存设备B2的标识和缓存地址,发送给输入输出管理器1。也可以通过两条消息分别发送,这里不作限定。
在本发明实施例中,输入输出管理器可将待写入数据直接通过交换设备写入到缓存设备中,节省了控制器的CPU的计算资源和控制器A1的内存资源,提高了数据写入效率。
在存储阵列系统中,删除重复数据,可以节省存储空间,降低存储成本。本发明实施例如图2所示的存储阵列系统中,
缓存设备中缓存的数据在存储到目标存储设备之前,进行重复数据删除,可以有效节省存储空间,提高存储空间利用率。重复数据删除技术,是将数据按照预定的规则分成数据块,计算每一个数据块的特征值。计算数据块特征值通常使用哈希(Hash)算法,对数据块进行Hash计算得到Hash值,作为特征值,常用的Hash算法包括MD5、SHA1、SHA-256、SHA-512等。以图2所示的存储阵列系统为例,存储阵列2中缓存设备2中的数据存储到存储阵列1的存储设备1之前,会进行重复数据删除。例如,如果待写入的数据块A的特征值与存储设备中已经存储的数据块B的特征值相同,则表明数据块A和数据块B是相同的数据块,则将重复的数据块A从缓存设备中删除,同时将在存储设备中存储数据块B的逻辑存储地址作为数据块A在存储设备中的逻辑存储地址。其他缓存设备中的数据块存储到存储设备中进行重复数据删除时,执行类似的操作,在此不再一一举例说明。
具体实现中,上述数据块特征值比较是由控制器来实现的。因为在存储阵列中进行重复数据删除,每个唯一的数据块都会有一个特征值,因此会生产大量的特征值。为实现存储阵列中控制器均衡,可以根据数据块特征值分布算法,如Hash分布算法,每个控制器负责部分数据块特征值比较。这样每个控制器根据数据块特征值分布算法,只维护存储阵列存储的部分唯一数据的特征值索引,部分唯一数据的特征值索引称为特征值索引集合。控制器从特征值索引集合查询将要写入存储设备的数据块的特征值,判断是否与特征值索引集合中的某一特征值相同。例如,控制器A1,根据特征值分布算法,需要维护特征值索引集合A,则称控制器A1是特征值索引集合A中的每个特征值的归属控制器。或者从特征值索引集合A中的特征值与数据块X的特征值相同的控制器为数据块X的特征值的归属控制器,同时也是从特征值索引集合A中每一个特征值的归属控制器。
具体地,特征值索引集合是由每个特征值索引构成的,如图4所示。以特征值1索引为例,包括特征值1,数据块存储地址1和引用计数。其中数据块存储地址1用于表示某一个唯一数据块在存储设备中的存储地址或者数据块在缓存设备中的存储地址。数据块在存储设备中的存储地址可以包含该存储设备的标识以及存储设备中的存储数据块的逻辑存储地址。数据块在缓存设备中的存储地址包括缓存设备的标识和缓存地址。特征值1表示数据块C的特征值。引用计数表示具有特征值1的数据块的数量,例如,存储设备中第一次存储数据块A时,具有特征值1的数据块的数量为1,则引用计数为1。当往存储设备中再次存储具有相同特征值1的数据块D时,根据重复数据删除原理,存储设备中不再保存数据块D,但此时引用计数要加1,更新为2。概括起来,特征值索引中的数据块地址为数据块在缓存设备中的存储地址或数据块的目标存储设备存储地址。数据块在缓存设备中的存储地址包括缓存设备的标识和缓存设备中数据块的缓存地址;数据块的目标存储设备存储地址包括目标存储设备的标识和目标存储设备中存储数据块的逻辑存储地址。图4所示的特征值索引仅仅是示例性实现,也可能是多级索引,在重复数据删除时可以使用的索引形式均可,本发明实施例对此不作限定。
下面以图2所示的存储阵列系统中,在将存储阵列2中缓存设备2中的数据块存储到存储阵列1的存储设备A1时执行重删操作为例进行说明。在前述输入输出管理器1往缓存设备2中写入待写入数据块的基础上,把缓存设备2中的数据写入到存储设备A1中进行重删的方法流程如图5所述。
步骤501:控制器A2通过交换设备2从缓存设备2中获取待存储到存储设备A1中的数据块。
在本发明实施例中,缓存设备2中的数据块需要下盘,而控制器A2是所述缓存设备2的归属控制器,因此由控制器A2通过交换设备2从缓存设备2中选取待存储到存储设备A1中的数据块。所述数据块在后文中称为待重删数据块。
如果其他缓存设备需要下盘数据块,则由其归属控制器来执行所述步骤。
步骤502:控制器A2通过交换设备2向缓存设备2请求所述待重删数据块的特征值。
控制器A2在向缓存设备2请求所述待重删数据块的特征值时,在请求指令中可以携带目标LU、LBA、LEN等信息,在此不再详述。
步骤503:缓存设备2计算所述待重删数据块的特征值,并通过交换设备2发送给所述控制器A2。
为计算数据块的特征值,首先需要按照一定规则对数据进行划分得到数据块。数据块的划分方法包括两种:将数据划分为固定长度的数据块,或者将数据划分为可变长度的数据块。本发明实施例以划分为固定长度的数据块为例,如将数据划分为4KB大小的数据块。示例性的,将缓存地址2中写入的待写数据划分为若干个4KB大小的数据块。控制器A2记录每一个数据块的LU的标识、数据块的LBA和数据块的长度。以下称数据块的LU的标识、数据块的LBA和数据块的长度为数据块地址。以若干个4KB大小的数据块中的数据块X为例(这里称数据块X为待重复数据删除数据块,简称为待重删数据块)。
步骤504:控制器A2通过所述交换设备2从缓存设备2接收到所述待重删数据块的特征值之后,根据存储的目标LU与控制器的对应关系,确定所述待重删数据块的目标LU的归属控制器,并将所述待重删数据块的特征值发送给所述目标LU的归属控制器。
在本实施例中,以归属控制器为控制器A1为例进行说明。控制器A2将所述待重删数据块的特征值通过交换设备2和交换设备1发送给控制器A1,即控制器A2将所述待重删数据块的特征值发送给交换设备2,交换设备2将所述特征值发送给交换设备1,交换设备1将所述特征值发送给控制器A1。
步骤505:控制器A1通过所述交换设备2和所述交换设备1接收所述控制器A2发送的所述待重删数据块的特征值,并在本地保存的数据块特征值索引集合中查找所述待重删数据块的特征值。
当在所述数据块特征值索引集合中查找到所述特征值时,说明存储的数据块有数据块与所述待重删数据块相同,此时不需要再存储所述待重删数据块。控制器A1可以更新重删元数据,还可以通过交换设备1和交换设备2通知所述缓存设备2释放所述待重删数据块占用的空间。控制器A1更新重删元数据可以采用已有的重删技术,在此不再赘述。
所述特征值索引集合已在前文进行了介绍,在此不再另行说明。
步骤506:当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,控制器A1通过所述交换设备1和第二交换设备2,从所述缓存设备2获取所述待重删数据块在所述缓存设备2中的缓存地址。
缓存设备2通过所述交换设备2和交换设备1向控制器A1返回所述待重删数据块的缓存地址。
步骤507:控制器A1通过交换设备1向存储设备A1发送数据获取指令,所述数据获取指令中携带有缓存设备2的标识和所述缓存地址。
存储设备A1为所述待重删数据块的目标存储设备。
步骤508:存储设备A1根据所述缓存设备2的标识和所述缓存地址,通过交换设备1和交换设备2从所述缓存地址中获取所述待重删数据块。
存储设备A1接收到数据获取指令之后,根据数据获取指令中携带的缓存设备2的标识和缓存地址,通过直接内存访问(DMA)从缓存设备2中获得所述待重删数据块,并存储到目标LU中。
通过本实施例提供的方法,在待重删数据块与目标存储设备中已存储的数据块不重复时,直接将缓存设备中的数据块存储到存储设备中,不会占用控制器的内存和计算资源,提高了存储阵列系统的性能。
在前述实施例的基础上,所述方法还可以包括以下步骤:
步骤509:存储设备A1通过交换设备1向控制器A1发送所述待重删数据块的存储地址。存储地址中包括存储设备A1归属的控制器A1的控制器标识和存储设备1中存储所述待重删数据块的逻辑存储地址。
步骤510:控制器A1接收到所述存储地址之后,在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引,所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
本方法实施例还可以包括:
步骤511:控制器A1通过交换设备1和交换设备2向所述控制器A2发送成功响应消息。
步骤512:所述控制器A2通过所述交换设备2通知缓存设备2释放所述待重删数据块的缓存地址。
通过本发明实施例提供的存储阵列系统来实现数据重删请求时,待重删数据块直接由缓存设备写入到目标存储设备中,不需要经过存储阵列的控制器,节省了控制器的CPU的计算资源和内存资源,提高了存储阵列系统的性能。
本实施例中以缓存设备2中的数据块存储到存储设备A1中为例进行说明的,在实际应用中,存储阵列系统中可能有多个存储阵列,任意缓存设备中的数据块存储到任意一个存储设备的实现原理类似,在此不再另行说明。
本发明实施例图2中,存储阵列系统中只画了两个控制器、一个交换设备和一个输入输出管理器、一个缓存设备和两个存储设备,但具体实现中,控制器、输入输出管理器、缓存设备和存储设备的数量可以根据需要设定,灵活扩展。存储阵列中的设备都分别与交换设备连接即可,任意两个设备通过交换设备实现的连接可实现双向通信。任意两个交换设备直接连接。在本发明实施例提供的存储阵列系统中,逻辑上,将控制器统称为控制器平面,交换设备统称为交换平面,存储设备统称为存储平面,输入输出管理器统称为输入输出管理平面,缓存设备统称为缓存平面。在本发明实施例提供的架构中,数据写控制与数据写分离。由控制器实现数据写控制,而数据不流经控制器,节省了控制器CPU的计算资源和控制器的内存资源,提高数据写入效率,提高了存储阵列的数据处理效率。

Claims (11)

1.一种存储阵列系统,其特征在于,至少包括第一存储阵列和第二存储阵列,所述第一存储阵列包括第一输入输出管理器,第一交换设备、第一控制器和第一缓存设备,其中,所述第一输入输出管理器与所述第一交换设备连接;所述第一控制器与所述第一交换设备连接;所述第一缓存设备与所述第一交换设备连接;所述第二存储阵列包括第二输入输出管理器,第二交换设备、第二控制器和第二缓存设备,其中,所述第二输入输出管理器与所述第二交换设备连接;所述第二控制器与所述第二交换设备连接;所述第二缓存设备与所述第二交换设备连接;所述第一交换设备与所述第二交换设备连接;
所述第一输入输出管理器用于接收主机发送的数据写请求,并通过所述第一交换设备将所述数据写请求发送至所述第一控制器;所述数据写请求中携带有待写入数据地址;
所述第一控制器用于根据所述数据写请求中携带的待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,并将所述数据写请求通过所述第一交换设备和所述第二交换设备发送给所述第二控制器;
所述第二控制器用于根据所述数据写请求通过所述第二交换设备在所述第二缓存设备上为所述待写入数据分配缓存地址,并将所述缓存地址通过所述第二交换设备和所述第一交换设备发送给所述第一控制器;
所述第一控制器还用于将接收的所述缓存地址通过所述第一交换设备发送给所述第一输入输出管理器;
所述第一输入输出管理器还用于通过所述第一交换设备和所述第二交换设备将所述待写入数据写入到所述第二缓存设备的所述缓存地址中。
2.根据权利要求1所述的存储阵列系统,其特征在于,
所述第二控制器还用于通过所述第二交换设备接收所述第二缓存设备发送的所述待写入数据写成功响应消息;
所述第二控制器还用于根据所述写成功响应消息,建立所述待写入数据地址、所述第二缓存设备的标识和所述缓存地址的对应关系。
3.根据权利要求2所述的存储阵列系统,其特征在于,所述待写入数据地址包括所述待写入数据的目标逻辑单元LU的标识、所述待写入数据的逻辑块地址和所述待写入数据的长度;所述第一控制器用于根据所述待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,具体包括:
所述第一控制器用于根据所述目标LU的标识,查询所述第一控制器存储的目标LU与控制器的对应关系,确定所述目标LU的归属控制器为所述第二控制器。
4.根据权利要求1所述的存储阵列系统,其特征在于,所述第一存储阵列还包括第一存储设备,所述第一存储设备与所述第一交换设备连接;所述第二存储阵列还包括第二存储设备,所述第二存储设备与所述第二交换设备连接;
所述第一控制器用于接收所述第二控制器通过所述第一交换设备和所述第二交换设备转发的所述第二缓存设备计算的待重删数据块的特征值,并在数据块特征值索引集合中查找所述待重删数据块的特征值;当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,通过所述第一交换设备和所述第二交换设备,从所述第二缓存设备获取所述待重删数据块在所述第二缓存设备中的缓存地址;
所述第一控制器还用于,通过所述第一交换设备向所述第一存储设备发送数据获取指令,所述第一存储设备为所述待重删数据块的目标存储设备;所述数据获取指令携带所述第二缓存设备的标识和所述缓存地址;
所述第一存储设备用于根据所述第二缓存设备的标识和所述缓存地址,通过所述第一交换设备和所述第二交换设备,从所述缓存地址中获取所述待重删数据块。
5.根据权利要求4所述的存储阵列系统,其特征在于,
所述第一存储设备还用于通过所述第一交换设备,向所述第一控制器发送所述待重删数据块的存储地址;所述存储地址包括所述第一存储设备归属的第一控制器的控制器标识和所述第一存储设备中存储所述待重删数据块的逻辑存储地址;
所述第一控制器还用于在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引;所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
6.根据权利要求5所述的存储阵列系统,其特征地于,
所述第一控制器还用于通过所述第一交换设备和所述第二交换设备向所述第二控制器发送成功响应消息;
所述第二控制器还用于通过所述第二交换设备通知所述第二缓存设备释放所述待重删数据块的缓存地址。
7.一种在存储阵列系统中数据写请求的处理方法,其特征在于,所述存储阵列系统至少包括第一存储阵列和第二存储阵列,所述第一存储阵列包括第一输入输出管理器,第一交换设备、第一控制器和第一缓存设备,其中,所述第一输入输出管理器与所述第一交换设备连接;所述第一控制器与所述第一交换设备连接;所述第一缓存设备与所述第一交换设备连接;所述第二存储阵列包括第二输入输出管理器,第二交换设备、第二控制器和第二缓存设备,其中,所述第二输入输出管理器与所述第二交换设备连接;所述第二控制器与所述第二交换设备连接;所述第二缓存设备与所述第二交换设备连接;所述第一交换设备与所述第二交换设备连接;所述方法包括:
所述第一输入输出管理器接收主机发送的数据写请求,并通过所述第一交换设备将所述数据写请求发送至所述第一控制器;所述数据写请求中携带有待写入数据地址;
所述第一控制器根据所述数据写请求中携带的待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,并将所述数据写请求通过所述第一交换设备和所述第二交换设备发送给所述第二控制器;
所述第二控制器根据所述数据写请求通过所述第二交换设备在所述第二缓存设备上为所述待写入数据分配缓存地址,并将所述缓存地址通过所述第二交换设备和所述第一交换设备发送给所述第一控制器;
所述第一控制器将接收的所述缓存地址通过所述第一交换设备发送给所述第一输入输出管理器;
所述第一输入输出管理器通过所述第一交换设备和所述第二交换设备将所述待写入数据写入到所述第二缓存设备的所述缓存地址中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述第二控制器通过所述第二交换设备接收所述第二缓存设备发送的所述待写入数据写成功响应消息;
所述第二控制器根据所述写成功响应消息,建立所述待写入数据地址、所述第二缓存设备的标识和所述缓存地址的对应关系。
9.根据权利要求8所述的方法,其特征在于,所述待写入数据地址包括所述待写入数据的目标逻辑单元LU的标识、所述待写入数据的逻辑块地址和所述待写入数据的长度;所述第一控制器根据所述待写入数据地址确定所述待写入数据地址的归属控制器为所述第二控制器,具体为:
所述第一控制器根据所述目标LU的标识,查询所述第一控制器存储的目标LU与控制器的对应关系,确定所述目标LU的归属控制器为所述第二控制器。
10.根据权利要求7所述的方法,其特征在于,所述第一存储阵列还包括第一存储设备,所述第一存储设备与所述第一交换设备连接;所述第二存储阵列还包括第二存储设备,所述第二存储设备与所述第二交换设备连接;所述方法还包括:
所述第一控制器接收所述第二控制器通过所述第一交换设备和所述第二交换设备转发的所述第二缓存设备计算的待重删数据块的特征值;
所述第一控制器在数据块特征值索引集合中查找所述待重删数据块的特征值;
所述第一控制器当在所述数据块特征值索引集合中没有查找到所述待重删数据块的特征值时,通过所述第一交换设备和所述第二交换设备,从所述第二缓存设备获取所述待重删数据块在所述第二缓存设备中的缓存地址;
所述第一控制器通过所述第一交换设备向所述第一存储设备发送数据获取指令,所述第一存储设备为所述待重删数据块的目标存储设备;所述数据获取指令携带所述第二缓存设备的标识和所述缓存地址;
所述第一存储设备根据所述第二缓存设备的标识和所述缓存地址,通过所述第一交换设备和所述第二交换设备,从所述缓存地址中获取所述待重删数据块。
11.根据权利要求10所述的方法,其特征在于,还包括:
所述第一存储设备通过所述第一交换设备,向所述第一控制器发送所述待重删数据块的存储地址;所述存储地址包括所述第一存储设备归属的第一控制器的控制器标识和所述第一存储设备中存储所述待重删数据块的逻辑存储地址;
所述第一控制器在所述数据块特征值索引集合中建立所述待重删数据块的特征值索引;所述待重删数据块的特征值索引包括所述待重删数据块的特征值和所述存储地址。
CN201410856048.2A 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法 Active CN104536702B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410856048.2A CN104536702B (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法
CN201710982805.4A CN107844270A (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410856048.2A CN104536702B (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710982805.4A Division CN107844270A (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法

Publications (2)

Publication Number Publication Date
CN104536702A CN104536702A (zh) 2015-04-22
CN104536702B true CN104536702B (zh) 2017-12-15

Family

ID=52852237

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710982805.4A Withdrawn CN107844270A (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法
CN201410856048.2A Active CN104536702B (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710982805.4A Withdrawn CN107844270A (zh) 2014-12-31 2014-12-31 一种存储阵列系统及数据写请求处理方法

Country Status (1)

Country Link
CN (2) CN107844270A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844270A (zh) * 2014-12-31 2018-03-27 华为技术有限公司 一种存储阵列系统及数据写请求处理方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372359B2 (en) * 2016-05-10 2019-08-06 Chengdu Haicun Ip Technology Llc Processor for realizing at least two categories of functions
AU2016394896B2 (en) * 2016-09-28 2018-08-09 Huawei Technologies Co.,Ltd. Method for deduplication in storage system, storage system, and controller
JP6724252B2 (ja) * 2017-04-14 2020-07-15 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理方法、記憶システムおよび切り換え装置
CN109783469A (zh) * 2018-12-14 2019-05-21 上海威固信息技术股份有限公司 一种基于内容感知的数据去重方法与装置
CN109710183B (zh) * 2018-12-17 2022-09-06 杭州宏杉科技股份有限公司 一种数据同步方法及装置
TWI708145B (zh) 2019-04-30 2020-10-21 威聯通科技股份有限公司 多控制器儲存系統及儲存裝置
CN112181291B (zh) * 2020-09-04 2022-08-02 杭州宏杉科技股份有限公司 数据回写方法、装置、电子设备及机器可读存储介质
CN112559388B (zh) * 2020-12-14 2022-07-12 杭州宏杉科技股份有限公司 数据缓存方法及装置
CN112527209A (zh) * 2020-12-21 2021-03-19 江苏国科微电子有限公司 一种数据写入方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828574A (zh) * 2005-03-04 2006-09-06 富士通株式会社 使用串行连接总线的计算机系统及多cpu互连方法
CN101471882A (zh) * 2007-12-27 2009-07-01 株式会社日立制作所 存储子系统
CN102063274A (zh) * 2010-12-30 2011-05-18 成都市华为赛门铁克科技有限公司 存储阵列和存储系统及数据访问方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216617A (ja) * 1992-01-31 1993-08-27 Canon Inc 表示駆動装置および情報処理システム
CN100341010C (zh) * 2005-05-20 2007-10-03 北京中星微电子有限公司 通过总线进行数据读取的装置和方法
US7653767B2 (en) * 2007-01-23 2010-01-26 International Business Machines Corporation Hierarchical enclosure management services
CN101719912B (zh) * 2009-12-07 2012-11-07 华为技术有限公司 数据处理方法及数据处理系统以及相关设备
WO2015039352A1 (zh) * 2013-09-23 2015-03-26 华为技术有限公司 缓存数据的方法和存储系统
CN107844270A (zh) * 2014-12-31 2018-03-27 华为技术有限公司 一种存储阵列系统及数据写请求处理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828574A (zh) * 2005-03-04 2006-09-06 富士通株式会社 使用串行连接总线的计算机系统及多cpu互连方法
CN101471882A (zh) * 2007-12-27 2009-07-01 株式会社日立制作所 存储子系统
CN102063274A (zh) * 2010-12-30 2011-05-18 成都市华为赛门铁克科技有限公司 存储阵列和存储系统及数据访问方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844270A (zh) * 2014-12-31 2018-03-27 华为技术有限公司 一种存储阵列系统及数据写请求处理方法

Also Published As

Publication number Publication date
CN107844270A (zh) 2018-03-27
CN104536702A (zh) 2015-04-22

Similar Documents

Publication Publication Date Title
CN104536702B (zh) 一种存储阵列系统及数据写请求处理方法
CN105612488B (zh) 数据写请求处理方法和存储阵列
CN105612489B (zh) 重复数据删除方法和存储阵列
JP5373199B2 (ja) キャッシング記憶制御装置間でストレージコマンドのキャッシュアウェア・マルチパス分散を用いたデータ処理システム
US10452316B2 (en) Switched direct attached shared storage architecture
CN100396065C (zh) 一种iSCSI存储系统的实现方法
JP5755026B2 (ja) 複数のストレージシステムにおけるマルチパススイッチング
JP5480834B2 (ja) Sasエクスパンダにおけるデータプリフェッチ
CN107077300A (zh) 用于平衡分段清除与i/o工作负载的速率匹配技术
CN113485636B (zh) 一种数据访问方法、装置和系统
CN105009099A (zh) 计算机系统及数据控制方法
CN104077239B (zh) Ip硬盘与存储系统,及其数据操作方法
US8732381B2 (en) SAS expander for communication between drivers
CN108139941A (zh) 基于网络流控制的动态资源分配
CN107643996A (zh) 包括单端口存储控制器的基于pci express的双端口存储盒
CN103329111A (zh) 一种基于块存储的数据处理方法、装置及系统
CN107729268A (zh) 一种基于capi接口的内存扩展装置与方法
CN105934793A (zh) 一种存储系统数据分发的方法、分发装置与存储系统
CN108604163A (zh) 针对文件访问协议存储的同步复制
CN105808155B (zh) 基于双控制器的读写锁方法及装置
CN108319430A (zh) 处理io请求的方法及装置
CN106527985A (zh) 一种基于ceph的存储交互装置及存储系统
CN109302448A (zh) 一种数据处理方法及装置
CN107992270A (zh) 一种多控存储系统全局共享缓存的方法及装置
US10873543B2 (en) Fiber channel fabric login/logout system

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant