CN111625181B - 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 - Google Patents

数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 Download PDF

Info

Publication number
CN111625181B
CN111625181B CN201910152241.0A CN201910152241A CN111625181B CN 111625181 B CN111625181 B CN 111625181B CN 201910152241 A CN201910152241 A CN 201910152241A CN 111625181 B CN111625181 B CN 111625181B
Authority
CN
China
Prior art keywords
data
xor
storage device
operation result
address
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
CN201910152241.0A
Other languages
English (en)
Other versions
CN111625181A (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 CN201910152241.0A priority Critical patent/CN111625181B/zh
Priority to PCT/CN2019/109088 priority patent/WO2020173092A1/zh
Publication of CN111625181A publication Critical patent/CN111625181A/zh
Application granted granted Critical
Publication of CN111625181B publication Critical patent/CN111625181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据处理的方法,包括:独立硬盘冗余阵列控制器先根据用于请求将第一数据更新为第二数据的写数据请求生成异或写指令再获取异或写指令的运算结果,然后,再向用于存储第二数据的校验数据的校验存储设备发送异或更新指令,该异或更新指令用于指示校验存储设备将第一数据的校验数据更新为第二数据的校验数据,该第二数据的校验数据为第一数据的校验数据和异或写指令的运算结果的异或运算结果。本申请以此提升存储系统的性能。

Description

数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
技术领域
本申请涉及存储技术领域,尤其涉及数据处理方法、独立硬盘冗余阵列控制器和数据存储系统和设备。
背景技术
在存储技术领域中,随着固态硬盘(solid state disk,SSD)读写速度的大大提升,采用SSD组建独立硬盘冗余阵列(redundant array of independent disks,RAID)的存储技术亦带来了数据处理速度的极大提升。
然而,传统的基于RAID的数据存储方案中,每次数据处理过程都是通过RAID控制器完成待写数据的存储位置和校验数据的计算和分配。当待存储数据较大(即数据量较多)时,对RAID控制器的计算资源和计算能力要求较高;而且,由于所有待写数据存储至RAID的磁盘前,均需要经由RAID控制器进行数据的存储位置和校验数据的计算和分配,上述过程中RAID控制器的计算能力直接影响整个存储系统的处理能力和处理效率,容易成为影响存储系统处理效率的瓶颈。
发明内容
本申请公开了一种数据处理方法和设备,能够解决传统技术中RAID控制器成为影响存储系统计算能力瓶颈的问题,提升整个存储系统的计算能力和处理效率。
第一方面,本申请公开提供了一种数据处理方法,应用于包括独立硬盘冗余阵列RAID控制器和至少一个存储设备的数据存储系统:RAID控制器先根据用于请求将已存储数据中的第一数据更新为第二数据的写数据请求生成异或写指令,该异或写指令用于获取第一数据和第二数据的异或运算结果。再获得该异或写指令的运算结果,然后,再向校验存储设备发送用于存储第二数据的校验数据的异或更新指令,该校验存储设备为至少一个存储设备中的任意设备,该异或更新指令用于指示校验存储设备将第一数据的校验数据更新为第二数据的校验数据,该第二数据的校验数据为第一数据的校验数据和异或写指令的运算结果的异或运算结果。
通过实施本申请,能够将数据异或流程和/或校验数据异或流程迁移到存储设备中实现,相比传统技术中RAID控制器完成上述处理过程,可减小RAID控制器的计算资源和计算负荷,同时减小RAID控制器和存储设备之间的数据交换,提升数据处理效率。
在一种可能的实现方式中,该异或写指令中携带第一地址、第二数据的物理地址以及第二数据的逻辑地址,该第一地址为RAID控制器中用于存储异或写指令的运算结果的物理地址,该第二数据的物理地址为第二数据在RAID控制器中存储所用的物理地址,第二数据的逻辑地址为第二数据在数据存储设备中存储所用的逻辑地址,该第一数据的逻辑地址和第二数据的逻辑地址相同。其中,数据存储设备为至少一个存储设备中的设备。相应地,RAID控制器向数据存储设备发送异或写指令,使得数据存储设备根据该异或写指令,读取第二数据的物理地址所存储的第二数据以及第二数据的逻辑地址处已存储的第一数据。进而数据存储设备可对第一数据和第二数据进行异或运算,以获得异或写指令的运算结果。进一步将该异或写指令的运算结果发送至RAID控制器的第一地址处存储。
在实际应用中,数据存储设备和校验存储设备可为同一存储设备,也可为不同的存储设备,具体可根据实际情况确定,本申请并不做限定。
通过实施上述方法,将数据异或迁移至数据存储设备中处理,RAID控制器可获取数据存储设备计算的异或写指令的运算结果,再基于该异或写指令的运算结果获得第二数据的校验数据,这样可减少RAID控制器的计算负荷。
在一种可能的实现方式中,第一数据包括第一旧数据和第二旧数据在内的至少两个旧数据,第二数据包括第一新数据和第二新数据在内的至少两个新数据,该异或写指令至少包括第一异或写指令和第二异或写指令,该第一异或写指令中携带第二地址、第一新数据的物理地址和第一新数据的逻辑地址,第二异或写指令中携带第三地址、第二新数据的物理地址和第二新数据的逻辑地址,该数据存储设备包括第一存储设备和第二存储设备在内的至少两个设备。则RAID控制器具体可向第一存储设备发送第一异或写指令,使得第一存储设备根据第一异或写指令,读取第一新数据的物理地址所存储的第一新数据以及第一新数据的逻辑地址处已存储的第一旧数据,并对第一新数据和第一旧数据进行异或运算以获得第一运算结果。进一步第一存储设备可将第一运算结果发送至RAID控制器的第二地址存储。相应地,RAID控制可向第二存储设备发送第二异或写指令,使得第二存储设备根据第二异或写指令读取第二新数据的物理地址所存储的第二新数据和第二新数据的逻辑地址处已存储的第二旧数据,并对第二新数据和第二旧数据进行异或运算获得第二运算结果。第二存储设备还可将第二运算结果发送至RAID控制器的第三地址存储。
通过实施上述方法,当第二数据较大时数据异或流程可对应迁移至至少两个数据存储设备中处理,相应地RAID控制器需从至少两个数据存储设备中读取异或运算的运算结果,以实现校验数据的更新。相比传统技术而言,可减少RAID控制器和数据存储设备之间的数据交换量,提升数据处理效率。
在一种可能的实现方式中,该异或写指令的运算结果包括第一运算结果和第二运算结果。或者,该异或写指令的运算结果为第一运算结果和第二运算结果的异或运算结果。换句话说,该异或写指令的运算结果可以包括两个数据存储设备各自实现数据异或运算的运算结果,也可包括RAID控制器对这两个运算结果再次进行异或运算的运算结果。
通过实施上述方法,在实现第二数据的校验数据的更新过程中,可将至少两个数据存储设备各自的运算结果的异或运算放在RAID控制器中处理,或者放在校验存储设备中处理,这样能够提升数据处理的多样性。
在一种可能的实现方式中,该异或写指令中携带第一地址、第二数据的物理地址和第二数据的逻辑地址,该第一地址为RAID控制器中用于存储异或写指令的运算结果的物理地址,第二数据的物理地址为第二数据在RAID控制器中存储所用的物理地址,第二数据的逻辑地址为第二数据在数据存储设备中存储所用的逻辑地址,第二数据的逻辑地址和第一数据的逻辑地址相同,数据存储设备为至少一个存储设备中的设备。相应地,RAID控制器根据异或写指令可读取第二数据的逻辑地址处已存储的第一数据以及读取第二数据的物理地址处存储的第二数据。进一步RAID控制器可对第一数据和第二数据进行异或运算,获得该异或写指令的运算结果。
通过实施上述方法,将数据异或流程仍然放在RAID控制器中处理,RAID控制器可根据异或写指令计算获得该异或写指令的运算结果,便于后续将校验数据异或流程放在校验存储设备中处理,以实现校验数据的更新。这样可增加数据处理的多样性,节省数据处理流程,提升数据处理效率。
在一种可能的实现方式中,异或更新指令中携带第一地址和第四地址,该第一地址为RAID控制器中用于存储异或写指令的运算结果的物理地址。第四地址为校验存储设备中用于存储第一数据的校验数据的逻辑地址。相应地,RAID控制器向校验存储设备发送异或更新指令,使得校验存储设备根据该异或更新指令读取第一地址处存储的异或写指令的运算结果以及读取第四地址处存储的第一数据的校验数据。进一步校验存储设备可对异或写指令的运算结果和第一数据的校验数据进行异或运算以获得第二数据的校验数据,进而将第一数据的校验数据更新为第二数据的校验数据。
通过实施上述方法,能够将异或写指令的运算结果和教第一数据的校验数据的异或运算迁移至校验存储设备中处理。相比传统技术数据异或和校验异或均在RAID控制器中处理而言,能减轻RAID控制器的计算负荷,提升RAID控制器的数据处理速度,进而提升数据处理效率。
在一种可能的实现方式中,异或更新指令中携带第二数据的校验数据。具体的,RAID控制器在向校验存储设备发送异或更新指令之前,RAID控制器可从校验存储设备中读取第四地址处存储的第一数据的校验数据;进一步对异或写指令的运算结果和第一数据的校验数据进行异或运算,以获得第二数据的校验数据。
通过实施上述方法,能够将校验数据异或放在RAID控制器中处理,便于RAID控制器后续直接将校验异或获得的第二数据的校验结果发送给校验存储设备更新,节省校验存储设备端的计算资源和计算负荷。
在一种可能的实现方式中,该写数据请求具体用于请求用第二数据对已存储数据中的第一数据进行更新,RAID控制器向校验存储设备发送异或更新指令之前,RAID控制器需确定当前工作在RAID小写模式下。具体的,RAID控制器在确定到满足以下任一条件时,可确定工作在RAID小写模式;否则,确定工作在RAID大写模式下。该条件具体可包括:RAID控制器确定第二数据的大小和存储第二数据用的条带的大小之间的比值小于或等于预设阈值;或者,RAID控制器确定第一读写次数小于或等于第二读写次数,其中第一读写次数为RAID控制器在对第一数据、第二数据以及第一数据的校验数据的异或运算结果进行存储时所需的读写次数,第二读写次数为RAID控制器在对第二数据、存储数据中除第一数据外的数据的异或运算结果进行存储时所需的读写次数。
第二方面,本申请提供了一种数据处理装置,所述装置包括用于执行如上第一方面或第一方面的任意可能的实施方式中所描述的方法的功能模块或单元。
第三方面,本申请还提供了一种RAID控制器,包括:处理器,存储器,通信接口和总线;处理器、通信接口、存储器通过总线相互通信;通信接口,用于接收和发送数据;存储器,用于存储指令;处理器,用于调用存储器中的指令,执行上述第一方面或第一方面的任意可能的实施方式中所描述的方法的操作步骤。
第四方面,本申请提供了一种数据存储系统,包括独立硬盘冗余阵列RAID控制器和至少一个存储设备;其中:
RAID控制器,用于根据写数据请求生成异或写指令,该写数据请求用于请求将第一数据更新为第二数据,该异或写指令用于获得所述第一数据和第二数据的异或运算结果;根据异或写指令获取该异或写指令的运算结果;向校验存储设备发送异或更新指令,该校验存储设备为所述至少一个存储设备中的任意一个。
该校验存储设备,用于接收异或更新指令,根据异或更新指令的指示将第一数据的校验数据更新为第二数据的校验数据,该第二数据的校验数据为第一数据的校验数据和异或写指令的运算结果的异或运算结果。关于本申请未示出或未描述的内容可对应参见前述第一方面所述方法实施例中的相关阐述,这里不再赘述。
第五方面,本申请提供了可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第六方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是本申请实施例提供的一种RAID组建的示意图。
图2是本申请实施例提供的一种数据存储系统的架构示意图。
图3是本申请实施例提供的一种数据处理方法的流程示意图。
图4-图6是本申请实施例提供的几种数据处理的操作示意图。
图7是本申请实施例提供的另一种数据处理方法的流程示意图。
图8是本申请实施例提供的另一种数据处理的操作示意图。
图9是本申请实施例提供的另一种数据处理方法的流程示意图。
图10是本申请实施例提供的另一种数据处理的操作示意图。
图11是本申请实施例提供的一种数据处理装置的结构示意图。
图12是本申请实施例提供的一种数据存储系统的结构示意图。
具体实施方式
首先,阐述本申请涉及的一些技术概念或技术术语。
(一)独立硬盘冗余阵列(redundant array of independent disks,RAID)
在存储技术领域中,RAID是由至少一个逻辑硬盘块组成,该逻辑硬盘块可包括逻辑硬盘(logical disk,LDisk)或者逻辑固态硬盘(logical solid state disk,LSSD)等形态。每个逻辑硬盘块来源于一个或多个存储介质。本申请涉及的存储介质是指存储数据的载体,其可包括但不限于固态硬盘或机械硬盘,其中,机械硬盘包括串行连接的小型计算机系统接口(serial attached small computer system interface,SAS)硬盘、串行高级技术附件(serial advanced technology attachment,SATA)硬盘。
参考图1示出一种RAID的示意图。如图1中,以逻辑硬盘块为LSSD为例,图示中的RAID由4个LSSD组成,分别为LSSD1、LSSD2、LSSD3以及LSSD4。其中,每个LSSD来源于一个或多个SSD,例如LSSD1可来源于SSD1,LSSD2来源于SSD2、LSSD3来源于SSD3、LSSD4来源于SSD2等,其中SSD1~SSD4为互不相同的固态硬盘。LSSD的大小可以根据实际需求划分,每个LSSD的大小相同也可以不同,本申请对此并不作限定。为了便于描述,本申请的以下实施例中,以每个LSSD的大小相同为例进行详细说明。
(二)RAID条带(stripe)
为实现数据的可靠存储,RAID控制器可采用条带技术实现数据的存储。具体的,RAID控制器可根据实际需求将RAID划分为多个条带(也可称为RAID条带)。其中,每个条带的大小(也可以称为条带大小)可根据实际需求确定,例如条带大小可为1G、12G、100G等等。每个条带是由至少一个条带单元组成,该条带单元的数量取决于组成RAID中的逻辑硬盘块(例如LSSD)的数量。组成条带中的每个条带单元的大小可相同。每个条带单元对应有一段逻辑地址范围,本申请中的逻辑地址也可称为逻辑块地址(logical block address,LBA)。便于RAID控制器基于LBA实现数据的存储,具体在本申请下文详述。其中,同一条带中不同条带单元的大小可以相同或不同,本申请并不作限定。为了便于描述,本申请的以下实施例中,以每个条带单元的大小均相同为例进行详细说明。
举例来说,参见图1以一个条带为例示出。如图1中,RAID控制器可根据实际需求划分获得1G的条带,具体可为图中虚线框所示。图示中的条带1由4个条带单元组成,每个条带单元的大小均为1G。
请参见图2,是本申请实施例提供的一种数据存储系统的网络框架示意图。如图2所示,数据存储系统包括:主机22、RAID控制器24以及至少一个存储设备。其中,图2以存储系统包括存储设备1、存储设备2以及存储设备3,共3个存储设备为例进行说明。
其中,主机22可获取写数据请求,该写数据请求用于请求将待存储数据写入至相应存储设备的存储介质中。具体的,主机22可接收其他设备发送的写数据请求。或者,主机22可根据应用程序的自身需求生成写数据请求,例如在邮件应用程序中需更新并保存邮件时即可生成相应地写数据请求。其中,该写数据请求用于对已存储数据进行更新,或者请求存储待写数据。写数据请求中携带有待写数据相关的信息,例如具体的待写数据、待写数据的逻辑地址(具体为逻辑块地址LBA)的起始地址以及待写数据的大小或长度等信息。
主机22获得写数据请求后,可将该写数据请求发送给RAID控制器进行处理,以将写数据请求中的待写数据存储至相应地存储设备中。本申请中涉及的主机22是指具备数据处理能力或计算能力的设备,其可包括但不限于中央处理器(Central Processing Unit,CPU)、通用处理器或其他设备等。
RAID控制器24用于接收主机22发送的写数据请求,并对写数据请求进行处理,以将写数据请求中携带的待写数据存储至相应地存储设备,具体可为存储设备所提供的条带单元中。本申请下文将以待写数据为第二数据为例,详述如何存储第二数据,即如何将第一数据更新为第二数据,以实现第二数据的存储所涉及的相关实施例。其中,RAID控制器和存储设备之间可通过存储通信协议(例如NVMe协议)相互通信,本申请不做限定。
作为一个可能的实施例,RAID控制器还可用于管理RAID,包括对与该RAID控制器通信的至少一个存储设备进行管理,以利用该至少一个存储设备中包括的多个存储介质组建形成一个或多个RAID,进而基于RAID实现数据的存储。进一步地,RAID控制器的内部结构可包括异或加速单元241、存储单元242以及计算单元243。其中,异或加速单元241用于实现数据的异或运算,例如数据D1 XOR数据D1’=R1。存储单元242用于实现数据的存储,例如存储异或加速单元241执行异或运算获得的异或运算结果、或存储来自其他设备(例如存储设备)发送的数据等等。该存储单元242用于存储数据,其可包括但不限于缓存、磁盘或其他存储设备。计算单元243用于实现数据的运算处理,例如基于预设的RAID算法计算获得存储数据的LBA等。关于RAID控制器涉及的相关实施例,具体在本申请下文阐述,这里不再赘述。
在实际应用中,RAID控制器包括的各个单元具体可由硬件或软件代码实现。例如,图示中RAID控制器的各单元可通过专用集成电路(application-specific integratedcircuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现RAID控制器的相关功能,该RAID控制器及其各个单元也可为软件单元。
存储设备又可以区分为数据存储设备和校验存储设备。数据存储设备为用于存储数据写请求中待写入存储设备的数据,校验存储设备用于存储校验数据。对于同一个存储设备而言,既可以作为数据存储设备,也可以作为校验存储设备。具体实施例时,也可以利用独立的存储设备作为校验设备或数据设备,本发明对此并不做限定。
每个存储设备中包括存储控制器以及至少一个存储介质。在实际应用中,每个存储设备中部署的存储介质的数量并不做限定,可以相同,也可不同。如图2中以三个存储设备,每个存储设备中包括n个存储介质为例示出。n为系统自定义设置的正整数,例如根据系统实际需求自定义设置的。如图,存储设备1中包括存储控制器100、存储介质101~存储介质10n。存储设备2中包括存储控制器200、存储介质201~20n。存储设备3中包括存储控制器300、存储介质301~存储介质30n。其中,每个存储控制器(例如存储控制器100)都可用于接收RAID控制器发送的写数据请求(例如拆分后的写数据请求),该写数据请求中携带有新数据、该新数据的LBA以及长度。存储控制器100可响应该写数据请求,根据预先存储的至少一个LBA和PBA之间的对应关系,确定写数据请求中新数据的LBA所对应的PBA以及该PBA所在的存储介质,进而将写数据请求中的新数据发送至该存储介质中,以将该新数据存储至该存储介质中与数据的LBA所对应的PBA处,从而实现数据的存储。
请参见图3,是本申请实施例提供的一种数据处理方法的流程示意图。如图3所示的方法应用于图2所示的数据存储系统中,该方法包括如下实施步骤:
S301、RAID控制器接收主机发送的写数据请求,该写数据请求用于请求将第一数据更新为第二数据。该写数据请求中携带有第二数据、第二数据的逻辑地址LBA以及长度。
该写数据请求用于请求对已存储数据中的第一数据进行更新,具体可为请求将第一数据更新为第二数据。在实际应用中,为节省资源开销,该写数据请求中携带的第二数据,具体可为第二数据在主机中存储的物理地址。便于RAID控制器接收该写数据请求后从该物理地址处读取得到第二数据。本申请下文以写数据请求中携带有第二数据为例进行相关内容的阐述。
S302、RAID控制器根据写数据请求,获得m个写数据子请求,该写数据子请求中携带有新数据、新数据的LBA以及长度。
具体的,RAID控制器根据写数据请求中第二数据的LBA以及长度(即大小),确定承载第二数据的条带单元以及该条带单元对应所在的存储设备,便于RAID控制器将第二数据存储至相应地存储设备,具体可为该存储设备的条带单元中。其中关于条带单元和存储设备的数量并不做限定,取决于第二数据的大小。例如,RAID控制器在确定承载第二数据的条带单元时,如果承载第二数据的条带单元的数量为m,则RAID控制器可对主机发送的写数据请求进行拆分,以将请求中的第二数据拆分为m个新数据,从而获得m个写数据子请求,每个写数据子请求中包括一个新数据、该新数据的LBA以及长度。相应地RAID控制器可对m个写数据子请求进行处理,以实现第二数据的存储和更新。
在实际应用中,当第二数据的长度(即大小)较小时,例如小于或等于一个条带单元的大小,则RAID控制器可直接对写数据请求进行处理,具体的本申请实例中可将写数据请求直接作为第一写数据子请求,第一写数据子请求中的第二数据即为第一新数据。当第二数据的长度(即大小)较大,例如大于一个条带单元的大小时,RAID控制器可对写数据请求(具体对写数据请求中的待写数据)进行拆分,以获得m个新数据以及m个写数据子请求。每个写数据子请求中都携带有一个新数据、该新数据的LBA以及长度。其中,m个新数据组成第二数据(即第二数据包括m个新数据),m个写数据子请求具体可为:第一写数据子请求、第二写数据子请求,…,第m写数据子请求。该第一写数据子请求可携带第一新数据、第一新数据的LBA以及长度。
可选地,第一写数据子请求可用于请求用第一新数据对已存储数据中的第一旧数据进行重写,其中,重写包括将第一旧数据替换为第一新数据,或者将第一旧数据的部分数据替换为第一数据。该第二写数据子请求可携带第二新数据、第二新数据的LBA以及长度。可选地,第二写数据子请求可用于请求用第二新数据对已存储数据中的第二旧数据进行重写。依此类推,第m写数据子请求可携带第m新数据、第m新数据的LBA以及长度,可选地具体可用于请求用第n新数据对已存储数据中的第n旧数据进行更新。本申请下文以m=1,第一写数据子请求为例进行相关内容的阐述,并不构成限定。
在实际应用中,RAID控制器接收主机发送的写数据请求后,可将写数据请求中携带的第二数据(具体可为拆分后的m个新数据)存储至自身的缓存空间(具体为RAID控制器的缓存空间)中。其中,每个新数据对应有各自存储的物理地址,任意两个新数据对应存储的物理地址互不相同。这里的物理地址具体可为RAID控制器中的内存地址或者缓存地址,本申请不做限定。
S303、RAID控制器判断写数据请求是否处于RAID小写模式。
RAID控制器在根据写数据请求生成异或写指令之前,需确定本次数据处理是否处于RAID小写模式。如果是,则继续执行本申请后续S304的流程。如果不是,则RAID控制器按照常规方式来实现第二数据的存储,本申请不做限定。
具体的,RAID控制器可采用以下两种实施方式来确定实现继续执行本申请流程,即确定本次数据处理是否处于RAID小写模式:
第一种,RAID控制器通过判断第二数据(即m个新数据)的大小和存储第二数据所使用的条带大小之间的比例是否超过预设阈值来确定当前是否处于RAID小写模式。如果比例未超过预设阈值,则确定当前处于RAID小写模式,继续执行本申请实施流程步骤。否则,确定当前处于RAID大写模式,结束本申请实施流程,按照常规的数据存储方式来存储数据。该预设阈值为根据用户经验设置的经验值或根据存储系统已存储的数据的历史情况计算获得。例如,当该预设阈值为50%,则表示第二数据的大小占待存储该数据的条带大小的一半以下时,可继续执行本申请实施例流程;否则,按照常规方式实现数据的存储。
举例来说,假设某个条带中存储有四个旧数据:D1、D2、D3以及D4。已存储数据对应的原校验数据P=D1 XOR D2 XOR D3 XOR D4,XOR表示异或。其中,主机根据实际需求可对条带中已存储数据中的第一数据进行更新,例如将D1更新为D1’。则主机可生成相应地写数据请求,并将写数据请求发送给RAID控制器,写数据请求中可携带第二数据(即D1’)、D1’的LBA以及长度。
相应地,RAID控制器接收该写数据请求,可获知第二数据的大小(即所需更新的旧数据的大小)与待存储第二数据的条带大小之间的比例,进而确定是否实施本申请后续流程。本例中,这里RAID控制器可知D1’仅占整个条带存储容量的25%,本次数据处理处于RAID小写模式,可继续执行本申请后续流程。其中,在条带中已存储数据存在更新时,RAID控制器通过旧数据和新数据进行异或运算,将异或运算的结果数据再和原校验数据进行异或运算,可获得新校验数据。这里新校验数据P’=D1 XOR D1’XOR P。
又如,主机根据实际需求需将D1、D2以及D3分别更新为:D1’、D2’以及D3’。则主机可生成相应地写数据请求,并发送给RAID控制器,该写数据请求中携带有第二数据(D1’、D2’以及D3’)、第二数据的LBA(即起始存储LBA)以及长度。相应地RAID控制器接收该写数据请求,获知第二数据的大小,进而确定是否实施本申请后续流程。本例中,RAID控制器可知第二数据(D1’、D2’以及D3’)占条带的75%(3/4),本次数据处理模式处于RAID大写模式,可结束本申请实施流程。其中,此例中不支持RAID小写模式,RAID控制器可采用以下方式获得新校验数据P’:P’=D1’XOR D2’XOR D3’XOR D4。
第二种,RAID控制器通过判断第一读写次数和第二读写次数的大小关系来确定当前是否处于RAID小写模式。具体的,当第一读写次数小于或等于第二读写次数时,确定当前处于RAID小写模式,继续执行本申请实施步骤。否则,确定当前处于RAID大写模式。其中,第一读写次数为RAID控制器在实现对第二数据(即m个新数据)、所述第一数据以及原校验数据进行异或运算获得的运算结果的存储时所需的读写次数。第二读写次数为RAID控制器在实现对第二数据、已存储数据中除所述第一数据外的数据和原校验数据进行异或运算获得的运算结果的存储时所需的读写次数。
举例来说,参考上文RAID大写模式和小写模式的例子,某条带中存储有包括D1、D2、D3以及D4在内的数据,假设主机根据实际需求需将D1更新为D1’,即需利用新数据D1’对旧数据D1进行更新。则第一读写次数即为RAID控制器在存储如下异或运算的运算结果(P’)时的读写次数:P’=D1 XOR D1’XOR P。这里第一读写次数即为4次,分别为:读一次D1、写一次D1’、读一次P以及写一次P’。
第二读写次数即为RAID控制器在存储如下异或运算的运算结果(P’)时的读写次数:P’=D1’XOR D2 XOR D3 XOR D4。这里第二读写次数即为5次,分别为:写一次D1’、各读一次数据D2、D3和D4以及写一次P’。显然地,此例中第一读写次数小于第二读写次数,RAID控制器可继续执行本申请实施例,采用RAID小写模式进行数据更新。
又如,假设主机根据实际需求需将D1、D2以及D3分别更新为:D1’、D2’以及D3’,即需利用3个新数据D1’、D2’以及D3’来对应将旧数据D1、D2以及D3进行更新。则第一读写次数即为RAID控制器在存储如下异或运算的运算结果(P’)时的读写次数:P’=D1 XOR D1’XORD2 XOR D2’XOR D3 XOR D3’XOR P。这里第一读写次数即为8次。第二读写次数即为RAID控制器在存储如下异或运算的运算结果(P’)时的读写次数:P’=D1’XOR D2’XOR D3’XOR D4。这里第二读写次数即为5次。显然地,本例中第一读写次数大于第二读写次数,RAID控制器可结束本申请实施例流程,采用RAID大写模式进行数据更新,即采用常规的数据存储流程实现数据更新。
步骤304、RAID控制器根据第一写数据子请求,生成第一异或写指令(xor write),该第一异或写指令携带有第一新数据的存储地址、第一新数据的LBA以及第二地址。该第二地址用于存储第一异或写指令的运算结果。
RAID控制器根据写数据请求可生成异或写指令,该异或写指令中携带有第一地址、第二数据的物理地址和第二数据的逻辑地址。其中第一地址为RAID控制器中用于存储异或写指令的运算结果的物理地址,第二数据的物理地址为第二数据在RAID控制器中存储时的物理地址,第二数据的逻辑地址为第二数据在数据存储设备中存储时所占的逻辑地址。具体实现时,第二数据较大时,写数据请求将被拆分为多个写数据子请求,本申请下文以第一写数据子请求为例,详述本申请涉及的相关实施例。具体的,RAID控制器在获得第一写数据子请求后,可生成相应地第一异或写指令。该第一异或写指令用于获取第一新数据和第一旧数据的异或运算结果,该第一异或写指令中携带有第一新数据的物理地址、第一数据的LBA以及第二地址。其中,该第二地址为系统自定义设置的,例如根据用户偏好或系统实际需求自定义设置的,RAID控制器中用于存储第一异或写指令的结果数据的物理地址。在实际应用中,该第二地址通常为RAID控制器中的物理地址,例如内存地址或缓存地址等。可选地,该第一异或写指令还可包括第一新数据的长度等信息,本申请并不做限定。
S305、RAID控制器将第一异或写指令发送给数据存储设备,该数据存储设备为第一新数据的LBA对应所在的存储设备。相应地数据存储设备接收该第一异或写指令。
RAID控制器根据第一新数据的LBA可确定该LBA所在的数据存储设备,再将第一异或写指令发送给该数据存储设备进行处理。
S306、数据存储设备根据第一异或写指令中第一新数据的存储地址读取第一新数据,根据第一新数据的LBA读取该LBA对应存储的第一旧数据,并将该第一新数据写入至该第一新数据的LBA中,以更新第一旧数据。
S307、数据存储设备对第一新数据和第一旧数据进行异或运算,获得第一结果数据。数据存储设备将第一结果数据发送至RAID控制器中的第二地址存储。
数据存储设备接收RAID控制器发送的第一异或写指令。再根据第一异或写指令中第一新数据的存储地址,从RAID控制器中该存储地址处读取第一新数据。根据第一异或写指令中第一新数据的LBA,确定该LBA对应的物理地址,也可称为物理块地址(physicalblock address,PBA)。进而读取该PBA处已存储的第一旧数据,并利用第一新数据更新第一旧数据。
具体的,数据存储设备可将该第一新数据存储至该LBA对应的PBA处;或者,数据存储设备可将该第一新数据存储至另一新PBA处,并更新该LBA与PBA之间的对应关系,将该LBA与新PBA对应。即,数据存储设备可解除第一新数据的LBA与原PAB之间的对应关系,新建第一新数据的LBA和新PBA之间的对应关系。可选地,数据存储设备可采用直接内存存取(direct memory access,DMA)方式来读取数据。例如,数据存储设备通过DMA从第一新数据的存储地址处读取该第一新数据,或者通过DMA从第一新数据的LBA所对应的PBA处读取该PBA处存储的第一旧数据等等,以节省数据读取时间,提升数据处理效率。
进一步地,数据存储设备还可根据该第一异或指令对读取的第一旧数据和第一新数据进行异或运算,从而获得第一运算结果,并将该第一运算结果发送至RAID控制器中的第二地址处存储。
在实际应用中,参见图2所示,数据存储设备包括存储控制器和至少一个存储介质。数据存储设备接收第一异或写指令后,通过存储控制器根据第一异或写指令中第一新数据的LBA,确定该第一新数据的LBA所对应的PBA,进而存储控制器从该PBA所在的存储介质中读取该PBA处已存储的第一旧数据。并通过存储控制器根据指令中第一新数据的存储地址从RAID控制器中读取该存储地址中存储的第一新数据,并利用该第一新数据来更新第一旧数据。进一步地,存储控制器可对读取的第一旧数据和第一新数据进行异或运算,获得第一运算结果,并将该第一运算结果写入至RAID控制器中的第二地址处存储。
需要说明的是,本申请上文中读取第一新数据和读取第一旧数据的执行先后顺序,并不做限定。且第一新数据的更新步骤、第一新数据和第一旧数据的异步运算步骤的执行先后顺序同样不做限定,例如两者可并行执行,或者先执行第一新数据的更新步骤、后执行第一新数据和第一旧数据的异或运算步骤等等。在实际应用中,本申请中第一存储设备和校验存储设备可为同一存储设备,也可为不同的存储设备,本申请并不做限定。
S308、RAID控制器向校验存储设备发送异或更新指令(xor update),该异或更新指令携带有第一地址、原校验数据的LBA以及长度。相应地,校验存储设备接收该异或更新指令。该校验存储设备为至少一个存储设备中存储有原校验数据的存储设备。
S309、校验存储设备响应该异或更新指令,根据异或更新指令中原校验数据的LBA以及长度,读取原校验数据,根据第一地址获取异或写指令的运算结果,这里即第一运算结果。
校验存储设备对原校验数据和第一运算结果进行异或运算,从而获得新校验数据(也可称为异或运算结果)。并利用新校验数据对原校验数据进行更新。本申请涉及的原校验数据也可称为第一数据的校验数据,本申请涉及的新校验数据可称为第二数据的校验数据,为方便描述本申请下文均采用原校验数据和新校验数据作为统称,并不做限定。
RAID控制器在获得异或写指令的运算结果后,可向校验存储设备发送异或更新指令,该异或更新指令携带有第一地址、原校验数据的LBA以及长度。
相应地,校验存储设备接收该异或更新指令,并根据该异或更新指令中原校验数据的LBA以及长度,确定原校验数据在本校验存储设备中对应的PBA,进而从该PBA处读取该原校验数据。此外,校验存储设备可根据异或更新指令中携带的第一地址,从RAID控制器中读取该第一地址对应存储的异或写指令的运算结果。可选地,该异或更新指令中也可直接携带异或写指令的运算结果,并非存储该运算结果的第一地址,此时校验存储设备可通过解析异或更新指令直接获得该异或写指令的运算结果。在实际应用中为节省指令开销,异或更新指令中通常携带第一地址,并非该异或写指令的运算结果。本申请下文将以异或更新指令携带地址的方式,进行相关内容的阐述。
接下来,校验存储设备对读取的原校验数据和异或写指令的运算结果进行异或运算,获得新校验数据。校验存储设备可利用该新校验数据来更新原校验数据,具体的,校验存储设备可将该新校验数据写入至原校验数据的LBA所对应的PBA;或者,将该新校验数据写入至另一新PBA处存储,并更新原校验数据的LBA和原PBA之间的对应关系,将原校验数据的LBA与新PBA对应。
在实际应用中,参见图2,校验存储设备包括存储控制器以及至少一个存储介质。具体实现时,校验存储设备接收异或更新指令后,通过存储控制器根据原校验数据的LBA以及长度,确定与之对应的PBA,进而从该PBA中读取原校验数据。存储控制器可根据异或更新指令中的第一地址,从RAID控制器中读取该第一地址对应存储的异或写指令的运算结果。进一步存储控制器可对原校验数据和异或写指令的运算结果进行异或运算,从而获得新校验数据。进而利用该新校验数据来更新原校验数据。
需要说明的是,校验存储设备读取原校验数据以及异或写指令的运算结果的实施步骤,可以并行执行,也可以串行执行,当进行串行执行时,校验存储设备可先读取原校验数据、后读取异或写指令的运算结果,也可以先读取异或写指令的运算结果、后读取原校验数据,并不做限定。此外,本申请上文仅以写数据请求包括一个第一写数据子请求为例,阐述如何实现第一新数据的更新以及原校验数据的更新。同样地当写数据请求包括至少两个写数据子请求时,每个写数据子请求可对应参见前述第一写数据子请求的处理原理,实现各新数据的更新。相应地,RAID控制器在获得每个写数据子请求对应的异或运算结果后,可综合各异或运算结果进而实现原校验数据的更新,具体可参见下文图5或图6示例详述。
下面结合图4-图6举例详述本申请涉及的相关实施例。如图4所示,假设主机根据实际需求需对条带中存储的D1进行重写,假设利用D1’更新D1,该条带中存储有包括D1~D4在内的已存储数据。主机将生成写数据请求,并将该写数据请求发送给RAID控制器,该写数据请求中携带有第二数据(D1’)、D1’的LBA以及长度。该写数据请求用于请求用第二数据D1’对已存储数据中的第一数据D1进行更新。相应地RAID控制器根据该写数据请求,获知D1’大小不超过一个条带单元大小,无需对写数据请求进行拆分,该写数据请求即为第一写数据子请求。
相应地如图4,RAID控制器接收该写数据请求后,可向第一存储设备发送异或写指令,该异或写指令中携带D1’的存储地址、D1’的LBA、长度以及第一地址等信息。可选地,RAID控制器接收写数据请求后,可将写数据请求中携带的待写数据D1’存储至相应地缓存空间中。第一写数据子请求中D1’的存储地址具体可为RAID控制器中存储D1’的地址。相应地,第一存储设备接收该异或写指令,存储控制器从D1’的存储地址处读取D1’。存储控制器读取该D1’的LBA对应存储的旧数据D1,并利用D1’来更新D1,关于如何更新数据具体可参见前述实施例中的相关介绍。存储控制器可对读取的旧数据D1和新数据D1’进行异或运算,获得异或写指令的运算结果D1”,并将该运算结果D1”发送至RAID控制器中的第一地址处存储。
相应地,RAID控制器可向校验存储设备发送异或更新指令,该异或更新指令中携带有原校验数据(P0)的LBA、原校验数据的长度以及第一地址。该第一地址用于存储异或写指令的运算结果。校验存储设备接收异或更新指令,通过自身设备中的存储控制器根据原校验数据的LBA以及长度,读取该LBA对应存储的原校验数据P0;根据第一地址读取异或写指令的运算结果D1”。进一步该存储控制器可对读取的原校验数据P0和第一运算结果D1”进行异或运算,从而获得新校验数据P0’。进一步可将该P0’写入至原校验数据的LBA处,以利用新校验数据P0’更新原校验数据P0
在实际应用中,第二数据中包括的新数据的数量m并不局限于一个。当m大于等于2时,同样可参考上文针对第一写数据子请求中第一新数据的更新原理,实现m个新数据的更新以及原校验数据的更新,本申请不做限定。可选地,当m大于或等于2时,为提升数据处理效率,节省数据读写时长,可将各新数据和各旧数据进行异或运算获得的运算结果发送至RAID控制器中,RAID控制器可实现各运算结果的异或运算,将最终获得的异或运算结果发送至校验存储设备。便于校验存储设备基于该异或运算结果实现原校验数据的更新。本申请下文以m=2为例示出数据处理涉及的两种具体实施例。
请参见图5,假设主机根据实际需求需将某条带中的D1更新为D1’、将D2更新为D2’。相应地RAID控制器可接收主机根据实际需求生成的写数据请求,该写数据请求中携带有第二数据(D1’和D2’)、第二数据的LBA以及长度。由于第二数据较大,RAID控制器可将写数据请求拆分为2个写数据子请求,分别为第一写数据子请求和第二写数据子请求。其中,第一写数据子请求中携带有第一新数据D1’的存储地址、D1’的LBA以及长度,第二写数据子请求中携带有第二新数据D2’、D2’的LBA以及长度。可选地RAID控制器接收写数据请求后,可将写数据请求中携带的第二数据D1’和D2’存储至相应地缓存空间中。相应地第一写数据子请求中D1’的物理地址具体可为RAID控制器中存储D1’的地址。第二写数据子请求中D2’的物理地址为RAID控制器中存储D2’的地址。
进一步RAID控制器可根据第一写数据子请求生成第一异或写指令,并将其发送给第一存储设备。根据第二写数据子请求生成第二异或写指令,并发送给第二存储设备。该第一异或写指令携带有D1’的存储地址、D1’的LBA、长度以及第二地址,第二地址用于存储第一异或写指令的运算结果。该第二异或写指令携带有D2’的存储地址、D2’的LBA、长度以及第三地址,第三地址用于存储第二异或写指令的运算结果。其中,第一存储设备为D1’的LBA对应所在的存储设备,第二存储设备为D2’的LBA对应所在的存储设备。在实际应用中,第一存储设备和第二存储设备可以相同,也可不同,本申请不做限定。
相应地,第一存储设备接收第一异或写指令,通过第一存储设备的存储控制器读取D1’的物理地址处存储的D1’。并通过自身设备的存储控制器读取该D1’的LBA对应存储的第一旧数据D1,并将该D1’写入至第一存储设备中该D1’的LBA所在的存储介质中,以利用D1’更新D1,具体可前文所述。进一步第一存储设备的存储控制器可对读取的第一旧数据D1和第一新数据D1’进行异或运算,获得第一运算结果D1”,并将该第一运算结果D1”发送至RAID控制器中的第二地址处存储。
第二存储设备接收第二异或写指令,通过第二存储设备的存储控制器读取D2’的物理地址处存储的D2’。通过自身设备的存储控制器读取该D2’的LBA对应存储的第二旧数据D2,并用该D2’更新D2。进一步第二存储设备的存储控制器可对读取的第二旧数据D2和第二新数据D2’进行异或运算,以获得第二运算结果D2”,并将该第二运算结果D2”发送至RAID控制器中的第三地址处存储。如图序号2-5示出第一存储设实现数据处理的操作流程,序号6-9示出第二存储设备实现数据处理的操作流程,第一存储设备和第二存储设备各自操作流程中的步骤可以并行执行、也可串行执行。当串行执行时,可先执行序号2-5的操作流程,后执行序号6-9的操作流程;或者,也可先执行序号6-9的操作流程,后执行序号2-5的操作流程本发明并不限定。
进一步的,RAID控制器可向校验存储设备发送异或更新指令,该异或更新指令中携带有第二地址、第三地址、原校验数据P0的LBA以及长度等信息。相应地校验存储设备接收该异或更新指令,通过自身设备的存储控制器根据第二地址读取第一运算结果D1’,根据第三地址读取第二运算结果D2’,根据原校验数据P0的LBA以及长度读取原校验数据P0。进一步校验存储设备的存储控制器可对原校验数据P0、第一运算结果D1”以及第二运算结果D2”进行异或运算,获得新校验数据P0’。进一步可将该P0’写入至原校验数据的LBA处,以利用新校验数据P0’更新原校验数据P0
请参考图6,同样引用并参考图5中的例子,为减少数据读写次数、提升数据处理的效率,RAID控制器可先对第一存储设备计算获得第一运算结果D1”以及第二存储设备计算获得的第二运算结果D2”进行异或运算,获得异或运算结果D3”。便于校验存储设备利用该异或运算结果D3”实现原检验数据P0的更新。
具体的,在RAID控制器接收到第一存储设备发送的第一运算结果D1”和第二存储设备发送的第二运算结果D2”后,可对第一运算结果D1”以及第二运算结果D2”进行异或运算,获得异或运算结果D3”,并缓存至RAID控制器的第一地址中。进一步RAID控制器可向校验存储设备发送异或更新指令,该异或更新指令中携带有第一地址、原校验数据P0的LBA以及长度。相应地校验存储设备接收该异或更新指令,通过自身的存储控制器根据第三地址读取异或运算结果D3”,根据原校验数据P0的LBA以及长度读取原校验数据。进一步对异或运算结果D3”和原校验数据P0进行异或运算,获得新校验数据P0’。进而将该新校验数据P0’写入至原校验数据的LBA处,以利用新校验数据P0’更新原校验数据P0
通过实施本申请实施例,能够将数据异或运算迁移到数据存储设备中执行,将校验异或运算迁移至校验存储设备中执行。相比于传统技术能够减少RAID控制器的计算资源和计算负荷。同时上述数据处理过程还减少了RAID控制器和存储设备之间的数据交换,进而减少数据交换过程中所占用的带宽,从而可有效提高数据处理的速率,提升数据处理的效率。
请参见图7,是本申请实施例提供的另一种数据处理方法的流程示意图。如图7所示的方法应用于图2所示的数据存储系统中,所述方法包括如下实施步骤:
S701、RAID控制器接收主机发送的写数据请求,该写数据请求用于请求用第二数据对已存储数据中的第一数据进行更新,即请求将第一数据更新为第二数据。该写数据请求中携带有第二数据、第二数据的LBA以及长度。
可选地,该写数据请求也可携带第二数据对应存储于主机中的物理地址,便于RAID控制器根据该物理地址从主机中读取获得相应地待写数据。
S702、RAID控制器根据写数据请求,获得m个写数据子请求,该写数据子请求中携带有新数据、新数据的LBA以及长度。
该写数据请求具体用于请求用第二数据对已存储数据中的第一数据进行更新,该新数据为第二数据中的部分数据,m个新数据组成该第二数据,m为正整数。关于S701和S702的相关阐述,具体可参见前述S301和S302中的相关阐述,本申请下文以m=1,第一写数据子请求为例进行相关实施例的阐述。
S703、RAID控制器判定当前是否处于RAID小写模式。
RAID控制器在根据写数据请求生成异或写指令之前,需确定RAID控制器的工作模式,其具体可为RAID小写模式或者RAID大写模式。当RAID控制器确定到处于RAID小写模式时,可继续执行本申请实施流程;否则,结束流程。
S704、RAID控制器根据第一写数据子请求,生成第一异或写指令,该第一异或写指令携带有第一新数据的物理地址、第一新数据的LBA以及第二地址,该第二地址用于存储第一异或写指令的运算结果。
RAID控制器根据写数据请求生成异或写指令,该异或写指令中携带有第一地址、第二数据的物理地址以及第二数据的逻辑地址,其中第一地址为RAID控制器中用于存储该异或写指令的运算结果的物理地址。本申请这里以第一写数据子请求对应生成第一异或写指令为例进行阐述。
S705、RAID控制器将第一异或写指令发送给第一存储设备,该第一存储设备为第一新数据的LBA对应所在的存储设备。相应地第一存储设备接收该第一异或写指令。
S706、第一存储设备根据第一异或写指令中第一新数据的物理地址读取第一新数据,根据第一异或写指令中第一新数据的LBA,读取该LBA对应存储的第一旧数据,并利用该第一新数据更新第一旧数据。
S707、第一存储设备对第一新数据和第一旧数据进行异或运算,获得第一结果数据。第一存储设备将第一结果数据发送至RAID控制器中的第二地址存储。
S708、RAID控制器根据原校验数据的LBA以及长度,从该原校验数据的LBA对应所在的校验存储设备中读取原校验数据。
需要说明的是,本申请中S708和S704可以并行处理,即原校验数据的读取步骤和第一新数据的更新步骤可以并行处理,也可以串行处理。当进行串行处理时,它们的执行顺序并不做限定,例如RAID控制器可先生成异或写指令以实现第一新数据的更新,后读取原校验数据;或者,先读取原校验数据,后实现第一新数据的更新等,本申请不做限定。
S709、RAID控制器对原校验数据和异或写指令的运算结果(这里可为第一运算结果)进行异或运算,从而获得新校验数据,并将该新校验结果写入至原校验数据的LBA处,以对原校验数据进行更新。具体的,RAID控制器可向校验存储设备发送异或更新指令,该异或更新指令携带有新校验数据。相应地校验存储设备接收异或更新指令后,可将该新校验数据写入至原校验数据的LBA处,以利用新校验数据来更新原校验数据。
举例来说,请参见图8示出一种数据处理的操作示意图。假设主机根据实际需求对条带中存储的第一数据D1进行重写,假设利用第二数据D1’更新D1,该条带中存储有包括D1~D4的已存储数据数据。主机将生成写数据请求,并将该写数据请求发送给RAID控制器,该写数据请求中携带有第二数据(D1’)、D1’的LBA以及长度。该写数据请求用于请求用D1’对已存储数据中的D1进行更新。相应地RAID控制器根据该写数据请求,获知D1’大小不超过一个条带单元大小,无需对写数据请求进行拆分,该写数据请求即为第一写数据子请求。
参考图8,RAID控制器接收该写数据请求后,可向第一存储设备发送异或写指令,该异或写指令中携带有D1’的存储地址、D1’的LBA、长度以及第一地址等信息。该D1’的存储地址为RAID控制器中存储D1’的地址。相应地,第一存储设备接收该异或写指令,通过存储控制器读取该D1’的LBA对应存储的旧数据D1,并将该D1’写入至第一存储设备中该D1’的LBA所在的存储介质中,以利用D1’来更新D1。进一步存储控制器可对读取的旧数据D1和新数据D1’进行异或运算,获得该异或写指令的运算结果,即第一运算结果D1”。进而可将该第一运算结果D1”发送至RAID控制器中的第一地址处存储。
RAID控制器根据预存的原校验数据P0的LBA以及长度等信息,从该原校验数据的LBA所在的校验存储设备中读取该原校验数据P0。进一步RAID控制器可对原校验数据P0和第一运算结果D1”进行异或运算,从而获得新校验数据P0’。进而RAID控制器可利用新校验数据P0’更新原校验数据P0
在实际应用中,第二数据中包括的新数据的数量m并不限于一个。当m大于或等于2时,为提升数据处理效率,可将m个新数据和m个旧数据各自进行异或运算的运算结果发送至RAID控制器中。RAID控制器再对m个运算结果进行异或运算,并基于该异或运算的运算结果来实现原校验数据的更新。其中,关于本申请实施例中未阐述或未描述的内容,具体可参见前述图3所述实施例中的相关阐述,这里不再赘述。
通过实施本申请实施例,能够将数据异或运算迁移至数据存储设备中执行,将校验异或运算放在RAID控制器中执行。相比传统技术而言,同样减少RAID控制器的计算资源和计算负荷,同时减少了RAID控制器和存储设备之间的数据交换,提升了数据处理的效率。
请参见图9,是本申请实施例提供的另一种数据处理方法的流程示意图。如图9所示的方法应用于图2所示的数据存储系统中,所述方法包括如下实施步骤:
S901、RAID控制器接收主机发送的写数据请求,该写数据请求用于请求将已存储数据中的第一数据更新为第二数据,该写数据请求中携带有第二数据、第二数据的LBA以及长度。可选地,该写数据请求中也可携带第二数据对应存储于主机中的物理地址,便于RAID控制器后续根据该物理地址从主机中读取获得该第二数据。
S902、RAID控制器根据写数据请求,获得m个写数据子请求,该写数据子请求中携带有新数据、新数据的LBA以及长度。该写数据子请求具体用于请求用该新数据对已存储数据中的旧数据进行更新,该新数据为第二数据中的部分数据,m个新数据组成该第二数据,m为正整数。关于步骤901和902的相关阐述,具体可参见前述步骤301和302中的相关阐述,本申请下文以m=1,第一写数据子请求为例进行相关实施例的阐述。
S903、RAID控制器判定当前是否处于RAID小写模式。
RAID控制器可确定自身设备的工作模式,其具体可为RAID小写模式或者RAID大写模式。当RAID控制器确定到处于RAID小写模式时,可继续执行本申请实施流程;否则,结束流程。
步骤904、RAID控制器根据第一写数据子请求,向第一存储设备发送读数据指令,所述读数据指令用于请求读取第一新数据的LBA处对应存储的第一旧数据。该读数据指令携带有第一新数据的LBA。可选地,该读数据指令还可携带第一新数据的长度等信息。该第一存储设备为第一新数据的LBA对应所在的存储设备。相应地,第一存储设备接收读数据指令。
S905、第一存储设备响应该读数据指令,读取第一新数据的LBA对应存储的第一旧数据,并将该第一旧数据发送至RAID控制器中存储。
S906、RAID控制器根据第一写数据子请求,向第一存储设备发送写数据指令,该写数据指令用于指示将第一新数据存储至该第一新数据的LBA处。该写数据指令携带有第一新数据的物理地址、第一新数据的LBA以及长度等信息。相应地,第一存储设备接收写数据指令。
S907、第一存储设备响应写数据指令,将第一新数据的物理地址处所存储的第一新数据写入至第一新数据的LBA处,以利用第一新数据更新第一旧数据。
具体的,第一存储设备可根据第一新数据的物理地址读取第一新数据,然后将该第一新数据写入至第一新数据的LBA处,便于后续利用第一新数据更新第一旧数据,关于数据如何更新具体可参见前述实施例中的相关阐述。
在实际应用中,S904-S907的替代实现方式也可为:RAID控制器可直接向存储设备发送异或写指令,该异或写指令类似写数据指令,携带有第一新数据的物理地址、第一新数据的LBA以及长度等信息。相应地第一存储设备可响应该第一异或写指令从第一新数据的物理地址处读取第一新数据,从第一新数据的LBA处读取第一旧数据,进而利用第一新数据来更新第一旧数据。
S908、RAID控制器对第一新数据和第一旧数据进行异或运算,获得第一运算结果,并将该第一运算结果存储至RAID控制器中的第一地址处。
S909、RAID控制器向校验存储设备发送异或更新指令,该异或更新指令携带有第一地址、原校验数据的LBA以及长度。相应地,校验存储设备接收该异或更新指令。该校验存储设备为存储有原校验数据的存储设备。
S910、校验存储设备响应该异或更新指令,根据异或更新指令中原校验数据的LBA以及长度,读取原校验数据,根据第一地址获取第一运算结果。校验存储设备对原校验数据和第一运算结果进行异或运算,从而获得新校验数据。并利用新校验数据对原校验数据进行更新。其中,关于本申请实施例中未阐述或未描述的内容,具体可参见前述图3实施例中的相关阐述,这里不再赘述。
举例来说,请参见图10示出另一种数据处理的操作示意图。假设主机根据实际需求对条带中存储的D1进行更新,假设利用D1’更新D1,该条带中存储有包括D1~D4的已存储数据。主机将生成写数据请求,并将该写数据请求发送给RAID控制器,该写数据请求中携带有第二数据(D1’)、D1’的LBA以及长度。该写数据请求用于请求用D1’对已存储数据中的D1进行更新。相应地RAID控制器根据该写数据请求,获知D1’大小不超过一个条带单元大小,无需对写数据请求进行拆分,该写数据请求即为第一写数据子请求。
参见图10,RAID控制器接收该写数据请求后,可根据D1’的LBA以及长度,从第一存储设备中读取该D1’的LBA对应存储的旧数据D1。进一步RAID控制器可对新数据D1’和旧数据D1进行异或运算,获得第一运算结果D1”,并将该第一运算结果D1”发送至RAID控制器中的第一地址处存储。
进一步RAID控制器可向校验存储设备发送异或更新指令,该异或更新指令中携带有第一地址、原校验数据(P0)的LBA以及长度。相应地校验存储设备接收该异或更新指令,通过自身设备的存储控制器根据原校验数据的LBA以及长度,读取该LBA对应存储的原校验数据P0;根据第一地址读取第一运算结果D1”。进一步该存储控制器可对读取的原校验数据P0和第一运算结果D1”进行异或运算,从而获得新校验数据P0’。进一步可将该P0’写入至原校验数据的LBA处,以利用新校验数据P0’更新原校验数据P0
在实际应用中,第二数据中包括的新数据的数量m并不局限于一个。当m大于等于2时,同样可参考上文针对第一写数据子请求中第一新数据的更新原理,实现m个新数据的更新以及原校验数据的更新,本申请不做限定。
通过实施本申请实施例,能够将数据异或运算放在RAID控制器中执行,将校验异或运算迁移至校验存储设备中执行,相比传统技术方案能够减少RAID控制器的计算资源的占用,降低RAID控制器的负载。上述处理过程同样可以减少了RAID控制器和存储设备之间的数据交换,进而减少存储系统内数据交换所占用的带宽,以及多次数据交换过程所导致的处理过程的时延,进一步提升了数据存储系统中数据处理的效率,降低了数据处理的时延。
结合上文图1-图10所述实施例中的相关描述,下面介绍本申请适用的相关装置。请参见图11是本申请实施例提供的一种数据处理装置的结构示意图。如图11所示的数据处理装置11包括生成模块112、获取模块114以及通信模块116。其中,
所述生成模块112,用于根据写数据请求生成异或写指令,所述写数据请求用于请求将第一数据更新为第二数据,所述异或写指令用于获得所述第一数据和第二数据的异或运算结果;
所述获取模块114,用于根据所述异或写指令获取所述异或写指令的运算结果;
所述通信模块116,用于向校验存储设备发送异或更新指令,所述校验存储设备用于存储所述第二数据的校验数据,所述校验存储设备为所述至少一个存储设备中的任意一个,所述异或更新指令用于指示所述校验存储设备将所述第一数据的校验数据更新为所述第二数据的校验数据,所述第二数据的校验数据为所述第一数据的校验数据和所述异或写指令的运算结果的异或运算结果。
具体实现时,获取模块114涉及的实现功能具体也可应用在图2中的异或加速单元241或者计算单元243中实现。图2中存储单元242涉及的存储功能同样也可应用在本申请实施例中,即本申请图11所示的数据处理装置中同样可包括存储模块(图未示),用于存储数据处理装置中涉及的数据,例如存储异或写指令的运算结果等。
可选的,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为RAID控制器(本申请的数据处理装置)中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述数据存储设备为所述至少一个存储设备中的设备。所述通信模块116具体用于向所述数据存储设备发送所述异或写指令,使得所述数据存储设备根据所述异或写指令读取所述第二数据的物理地址所存储的所述第二数据和所述第二数据的逻辑地址中已存储的所述第一数据,并对所述第一数据和所述第二数据进行异或运算获得所述异或写指令的运算结果,以将所述异或写指令的运算结果发送至所述RAID控制器的所述第一地址存储;所述通信模块116还用于接收所述数据存储设备发送的所述异或写指令的运算结果,并将所述异或写指令的运算结果存储至所述第一地址。
可选的,所述第一数据包括第一旧数据和第二旧数据在内的至少两个旧数据,所述第二数据包括第一新数据和第二新数据在内的至少两个新数据,则所述异或写指令至少包括第一异或写指令和第二异或写指令,所述第一异或写指令中携带第二地址、所述第一新数据的物理地址和所述第一新数据的逻辑地址,所述第二异或写指令中携带第三地址、所述第二新数据的物理地址和所述第二新数据的逻辑地址,所述数据存储设备包括第一存储设备和第二存储设备在内的至少两个设备,所述通信模块116还用于向所述第一存储设备发送所述第一异或写指令,使得所述第一存储设备根据所述第一异或写指令读取所述第一新数据的物理地址所存储的所述第一新数据和所述第一新数据的逻辑地址中已存储的所述第一旧数据,并对所述第一新数据和所述第一旧数据进行异或运算获得第一运算结果,以将所述第一运算结果发送至所述RAID控制器的所述第二地址存储;所述通信模块116还用于向所述第二存储设备发送所述第二异或写指令,使得所述第二存储设备根据所述第二异或写指令读取所述第二新数据的物理地址所存储的所述第二新数据和所述第二新数据的逻辑地址中已存储的所述第二旧数据,并对所述第二新数据和所述第二旧数据进行异或运算获得第二运算结果,以将所述第二运算结果发送至所述RAID控制器的所述第三地址存储。
可选的,所述异或写指令的运算结果包括所述第一运算结果和所述第二运算结果;或者,所述异或写指令的运算结果为所述第一运算结果和所述第二运算结果的异或运算结果。
可选的,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述第二数据的逻辑地址和所述第一数据的逻辑地址相同,所述数据存储设备为所述至少一个存储设备中的设备;所述获取模块114用于根据所述异或写指令,读取所述第二数据的逻辑地址中已存储的所述第一数据和所述第二数据的物理地址中所存储的所述第二数据;所述获取模块114还用于对所述第一数据和所述第二数据进行异或运算,以获得所述异或写指令的运算结果。
可选的,所述异或更新指令中携带所述第一地址以及第四地址,所述第四地址为所述校验存储设备中用于存储所述第一数据的校验数据的逻辑地址;所述通信模块116用于向所述校验存储设备发送所述异或更新指令,使得所述校验存储设备根据所述异或更新指令读取所述第一地址所存储的所述异或写指令的运算结果和所述第四地址所存储的所述第一数据的校验数据,并对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算获得所述第二数据的校验数据,以将所述第一数据的校验数据更新为所述第二数据的校验数据。
可选的,所述异或更新指令中携带所述第二数据的校验数据;所述获取模块114还用于获取所述校验存储设备中存储的所述第一数据的校验数据;对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算,以获得所述第二数据的校验数据。
可选的,所述写数据请求用于请求用所述第二数据对存储数据中的第一数据进行更新,所述数据处理装置还包括确定模块118。所述确定模块118用于确定所述第二数据的大小和存储所述第二数据所用的条带的大小之间的比值小于或等于预设阈值;或者,所述确定模块118用于确定第一读写次数小于或等于第二读写次数,其中所述第一读写次数为所述RAID控制器在实现对所述第一数据、所述第二数据和所述第一数据的校验数据的异或运算结果进行存储时所需的读写次数,所述第二读写次数为所述RAID控制器在实现对所述第二数据和所述存储数据中除所述第一数据之外的数据的异或运算结果进行存储时所需的读写次数。
在实际应用中,本申请实施例的装置11可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现,当由软件实现时,装置11以及装置中的各个模块的功能也都可以是软件模块。
通过实施本申请实施例,能够将数据异或运算和/或校验异或运算迁移至存储设备中执行,相比于传统技术均在RAID控制器中执行而言,能够降低RAID控制器的资源开销以及计算负荷。上述数据处理过程同样可以减小RAID控制器和存储设备之间的数据交换,进而减少数据交换所占的带宽和时延,从而提升了数据处理的效率。
请参见图12是本申请实施例提供的一种数据存储系统,该数据存储系统12中包括RAID控制器122和至少一个存储设备。该至少一个存储设备中包括有校验存储设备124和数据存储设备126,该数据存储设备和校验存储设备的数量并不做限定。数据存储设备为用于存储数据写请求中待写入存储设备的数据,校验存储设备用于存储校验数据。对于同一个存储设备而言,即可以作为数据存储设备,也可以作为校验存储设备。具体实施例时,也可以利用独立的存储设备作为校验设备或数据设备,本发明对此并不做限定。本申请图示分别以互不相同的一个校验存储设备124和一个数据存储设备126为例示出。
如图12所示,RAID控制器122包括一个或多个处理器1221、通信接口1222和存储器1223,处理器1221、通信接口1222和存储器1223可通过总线方式连接,也可通过无线传输等其他手段实现通信。本申请实施例以通过总线1224连接为例其中,该存储器1223用于存储指令,该处理器1221用于执行该存储器1223存储的指令。该存储器1223存储程序代码,且处理器1221可以调用存储器1223中存储的程序代码执行以下操作:
根据写数据请求生成异或写指令,所述写数据请求用于请求将第一数据更新为第二数据,所述异或写指令用于获得所述第一数据和第二数据的异或运算结果;
根据所述异或写指令获取所述异或写指令的运算结果;
向校验存储设备发送异或更新指令,所述校验存储设备用于存储所述第二数据的校验数据,所述校验存储设备为所述至少一个存储设备中的任意一个,所述异或更新指令用于指示所述校验存储设备将所述第一数据的校验数据更新为所述第二数据的校验数据,所述第二数据的校验数据为所述第一数据的校验数据和所述异或写指令的运算结果的异或运算结果。
如图所示的校验存储设备124包括一个或多个处理器1241、通信接口1242和存储器1243,处理器1241、通信接口1242和存储器1243可通过总线方式连接,也可通过无线传输等其他手段实现通信。本申请实施例以通过总线1244连接为例其中,该存储器1243用于存储指令,该处理器1241用于执行该存储器1243存储的指令。该存储器1243存储程序代码,且处理器1241可以调用存储器1243中存储的程序代码执行以下操作:
接收RAID控制器发送的异或更新指令;
根据所述异或更新指令的指示,将第一数据的校验数据更新为第二数据的校验数据,所述第二数据的校验数据为所述第一数据的校验数据和所述异或写指令的运算结果的异或运算结果。
如图所示的数据存储设备126包括一个或多个处理器1261、通信接口1262和存储器1263,处理器1261、通信接口1262和存储器1263可通过总线方式连接,也可通过无线传输等其他手段实现通信。本申请实施例以通过总线1264连接为例其中,该存储器1263用于存储指令,该处理器1261用于执行该存储器1263存储的指令。该存储器1263存储程序代码,且处理器1261可以调用存储器1263中存储的程序代码执行以下操作:
接收RAID控制器发送的异或写指令,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述数据存储设备为所述至少一个存储设备中的设备;
根据所述异或写指令读取所述第二数据的物理地址所存储的所述第二数据和所述第二数据的逻辑地址中已存储的所述第一数据,并对所述第一数据和所述第二数据进行异或运算获得所述异或写指令的运算结果,以将所述异或写指令的运算结果发送至所述RAID控制器的所述第一地址存储。
其中,在实际应用中本申请涉及的数据存储设备和校验存储设备均为图2所示的数据存储系统中至少一个存储设备中的任意设备,它们可以相同,也可不相同。关于本申请未示出或未阐述的内容可具体参见前述图2-图11所示实施例中的相关阐述,这里不再赘述。
应理解的,处理器(具体可为处理器1221、1241、或1261)可以由一个或者多个通用处理器构成,例如中央处理器(Central Processing Unit,CPU)。处理器可用于运行相关的程序代码中以执行相应操作,实现相关功能模块的功能。示例性地,处理器1221可运行相关的程序代码实现如图11或图2所示的功能模块或单元,具体的图11所示的生成模块、获取模块、通信模块以及确定模块,图2所示的异或加速单元以及计算单元等等。关于这里提及的各个功能模块或单元具体可参见前述实施例中的相关阐述,这里不再赘述。
通信接口(具体可为通信接口1222、1242或者1262),可以为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块/设备进行通信。例如,本申请实施例中通信接口1222具体可用于接收数据存储设备发送的异或写指令的运算结果等。
存储器(具体可为存储器1223、1243或者1263)可以包括易失性存储器(VolatileMemory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器503还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用该存储器中存储的程序代码以执行相应地操作步骤。
需要说明的,图12仅仅是本申请实施例的一种可能的实现方式,图12所述存储系统可以对应图2所述存储系统,也可以是其他RAID控制器和存储设备的组合。实际应用中,数据存储系统中涉及的各设备还可以包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,可参见前述图1-图11所述实施例中的相关阐述,这里不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图3、图7或图9所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图3、图7或图9所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种数据处理的方法,其特征在于,所述方法应用于数据存储系统,所述数据存储系统包括独立硬盘冗余阵列RAID控制器和至少一个存储设备,所述方法包括:
所述RAID控制器根据写数据请求生成异或写指令,所述写数据请求用于请求将第一数据更新为第二数据,所述异或写指令用于获得所述第一数据和第二数据的异或运算结果;
所述RAID控制器向数据存储设备发送所述异或写指令,并获取所述异或写指令的运算结果,所述数据存储设备用于存储所述写数据请求中待写入存储设备的所述第二数据,以及根据所述异或写指令执行所述第一数据和所述第二数据的异或运算操作;
所述RAID控制器向校验存储设备发送异或更新指令,所述校验存储设备用于存储所述第二数据的校验数据,所述校验存储设备为所述至少一个存储设备中的任意一个,所述异或更新指令用于指示所述校验存储设备将所述第一数据的校验数据更新为所述第二数据的校验数据,所述第二数据的校验数据为所述第一数据的校验数据和所述异或写指令的运算结果的异或运算结果;
其中,所述第二数据超过一个条带单元大小时,所述写数据请求包括两个写数据子请求,所述第一数据包括第一旧数据和第二旧数据在内的至少两个旧数据,所述第二数据包括第一新数据和第二新数据在内的至少两个新数据,则所述异或写指令至少包括第一异或写指令和第二异或写指令,所述第一异或写指令中携带第二地址、所述第一新数据的物理地址和所述第一新数据的逻辑地址,所述第二异或写指令中携带第三地址、所述第二新数据的物理地址和所述第二新数据的逻辑地址;
所述异或写指令的运算结果包括第一运算结果和第二运算结果;或者,所述异或写指令的运算结果为所述第一运算结果和所述第二运算结果的异或运算结果,所述第一运算结果为对所述第一新数据和所述第一旧数据进行异或运算获得的,所述第二运算结果为对所述第二新数据和所述第二旧数据进行异或运算获得的。
2.根据权利要求1所述方法,其特征在于,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述数据存储设备为所述至少一个存储设备中的设备;则所述RAID控制器向数据存储设备发送所述异或写指令并获取所述异或写指令的运算结果,包括:
所述RAID控制器向所述数据存储设备发送所述异或写指令,使得所述数据存储设备根据所述异或写指令读取所述第二数据的物理地址所存储的所述第二数据和所述第二数据的逻辑地址中已存储的所述第一数据,并对所述第一数据和所述第二数据进行异或运算获得所述异或写指令的运算结果,以将所述异或写指令的运算结果发送至所述RAID控制器的所述第一地址存储;
所述RAID控制器接收所述数据存储设备发送的所述异或写指令的运算结果,并将所述异或写指令的运算结果存储至所述第一地址。
3.根据权利要求2所述方法,其特征在于,所述数据存储设备包括第一存储设备和第二存储设备在内的至少两个设备;则所述RAID控制器根据所述异或写指令获取所述异或写指令的运算结果,包括:
所述RAID控制器向所述第一存储设备发送所述第一异或写指令,使得所述第一存储设备根据所述第一异或写指令读取所述第一新数据的物理地址所存储的所述第一新数据和所述第一新数据的逻辑地址中已存储的所述第一旧数据,并对所述第一新数据和所述第一旧数据进行异或运算获得第一运算结果,以将所述第一运算结果发送至所述RAID控制器的所述第二地址存储;
所述RAID控制器向所述第二存储设备发送所述第二异或写指令,使得所述第二存储设备根据所述第二异或写指令读取所述第二新数据的物理地址所存储的所述第二新数据和所述第二新数据的逻辑地址中已存储的所述第二旧数据,并对所述第二新数据和所述第二旧数据进行异或运算获得第二运算结果,以将所述第二运算结果发送至所述RAID控制器的所述第三地址存储。
4.根据权利要求1所述的方法,其特征在于,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述第二数据的逻辑地址和所述第一数据的逻辑地址相同,所述数据存储设备为所述至少一个存储设备中的设备;则所述RAID控制器根据所述异或写指令获取所述异或写指令的运算结果,包括:
所述RAID控制器根据所述异或写指令,读取所述第二数据的逻辑地址中已存储的所述第一数据和所述第二数据的物理地址中所存储的所述第二数据;
所述RAID控制器对所述第一数据和所述第二数据进行异或运算,以获得所述异或写指令的运算结果。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述异或更新指令中携带所述第一地址以及第四地址,所述第四地址为所述校验存储设备中用于存储所述第一数据的校验数据的逻辑地址;
所述RAID控制器向所述校验存储设备发送所述异或更新指令,使得所述校验存储设备根据所述异或更新指令读取所述第一地址所存储的所述异或写指令的运算结果和所述第四地址所存储的所述第一数据的校验数据,并对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算获得所述第二数据的校验数据,以将所述第一数据的校验数据更新为所述第二数据的校验数据。
6.根据权利要求2或3所述的方法,其特征在于,所述异或更新指令中携带所述第二数据的校验数据;所述RAID控制器向校验存储设备发送异或更新指令之前,所述方法还包括:
所述RAID控制器获取所述校验存储设备中存储的所述第一数据的校验数据;
所述RAID控制器对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算,以获得所述第二数据的校验数据。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述写数据请求用于请求用所述第二数据对存储数据中的第一数据进行更新,所述RAID控制器向校验存储设备发送异或更新指令之前,所述方法还包括:
所述RAID控制器确定所述第二数据的大小和存储所述第二数据所用的条带的大小之间的比值小于或等于预设阈值;或者,
所述RAID控制器确定第一读写次数小于或等于第二读写次数,其中所述第一读写次数为所述RAID控制器在实现对所述第一数据、所述第二数据和所述第一数据的校验数据的异或运算结果进行存储时所需的读写次数,所述第二读写次数为所述RAID控制器在实现对所述第二数据和所述存储数据中除所述第一数据之外的数据的异或运算结果进行存储时所需的读写次数。
8.一种数据存储系统,其特征在于,包括独立硬盘冗余阵列RAID控制器和至少一个存储设备;其中,
所述RAID控制器,用于根据写数据请求生成异或写指令,所述写数据请求用于请求将第一数据更新为第二数据,所述异或写指令用于获得所述第一数据和第二数据的异或运算结果;向数据存储设备发送所述异或写指令,并获取所述异或写指令的运算结果,所述数据存储设备用于存储所述写数据请求中待写入存储设备的所述第二数据,以及根据所述异或写指令执行所述第一数据和所述第二数据的异或运算操作,所述数据存储设备为所述至少一个存储设备中的任意一个;向校验存储设备发送异或更新指令,所述校验存储设备为所述至少一个存储设备中的任意一个;
所述校验存储设备,用于接收所述异或更新指令,根据所述异或更新指令的指示将所述第一数据的校验数据更新为所述第二数据的校验数据,所述第二数据的校验数据为所述第一数据的校验数据和所述异或写指令的运算结果的异或运算结果;
其中,所述第二数据超过一个条带单元大小时,所述写数据请求包括两个写数据子请求,所述第一数据包括第一旧数据和第二旧数据在内的至少两个旧数据,所述第二数据包括第一新数据和第二新数据在内的至少两个新数据,则所述异或写指令至少包括第一异或写指令和第二异或写指令,所述第一异或写指令中携带第二地址、所述第一新数据的物理地址和所述第一新数据的逻辑地址,所述第二异或写指令中携带第三地址、所述第二新数据的物理地址和所述第二新数据的逻辑地址;
所述异或写指令的运算结果包括第一运算结果和第二运算结果;或者,所述异或写指令的运算结果为所述第一运算结果和所述第二运算结果的异或运算结果,所述第一运算结果为对所述第一新数据和所述第一旧数据进行异或运算获得的,所述第二运算结果为对所述第二新数据和所述第二旧数据进行异或运算获得的。
9.根据权利要求8所述的系统,其特征在于,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述数据存储设备为所述至少一个存储设备中的设备;
所述数据存储设备,用于根据所述异或写指令读取所述第二数据的物理地址所存储的所述第二数据和所述第二数据的逻辑地址中已存储的所述第一数据,并对所述第一数据和所述第二数据进行异或运算获得所述异或写指令的运算结果,以将所述异或写指令的运算结果发送至所述RAID控制器的所述第一地址存储;
所述RAID控制器,还用于接收所述数据存储设备发送的所述异或写指令的运算结果,并将所述异或写指令的运算结果存储至所述第一地址。
10.根据权利要求9所述的系统,其特征在于,所述数据存储设备包括第一存储设备和第二存储设备在内的至少两个设备,
所述RAID控制器,还用于向所述第一存储设备发送所述第一异或写指令;向所述第二存储设备发送所述第二异或写指令;
所述第一存储设备,用于根据所述第一异或写指令读取所述第一新数据的物理地址所存储的所述第一新数据和所述第一新数据的逻辑地址中已存储的所述第一旧数据,并对所述第一新数据和所述第一旧数据进行异或运算获得第一运算结果,以将所述第一运算结果发送至所述RAID控制器的所述第二地址存储;
所述第二存储设备,用于根据所述第二异或写指令读取所述第二新数据的物理地址所存储的所述第二新数据和所述第二新数据的逻辑地址中已存储的所述第二旧数据,并对所述第二新数据和所述第二旧数据进行异或运算获得第二运算结果,以将所述第二运算结果发送至所述RAID控制器的所述第三地址存储。
11.根据权利要求8所述的系统,其特征在于,所述异或写指令中携带第一地址、所述第二数据的物理地址和所述第二数据的逻辑地址,所述第一地址为所述RAID控制器中用于存储所述异或写指令的运算结果的物理地址,所述第二数据的物理地址为所述第二数据在所述RAID控制器中存储所用的物理地址,所述第二数据的逻辑地址为所述第二数据在数据存储设备中存储所用的逻辑地址,所述第二数据的逻辑地址和所述第一数据的逻辑地址相同,所述数据存储设备为所述至少一个存储设备中的设备;
所述RAID控制器,用于根据所述异或写指令,读取所述第二数据的逻辑地址中已存储的所述第一数据和所述第二数据的物理地址中所存储的所述第二数据;对所述第一数据和所述第二数据进行异或运算,以获得所述异或写指令的运算结果。
12.根据权利要求9-11中任一项所述的系统,其特在于,所述异或更新指令中携带所述第一地址以及第四地址,所述第四地址为所述校验存储设备中用于存储所述第一数据的校验数据的逻辑地址;
所述校验存储设备,还用于根据所述异或更新指令读取所述第一地址所存储的所述异或写指令的运算结果和所述第四地址所存储的所述第一数据的校验数据,并对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算获得所述第二数据的校验数据,以将所述第一数据的校验数据更新为所述第二数据的校验数据。
13.根据权利要求9-11中任一项所述的系统,其特征在于,所述异或更新指令中携带所述第二数据的校验数据;
所述RAID控制器,还用于在向校验存储设备发送异或更新指令之前,获取所述校验存储设备中存储的所述第一数据的校验数据;对所述异或写指令的运算结果和所述第一数据的校验数据进行异或运算,以获得所述第二数据的校验数据。
14.根据权利要求8-11中任一项所述的系统,其特征在于,所述写数据请求用于请求用所述第二数据对存储数据中的第一数据进行更新;
所述RAID控制器,还用于在向校验存储设备发送异或更新指令之前,确定所述第二数据的大小和存储所述第二数据所用的条带的大小之间的比值小于或等于预设阈值;或者,确定第一读写次数小于或等于第二读写次数;
其中,所述第一读写次数为所述RAID控制器在实现对所述第一数据、所述第二数据和所述第一数据的校验数据的异或运算结果进行存储时所需的读写次数,所述第二读写次数为所述RAID控制器在实现对所述第二数据和所述存储数据中除所述第一数据之外的数据的异或运算结果进行存储时所需的读写次数。
15.一种独立硬盘冗余阵列RAID控制器,其特征在于,包括处理器,存储器,通信接口和总线;所述处理器、所述通信接口和所述存储器通过总线相互通信;所述通信接口,用于接收和发送数据;所述存储器,用于存储指令;所述处理器,用于调用所述存储器中的指令,执行如上权利要求1-7中任一项所述方法的操作步骤。
CN201910152241.0A 2019-02-28 2019-02-28 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 Active CN111625181B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910152241.0A CN111625181B (zh) 2019-02-28 2019-02-28 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
PCT/CN2019/109088 WO2020173092A1 (zh) 2019-02-28 2019-09-29 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910152241.0A CN111625181B (zh) 2019-02-28 2019-02-28 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统

Publications (2)

Publication Number Publication Date
CN111625181A CN111625181A (zh) 2020-09-04
CN111625181B true CN111625181B (zh) 2022-03-29

Family

ID=72240186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910152241.0A Active CN111625181B (zh) 2019-02-28 2019-02-28 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统

Country Status (2)

Country Link
CN (1) CN111625181B (zh)
WO (1) WO2020173092A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117377940A (zh) * 2021-05-27 2024-01-09 华为技术有限公司 数据处理装置及数据处理方法
CN113687977B (zh) * 2021-09-07 2024-05-28 天津津航计算技术研究所 基于raid控制器以实现计算性能提升的数据处理装置
CN113687978B (zh) * 2021-09-07 2024-05-28 天津津航计算技术研究所 用于存储阵列控制器的数据处理方法
CN114546272B (zh) * 2022-02-18 2024-04-26 山东云海国创云计算装备产业创新中心有限公司 快速通用的raid降级为raid5的方法、系统、设备和存储介质
CN114756404B (zh) * 2022-06-15 2024-04-05 上海江波龙数字技术有限公司 数据处理方法、装置、电子设备及存储介质
CN117369732B (zh) * 2023-12-07 2024-02-23 苏州元脑智能科技有限公司 一种逻辑盘处理方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
CN101763220A (zh) * 2008-12-25 2010-06-30 成都市华为赛门铁克科技有限公司 一种数据更新的方法、控制器及存储系统
CN102184079A (zh) * 2011-04-29 2011-09-14 华中科技大学 一种raid5级别磁盘阵列的写性能优化方法
CN109358809A (zh) * 2018-09-28 2019-02-19 方信息科技(上海)有限公司 一种raid数据存储系统及方法
CN109358980A (zh) * 2018-09-25 2019-02-19 华东交通大学 一种对数据更新和单磁盘错误修复友好的raid6编码方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5502883B2 (ja) * 2008-11-19 2014-05-28 エルエスアイ コーポレーション Raid情報のメモリ効率検査
CN101984400B (zh) * 2010-11-05 2012-10-03 成都市华为赛门铁克科技有限公司 一种raid控制方法、装置及系统
US20120158652A1 (en) * 2010-12-15 2012-06-21 Pavan Ps System and method for ensuring consistency in raid storage array metadata
WO2018227277A1 (en) * 2017-06-12 2018-12-20 Royal Bank Of Canada System and method for adaptive data visualization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
CN101763220A (zh) * 2008-12-25 2010-06-30 成都市华为赛门铁克科技有限公司 一种数据更新的方法、控制器及存储系统
CN102184079A (zh) * 2011-04-29 2011-09-14 华中科技大学 一种raid5级别磁盘阵列的写性能优化方法
CN109358980A (zh) * 2018-09-25 2019-02-19 华东交通大学 一种对数据更新和单磁盘错误修复友好的raid6编码方法
CN109358809A (zh) * 2018-09-28 2019-02-19 方信息科技(上海)有限公司 一种raid数据存储系统及方法

Also Published As

Publication number Publication date
WO2020173092A1 (zh) 2020-09-03
CN111625181A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN111625181B (zh) 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
US11126353B2 (en) Method and apparatus for data copy
CN111512289B (zh) 在对等存储系统中使用故障存储设备来执行以存储为中心的任务
US9934108B2 (en) System and method for optimizing mirror creation
CN107305534B (zh) 同时进行内核模式访问和用户模式访问的方法
EP4216515A1 (en) Method and apparatus for transmitting data processing request
CN109791522B (zh) 数据迁移的方法、系统及智能网卡
US10877701B2 (en) Scale-out type storage system
US20180113635A1 (en) Memory controller utilizing scatter gather list techniques
US9697079B2 (en) Protecting data integrity in de-duplicated storage environments in combination with software defined native raid
JP2023036774A (ja) 共有メモリのアクセス制御方法、共有メモリのアクセス制御装置、電子機器および自動運転車両
US11966585B2 (en) Storage device and storage system
US20170262220A1 (en) Storage control device, method of controlling data migration and non-transitory computer-readable storage medium
CN107798063B (zh) 快照处理方法和快照处理装置
US10915462B2 (en) Destaging pinned retryable data in cache
CN109840051B (zh) 一种存储系统的数据存储方法及装置
CN109582592B (zh) 资源管理的方法和装置
US11693577B2 (en) Storage operation processing during data migration using migrated indicator from source storage
US20210311654A1 (en) Distributed Storage System and Computer Program Product
US11467906B2 (en) Storage system resource rebuild based on input-output operation indicator
US11360712B2 (en) Storage system with continuous data verification for synchronous replication of logical storage volumes
CN112445413A (zh) 一种数据存储的方法、装置及相关设备
US20240103722A1 (en) Metadata management for transparent block level compression
US10705905B2 (en) Software-assisted fine-grained data protection for non-volatile memory storage devices
CN117785751A (zh) 非易失性存储装置对主机任务的分担

Legal Events

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