CN118394565A - 一种存储系统的异或计算方法、装置以及产品 - Google Patents

一种存储系统的异或计算方法、装置以及产品 Download PDF

Info

Publication number
CN118394565A
CN118394565A CN202410851666.1A CN202410851666A CN118394565A CN 118394565 A CN118394565 A CN 118394565A CN 202410851666 A CN202410851666 A CN 202410851666A CN 118394565 A CN118394565 A CN 118394565A
Authority
CN
China
Prior art keywords
data
exclusive
memory
stored
disk array
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.)
Pending
Application number
CN202410851666.1A
Other languages
English (en)
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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology 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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202410851666.1A priority Critical patent/CN118394565A/zh
Publication of CN118394565A publication Critical patent/CN118394565A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种存储系统的异或计算方法、装置以及产品,属于存储系统的技术领域,所述方法应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,存储控制器包括中央处理器和内存,方法包括:响应于数据存储指令或执行故障数据恢复线程时,中央处理器从内存中获取待运算数据,并加载至中央处理器的寄存器中;中央处理器执行异或指令对待运算数据进行异或运算,生成异或运算结果;中央处理器将位于寄存器中的异或运算结果存储在内存中;将内存中存储的异或运算结果写入磁盘阵列中的对应的目标位置。本申请实施例旨在提高存储系统的性能。

Description

