CN107885620B - 一种提高固态盘阵列性能和可靠性的方法及系统 - Google Patents
一种提高固态盘阵列性能和可靠性的方法及系统 Download PDFInfo
- Publication number
- CN107885620B CN107885620B CN201711170076.9A CN201711170076A CN107885620B CN 107885620 B CN107885620 B CN 107885620B CN 201711170076 A CN201711170076 A CN 201711170076A CN 107885620 B CN107885620 B CN 107885620B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- bit
- stripe
- logical
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种提高固态盘阵列性能和可靠性的方法及系统,应用于计算机存储领域,包括:定义逻辑条带和物理条带,逻辑条带为传统磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成;增加数据位图表,用于记录逻辑条带中写入数据的数据块和校验块;写请求处理和重构流程中处理的基本单位为物理条带,校验信息等于物理条带中的数据块的异或。本发明减少了写请求处理过程中预读操作的个数,跳过不在对应物理条带中失效数据块的数据恢复,可以提升固态盘阵列写性能和重构性能。本发明可用于RAID4和RAID5级别的固态盘阵列和磁盘阵列,适用于构建高可靠性、高性能和高容量的存储系统。
Description
技术领域
本发明属于计算机存储技术领域,更具体地,涉及一种提高固态盘阵列性能和可靠性的方法及系统。
背景技术
由于受到机械特性的限制,磁盘的读写性能的提升远远跟不上处理器性能提升的速度。存储的速度成为了计算机系统的性能瓶颈。新型电子存储设备固态盘的出现缓解了这个性能问题。但是单个固态盘的容量远小于单个磁盘的容量。独立冗余磁盘阵列(Redundant Array of Independent Disks,RAID)技术把多块独立的物理硬盘按不同的方式组合起来形成一个大容量、高性能逻辑硬盘。RAID根据容错能力和数据布局的不同可以分为不同的阵列级别(RAID Levels)。RAID5是RAID Levels中最常用的一种级别。随着固态盘(Solid State Drives,SSD)价格的下降,国内外很多研究和存储厂商通过RAID技术,把多个固态盘组建成固态盘阵列(Redundant Array of Independent SSDs,RAIS)来提供大容量、高性能和高可靠的存储服务。
RAID5中每个条带由多个数据块和一个校验块组成,其中校验块是多个数据块的异或结果。当条带中某个或者某些数据块被更新时,对应的校验块也需要被更新。这里有两种方法计算新的校验块:重构写(Reconstruct Write,RCW)和读改写(Read Modify Write,RMW)。RCW是用需要更新的数据块的新值与不需要被更新数据块的值来计算新的校验块。RMW是用需要更新的数据块的旧值、新值和校验块的旧值来计算新的校验块。因此RCW需要读取条带中不需要更新的数据块,RMW需要读取条带中需要更新的数据块和校验块。RAID5控制器会选择RCW和RMW中读取数据块个数少的方法来计算新的校验块,两者相同时选择RCW方法。
固态盘有很多特性,其中有两个特性是擦后写和擦写单位不对称。擦后写特性是指固态盘中的块只有在被擦除之后才能进行写操作。固态盘中的擦除操作可以将固态盘一个块中的所有位(bits)变成1。固态盘的写操作只能将固态盘内一个页中的所有位(bits)变成0,但是不能由0变成1。擦写单位不对称是指擦除操作的基本单位是块,写操作的基本单位是页。固态盘中的块是由很多页组成。由于这两个特性,固态盘采用异地更新方式来写数据。有很多研究充分利用固态盘的特性来优化固态盘阵列的读写性能,但是很少研究专注于提升固态盘阵列的重构性能。
RAIS5是RAID5级别的固态盘阵列。传统RAID5相关的重构算法也可以使用到RAIS5中。当RAIS5中某个SSD失效时,传统重构算法会恢复其中被使用过的条带,跳过没有被使用的条带。假如一个失效的数据块没有被写入数据,而其对应的条带中其它数据块被写入了数据。传统的重构算法是需要对这个数据块进行恢复,因为它所在的条带是被使用过的条带。实际上我们可以跳过对该数据块进行恢复。而且该重构算法在创建阵列时需要将所有数据块和校验块初始化为0。对SSD全盘写入数据操作会严重影响其写性能及寿命。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种提高固态盘阵列性能和可靠性的方法及系统,由此解决传统重构算法存在的正常模式下固态盘阵列写性能较低以及降级模式下固态盘阵列的重构性能较低的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种提高固态盘阵列性能和可靠性的方法,包括:
(1)在所创建的固态盘阵列中增加数据位图表,将所述数据位图表中所有位初始化为0,其中,所述数据位图表位于非易失内存中,且所述数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;
(2)在接收到写请求时,找到与所述写请求对应的第一逻辑条带,结合所述数据位图表得到与所述第一逻辑条带对应的物理条带,根据所述物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新所述数据位图表;
(3)在恢复失效数据块时,根据所述失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与所述失效数据块所对应的位,若所述失效数据块对应的位为0,则不进行恢复,若所述失效数据块对应的位为1,则采用所述第二逻辑条带对应的物理条带中没有失效的数据块进行数据恢复。
优选地,逻辑条带为磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成。
优选地,所述重构写RCW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内不需要更新数据块的个数,所述读改写RMW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内需要更新数据块的个数加上1。
优选地,步骤(2)包括:
(2.1)初始化所述重构写RCW需要读取的数据块个数rcw和所述读改写RMW需要读取的数据块个数rmw均为0;
(2.2)找到与所述写请求对应的第一逻辑条带,根据所述第一逻辑条带中的每个逻辑块在所述数据位图表中对应位的值以及是否需要有写请求确定rmw和rcw的值;
(2.3)若rcw等于0,则新的校验值等于所有需要更新的数据块的新值的异或;
(2.4)若rmw小于rcw,且rmw不等于0,则采用RMW方式读取需要更新且在所述数据位图表中对应位为1的数据块旧值和校验块旧值,将读取的数据块的旧值与所有需要更新的数据块的新值进行异或得到新的校验值;
(2.5)若rmw不小于rcw,且rcw不等于0,则采用RCW方式读取不需要更新且在所述数据位图表中对应位为1的数据块,将读取的数据块的值与所有需要更新的数据块的新值进行异或得到新的校验值。
优选地,步骤(2.2)包括:
(2.2.1)找到与所述写请求对应的第一逻辑条带,对于所述第一逻辑条带中的每一个逻辑块,判断所述逻辑块在所述数据位图表中的位是否为1;
(2.2.2)若所述逻辑块在所述数据位图表中的位为1,则判断所述逻辑块是否需要有写请求或所述逻辑块是否为校验块;
(2.2.3)若所述逻辑块需要有写请求或所述逻辑块为校验块,则rmw值加1,若所述逻辑块不需要有写请求且所述逻辑块不为校验块,则rcw值加1。
按照本发明的另一方面,提供了一种提高固态盘阵列性能和可靠性的系统,包括:
数据位图表创建模块,用于在所创建的固态盘阵列中增加数据位图表,将所述数据位图表中所有位初始化为0,其中,所述数据位图表位于非易失内存中,且所述数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;
请求处理模块,用于在接收到写请求时,找到与所述写请求对应的第一逻辑条带,结合所述数据位图表得到与所述第一逻辑条带对应的物理条带,根据所述物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新所述数据位图表;
数据重建模块,用于在恢复失效数据块时,根据所述失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与所述失效数据块所对应的位,若所述失效数据块对应的位为0,则不进行恢复,若所述失效数据块对应的位为1,则采用所述第二逻辑条带对应的物理条带中没有失效的数据块进行数据恢复。
优选地,逻辑条带为磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成。
优选地,所述重构写RCW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内不需要更新数据块的个数,所述读改写RMW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内需要更新数据块的个数加上1。
优选地,所述请求处理模块包括:
初始化模块,用于初始化所述重构写RCW需要读取的数据块个数rcw和所述读改写RMW需要读取的数据块个数rmw均为0;
数据块个数确定模块,用于找到与所述写请求对应的第一逻辑条带,根据所述第一逻辑条带中的每个逻辑块在所述数据位图表中对应位的值以及是否需要有写请求确定rmw和rcw的值;
第一请求处理子模块,用于在rcw等于0时,新的校验值等于所有需要更新的数据块的新值的异或;
第二请求处理子模块,用于在rmw小于rcw,且rmw不等于0时,采用RMW方式读取需要更新且在所述数据位图表中对应位为1的数据块旧值和校验块旧值,将读取的数据块的旧值与所有需要更新的数据块的新值进行异或得到新的校验值;
第三请求子模块,用于在rmw不小于rcw,且rcw不等于0时,采用RCW方式读取不需要更新且在所述数据位图表中对应位为1的数据块,将读取的数据块的值与所有需要更新的数据块的新值进行异或得到新的校验值。
优选地,所述数据块个数确定模块包括:
第一判断模块,用于找到与所述写请求对应的第一逻辑条带,对于所述第一逻辑条带中的每一个逻辑块,判断所述逻辑块在所述数据位图表中的位是否为1;
第二判断模块,用于在所述逻辑块在所述数据位图表中的位为1时,判断所述逻辑块是否需要有写请求或所述逻辑块是否为校验块;
判断处理模块,用于在所述逻辑块需要有写请求或所述逻辑块为校验块时,rmw值加1,在所述逻辑块不需要有写请求且所述逻辑块不为校验块时,rcw值加1。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)相比现有的基于RAID技术的固态盘阵列,本发明去掉了创建时所需的同步操作,通过数据位图表保证了固态盘阵列数据的一致性。
(2)相比于现有的基于RAID技术的固态盘阵列,本发明在创建阵列时不需要将所有的固态盘中的块全部初始化为0,从而不会较大地影响固态盘随后的写性能。
(3)相比现有技术在逻辑条带内统计RCW和RMW读取数据块个数,本发明在物理条带内统计RCW和RMW读取数据块个数,不仅保证了不去读取没有写入数据的数据块,而且减少了读取数据块的个数,从而提升了写性能。
(4)任何一个数据块写入了数据,其对应的逻辑条带就被视作使用过。现有的重构技术只能跳过没有使用的逻辑条带。如果一个失效数据块没有被写入数据,但它对应的逻辑条带其它数据块被写入了数据,这种情况现有的重构技术需要对其进行数据恢复。本发明对于没有写入数据的失效块不需要进行数据恢复,同时在物理条带内进行数据恢复可以减少读取数据块的个数,可以显著提升重构性能,从而提升固态盘阵列的可靠性。
附图说明
图1为本发明实施例公开的一种提高固态盘阵列性能和可靠性的方法的流程示意图;
图2为本发明实施例公开的一种数据位图表示意图;
图3为本发明实施例公开的一种写请求处理流程图;
图4为本发明实施例公开的一种数据恢复流程图;
图5为本发明实施例公开的一种提高固态盘阵列性能和可靠性的系统架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提供了一种提高固态盘阵列性能和可靠性的方法及系统,将传统条带区分为逻辑条带和物理条带,正常模式下在写请求处理过程中采用物理条带作为基本单位,避免了校验信息的计算过程需要读取没有被写入数据的数据块,同时在降级模式下,固态盘阵列可以跳过对没有被写入数据的失效块进行恢复。通过本发明不需要将所有数据块和校验块初始化位0,既可以提升正常模式下固态盘阵列的写性能,又可以提升降级模式下固态盘阵列的重构性能。
如图1所示为本发明实施例公开的一种提高固态盘阵列性能和可靠性的方法的流程示意图,在图1所示的方法中包括以下步骤:
(1)在所创建的固态盘阵列中增加数据位图表,将数据位图表中所有位初始化为0,其中,数据位图表位于非易失内存中,且数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;
通过步骤(1)在固态盘阵列创建时增加一个数据位图表,并将其所有位初始化为0,创建成功后固态盘阵列不需要进行同步操作。
如图2所示为数据位图表120的数据结构示意图,该数据位图表对应的固态盘阵列由n个固态盘组成,包含m个条带。图中301、302…30m是逻辑条带的编号。图中401、402…40n是逻辑条带中每个逻辑块对应的位,如果该位为1表示该逻辑块被写入了数据,否则没有被写入数据。
(2)在接收到写请求时,找到与写请求对应的第一逻辑条带,结合数据位图表得到与第一逻辑条带对应的物理条带,根据物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新数据位图表;
(3)在恢复失效数据块时,根据失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与失效数据块所对应的位,若失效数据块对应的位为0,表示失效数据块没有写入数据,则不进行恢复,若失效数据块对应的位为1,则采用第二逻辑条带对应的物理条带中没有失效的数据块的异或结果进行数据恢复。
通过步骤(2)和步骤(3)区分逻辑条带和物理条带,固态盘阵列写请求处理和重构流程中处理的基本单位是物理条带;且在重构流程中跳过不在对应物理条带中失效数据块的数据恢复。
其中,逻辑条带为磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成。
其中,重构写RCW需要读取的数据块个数为第一逻辑条带对应的物理条带内不需要更新数据块的个数,读改写RMW需要读取的数据块个数为第一逻辑条带对应的物理条带内需要更新数据块的个数加上1。通过本方法写请求处理时计算读取数据块的个数是在物理条带内进行统计。
其中,如图3所示为本发明的写请求处理流程,其中rmw表示采用RMW方法需要读取数据块的个数,rcw表示采用RCW方法需要读取数据块的个数,初始化时rmw和rcw都等于0。取出有写请求的逻辑条带,对条带内每个块依次进行判断。首选判断它对应的数据位图表120中的位是否为1,如果不为1直接判断下一个块。如果该位为1,就需要进一步判断该块上是否挂有写请求或者是校验块,如果这个块有写请求或者这个块是校验块,那么rmw增加1,否则rcw加1。等到这个逻辑条带内所有块都判断完后,再比较rmw和rcw的大小。具体地,步骤(2)包括:
(2.1)初始化重构写RCW需要读取的数据块个数rcw和读改写RMW需要读取的数据块个数rmw均为0;
(2.2)找到与写请求对应的第一逻辑条带,根据第一逻辑条带中的每个逻辑块在数据位图表中对应位的值以及是否需要有写请求确定rmw和rcw的值;
(2.3)若rcw等于0,则新的校验值等于所有需要更新的数据块的新值的异或;
(2.4)若rmw小于rcw,且rmw不等于0,则采用RMW方式读取需要更新且在数据位图表中对应位为1的数据块旧值和校验块旧值,将读取的数据块的旧值与所有需要更新的数据块的新值进行异或得到新的校验值;
(2.5)若rmw不小于rcw,且rcw不等于0,则采用RCW方式读取不需要更新且在数据位图表中对应位为1的数据块,将读取的数据块的值与所有需要更新的数据块的新值进行异或得到新的校验值。
其中,步骤(2.2)包括:
(2.2.1)找到与写请求对应的第一逻辑条带,对于第一逻辑条带中的每一个逻辑块,判断逻辑块在数据位图表中的位是否为1;
(2.2.2)若逻辑块在数据位图表中的位为1,则判断逻辑块是否需要有写请求或逻辑块是否为校验块;
(2.2.3)若逻辑块需要有写请求或逻辑块为校验块,则rmw值加1,若逻辑块不需要有写请求且逻辑块不为校验块,则rcw值加1。
如图4所示为本发明的数据重建流程图,当固态盘阵列200的成员盘201、202、203…20n中某个固态盘发生失效时,就会进行数据恢复。对一个失效数据块进行恢复时,首先需要找到其对应的逻辑条带,根据逻辑条带编号可以确定该失效块在数据位图表中对应的位。如果该位不为1,表示这个块之前没有被写入数据,因此不需要对它进行数据恢复。如果该位为1,那么需要用该逻辑条带对应的物理条带中其它没有失效的块进行数据恢复,也即是使用逻辑条带中那些在数据位图表中对应的位为1的没有失效块进行异或运算。
如图5所示,本发明主要由控制器100和固态盘阵列200组成。固态盘阵列200由固态盘201、202、203…20n组成RAID5级别阵列。控制器100主要包含请求处理模块110、数据位图表120、数据重建模块130和RAID5其它功能模块140组成。
数据位图表120用于记录逻辑条带中包含的数据块和校验块是否被写入数据。每个逻辑块对应一位,如果该位为1表示该逻辑块被写入了数据,否则表示该逻辑块没有被写入数据。在固态盘阵列刚创建成功进行初始化时,数据位图表所有位全部初始化为0。请求处理模块110主要负责处理用户的读写请求,在处理过程中需要查找和更新数据位图表120。数据重建模块130主要负责在固态盘阵列某个成员盘失效后进行数据恢复。在数据重建过程中,数据重建模块130需要查找数据位图表120。RAID5其它功能模块140主要包括传统磁盘阵列控制器中除去请求处理模块和重建模块之外的所有模块。
具体地,本发明提供了一种提高固态盘阵列性能和可靠性的系统,包括:
数据位图表创建模块,用于在所创建的固态盘阵列中增加数据位图表,将数据位图表中所有位初始化为0,其中,数据位图表位于非易失内存中,且数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;
请求处理模块,用于在接收到写请求时,找到与写请求对应的第一逻辑条带,结合数据位图表得到与第一逻辑条带对应的物理条带,根据物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新数据位图表;
数据重建模块,用于在恢复失效数据块时,根据失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与失效数据块所对应的位,若失效数据块对应的位为0,则不进行恢复,若失效数据块对应的位为1,则采用第二逻辑条带对应的物理条带中没有失效的数据块进行数据恢复。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种提高固态盘阵列性能和可靠性的方法,其特征在于,包括:
(1)在所创建的固态盘阵列中增加数据位图表,将所述数据位图表中所有位初始化为0,其中,所述数据位图表位于非易失内存中,且所述数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;其中,所述数据位图表中的位为0代表对应位未被写入数据;反之,代表对应位已写入数据;
(2)在接收到写请求时,找到与所述写请求对应的第一逻辑条带,结合所述数据位图表得到与所述第一逻辑条带对应的物理条带,根据所述物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新所述数据位图表;
(3)在恢复失效数据块时,根据所述失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与所述失效数据块所对应的位,若所述失效数据块对应的位为0,则不进行恢复,若所述失效数据块对应的位为1,则采用所述第二逻辑条带数据位图表中对应的位为1的没有失效的数据块进行异或运算而恢复数据;其中,所述失效数据块的位为0代表对应位未被写入数据,所述失效数据块的位为1代表对应位被写入数据;逻辑条带为磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成;
所述重构写RCW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内不需要更新数据块的个数,所述读改写RMW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内需要更新数据块的个数加上1;
步骤(2)包括:
(2.1)初始化所述重构写RCW需要读取的数据块个数rcw和所述读改写RMW需要读取的数据块个数rmw均为0;
(2.2)找到与所述写请求对应的第一逻辑条带,根据所述第一逻辑条带中的每个逻辑块在所述数据位图表中对应位的值以及是否需要有写请求确定rmw和rcw的值;
(2.3)若rcw等于0,则新的校验值等于所有需要更新的数据块的新值的异或;
(2.4)若rmw小于rcw,且rmw不等于0,则采用RMW方式读取需要更新且在所述数据位图表中对应位为1的数据块旧值和校验块旧值,将读取的数据块的旧值与所有需要更新的数据块的新值进行异或得到新的校验值;
(2.5)若rmw不小于rcw,且rcw不等于0,则采用RMW方式读取不需要更新且在所述数据位图表中对应位为1的数据块,将读取的数据块的值与所有需要更新的数据块的新值进行异或得到新的校验值。
2.根据权利要求1所述的方法,其特征在于,步骤(2.2)包括:
(2.2.1)找到与所述写请求对应的第一逻辑条带,对于所述第一逻辑条带中的每一个逻辑块,判断所述逻辑块在所述数据位图表中的位是否为1;
(2.2.2)若所述逻辑块在所述数据位图表中的位为1,则判断所述逻辑块是否需要有写请求或所述逻辑块是否为校验块;
(2.2.3)若所述逻辑块需要有写请求或所述逻辑块为校验块,则rmw值加1,若所述逻辑块不需要有写请求且所述逻辑块不为校验块,则rcw值加1。
3.一种提高固态盘阵列性能和可靠性的系统,其特征在于,包括:
数据位图表创建模块,用于在所创建的固态盘阵列中增加数据位图表,将所述数据位图表中所有位初始化为0,其中,所述数据位图表位于非易失内存中,且所述数据位图表用于记录逻辑条带中包含的数据块和校验块是否被写入数据;其中,所述数据位图表中的0代表记录逻辑条带中包含的数据块和校验块均未被写入数据;
请求处理模块,用于在接收到写请求时,找到与所述写请求对应的第一逻辑条带,结合所述数据位图表得到与所述第一逻辑条带对应的物理条带,根据所述物理条带确定重构写RCW需要读取的数据块个数以及读改写RMW需要读取的数据块个数,然后根据RCW和RMW中读取数据块个数之间的大小关系选择进行写请求处理的方式,并更新所述数据位图表;
数据重建模块,用于在恢复失效数据块时,根据所述失效数据块对应的第二逻辑条带在更新后的数据位图表中查找与所述失效数据块所对应的位,若所述失效数据块对应的位为0,则不进行恢复,若所述失效数据块对应的位为1,则采用所述第二逻辑条带数据位图表中对应的位为1的没有失效的数据块进行异或运算而恢复数据;其中,所述失效数据块的位为0代表对应失效数据块未被写入数据,所述失效数据块的位为1代表对应失效数据块被写入数据;
逻辑条带为磁盘阵列中的条带,物理条带由逻辑条带中写入数据的数据块和校验块组成;
所述重构写RCW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内不需要更新数据块的个数,所述读改写RMW需要读取的数据块个数为所述第一逻辑条带对应的物理条带内需要更新数据块的个数加上1;
所述请求处理模块包括:
初始化模块,用于初始化所述重构写RCW需要读取的数据块个数rcw和所述读改写RMW需要读取的数据块个数rmw均为0;
数据块个数确定模块,用于找到与所述写请求对应的第一逻辑条带,根据所述第一逻辑条带中的每个逻辑块在所述数据位图表中对应位的值以及是否需要有写请求确定rmw和rcw的值;
第一请求处理子模块,用于在rcw等于0时,新的校验值等于所有需要更新的数据块的新值的异或;
第二请求处理子模块,用于在rmw小于rcw,且rmw不等于0时,采用RMW方式读取需要更新且在所述数据位图表中对应位为1的数据块旧值和校验块旧值,将读取的数据块的旧值与所有需要更新的数据块的新值进行异或得到新的校验值;
第三请求子模块,用于在rmw不小于rcw,且rcw不等于0时,采用RCW方式读取不需要更新且在所述数据位图表中对应位为1的数据块,将读取的数据块的值与所有需要更新的数据块的新值进行异或得到新的校验值。
4.根据权利要求3所述的系统,其特征在于,所述数据块个数确定模块包括:
第一判断模块,用于找到与所述写请求对应的第一逻辑条带,对于所述第一逻辑条带中的每一个逻辑块,判断所述逻辑块在所述数据位图表中的位是否为1;
第二判断模块,用于在所述逻辑块在所述数据位图表中的位为1时,判断所述逻辑块是否需要有写请求或所述逻辑块是否为校验块;
判断处理模块,用于在所述逻辑块需要有写请求或所述逻辑块为校验块时,rmw值加1,在所述逻辑块不需要有写请求且所述逻辑块不为校验块时,rcw值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711170076.9A CN107885620B (zh) | 2017-11-22 | 2017-11-22 | 一种提高固态盘阵列性能和可靠性的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711170076.9A CN107885620B (zh) | 2017-11-22 | 2017-11-22 | 一种提高固态盘阵列性能和可靠性的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107885620A CN107885620A (zh) | 2018-04-06 |
CN107885620B true CN107885620B (zh) | 2020-09-08 |
Family
ID=61778408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711170076.9A Active CN107885620B (zh) | 2017-11-22 | 2017-11-22 | 一种提高固态盘阵列性能和可靠性的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107885620B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880745A (zh) * | 2020-07-29 | 2020-11-03 | 北京浪潮数据技术有限公司 | 基于固态盘阵列的数据处理方法、装置、设备及存储介质 |
CN112783689B (zh) * | 2021-02-08 | 2022-09-02 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN115098046B (zh) * | 2022-08-26 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 磁盘阵列初始化方法、系统、电子设备及存储介质 |
CN116795295B (zh) * | 2023-08-16 | 2023-11-17 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615365B1 (en) * | 2000-03-11 | 2003-09-02 | Powerquest Corporation | Storing a computer disk image within an imaged partition |
CN101976177A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 |
CN102521068A (zh) * | 2011-11-08 | 2012-06-27 | 华中科技大学 | 一种固态盘阵列的重建方法 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704837B2 (en) * | 1998-06-29 | 2004-03-09 | International Business Machines Corporation | Method and apparatus for increasing RAID write performance by maintaining a full track write counter |
US20100199036A1 (en) * | 2009-02-02 | 2010-08-05 | Atrato, Inc. | Systems and methods for block-level management of tiered storage |
-
2017
- 2017-11-22 CN CN201711170076.9A patent/CN107885620B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615365B1 (en) * | 2000-03-11 | 2003-09-02 | Powerquest Corporation | Storing a computer disk image within an imaged partition |
CN101976177A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 |
CN102521068A (zh) * | 2011-11-08 | 2012-06-27 | 华中科技大学 | 一种固态盘阵列的重建方法 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107885620A (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11941257B2 (en) | Method and apparatus for flexible RAID in SSD | |
TWI599946B (zh) | 記憶體中之條紋映射 | |
US8788876B2 (en) | Stripe-based memory operation | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
CN101868830B (zh) | 容错非易失性集成电路存储器 | |
CN107885620B (zh) | 一种提高固态盘阵列性能和可靠性的方法及系统 | |
CN104035830A (zh) | 一种数据恢复方法和装置 | |
CN103488432B (zh) | 一种混合磁盘阵列及其延迟写入校验方法和数据恢复方法 | |
US9063869B2 (en) | Method and system for storing and rebuilding data | |
US7380198B2 (en) | System and method for detecting write errors in a storage device | |
CN110413454B (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN109032513B (zh) | 基于ssd和hdd的raid架构及其备份、重建方法 | |
CN112632643A (zh) | 防止闪存数据丢失的方法、固态硬盘控制器、固态硬盘 | |
US9547554B2 (en) | Mass storage device and method of operating the same to store parity data | |
JP5908106B2 (ja) | 妥当性マスクを記憶する装置および方法ならびに操作装置 | |
CN115373863A (zh) | 存储器裸片失效风暴期间的性能及死锁缓解 | |
CN111427516A (zh) | Raid重建方法及装置 | |
CN111897676A (zh) | 一种基于数据库索引的文件备份方法及装置 | |
CN117785025B (zh) | Ecc与raid5混合编码优化ssd读性能的方法 | |
CN117785026B (zh) | 一种基于ssd raid-5系统高效写的缓存方法 | |
US11966638B2 (en) | Dynamic rain for zoned storage systems | |
CN109871186B (zh) | 面向可重组raid的多目标快速重构系统 | |
CN117289863A (zh) | RAID buffer的硬件管理实现方法、装置和计算机设备 | |
WO2013023564A9 (en) | Method and apparatus for flexible raid in ssd |
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 |