一种存储系统的异或计算方法、装置以及产品
技术领域
本申请实施例涉及存储系统的技术领域,具体而言,涉及一种存储系统的异或计算方法、装置以及产品。
背景技术
RAID(Redundant Array of Independent Disks,独立硬盘冗余阵列)技术是将多个硬盘设备组合成一个容量更大和安全性更好的磁盘阵列,将存储的数据切割成多个区段后分别存放在不同的物理硬盘设备上,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
随着数据发展过程中的数据存储需求,RAID技术在存储系统上得到广泛的应用,在RAID5或RAID6的磁盘阵列中,通过奇偶校验来实现数据的冗余存储,奇偶校验通过对同一条带上的数据块进行异或计算得到校验块,当RAID5中有一个磁盘故障时或者RAID6有1个或2个磁盘故障时,对于丢失的任一数据块,可以基于奇偶校验进行异或计算重新计算出丢失的数据块,以进行数据重构。
但是目前的存储系统中,中央处理器在内存中获取需要进行异或运算数据时,会将数据先加载高速缓存中,而高速缓存的存储空间有限,将需要进行异或运算数据加载在高速缓存中会导致存储系统其他高频业务等处理受到影响,导致存储系统的性能下降。
发明内容
本申请实施例提供一种存储系统的异或计算方法、装置以及产品,旨在提高存储系统的性能。
第一方面本申请实施例提供一种存储系统的异或计算方法,应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述方法包括:
响应于数据存储指令或执行故障数据恢复线程时,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;
所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
可选地,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,包括:
所述中央处理器执行第一非临时存储指令,从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,所述第一非临时存储指令用于将所述内存中存储的待运算数据不经过高速缓存加载在所述寄存器中。
可选地,所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器执行第二非临时存储指令,将位于所述寄存器中的所述异或运算结果存储在内存中,所述第二非临时存储指令用于将所述寄存器中存储的所述异或运算结果不经过高速缓存加载在所述寄存器中。
可选地,所述存储控制器包括多个中央处理器,当任一中央处理器将位于所述寄存器中的所述异或运算结果存储在内存后,所述方法还包括:
该中央处理器执行内存屏障指令,所述内存屏障指令用于使所述多个中央处理器获知该中央处理器写入所述内存中的所述异或运算结果。
可选地,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,将所述待存储数据分为多个数据块,将所述多个数据块作为所述待运算数据存储在内存中。
可选地,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令对所述多个数据块进行异或运算,生成所述待存储数据对应的校验块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述待存储数据对应的校验块存储在内存中。
可选地,所述方法还包括:
所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
根据所述存储系统的磁盘阵列采用的冗余级别,确定所述待存储数据对应的校验块对应的目标位置,将所述内存中存储的所述待存储数据对应的校验块写入所述磁盘阵列中的目标位置。
可选地,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,并根据所述待存储数据的逻辑地址,在所述磁盘阵列中读取所述待存储数据对应的目标条带中的数据块以及所述目标条带中的校验块,将所述待存储数据、所述目标条带中的数据块以及所述目标条带中的校验块作为所述待运算数据存储在内存中。
可选地,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令,对所述待存储数据与所述目标条带中的数据块进行异或运算,生成第一异或运算结果;
所述中央处理器执行异或指令,对所述第一异或运算结果和所述目标条带中的校验块进行异或运算,生成更新后的校验块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述更新后的校验块存储在内存中。
可选地,所述方法还包括:
所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
将所述目标条带中的校验块在所述磁盘阵列中的存储位置作为所述目标位置,将所述内存中存储的所述更新后的校验块写入所述磁盘阵列中的目标位置,覆盖所述目标条带中的校验块。
可选地,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
检测所述磁盘阵列中是否存在任一故障盘,或所述存储系统包括所述两种存储的奇偶校验码的磁盘结构的磁盘阵列时,检测所述磁盘阵列中是否存在两个故障盘;
当所述磁盘阵列中存在故障盘时,执行故障数据恢复线程,包括:
所述存储控制器获取所述故障盘中任一故障数据块所在的条带中所有数据块和校验块,将该故障数据块所在的条带中所有数据块和校验块作为所述待运算数据存储在内存中。
可选地,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令,对该故障数据块所在的条带中所有数据块和校验块进行异或运算,生成该故障数据块对应的重构数据块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述重构数据块存储在内存中。
可选地,将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
当所述故障盘恢复故障后,将该故障数据块在所述磁盘阵列中存储的位置作为所述重构数据块对应的目标位置;
将所述内存中存储的所述重构数据块重新写入所述磁盘阵列中的目标位置。
可选地,所述方法还包括:
响应于条带校验操作,在所述磁盘阵列中获取待校验条带中的所有数据块和校验块存储在所述内存中;
所述中央处理器从所述内存中获取所述待校验条带,并加载至所述中央处理器的寄存器中,所述中央处理器执行异或指令对所述待校验条带中的所有数据块进行异或运算,生成当前校验块;
当所述待校验条带的当前校验块与所述校验块不一致时,将所述当前校验块存储在内存中,在所述磁盘阵列中用所述待校验条带的当前校验块更新所述校验块。
可选地,所述方法还包括:
响应于任一主机下发的目标操作指令,所述中央处理器从所述内存中直接读取所述目标操作指令对应的目标数据,以绕过所述存储控制器的高速缓存;
其中,所述目标操作指令为针对用户数据的操作指令,所述目标操作指令包括任一目标数据的读操作指令。
第二方面,本申请实施例提供一种存储系统的异或计算装置,应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述装置包括磁盘阵列写入模块以及设置在所述中央处理器上的待运算数据加载模块、异或运算模块和内存存储模块,其中:
待运算数据加载模块,用于响应于数据存储指令或执行故障数据恢复线程时,所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;
异或运算模块,用于执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;
内存存储模块,用于将位于所述寄存器中的所述异或运算结果存储在内存中;
磁盘阵列写入模块,用于将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
第三方面,本申请实施例提供一种存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述存储系统用于执行实施例第一方面所述的存储系统的异或计算方法。
第四方面,本申请实施例提供一种计算机设备,包括:至少一个处理器,以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时执行实施例第一方面所述的存储系统的异或计算方法。
第五方面,本申请实施例提供一种非易失性可读存储介质,所述非易失性可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时执行实施例第一方面所述的存储系统的异或计算方法。
第六方面,本申请实施例提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现实施例第一方面所述的存储系统的异或计算方法。
有益效果:
响应于数据存储指令或执行故障数据恢复线程时,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中;将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
通过将内存中存储的需要参与异或运算的待运算数据,直接加载在中央处理器的寄存器中,使得待运算数据绕过高速缓存,避免影响高速缓存对存储系统其他高频业务的加速处理,可以提高存储系统的整体性能,并且由中央处理器执行MMX逻辑运算指令中的异或指令进行异或运算,可以提高异或运算的效率,进一步提升存储系统的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单的介绍。
图1示出了本申请实施例提供的存储系统的异或计算方法的步骤流程图;
图2示出了本申请实施例提供的存储系统的异或计算方法的传输示意图;
图3示出了本申请实施例提供的存储系统的异或计算装置的功能模块图;
图4示出了本申请实施例提供的存储系统的结构示意图;
图5示出了本申请实施例提供的计算机设备的示意图;
图6示出了本申请实施例提供的非易失性可读存储介质的示意图;
图7示出了本申请实施例提供的计算机程序产品的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
RAID:Redundant Array of Independent Disks,独立硬盘冗余阵列;
CPU:Central Processing Unit,中央处理器;
RAID5:分布式奇偶校验的独立磁盘结构;
RAID6:两种存储的奇偶校验码的磁盘结构。
应用RAID技术的多个磁盘组成的磁盘阵列,可以并发地在多个磁盘上读写数据来提高存储系统的读写性能,RAID5和RAID6是目前最常见的RAID等级之一;RAID5使用奇偶校验来提供数据的冗余备份,数据条带化存储在磁盘阵列的多个磁盘中,奇偶校验块也分布在磁盘阵列的所有磁盘上,没有采用专门的校验磁盘;当RAID5的磁盘阵列中一个磁盘损坏时,可以根据同一条带的其他数据块和对应的校验块来重建损坏的数据。
与RAID5类似,RAID6也使用奇偶校验来实现数据的冗余存储,但是RAID6引入了双重校验,增加了第二个独立的校验块,进而可以在磁盘阵列中两个磁盘损坏时,仍然能恢复两个损坏的磁盘上的数据,数据的可靠性非常高。
奇偶校验的校验块是通过对其他硬盘驱动器上相同位置的数据块进行异或(XOR)运算得到的,异或算法是二进制数值间的一种兑法,其运算符号为XOR,或者用“⊕”表示,异或运算组合有以下四种:0⊕0=0、0⊕1=1、1⊕0=1、1⊕1=0,且异或运算具有以下特点:
1、运算结果与运算顺序无关;如,(a⊕b)⊕c=a⊕(b⊕c);
2、各个参与运算的数据与结果循环对称;如:若有a⊕b⊕c=d,则有:
a=b⊕c⊕d;b=a⊕c⊕d;c=a⊕b⊕d;
因此,在RAID5或RAID6中,当任一磁盘发生故障损坏时,对于该磁盘上的任一数据块,可以根据该数据块所在的条带上其他数据块和校验块进行异或计算,重新计算出丢失的数据块。
在实际应用中,无论是数据存储在磁盘阵列的过程中生成校验块时,还是在磁盘故障后的数据重构过程,磁盘阵列的数据会被读取到内存中进行异或运算。
但是由于CPU由于处理速度高,而内存的处理速度相对较低,CPU访问内存时会出现等待的情况,导致处理效率低下;为了解决这个问题,在现有的存储系统处理架构中,在CPU和内存之间设置有高速缓存(Cache),示例地,包括一级缓存(L1 Cache)、二级缓存(L2Cache)、三级缓存(L3 Cache)的层次结构,当CPU向内存中写入或读出数据时,数据也被存储进高速缓冲存储器中,当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存。
高速缓存可以显著提高CPU的数据处理效率,但是高速缓存的存储空间是有限的,如果高速缓存中存储不会频繁访问的数据时,会造成高速缓存中其他有用的数据从高速缓存中逐出到较低的内存层次结构中,即如果向高速缓存中不断写入CPU要处理的数据,必然会导致高速缓存中其他频繁访问数据被淘汰,而CPU再访问这些被淘汰的频繁访问数据又要再次写入高速缓存中,这样会引入额外的操作时间开销,进而会影响存储系统的整体性能。
并且,为了保证高速缓存与内存之间的数据一致性,CPU对Cache的写操作主要有两种方式同步到内存:写透式(Write Through)和写回式(Write-back),但是不管哪种同步方式都会消耗性能,导致存储系统的性能下降。
因此,为了提升存储系统的性能,本申请实施例提供一种存储系统的异或计算方法。
参照图1,示出了本申请实施例提供的一种存储系统的异或计算方法的步骤流程图,所述方法应用于存储系统,所述存储系统包括RAID5或RAID6的磁盘阵列以及存储控制器,所述存储控制器包括CPU和内存,所述方法可以包括以下步骤:
S101:响应于数据存储指令或执行故障数据恢复线程时,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中。
在实际实施的过程中,采用RAID5或RAID6的磁盘阵列的存储系统,无论是正常的数据存储过程还是磁盘故障后的数据重构过程,都需要进行读取数据到内存中,然后进行异或运算,数据流量压力会持续增大,而参与异或运算的数据实际是被存储控制器的CPU一次性使用的,短时间内并不会被再次读取,即使在RAID6中双盘故障的场景下,同一个数据块可能会参与2次异或运算,但是通常同一个数据参与异或运算的时间不是连续的,并且即使在RAID6的磁盘阵列中的任一数据参与2次异或运算而言,是否将该数据写入高速缓存中对于存储系统的性能影响不大,因为Cache对于CPU频繁访问的数据才能具有加速的效果。
示例地,RAID6磁盘阵列中一个条块(条带的N分之一)假设为128K,对于8块盘组成的磁盘阵列而言,一个满条带的数据大小为1M,而这个程度的数据量可能会将高速缓存中的其他需要被频繁访问的数据淘汰出高速缓存,而且即便将1M的满条带的数据写入高速缓存,等到该条带上的数据参与第二次异或计算的时候,也可能已经被其他数据替换而淘汰出高速缓存。
因此,本实施例在采用RAID5或RAID6的磁盘阵列的存储系统进行异或运算时,存储控制器的CPU从内存中将待运算数据直接读取并加载至CPU的寄存器中准备进行异或计算,使得待运算数据绕过高速缓存,避免影响高速缓存对存储系统其他高频业务的加速处理。
待运算数据根据需要进行异或运算的场景不同而不同,示例地,在数据存储过程中,待运算数据可能是待存储数据的多个数据块,通过异或运算得到校验块,也可能是在故障盘的故障数据恢复过程中任一丢失数据所在的条带上其他数据块和校验块。
在一种可行的实施方式中,CPU从内存中获取待运算数据,并加载至CPU的寄存器中,包括:
所述中央处理器执行第一非临时存储指令,从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,所述第一非临时存储指令用于将所述内存中存储的待运算数据不经过高速缓存加载在所述寄存器中,第一非临时存储指令可以包括MOVNTQ/MOVNTDQ指令。
示例地,所述CPU执行MOVNTDQ指令,从所述内存中获取待运算数据,并加载至所述CPU的xmm寄存器中。
MOVNTQ/MOVNTDQ指令(在一个MMX技术或流SIMD扩展寄存器中对打包整数的非临时存储)可以实现数据从寄存器到内存的读写操作中,它们是隐式弱次序的,不写分配,从而可以最小化对高速缓存的污染。
xmm寄存器设置在x86系列的CPU中,是一个128位寄存器,它是SSE(StreamingSIMD Extensions)指令集的一部分,与其他通用寄存器相比,xmm寄存器可以同时存储更多数据,并且能够进行更加高效的数据处理,因此使用xmm寄存器进行数据处理速度更快;在64位模式下,CPU支持16个xmm寄存器,分别以xmm0到xmm15表示;在32位模式下,CPU支持8个xmm寄存器,以xmm0到xmm7表示。
示例地,执行MOVNTDQ指令的指令形式为:
__asm____volatile__(
“movntdqa(%0,%1),%%xmm0)”
其中,%表示指令的读取参数;%%表示寄存器的标识。
S102:所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果。
具体地,CPU执行可以执行MMX专有逻辑指令:pxor异或指令对所述待运算数据进行异或运算,pxor异或指令指令形式为:
__asm__ __volatile__(
“pxor(%0,%1),%%xmm0”
)
其中,%表示指令的读取参数;%%表示寄存器的标识。
将待运算数据加载在CPU的xmm寄存器后,CPU可以执行pxor异或指令对所述待运算数据进行异或运算,MMX指令集为x86架构下包含47个指令的指令系统,分为数据传输、算术运算、比较、转换、移位以及逻辑等处理,通过采用MMX专有逻辑指令pxor代替xor进行异或运算,可以加速采用RAID5或RAID6的磁盘阵列的存储系统中的异或运算的效率,进一步提高存储系统的性能。
S103:所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中。
在CPU绕过高速缓存,对待运算数据进行pxor异或指令的异或运算后,可以将存储在CPU的寄存器中的异或运算结果直接写入到内存中。
具体地,所述中央处理器执行第二非临时存储指令,将位于所述寄存器中的所述异或运算结果存储在内存中,所述第二非临时存储指令用于将所述寄存器中存储的所述异或运算结果不经过高速缓存加载在所述寄存器中,第二非临时存储指令包括MOVNTQ/MOVNTDQ指令。
示例地,在一种可行的实施方式中,当所述CPU执行MOVNTDQ指令,从所述内存中获取待运算数据,并加载至所述CPU的xmm寄存器中,并通过pxor异或指令生成异或运算结果时,CPU可以执行MOVNTDQ指令,将位于所述xmm寄存器中的所述异或运算结果存储在内存中。
CPU执行MOVNTDQ指令将xmm寄存器中的异或运算结果存储在内存中指令形式为:
__asm__ __volatile__(
“movntdq %%xmm0,(%0,%1)”
)
其中,%表示指令的读取参数;%%表示寄存器的标识。
在一种可行的实施方式中,存储系统中包括多个CPU核心,而在多核CPU场景中,一般每个CPU核心对本地节点高速缓存的访问时延最短,对非本地节点高速缓存的访问时延则会受到片上互连结构和相对位置的影响,每个CPU核心都拥有私有一级缓存和共享的末级缓存,私有缓存机制保证了本地节点内的CPU核心独占本地节点的高速缓存资源,但是由于不同的缓存中可能存储有同一个数据的不同副本,这会严重影响不同CPU核心处理的一致性,因此多个CPU核心的存储系统中采用缓存一致性协议来保证每个CPU核心共享数据。
而本实施例中,存储控制器的CPU从内存中将待运算数据直接读取并加载至CPU的寄存器中准备进行异或计算,得到的异或计算结果也直接写入内存,即待运算数据并未进入缓存,因此无法通过缓存一致性协议来保证每个CPU核心对数据的共享。
因此,在存储控制器包括多个CPU时,当任一CPU将位于所述寄存器中的所述异或运算结果存储在内存后,该CPU执行内存屏障指令,所述内存屏障指令用于使所述多个CPU获知该CPU写入所述内存中的所述异或运算结果。
具体地,内存屏障指令为store屏障指令,可以使得内存中存储的异或运算结果对其他CPU可见,以避免数据不一致的问题。
示例地,CPU执行store屏障指令的指令形式为:
__asm__ __volatile__(
“sfence”:::“memmory”
)
其中,memmory表示内存。
S104:将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
参与异或运算的待运算数据不同,生成异或运算结果也不同,示例地,在数据存储过程中,如果待运算数据是待存储数据的多个数据块,通过异或运算得到的异或运算结果为待运算数据对应的条带中的校验块;在故障盘的故障数据恢复过程中,如果待运算数据是任一丢失数据块所在的条带上其他数据块和校验块,则通过异或运算得到的异或运算结果为该丢失数据块。
参照图2,示出了本申请实施例提供的存储系统的异或计算方法的传输示意图,CPU读取待运算数据时不经过高速缓存,而是直接在内存中将待运算数据读取加载至CPU的寄存器中;当CPU生成异或运算结果后,CPU将寄存器中的异或运算结果直接写入内存,也不经过高速缓存,从而避免因为一次性访问或非频繁访问的数据对高速缓存的空间占用,而导致高速缓存中频繁访问的数据被淘汰的问题,提高了存储系统的整体性能。
在一种可行的实施方式中,在数据存储在磁盘阵列的过程中,存储系统的异或计算方法包括以下步骤:
S11:响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,将所述待存储数据分为多个数据块,将所述多个数据块作为所述待运算数据存储在内存中。
具体地,存储控制器中包括IO卡,当任一主机下发数据存储指令时,IO卡待存储数据放置在内存中,且在主机在下发数据存储指令时会携带待存储数据对应的逻辑地址。
当待存储的数据在RAID5或RAID6中进行奇偶校验后可以生成满条带,则可以将待存储的数据分为多个数据块,数据块的数量为磁盘阵列中磁盘总数量-1,然后将待存储的数据的多个数据块作为待运算数据。
S12:CPU执行MOVNTDQ指令,从所述内存中获取待运算数据,并加载至所述CPU的xmm寄存器中。
S13:所述CPU执行pxor异或指令对所述多个数据块进行异或运算,生成所述待存储数据对应的校验块作为异或运算结果。
S14:所CPU执行MOVNTDQ指令将xmm寄存器中的所述异或运算结果存储在内存中。
即CPU将生成的所述待存储数据对应的校验块存储在内存中。
S15:所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,即RAID级别,如RAID5或RAID6,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;并根据所述存储系统的磁盘阵列采用的冗余级别,确定所述待存储数据对应的校验块对应的目标位置,将所述内存中存储的所述待存储数据对应的校验块写入所述磁盘阵列中的目标位置。
在一种可行的实施方式中,在数据存储在磁盘阵列的过程中,存储系统的异或计算方法包括以下步骤:
S21:响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,并根据所述待存储数据的逻辑地址,在所述磁盘阵列中读取所述待存储数据对应的目标条带中的数据块以及所述目标条带中的校验块,将所述待存储数据、所述目标条带中的数据块以及所述目标条带中的校验块作为所述待运算数据存储在内存中。
在实际实施的过程中,如果待存储数据需要并入存储在其他条带的数据块中时,可以获取根据所述待存储数据的逻辑地址,在所述磁盘阵列中读取所述待存储数据对应的目标条带中的数据块以及所述目标条带中的校验块,重新计算得到存储后的新的校验块。
示例地,当根据待存储数据New Data的逻辑地址,在磁盘阵列中读取所述待存储数据对应的目标条带中的数据块已经存储有数据Old Data时,在磁盘阵列中读取Old Data和目标条带的校验块作为待运算数据存储在内存中。
S22:CPU执行MOVNTDQ指令,从所述内存中获取待运算数据,并加载至所述CPU的xmm寄存器中。
S23:CPU执行pxor异或指令,对所述待存储数据与所述目标条带中的数据块进行异或运算,生成第一异或运算结果。
为了避免将待存储数据New Data对应的目标条带中的所有数据块取出重新得到新的校验块,而导致的读消耗和异或运算成本,可以对待存储数据New Data和目标条带中的数据块已经存储有数据Old Data进行异或计算,得到异或差作为第一异或运算结果。
S24:所述CPU执行pxor异或指令,对所述第一异或运算结果和所述目标条带中的校验块进行异或运算,生成更新后的校验块。
将待存储数据New Data和目标条带中的数据块已经存储有数据Old Data之间的异或差和目标条带中的校验块进行异或计算,即可以得到该目标条带中更新后的校验块。
在RAID5的磁盘阵列中,只需要更新一个校验块,而在RAID6的磁盘阵列中,需要对两个校验块均进行更新。
S25:所CPU执行MOVNTDQ指令将xmm寄存器中的所述异或运算结果存储在内存中。
即CPU将生成的所述更新后的校验块存储在内存中。
S26:所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;并将所述目标条带中的校验块在所述磁盘阵列中的存储位置作为所述目标位置,将所述内存中存储的所述更新后的校验块写入所述磁盘阵列中的目标位置,覆盖所述目标条带中的校验块。
在一种可行的实施方式中,在故障数据恢复中,若是存储系统中磁盘发生故障,如磁盘被拔掉或者检测到磁盘未响应时,会自动拉起故障数据恢复线程。
具体地,检测所述磁盘阵列中是否存在任一故障盘,或检测RAID6的磁盘阵列中是否存在两个故障盘;当所述磁盘阵列中存在故障盘时,执行故障数据恢复线程,包括以下步骤:
S31:所述存储控制器获取故障盘中任一故障数据块所在的条带中所有数据块和校验块,将该故障数据块所在的条带中所有数据块和校验块作为所述待运算数据存储在内存中。
示例地,RAID5的磁盘阵列中一个条带中包括数据块A1、A2、A3、A4和一个校验块P时,若是故障盘导致数据块A1丢失,则通过获取数据块A2、A3、A4和校验块P进行异或计算重构故障数据块A1:
A1=A2⊕A3⊕A4⊕P
也可以是,故障盘导致丢失数据为校验块P,则可以通过获取数据块A1、A2、A3、A4进行异或计算重构丢失的校验块P:
P=A1⊕A2⊕A3⊕A4。
S32:CPU执行MOVNTDQ指令,从所述内存中获取待运算数据,并加载至所述CPU的xmm寄存器中。
S33:所述CPU执行pxor异或指令,对该故障数据块所在的条带中所有数据块和校验块进行异或运算,生成该故障数据块对应的重构数据块;
S34:所CPU执行MOVNTDQ指令将xmm寄存器中的所述异或运算结果存储在内存中。
即CPU将生成的所述重构数据块存储在内存中。
S35:当所述故障盘恢复故障后,将该故障数据块在所述磁盘阵列中存储的位置作为所述重构数据块对应的目标位置;将所述内存中存储的所述重构数据块重新写入所述磁盘阵列中的目标位置。
在实际实施的过程中,故障盘未恢复时,只要磁盘阵列中有热备空间,如热备盘,即可以将故障盘中丢失的数据进行重构,并存储在热备空间中。
在一种可行的实施方式中,存储系统会对磁盘阵列中的条带进行巡检,在检验过程中,获取同一条带中的所有数据块进行异或运算,比较新得到校验块和该条带的校验块是否一致。
具体地,响应于条带校验操作,在所述磁盘阵列中获取待校验条带中的所有数据块和校验块存储在所述内存中;所述CPU从所述内存中获取所述待校验条带,并加载至所述CPU的寄存器中,所述CPU执行pxor异或指令对所述待校验条带中的所有数据块进行异或运算,生成当前校验块;当所述待校验条带的当前校验块与所述校验块不一致时,将所述当前校验块存储在内存中,在所述磁盘阵列中用所述待校验条带的当前校验块更新所述校验块。
即,条带巡检的过程中,条带的数据也不会经过高速缓存,不影响高速缓存中需要被频繁访问的数据。
具体地,响应于任一主机下发的目标操作指令,所述CPU从所述内存中直接读取所述目标操作指令对应的目标数据,以绕过所述存储控制器的高速缓存,所述目标操作指令为针对用户数据的操作指令,所述目标操作指令包括任一目标数据的读操作指令。
在实际实施的过程中,除了需要CPU进行异或运算的数据可以绕过高速缓存外,对于用户数据的操作过程也可以绕过高速缓存,因为用户数据在空间和时间维度的热度或频繁访问的概率较小,因此不用影响高速缓存中的存储系统高性能运行的数据,允许绕过高速缓存的数据可以根据实际实施的需求进行自定义设置,示例地,可以是对任一目标数据的读操作指令,CPU可以绕过高速缓冲,直接从内存中获取从磁盘阵列中读取的目标数据,然后将所述目标数据返回给读取该数据的主机。本实施例提供的存储系统的异构计算方法中,通过使用MOVNTDQ指令,将一次性访问或不频繁访问的待运算数据直接加载在CPU的xmm寄存器中进行异或运算,绕过高速缓存,或将异或运算结果通过MOVNTDQ指令直接刷新至内存,避免的CPU的高速缓存的污染,避免影响高速缓存对存储系统其他高频业务的加速处理,提高了存储系统的整体性能;
2、通过MMX专有逻辑指令pxor代替xor进行异或运算,使得异或运算效率更高,从而提高了Raid56异或运算的效率,进一步提高了存储系统的整体性能。
参照图3,示出了本申请实施例提供的一种存储系统的异或计算装置的功能模块图,应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述装置包括待运算数据加载模块100、异或运算模块200、内存存储模块300以及磁盘阵列写入模块400,其中,待运算数据加载模块100、异或运算模块200、内存存储模块300设置在中央处理器上,具体地:
待运算数据加载模块100,用于响应于数据存储指令或执行故障数据恢复线程时,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;
异或运算模块200,用于所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;
内存存储模块300,用于所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中;
磁盘阵列写入模块400,用于将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
可选地,所述待运算数据加载模块包括:
加载单元,用于执行第一非临时存储指令,从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,所述第一非临时存储指令用于将所述内存中存储的待运算数据不经过高速缓存加载在所述寄存器中。
可选地,所述内存存储模块包括:
内存存储单元,用于执行第二非临时存储指令,将位于所述寄存器中的所述异或运算结果存储在内存中,所述第二非临时存储指令用于将所述寄存器中存储的所述异或运算结果不经过高速缓存加载在所述寄存器中。
可选地,所述存储控制器包括多个CPU,所述CPU中还包括:
内存屏障模块,用于执行内存屏障指令,所述内存屏障指令用于使所述多个中央处理器获知该中央处理器写入所述内存中的所述异或运算结果。
可选地,所述装置还包括:
第一待运算数据确定模块,用于响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,将所述待存储数据分为多个数据块,将所述多个数据块作为所述待运算数据存储在内存中。
可选地,所述异或运算模块包括:
第一异或运算单元,用于执行异或指令对所述多个数据块进行异或运算,生成所述待存储数据对应的校验块;
所述内存存储模块包括:
第一内存存储单元,用于将生成的所述待存储数据对应的校验块存储在内存中。
可选地,所述磁盘阵列写入模块还包括:
第一写入单元,用于根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;根据所述存储系统的磁盘阵列采用的冗余级别,确定所述待存储数据对应的校验块对应的目标位置,将所述内存中存储的所述待存储数据对应的校验块写入所述磁盘阵列中的目标位置。
可选地,所述装置还包括:
第二待运算数据确定模块,用于响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,并根据所述待存储数据的逻辑地址,在所述磁盘阵列中读取所述待存储数据对应的目标条带中的数据块以及所述目标条带中的校验块,将所述待存储数据、所述目标条带中的数据块以及所述目标条带中的校验块作为所述待运算数据存储在内存中。
可选地,所述异或运算模块包括:
第二异或运算单元,用于执行异或指令,对所述待存储数据与所述目标条带中的数据块进行异或运算,生成第一异或运算结果;执行异或指令,对所述第一异或运算结果和所述目标条带中的校验块进行异或运算,生成更新后的校验块;
所述内存存储模块包括:
第二内存存储单元,用于将生成的所述更新后的校验块存储在内存中。
可选地,所述磁盘阵列写入模块还包括:
第二写入单元,用于根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;将所述目标条带中的校验块在所述磁盘阵列中的存储位置作为所述目标位置,将所述内存中存储的所述更新后的校验块写入所述磁盘阵列中的目标位置,覆盖所述目标条带中的校验块。
可选地,所述装置还包括:
第一故障检测模块,用于检测所述磁盘阵列中是否存在任一故障盘,或所述存储系统包括所述两种存储的奇偶校验码的磁盘结构的磁盘阵列时,检测所述磁盘阵列中是否存在两个故障盘;
第一故障恢复模块,用于当所述磁盘阵列中存在故障盘时,执行故障数据恢复线程;
第三待运算数据确定模块,用于所述存储控制器获取所述故障盘中任一故障数据块所在的条带中所有数据块和校验块,将该故障数据块所在的条带中所有数据块和校验块作为所述待运算数据存储在内存中。
可选地,所述异或运算模块包括:
第三异或运算单元,用于所述中央处理器执行异或指令,对该故障数据块所在的条带中所有数据块和校验块进行异或运算,生成该故障数据块对应的重构数据块;
所述内存存储模块包括:
第三内存存储单元,用于所述中央处理器将生成的所述重构数据块存储在内存中。
可选地,所述磁盘阵列写入模块还包括:
第三写入单元,用于当所述故障盘恢复故障后,将该故障数据块在所述磁盘阵列中存储的位置作为所述重构数据块对应的目标位置;将所述内存中存储的所述重构数据块重新写入所述磁盘阵列中的目标位置。
可选地,所述装置还包括巡检模块,用于:
响应于条带校验操作,在所述磁盘阵列中获取待校验条带中的所有数据块和校验块存储在所述内存中;所述中央处理器从所述内存中获取所述待校验条带,并加载至所述中央处理器的寄存器中,所述中央处理器执行异或指令对所述待校验条带中的所有数据块进行异或运算,生成当前校验块;当所述待校验条带的当前校验块与所述校验块不一致时,将所述当前校验块存储在内存中,在所述磁盘阵列中用所述待校验条带的当前校验块更新所述校验块。
可选地,所述装置还包括:
目标操作模块,用于响应于任一主机下发的目标操作指令,所述中央处理器从所述内存中直接读取所述目标操作指令对应的目标数据,以绕过所述存储控制器的高速缓存;其中,所述目标操作指令为针对用户数据的操作指令,所述目标操作指令包括任一目标数据的读操作指令。
参照图4,示出了本申请实施例提供的一种存储系统的结构示意图,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述存储系统用于执行本实施例所述的存储系统的异或计算方法。
参照图5,示出了本申请实施例提供的一种计算机设备的示意图,包括:至少一个处理器501,以及存储器502,所述存储器502存储有可在所述处理器上运行的计算机程序,其中,所述处理器501执行所述计算机程序时执行本实施例所述的存储系统的异或计算方法。
参照图6,示出了本申请实施例提供的一种非易失性可读存储介质的示意图,所述非易失性可读存储介质600存储有计算机程序601,其中,所述计算机程序被处理器执行时执行本实施例所述的存储系统的异或计算方法。
参照图7,示出了本申请实施例提供的一种计算机程序产品的示意图,所述计算机程序产品700包括计算机程序/指令701,该计算机程序/指令701被处理器执行时实现本实施例所述的存储系统的异或计算方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (20)

1.一种存储系统的异或计算方法,其特征在于,应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述方法包括:
响应于数据存储指令或执行故障数据恢复线程时,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;
所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
2.根据权利要求1所述的方法,其特征在于,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,包括:
所述中央处理器执行第一非临时存储指令,从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中,所述第一非临时存储指令用于将所述内存中存储的待运算数据不经过高速缓存加载在所述寄存器中。
3.根据权利要求2所述的方法,其特征在于,所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器执行第二非临时存储指令,将位于所述寄存器中的所述异或运算结果存储在内存中,所述第二非临时存储指令用于将所述寄存器中存储的所述异或运算结果不经过高速缓存加载在所述寄存器中。
4.根据权利要求3所述的方法,其特征在于,所述存储控制器包括多个中央处理器,当任一中央处理器将位于所述寄存器中的所述异或运算结果存储在内存后,所述方法还包括:
该中央处理器执行内存屏障指令,所述内存屏障指令用于使所述多个中央处理器获知该中央处理器写入所述内存中的所述异或运算结果。
5.根据权利要求1所述的方法,其特征在于,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,将所述待存储数据分为多个数据块,将所述多个数据块作为所述待运算数据存储在内存中。
6.根据权利要求5所述的方法,其特征在于,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令对所述多个数据块进行异或运算,生成所述待存储数据对应的校验块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述待存储数据对应的校验块存储在内存中。
7.根据权利要求6的所述的方法,其特征在于,所述方法还包括:
所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
根据所述存储系统的磁盘阵列采用的冗余级别,确定所述待存储数据对应的校验块对应的目标位置,将所述内存中存储的所述待存储数据对应的校验块写入所述磁盘阵列中的目标位置。
8.根据权利要求1所述的方法,其特征在于,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
响应于任一主机下发的数据存储指令,所述存储控制器获取待存储数据,并根据所述待存储数据的逻辑地址,在所述磁盘阵列中读取所述待存储数据对应的目标条带中的数据块以及所述目标条带中的校验块,将所述待存储数据、所述目标条带中的数据块以及所述目标条带中的校验块作为所述待运算数据存储在内存中。
9.根据权利要求8所述的方法,其特征在于,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令,对所述待存储数据与所述目标条带中的数据块进行异或运算,生成第一异或运算结果;
所述中央处理器执行异或指令,对所述第一异或运算结果和所述目标条带中的校验块进行异或运算,生成更新后的校验块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述更新后的校验块存储在内存中。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述存储控制器根据所述待存储数据对应的逻辑地址和所述存储系统的磁盘阵列采用的冗余级别,将所述内存中存储的所述待存储数据写入所述磁盘阵列中;
将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
将所述目标条带中的校验块在所述磁盘阵列中的存储位置作为所述目标位置,将所述内存中存储的所述更新后的校验块写入所述磁盘阵列中的目标位置,覆盖所述目标条带中的校验块。
11.根据权利要求1所述的方法,其特征在于,所述中央处理器从所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中之前,所述方法还包括:
检测所述磁盘阵列中是否存在任一故障盘,或所述存储系统包括所述两种存储的奇偶校验码的磁盘结构的磁盘阵列时,检测所述磁盘阵列中是否存在两个故障盘;
当所述磁盘阵列中存在故障盘时,执行故障数据恢复线程,包括:
所述存储控制器获取所述故障盘中任一故障数据块所在的条带中所有数据块和校验块,将该故障数据块所在的条带中所有数据块和校验块作为所述待运算数据存储在内存中。
12.根据权利要求11所述的方法,其特征在于,所述中央处理器执行异或指令对所述待运算数据进行异或运算,生成异或运算结果,包括:
所述中央处理器执行异或指令,对该故障数据块所在的条带中所有数据块和校验块进行异或运算,生成该故障数据块对应的重构数据块;
所述中央处理器将位于所述寄存器中的所述异或运算结果存储在内存中,包括:
所述中央处理器将生成的所述重构数据块存储在内存中。
13.根据权利要求12所述的方法,其特征在于,将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置,包括:
当所述故障盘恢复故障后,将该故障数据块在所述磁盘阵列中存储的位置作为所述重构数据块对应的目标位置;
将所述内存中存储的所述重构数据块重新写入所述磁盘阵列中的目标位置。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于条带校验操作,在所述磁盘阵列中获取待校验条带中的所有数据块和校验块存储在所述内存中;
所述中央处理器从所述内存中获取所述待校验条带,并加载至所述中央处理器的寄存器中,所述中央处理器执行异或指令对所述待校验条带中的所有数据块进行异或运算,生成当前校验块;
当所述待校验条带的当前校验块与所述校验块不一致时,将所述当前校验块存储在内存中,在所述磁盘阵列中用所述待校验条带的当前校验块更新所述校验块。
15.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于任一主机下发的目标操作指令,所述中央处理器从所述内存中直接读取所述目标操作指令对应的目标数据,以绕过所述存储控制器的高速缓存;
其中,所述目标操作指令为针对用户数据的操作指令,所述目标操作指令包括任一目标数据的读操作指令。
16.一种存储系统的异或计算装置,其特征在于,应用于存储系统,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述装置包括磁盘阵列写入模块以及设置在所述中央处理器上的待运算数据加载模块、异或运算模块和内存存储模块,其中:
待运算数据加载模块,用于响应于数据存储指令或执行故障数据恢复线程时,所述内存中获取待运算数据,并加载至所述中央处理器的寄存器中;
异或运算模块,用于执行异或指令对所述待运算数据进行异或运算,生成异或运算结果;
内存存储模块,用于将位于所述寄存器中的所述异或运算结果存储在内存中;
磁盘阵列写入模块,用于将所述内存中存储的所述异或运算结果写入所述磁盘阵列中的对应的目标位置。
17.一种存储系统,其特征在于,所述存储系统包括分布式奇偶校验的独立磁盘结构或两种存储的奇偶校验码的磁盘结构的磁盘阵列以及存储控制器,所述存储控制器包括中央处理器和内存,所述存储系统用于执行权利要求1-15任一项所述的存储系统的异或计算方法。
18.一种计算机设备,其特征在于,包括:至少一个处理器,以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时执行权利要求1-15任一项所述的存储系统的异或计算方法。
19.一种非易失性可读存储介质,其特征在于,所述非易失性可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时执行权利要求1-15任一项所述的存储系统的异或计算方法。
20.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-15任一项所述的存储系统的异或计算方法。
CN202410851666.1A 2024-06-28 2024-06-28 一种存储系统的异或计算方法、装置以及产品 Pending CN118394565A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410851666.1A CN118394565A (zh) 2024-06-28 2024-06-28 一种存储系统的异或计算方法、装置以及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410851666.1A CN118394565A (zh) 2024-06-28 2024-06-28 一种存储系统的异或计算方法、装置以及产品

Publications (1)

Publication Number Publication Date
CN118394565A true CN118394565A (zh) 2024-07-26

Family

ID=91999693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410851666.1A Pending CN118394565A (zh) 2024-06-28 2024-06-28 一种存储系统的异或计算方法、装置以及产品

Country Status (1)

Country Link
CN (1) CN118394565A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701452B1 (en) * 1999-07-30 2004-03-02 Kabushiki Kaisha Toshiba Disk array controller having distributed parity generation function
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN117632789A (zh) * 2022-08-17 2024-03-01 上海加密原生科技有限公司 数据处理方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701452B1 (en) * 1999-07-30 2004-03-02 Kabushiki Kaisha Toshiba Disk array controller having distributed parity generation function
CN117632789A (zh) * 2022-08-17 2024-03-01 上海加密原生科技有限公司 数据处理方法及系统
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US10459814B2 (en) Drive extent based end of life detection and proactive copying in a mapped RAID (redundant array of independent disks) data storage system
US11947423B2 (en) Data reconstruction in distributed storage systems
US10795590B2 (en) Method and apparatus for flexible RAID in SSD
TWI777127B (zh) 資料儲存裝置、資料儲存方法及計算機可讀媒體
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US10452498B2 (en) Fault tolerance for persistent main memory
US9823980B2 (en) Prioritizing data reconstruction in distributed storage systems
US9613656B2 (en) Scalable storage protection
US10289336B1 (en) Relocating data from an end of life storage drive based on storage drive loads in a data storage system using mapped RAID (redundant array of independent disks) technology
CN113407122A (zh) Raid重建的方法和设备
US11003558B2 (en) Systems and methods for sequential resilvering
JP2016530637A (ja) Raidパリティストライプ再構成
KR20140060521A (ko) 검증된 데이터 세트의 비휘발성 매체 저널링 기법
CN107515726B (zh) 用于管理存储设备的方法和系统
CN106663044B (zh) 延长寿命的存储器
CN110427156B (zh) 一种基于分片的mbr的并行读方法
CN110058787B (zh) 用于写入数据的方法、设备和计算机程序产品
US10324782B1 (en) Hiccup management in a storage array
US8639968B2 (en) Computing system reliability
US9106260B2 (en) Parity data management for a memory architecture
US10977130B2 (en) Method, apparatus and computer program product for managing raid storage in data storage systems
CN110532128A (zh) 一种降低数据更新代价的纠删码编码及数据重构方法
CN118394565A (zh) 一种存储系统的异或计算方法、装置以及产品
US20240053920A1 (en) Memory System and Method for Use In the Memory System
US9471429B2 (en) Scalable protection scheme for protecting destaged data units

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