CN112181298B - 阵列访问方法、装置、存储设备及机器可读存储介质 - Google Patents
阵列访问方法、装置、存储设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN112181298B CN112181298B CN202011025552.XA CN202011025552A CN112181298B CN 112181298 B CN112181298 B CN 112181298B CN 202011025552 A CN202011025552 A CN 202011025552A CN 112181298 B CN112181298 B CN 112181298B
- Authority
- CN
- China
- Prior art keywords
- disk
- data
- target disk
- array
- raid
- 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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- 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/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/061—Improving I/O performance
-
- 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/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0653—Monitoring storage devices or 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/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)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种阵列访问方法、装置、存储设备及机器可读存储介质。在本申请中,一方面,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的读写访问,避免了对异常磁盘执行异常恢复处理时对阵列读写访问产生影响导致的对RAID读写访问性能大幅度下降的问题。另一方面,减少了异常磁盘恢复正常后RAID阵列恢复正常需要处理的数据量以及对RAID阵列读写访问性能的影响,从而既保证了RAID阵列读写访问性能的稳定,又减少了异常磁盘恢复正常后的RAID阵列恢复处理的开销。
Description
技术领域
本申请涉及存储技术领域,尤其涉及阵列访问方法、装置、存储设备及机器可读存储介质。
背景技术
RAID阵列(Redundant Array of Inexpensive Disks,独立磁盘构成的具有冗余能力的阵列),也被称为廉价磁盘冗余阵列。构建RAID阵列的RAID技术基本原理是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大、价格昂贵的磁盘。
发明内容
本申请提供一种阵列访问方法,所述方法应用于存储设备,所述存储设备包括RAID阵列、与所述RAID阵列对应的日志区,所述方法包括:
在监测到所述RAID阵列中存在异常的目标磁盘时,将所述目标磁盘置为隔离状态;
响应于数据访问发起端对将数据写入至所述目标磁盘的阵列写访问请求,将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中;
对所述目标磁盘执行异常恢复处理,如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中。
可选的,还包括:
如果所述目标磁盘无法恢复正常,则将所述目标磁盘从所述RAID阵列中踢除,以使所述RAID阵列从正常状态变为降级状态;
将所述日志区中保存的与所述目标磁盘对应的数据清空,以释放所述日志区中对应的空间。
可选的,还包括:
响应于数据访问发起端从所述目标磁盘读取数据的阵列读访问请求,向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应;其中,所述读访问回应携带了指示所述目标磁盘为隔离状态的隔离错误码。
可选的,在向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应之前,还包括:
从所述RAID阵列中与所述目标磁盘对应的其它正常磁盘中读取数据,并基于与所述RAID阵列对应的RAID算法对从其它正常磁盘中读取的数据,执行与所述RAID算法对应的RAID计算,得到RAID计算数据;
将所述RAID计算数据作为与所述阵列读访问请求对应的从所述目标磁盘待读取数据携带在所述读访问回应中。
可选的,所述对所述目标磁盘执行异常恢复处理,包括:
对所述目标磁盘执行磁盘复位指令,并检测所述目标磁盘是否恢复正常。
可选的,还包括:
如果所述目标磁盘未恢复正常,对所述目标磁盘执行磁盘下电再上电指令,并检测所述目标磁盘是否恢复正常。
可选的,所述检测所述目标磁盘是否恢复正常,包括:
对所述目标磁盘下发磁盘检测指令,并获取与所述磁盘检测指令对应的磁盘检测结果;
基于获取的磁盘检测结果,确定所述目标磁盘是否恢复正常。
可选的,所述阵列写访问请求中携带了待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,
所述将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中,包括:
将待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,顺序写入至所述日志区中。
可选的,所述日志区中保存有待写入至所述目标磁盘中的至少一条数据;
所述如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中,包括:
如果所述目标磁盘恢复正常,则依次读取所述日志区中保存的与所述目标磁盘对应的至少一条数据,并将读取的该至少一条数据逐条直接写回至恢复正常的所述目标磁盘中。
可选的,所述RAID阵列的RAID类型包括以下中的任一或组合:
RAID1、RAID10、RAID3、RAID30、RAID5、RAID50、RAID6、RAID60。
可选的,所述日志区的个数基于所述RAID阵列的RAID类型计算设定。
本申请还提供一种阵列访问装置,所述装置应用于存储设备,所述存储设备包括RAID阵列、与所述RAID阵列对应的日志区,所述装置包括:
监测模块,在监测到所述RAID阵列中存在异常的目标磁盘时,将所述目标磁盘置为隔离状态;
访问模块,响应于数据访问发起端对将数据写入至所述目标磁盘的阵列写访问请求,将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中;
所述访问模块进一步,对所述目标磁盘执行异常恢复处理,如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中。
可选的,所述访问模块进一步:
如果所述目标磁盘无法恢复正常,则将所述目标磁盘从所述RAID阵列中踢除,以使所述RAID阵列从正常状态变为降级状态;
将所述日志区中保存的与所述目标磁盘对应的数据清空,以释放所述日志区中对应的空间。
可选的,所述访问模块进一步:
响应于数据访问发起端从所述目标磁盘读取数据的阵列读访问请求,向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应;其中,所述读访问回应携带了指示所述目标磁盘为隔离状态的隔离错误码。
可选的,在向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应之前,所述访问模块进一步:
从所述RAID阵列中与所述目标磁盘对应的其它正常磁盘中读取数据,并基于与所述RAID阵列对应的RAID算法对从其它正常磁盘中读取的数据,执行与所述RAID算法对应的RAID计算,得到RAID计算数据;
将所述RAID计算数据作为与所述阵列读访问请求对应的从所述目标磁盘待读取数据携带在所述读访问回应中。
可选的,所述访问模块进一步:
对所述目标磁盘执行磁盘复位指令,并检测所述目标磁盘是否恢复正常。
可选的,所述访问模块进一步:
如果所述目标磁盘未恢复正常,对所述目标磁盘执行磁盘下电再上电指令,并检测所述目标磁盘是否恢复正常。
可选的,所述访问模块进一步:
对所述目标磁盘下发磁盘检测指令,并获取与所述磁盘检测指令对应的磁盘检测结果;
基于获取的磁盘检测结果,确定所述目标磁盘是否恢复正常。
可选的,所述阵列写访问请求中携带了待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,
所述访问模块进一步:
将待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,顺序写入至所述日志区中。
可选的,所述日志区中保存有待写入至所述目标磁盘中的至少一条数据;
所述访问模块进一步:
如果所述目标磁盘恢复正常,则依次读取所述日志区中保存的与所述目标磁盘对应的至少一条数据,并将读取的该至少一条数据逐条直接写回至恢复正常的所述目标磁盘中。
可选的,所述RAID阵列的RAID类型包括以下中的任一或组合:
RAID1、RAID10、RAID3、RAID30、RAID5、RAID50、RAID6、RAID60。
可选的,所述日志区的个数基于所述RAID阵列的RAID类型计算设定。
本申请还提供一种存储设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
通过以上实施例,基于在监测到RAID阵列中存在异常的目标磁盘时,将目标磁盘置为隔离状态;响应于数据访问发起端对将数据写入至目标磁盘的阵列写访问请求,将阵列写访问请求中的待写入至目标磁盘的数据写入至日志区中;对目标磁盘执行异常恢复处理,如果目标磁盘恢复正常,则将日志区中保存的与目标磁盘对应的数据,直接写回至恢复正常的目标磁盘中。一方面,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的读写访问,避免了对异常磁盘执行异常恢复处理时对阵列读写访问产生影响导致的对RAID读写访问性能大幅度下降的问题。另一方面,在对异常磁盘执行异常恢复处理且异常磁盘恢复正常后,可以将异常恢复磁盘可以快速恢复至RAID阵列中,并日志区中保存的待写入至异常恢复磁盘的数据直接写回至异常恢复磁盘,避免了根据RAID算法对该数据对应的条带数据进行重建,也即,避免了重建时对RAID阵列中的其它磁盘的影响,减少了异常磁盘恢复正常后RAID阵列恢复正常需要处理的数据量以及对RAID阵列读写访问性能的影响,从而既保证了RAID阵列读写访问性能的稳定,又减少了异常磁盘恢复正常后的RAID阵列恢复处理的开销。
附图说明
图1是一示例性实施例提供的一种RAID1阵列的数据分布的示意图;
图2是一示例性实施例提供的一种RAID5阵列的数据分布的示意图;
图3是一示例性实施例提供的一种RAID6阵列的数据分布的示意图;
图4是一示例性实施例提供的一种阵列访问方法的流程图;
图5是一示例性实施例提供的一种磁盘异常时的RAID5阵列和日志区的示意图;
图6是一示例性实施例提供的一种磁盘异常时的RAID5阵列和日志区的数据分布的示意图;
图7是一示例性实施例提供的一种磁盘异常恢复时的RAID5阵列和日志区的数据分布的示意图;
图8是一示例性实施例提供的一种对异常磁盘进行读访问时的RAID5阵列和日志区的数据分布的示意图;
图9是一示例性实施例提供的一种存储设备的硬件结构图;
图10是一示例性实施例提供的一种阵列访问装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,下面先对本申请实施例涉及的数据访问的相关技术,进行简要说明。
这里先简单介绍下RAID的相关技术。
通常,对RAID阵列的读写访问根据RAID阵列的RAID类型按相应RAID算法转换成对磁盘的读写访问。
在实现时,对于带冗余的RAID阵列,如RAID1阵列、RAID5阵列、RAID6阵列等,写入数据时,需要同时写入冗余数据或者校验数据,只有数据和冗余数据或者校验数据全部写入完成,写入操作才算完成。
例如,请参考图1,图1是本申请一实施例提供的一种RAID1阵列的数据分布的示意图。
如图1所示,RAID1阵列由2块磁盘(磁盘1、磁盘2)组成,在对RAID1阵列写入数据时,磁盘1和磁盘2都写入同样的数据(D)后,才能形成冗余,因此,只有磁盘1和磁盘2都完成写入后,RAID1的写操作才能完成返回。
又例如,请参考图2,图2是本申请一实施例提供的一种RAID5阵列的数据分布的示意图。
如图1所示,RAID5阵列由3块磁盘(磁盘1、磁盘2、磁盘3)组成,在对RAID5阵列写入数据时,磁盘1和磁盘2分别被写入数据(D1、D2),同时根据D1、D2,计算出校验数据(P)写入磁盘3,只有磁盘1、磁盘2和磁盘3都分别被写入相应的数据(D1、D2、P)后,RAID5阵列才具备冗余性,出现1块盘的故障后才能根据另两块盘的数据计算出RAID阵列上的数据。
又例如,请参考图3,图3是本申请一实施例提供的一种RAID6阵列的数据分布的示意图。
如图1所示,RAID6阵列由4块磁盘(磁盘1、磁盘2、磁盘3、磁盘4)组成,在对RAID6阵列写入数据时,磁盘1和磁盘2分别被写入数据(D1、D2),同时根据D1、D2,计算出校验数据(P1、P2)并分别对应写入至磁盘3、磁盘4,只有磁盘1、磁盘2、磁盘3和磁盘4都分别被写入相应的数据(D1、D2、P1、P2)后,RAID6阵列才具备冗余性,出现2块盘的故障后才能根据另两块盘的数据计算出RAID阵列上的数据。
在一些场景下,在向RAID阵列写入数据时,如有磁盘出现写IO超时,通常需要对磁盘进行异常恢复处理及检测,以确定该磁盘是否真正故障。比如:某个磁盘虽然在偶尔出现超时异常,但对其异常恢复处理后,仍可以恢复正常使用。
然而,针对以上场景,以RAID阵列为RAID5阵列为例,在现有的技术方案A中,当RAID阵列中的磁盘出现超时或者错误等异常时,通常先对该磁盘进行异常恢复处理,如果异常恢复处理之后,磁盘无法恢复正常使用,则将磁盘剔除出RAID阵列,RAID阵列变成降级,然后再用热备盘进行重建。
由此可见,在技术方案A中主要存在以下缺点:在磁盘进行异常恢复处理时,RAID阵列有较长部分时间(比如:达到上百毫秒级,或者秒级及以上)无法处理阵列读写访问。比如:阵列写访问对应触发的下发给异常磁盘的写IO,需要持续等待或者反复重试,IO延时会变大很多。在异常恢复处理处理的过程中,由于异常磁盘被仍留在RAID阵列中,所以每次对RAID阵列的写访问,都需要所有磁盘都完成相应的写操作才能返回(比如:请参见图2所示的RAID5阵列及其对应的前文描述),从而导致整个RAID阵列的读写访问会因为异常磁盘延时变大而急剧增大(比如:从毫秒级增大至上百毫秒级,甚至秒级及以上)。
另外,针对以上场景,仍以RAID阵列为RAID5阵列为例,在现有的技术方案B中,当RAID阵列中的磁盘出现超时或者错误等异常时,通常先将磁盘剔除出RAID阵列,将RAID阵列变成降级状态,然后再对该磁盘进行异常恢复处理。如果RAID阵列配置了热备盘,则在将异常磁盘剔除出RAID后,热备盘会被加入至RAID阵列进行重建。
由此可见,在技术方案B中主要存在以下缺点:在RAID阵列配置了热备盘且异常磁盘被剔除出RAID阵列时,热备盘会被加入RAID阵列进行重建,而且此时需要对RAID阵列中已写过数据的部分、甚至是整个RAID阵列进行重建,重建的范围比较大、重建时间会比较长,并且对RAID阵列的读写访问性能会有比较大的影响。如果没有配置热备盘,那么在异常磁盘进行异常恢复处理时,RAID阵列将持续处于降级状态,如果此时另一块磁盘再发生故障,将会导致整个RAID阵列变成故障而无法使用。
基于此,本申请旨在提出一种,将RAID阵列中的异常磁盘进行隔离但不踢除RAID阵列,通过日志区保存计划写入异常目标磁盘数据,以及同时对异常磁盘执行异常恢复处理并在异常磁盘恢复后快速恢复数据的阵列访问的技术方案。
在实现时,存储设备包括RAID阵列、与上述RAID阵列对应的日志区;在存储设备监测到上述RAID阵列中存在异常的目标磁盘时,将上述目标磁盘置为隔离状态。
进一步地,存储设备响应于数据访问发起端对将数据写入至上述目标磁盘的阵列写访问请求,将上述阵列写访问请求中的待写入至上述目标磁盘的数据写入至上述日志区中。
进一步地,存储设备对上述目标磁盘执行异常恢复处理,如果上述目标磁盘恢复正常,则将上述日志区中保存的与上述目标磁盘对应的数据,直接写回至恢复正常的上述目标磁盘中。
在以上方案中,基于在监测到RAID阵列中存在异常的目标磁盘时,将目标磁盘置为隔离状态;响应于数据访问发起端对将数据写入至目标磁盘的阵列写访问请求,将阵列写访问请求中的待写入至目标磁盘的数据写入至日志区中;对目标磁盘执行异常恢复处理,如果目标磁盘恢复正常,则将日志区中保存的与目标磁盘对应的数据,直接写回至恢复正常的目标磁盘中。一方面,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的读写访问,避免了对异常磁盘执行异常恢复处理时对阵列读写访问产生影响导致的对RAID读写访问性能大幅度下降的问题。另一方面,在对异常磁盘执行异常恢复处理且异常磁盘恢复正常后,可以将异常恢复磁盘可以快速恢复至RAID阵列中,并日志区中保存的待写入至异常恢复磁盘的数据直接写回至异常恢复磁盘,避免了根据RAID算法对该数据对应的条带数据进行重建,也即,避免了重建时对RAID阵列中的其它磁盘的影响,减少了异常磁盘恢复正常后RAID阵列恢复正常需要处理的数据量以及对RAID阵列读写访问性能的影响,从而既保证了RAID阵列读写访问性能的稳定,又减少了异常磁盘恢复正常后的RAID阵列恢复处理的开销。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图4,图4是本申请一实施例提供的一种阵列访问方法的流程图,上述方法应用于存储设备,上述存储设备包括RAID阵列、与上述RAID阵列对应的日志区,上述方法执行以下步骤:
步骤402、在监测到上述RAID阵列中存在异常的目标磁盘时,将上述目标磁盘置为隔离状态。
步骤404、响应于数据访问发起端对将数据写入至上述目标磁盘的阵列写访问请求,将上述阵列写访问请求中的待写入至上述目标磁盘的数据写入至上述日志区中。
步骤406、对上述目标磁盘执行异常恢复处理,如果上述目标磁盘恢复正常,则将上述日志区中保存的与上述目标磁盘对应的数据,直接写回至恢复正常的上述目标磁盘中。
在本说明书中,上述存储设备,是指管理上述RAID阵列和与其对应的上述日志区的任何形式的存储设备或存储设备集群。
例如,上述存储设备可以为存储介质为SATA(Serial Advanced TechnologyAttachment)机械磁盘、SAS(Serial Attached SCSI)机械磁盘、SCSI(Small ComputerSystem Interface)机械磁盘的框式、柜式的存储设备或存储设备集群。当然,在实际应用中,上述存储设备还可以包含1个或多个存储控制器。
在本说明书中,上述RAID阵列,可以包括支持磁盘冗余的任何RAID类型的RAID阵列。
在示出的一种实施方式中,上述RAID阵列的RAID类型具体可以包括以下中的任一或组合:RAID1、RAID10、RAID3、RAID30、RAID5、RAID50、RAID6、RAID60。
需要说明的是,上述RAID阵列可以包括基于硬件的RAID技术和基于软件的RAID技术进行构建。
在本说明书中,上述日志区,是指上述存储设备管理的、与上述RAID阵列对应的用于保存待写入至上述RAID阵列中存在异常的磁盘中数据的存储空间;
其中,上述日志区的个数基于上述RAID阵列的RAID类型计算设定。
在实现时,上述日志区的个数可以与上述RAID阵列的RAID类型支持冗余的磁盘个数相同。
例如,以上述RAID阵列为RAID5阵列为例,RAID5阵列支持1个磁盘损坏而阵列仍可使用,则RAID5阵列对应的日志区的个数为1。
又例如,以上述RAID阵列为RAID6阵列为例,RAID6阵列支持2个磁盘损坏而阵列仍可使用,则RAID6阵列对应的日志区的个数为2。
另外,在实际应用中,上述日志区的容量大小具体可以根据磁盘性能(比如:磁盘的IO带宽)和错误处理时间(比如:秒级或以上)来计算(比如:磁盘性能和错误处理时间相乘)确定。
在本说明书中,上述数据访问发起端,可以包括与上述存储设备对接的、并向上述存储设备管理的上述RAID阵列发起的数据读写访问请求的任何形式的客户端。
例如,在实际应用中,上述数据访问发起端可以包括与上述存储设备对接的、并向上述存储设备发起的数据读访问请求的客户端,也可以包括与上述存储设备对接的、并向上述存储设备管理的上述RAID阵列发起的数据写访问请求的客户端;其中,客户端具体可以包括基于网络协议(比如:iSCSI、http)、函数调用等远程访问方式或本地访问方式来访问上述存储设备。
请参考图5,图5是本申请一实施例提供的一种磁盘异常时的RAID5阵列和日志区的示意图。
图5与图2中的RAID5阵列构成相同,图5与图2的主要区别在于:图5相比图2增加了日志区,以及在图5中磁盘1发生异常,磁盘1被设置为隔离状态(如图5中所示的带斜线矩形包围磁盘1)。
在本说明书中,在监测到上述RAID阵列中存在异常的目标磁盘时,上述存储设备将上述目标磁盘置为隔离状态。
例如,以上述RAID阵列是RAID5阵列为例,请参见图5,在监测到RAID5中存在异常的磁盘1时,上述存储设备将磁盘1置为隔离状态(如图5中所示的带斜线矩形包围磁盘1)。
需要说明的是,在接收上述数据访问发起端对上述RAID阵列的读写访问时,上述存储设备可以通过基于该读写访问进一步向上述RAID阵列的各个磁盘发起磁盘读写访问,当目标磁盘对该磁盘读写访问对应的磁盘读写回应出现超时(比如:达到上百毫秒级,或者秒级及以上)或错误(比如:磁盘无法读取或写入)时,上述存储设备根据该磁盘读写回应确定上述目标磁盘是否存在异常,以及具体异常情况。
在本说明书中,在上述目标磁盘被置为隔离状态后,上述存储设备并未将上述目标磁盘剔除出上述RAID阵列。
接着以上示例继续举例,请参见图5,在磁盘1被置为隔离状态后,上述存储设备并未将磁盘1剔除出RAID5阵列。
请参考图6,图6是本申请一实施例提供的一种磁盘异常时的RAID5阵列和日志区的数据分布的示意图。
图6基于图5变化而来,图6与图5类似,主要区别在于:在图6中计划写入至磁盘1中的数据D1实际被写入至日志区中,以及,图6中详细展示了日志区中已写入数据的保存格式(如图6左侧表格所示)。
在本说明书中,上述存储设备接收并响应于上述数据访问发起端对将数据写入至上述目标磁盘的阵列写访问请求,将上述阵列写访问请求中的待写入至上述目标磁盘的数据写入至上述日志区中。
例如,以上述RAID阵列是RAID5阵列为例,请参见图6,上述存储设备接收并响应于上述数据访问发起端对将数据D1写入至存在异常的磁盘1的阵列写访问请求,将该阵列写访问请求中的待写入至磁盘1的数据D1,实际写入至日志区中。
在示出的一种实施方式中,上述阵列写访问请求中携带了待写入至上述目标磁盘的数据、与该数据对应的LBA地址和数据长度;在将上述阵列写访问请求中的待写入至上述目标磁盘的数据写入至上述日志区中的过程中,上述存储设备将待写入至上述目标磁盘的数据、与该数据对应的LBA地址和数据长度,顺序写入至上述日志区中。
接着以上示例继续举例,请参见图6,阵列写访问请求1中携带了待写入至磁盘1的数据D1、与该数据对应的LBA地址(LBA1)和数据长度(Length1);在将该阵列写访问请求中的待写入至上述目标磁盘的数据写入至日志区中的过程中,上述存储设备将待写入至磁盘1的数据D1、LBA1和Length1,顺序写入至日志区中。
又比如,类似地,阵列写访问请求3中携带了待写入至磁盘1的数据D3、与该数据对应的LBA地址(LBA3)和数据长度(Length3),上述存储设备将待写入至磁盘1的数据D3、LBA3和Length3,顺序写入至日志区中,并排在数据D1、LBA1和Length1之后。
又比如,类似地,阵列写访问请求5中携带了待写入至磁盘1的数据D5、与该数据对应的LBA地址(LBA1)和数据长度(Length1),上述存储设备将待写入至磁盘1的数据D5、LBA1和Length1,顺序写入至日志区中,并排在数据D3、LBA3和Length3之后。需要注意的是,数据D5实际是在同一LBA地址(LBA1)对数据D1的完全更新。
需要说明的是,将数据顺序连续地写入至上述日志区,可以提高数据写入日志区或从日志区读取的访问性能。
另外需要说明的是,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的写访问,避免了对异常磁盘执行异常恢复处理时对阵列写访问产生影响导致的对RAID写访问性能大幅度下降的问题。
在本说明书中,在将上述目标磁盘置为隔离状态后,在对上述目标磁盘存在阵列写访问请求时,上述存储设备可以并行对上述目标磁盘执行异常恢复处理。
例如,请参见图5或图6,在将磁盘1置为隔离状态后,在对磁盘1存在阵列写访问请求时,上述存储设备可以并行对磁盘1执行异常恢复处理。
在示出的一种实施方式中,在对上述目标磁盘执行异常恢复处理的过程中,上述存储设备对上述目标磁盘执行磁盘复位指令,并检测上述目标磁盘是否恢复正常。
接着以上示例继续举例,上述存储设备可以向磁盘1发送磁盘复位(Disk Reset)指令(用于磁盘传输通道的复位),在磁盘1在执行该复位指令后,上述存储设备可以检测磁盘1是否恢复正常。
在示出的一种实施方式中,在对上述目标磁盘执行磁盘复位指令且上述目标磁盘未恢复正常时,上述存储设备还可以对上述目标磁盘执行磁盘下电再上电指令,并检测上述目标磁盘是否恢复正常。
接着以上示例继续举例,在对磁盘1执行磁盘复位指令且磁盘1未恢复正常时,上述存储设备还可以对磁盘1执行磁盘下电再上电指令,并检测目标磁盘1是否恢复正常。
在示出的一种实施方式中,在检测上述目标磁盘是否恢复正常的过程中,上述存储设备对上述目标磁盘下发磁盘检测指令,并获取与上述磁盘检测指令对应的磁盘检测结果,基于获取的磁盘检测结果,确定上述目标磁盘是否恢复正常
例如:上述存储设备对磁盘1下发磁盘检测指令,该磁盘检测指令用于在磁盘1的不同LBA地址(比如:磁盘1的头部,中部、尾部等)能否读取数据,以及从同一LBA地址多次读取的数据是否一致,来检测磁盘1是否恢复正常。
当然,在实际应用中,上述存储设备还可以读取上述目标磁盘的SMART(Self-Monitoring Analysis and Reporting Technology,自我监测、分析及报告技术)信息来进行辅助判断上述目标磁盘是否恢复正常。
请参考图7,图7是本申请一实施例提供的一种磁盘异常恢复时的RAID5阵列和日志区的数据分布的示意图。
图7基于图6变化而来,图7与图6主要区别在于:在图7中存在异常的磁盘1在执行异常恢复处理后,磁盘1已恢复正常,也即,磁盘1被解除了隔离状态。
在本说明书中,在对上述目标磁盘执行异常恢复处理后,如果上述目标磁盘恢复正常,则上述存储设备将上述日志区中保存的与上述目标磁盘对应的数据,直接写回至恢复正常的上述目标磁盘中。
例如,以上述RAID阵列是RAID5阵列为例,请参见图7,在对异常的磁盘1执行如前文实施例描述的异常恢复处理后,如果磁盘1恢复正常,则上述存储设备将日志区中保存的与磁盘1对应的数据D1,直接写回至恢复正常的磁盘1中。
在示出的一种实施方式中,上述日志区中保存有待写入至上述目标磁盘中的至少一条数据;在上述目标磁盘恢复正常及将上述日志区中保存的与上述目标磁盘对应的数据,直接写回至恢复正常的上述目标磁盘的过程中,上述存储设备依次读取上述日志区中保存的与上述目标磁盘对应的至少一条数据,并将读取的至少一条数据逐条直接写回至恢复正常的上述目标磁盘中。
例如,请参见图7,在对异常的磁盘1执行如前文实施例描述的异常恢复处理后,如果磁盘1恢复正常,则上述存储设备将日志区中保存的与磁盘1对应的一条数据D1,直接写回至恢复正常的磁盘1中。
又例如,在对异常的磁盘1执行如前文实施例描述的异常恢复处理后,如果磁盘1恢复正常,则上述存储设备将前文一实施例中描述的日志区中保存的与磁盘1对应的多条数据D1、D3、D5,直接写回至恢复正常的磁盘1中。
需要说明的是,在对异常磁盘执行异常恢复处理且异常磁盘恢复正常后,可以将异常恢复磁盘可以快速恢复至RAID阵列中,并日志区中保存的待写入至异常恢复磁盘的数据直接写回至异常恢复磁盘,避免了根据RAID算法对该数据对应的条带数据进行重建,也即,与前文描述的技术方案A及技术方案B相比,避免了重建时对RAID阵列中的其它磁盘的影响,减少了异常磁盘恢复正常后RAID阵列恢复正常需要处理的数据量以及对RAID阵列读写访问性能的影响,从而既保证了RAID阵列读写访问性能的稳定,又减少了异常磁盘恢复正常后的RAID阵列恢复处理的开销。
在示出的一种实施方式中,在对上述目标磁盘执行异常恢复处理后,如果上述目标磁盘无法恢复正常,则上述存储设备将上述目标磁盘从上述RAID阵列中踢除,以使上述RAID阵列从正常状态变为降级状态,并将上述日志区中保存的与上述目标磁盘对应的数据清空,以释放上述日志区中对应的空间。
例如,在对磁盘1执行异常恢复处理后,如果磁盘1仍然无法恢复正常,则上述存储设备最终将磁盘1从RAID5阵列中踢除,以使RAID5阵列从正常状态变为降级状态,并将日志区中保存的与磁盘1对应的数据(比如:D1、D3、D5)清空,以释放日志区中对应的空间。
请参考图8,图8是本申请一实施例提供的一种对异常磁盘进行读访问时的RAID5阵列和日志区的数据分布的示意图。
如图8所示,计划写入至存在异常的磁盘1的数据D1(带虚线)实际被写入至日志区中,存在针对异常的磁盘1中的LBA地址(LBA1)对应的数据D1的阵列读访问请求。
在示出的一种实施方式中,在上述目标磁盘被置为隔离状态后,上述存储设备接收并响应于上述数据访问发起端从上述目标磁盘读取数据的阵列读访问请求后,从上述RAID阵列中与上述目标磁盘对应的其它正常磁盘中读取数据,并基于与上述RAID阵列对应的RAID算法对从其它正常磁盘中读取的数据,执行与上述RAID算法对应的RAID计算,得到RAID计算数据。
例如,以上述RAID阵列是RAID5阵列为例,请参见图8,上述存储设备接收并响应于上述数据访问发起端从磁盘1的LBA地址(LBA1)读取数据D1的阵列读访问请求后,从RAID5阵列中与磁盘1对应的其它正常磁盘(磁盘2、磁盘3)中读取数据(数据D2、校验数据P),并基于与RAID5阵列对应的RAID5算法(XOR异或计算)对从其它正常磁盘中读取的数据,执行XOR计算,得到RAID计算数据D1(图8中顶部中的D1为D2和P执行XOR异或计算后得到)。
需要说明的是,上述RAID阵列的RAID类型不同,得到上述RAID计算数据时实际执行对应的RAID算法也不同,比如:在上述RAID阵列为RAID6阵列时,则上述RAID计算数据基于RAID6算法计算获得。
另外需要说明的是,以上示例的基于RAID算法计算得到上述RAID计算数据相比日志区读取对应数据,数据的获取速度和可靠性更好。比如:在一些情况下,日志区中可能没有该数据(比如:当D1还未被写入至日志区中时,同时有针对D1的数据读);另外,即使在日志区存在对应待读取的数据时,从日志区中查找到该数据的开销也比较大,比如:需要从头遍历解析日志区的所以数据找到相应的LBA地址(LBA1)并读出所以该LBA地址对应的数据。
在本说明书中,在得到上述RAID计算数据后,上述存储设备将上述RAID计算数据作为与上述阵列读访问请求对应的从上述目标磁盘待读取数据携带在上述读访问回应中。
接着以上示例继续举例,在得到RAID计算数据(D1)后,上述存储设备将该计算得到数据上述RAID作为与阵列读访问请求对应的从磁盘1待读取数据携带在读访问回应中。
当然,在实际应用中,上述读访问回应中除了携带上述RAID计算数据外,还可以携带指示上述目标磁盘为隔离状态的隔离错误码(比如:ERR_quarantined)。
在本说明书中,进一步地,上述存储设备向上述数据访问发起端返回与上述阵列读访问请求对应的携带上述RAID计算数据和或上述隔离错误码的上述读访问回应。
需要说明的是,通过在上述读访问回应中携带隔离错误码,可以使得上述存储设备中的RAID层软件对上述目标磁盘的读访问和对其它正常磁盘的读访问进行识别区分,执行不同的数据读取流程(比如:针对目标磁盘读数据,则直接基于RAID算法执行RAID计算得到,而针对其它正常磁盘的读访问从对应的正常磁盘中直接读取获得)。
当然,在实际应用中,上述存储设备也可以仅向上述数据访问发起端返回与上述阵列读访问请求对应的携带上述RAID计算数据的上述读访问回应。而上述目标磁盘是否处于隔离状态,可以由上述存储设备中的RAID层软件通过向磁盘层软件定时查询获取或者由磁盘层软件向RAID层软件通知。
另外需要说明的是,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的读访问,避免了对异常磁盘执行异常恢复处理时对阵列读访问产生影响导致的对RAID读写访问性能大幅度下降的问题。
在以上技术方案中,基于在监测到RAID阵列中存在异常的目标磁盘时,将目标磁盘置为隔离状态;响应于数据访问发起端对将数据写入至目标磁盘的阵列写访问请求,将阵列写访问请求中的待写入至目标磁盘的数据写入至日志区中;对目标磁盘执行异常恢复处理,如果目标磁盘恢复正常,则将日志区中保存的与目标磁盘对应的数据,直接写回至恢复正常的目标磁盘中。一方面,在RAID阵列中的磁盘出现异常时,可以及时停止对异常磁盘的读写访问,避免了对异常磁盘执行异常恢复处理时对阵列读写访问产生影响导致的对RAID读写访问性能大幅度下降的问题。另一方面,在对异常磁盘执行异常恢复处理且异常磁盘恢复正常后,可以将异常恢复磁盘可以快速恢复至RAID阵列中,并日志区中保存的待写入至异常恢复磁盘的数据直接写回至异常恢复磁盘,避免了根据RAID算法对该数据对应的条带数据进行重建,也即,避免了重建时对RAID阵列中的其它磁盘的影响,减少了异常磁盘恢复正常后RAID阵列恢复正常需要处理的数据量以及对RAID阵列读写访问性能的影响,从而既保证了RAID阵列读写访问性能的稳定,又减少了异常磁盘恢复正常后的RAID阵列恢复处理的开销。
与上述方法实施例相对应,本申请还提供了阵列访问装置的实施例。
与上述方法实施例相对应,本说明书还提供了一种阵列访问装置的实施例。本说明书的阵列访问装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,为本说明书的阵列访问装置所在存储设备的一种硬件结构图,除了图9所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该存储设备的实际功能,还可以包括其他硬件,对此不再赘述。
图10是本说明书一实施例示出的一种阵列访问装置的框图。
请参考图10,所述阵列访问装置100可以应用在前述图9所示的存储设备中,所述存储设备包括RAID阵列、与所述RAID阵列对应的日志区,所述装置包括:
监测模块1001,在监测到所述RAID阵列中存在异常的目标磁盘时,将所述目标磁盘置为隔离状态;
访问模块1002,响应于数据访问发起端对将数据写入至所述目标磁盘的阵列写访问请求,将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中;
所述访问模块1002进一步,对所述目标磁盘执行异常恢复处理,如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中。
在本实施例中,所述访问模块1002进一步:
如果所述目标磁盘无法恢复正常,则将所述目标磁盘从所述RAID阵列中踢除,以使所述RAID阵列从正常状态变为降级状态;
将所述日志区中保存的与所述目标磁盘对应的数据清空,以释放所述日志区中对应的空间。
在本实施例中,所述访问模块1002进一步:
响应于数据访问发起端从所述目标磁盘读取数据的阵列读访问请求,向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应;其中,所述读访问回应携带了指示所述目标磁盘为隔离状态的隔离错误码。
在本实施例中,在向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应之前,所述访问模块1002进一步:
从所述RAID阵列中与所述目标磁盘对应的其它正常磁盘中读取数据,并基于与所述RAID阵列对应的RAID算法对从其它正常磁盘中读取的数据,执行与所述RAID算法对应的RAID计算,得到RAID计算数据;
将所述RAID计算数据作为与所述阵列读访问请求对应的从所述目标磁盘待读取数据携带在所述读访问回应中。
在本实施例中,所述访问模块1002进一步:
对所述目标磁盘执行磁盘复位指令,并检测所述目标磁盘是否恢复正常。
在本实施例中,所述访问模块1002进一步:
如果所述目标磁盘未恢复正常,对所述目标磁盘执行磁盘下电再上电指令,并检测所述目标磁盘是否恢复正常。
在本实施例中,所述访问模块1002进一步:
对所述目标磁盘下发磁盘检测指令,并获取与所述磁盘检测指令对应的磁盘检测结果;
基于获取的磁盘检测结果,确定所述目标磁盘是否恢复正常。
在本实施例中,所述阵列写访问请求中携带了待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,
所述访问模块1002进一步:
将待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,顺序写入至所述日志区中。
在本实施例中,所述日志区中保存有待写入至所述目标磁盘中的至少一条数据;
所述访问模块1002进一步:
如果所述目标磁盘恢复正常,则依次读取所述日志区中保存的与所述目标磁盘对应的至少一条数据,并将读取的该至少一条数据逐条直接写回至恢复正常的所述目标磁盘中。
在本实施例中,所述RAID阵列的RAID类型包括以下中的任一或组合:
RAID1、RAID10、RAID3、RAID30、RAID5、RAID50、RAID6、RAID60。
在本实施例中,所述日志区的个数基于所述RAID阵列的RAID类型计算设定。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (13)
1.一种阵列访问方法,其特征在于,所述方法应用于存储设备,所述存储设备包括RAID阵列、与所述RAID阵列对应的日志区,所述方法包括:
在监测到所述RAID阵列中存在异常的目标磁盘时,将所述目标磁盘置为隔离状态;
响应于数据访问发起端对将数据写入至所述目标磁盘的阵列写访问请求,将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中;
对所述目标磁盘执行异常恢复处理,如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中;
如果所述目标磁盘无法恢复正常,则将所述目标磁盘从所述RAID阵列中踢除,以使所述RAID阵列从正常状态变为降级状态;将所述日志区中保存的与所述目标磁盘对应的数据清空,以释放所述日志区中对应的空间。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于数据访问发起端从所述目标磁盘读取数据的阵列读访问请求,向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应;其中,所述读访问回应携带了指示所述目标磁盘为隔离状态的隔离错误码。
3.根据权利要求2所述的方法,其特征在于,在向所述数据访问发起端返回与所述阵列读访问请求对应的读访问回应之前,还包括:
从所述RAID阵列中与所述目标磁盘对应的其它正常磁盘中读取数据,并基于与所述RAID阵列对应的RAID算法对从其它正常磁盘中读取的数据,执行与所述RAID算法对应的RAID计算,得到RAID计算数据;
将所述RAID计算数据作为与所述阵列读访问请求对应的从所述目标磁盘待读取数据携带在所述读访问回应中。
4.根据权利要求1所述的方法,其特征在于,所述对所述目标磁盘执行异常恢复处理,包括:
对所述目标磁盘执行磁盘复位指令,并检测所述目标磁盘是否恢复正常。
5.根据权利要求4所述的方法,其特征在于,还包括:
如果所述目标磁盘未恢复正常,对所述目标磁盘执行磁盘下电再上电指令,并检测所述目标磁盘是否恢复正常。
6.根据权利要求4或5所述的方法,其特征在于,所述检测所述目标磁盘是否恢复正常,包括:
对所述目标磁盘下发磁盘检测指令,并获取与所述磁盘检测指令对应的磁盘检测结果;
基于获取的磁盘检测结果,确定所述目标磁盘是否恢复正常。
7.根据权利要求1所述的方法,其特征在于,所述阵列写访问请求中携带了待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,
所述将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中,包括:
将待写入至所述目标磁盘的数据、与该数据对应的LBA地址和数据长度,顺序写入至所述日志区中。
8.根据权利要求1所述的方法,其特征在于,所述日志区中保存有待写入至所述目标磁盘中的至少一条数据;
所述如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中,包括:
如果所述目标磁盘恢复正常,则依次读取所述日志区中保存的与所述目标磁盘对应的至少一条数据,并将读取的该至少一条数据逐条直接写回至恢复正常的所述目标磁盘中。
9.根据权利要求1所述的方法,其特征在于,所述RAID阵列的RAID类型包括以下中的任一或组合:
RAID1、RAID10、RAID3、RAID30、RAID5、RAID50、RAID6、RAID60。
10.根据权利要求9所述的方法,其特征在于,所述日志区的个数基于所述RAID阵列的RAID类型计算设定。
11.一种阵列访问装置,其特征在于,所述装置应用于存储设备,所述存储设备包括RAID阵列、与所述RAID阵列对应的日志区,所述装置包括:
监测模块,在监测到所述RAID阵列中存在异常的目标磁盘时,将所述目标磁盘置为隔离状态;
访问模块,响应于数据访问发起端对将数据写入至所述目标磁盘的阵列写访问请求,将所述阵列写访问请求中的待写入至所述目标磁盘的数据写入至所述日志区中;
所述访问模块进一步,对所述目标磁盘执行异常恢复处理,如果所述目标磁盘恢复正常,则将所述日志区中保存的与所述目标磁盘对应的数据,直接写回至恢复正常的所述目标磁盘中;如果所述目标磁盘无法恢复正常,则将所述目标磁盘从所述RAID阵列中踢除,以使所述RAID阵列从正常状态变为降级状态;将所述日志区中保存的与所述目标磁盘对应的数据清空,以释放所述日志区中对应的空间。
12.一种存储设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行如权利要求1至10任一项所述的方法。
13.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011025552.XA CN112181298B (zh) | 2020-09-25 | 2020-09-25 | 阵列访问方法、装置、存储设备及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011025552.XA CN112181298B (zh) | 2020-09-25 | 2020-09-25 | 阵列访问方法、装置、存储设备及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181298A CN112181298A (zh) | 2021-01-05 |
CN112181298B true CN112181298B (zh) | 2022-05-17 |
Family
ID=73944044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011025552.XA Active CN112181298B (zh) | 2020-09-25 | 2020-09-25 | 阵列访问方法、装置、存储设备及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181298B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113311990A (zh) * | 2020-02-26 | 2021-08-27 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法、装置及存储介质 |
CN114968129B (zh) * | 2022-07-28 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 磁盘阵列冗余方法、系统、计算机设备和存储介质 |
CN115344205A (zh) * | 2022-08-15 | 2022-11-15 | 超聚变数字技术有限公司 | 一种针对磁盘固件升级过程中的读写数据方法及计算设备 |
CN115061641B (zh) * | 2022-08-16 | 2022-11-25 | 新华三信息技术有限公司 | 一种磁盘故障处理方法、装置、设备以及存储介质 |
CN115202588B (zh) * | 2022-09-14 | 2022-12-27 | 本原数据(北京)信息技术有限公司 | 数据存储方法及装置、数据恢复方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102226892A (zh) * | 2011-05-20 | 2011-10-26 | 杭州华三通信技术有限公司 | 一种磁盘容错处理方法及设备 |
CN103513942A (zh) * | 2013-10-21 | 2014-01-15 | 华为技术有限公司 | 独立冗余磁盘阵列的重构方法及装置 |
CN107885455A (zh) * | 2016-09-30 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种磁盘日志区动态调整方法 |
CN110413205A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质 |
CN110795273A (zh) * | 2019-10-18 | 2020-02-14 | 苏州浪潮智能科技有限公司 | 一种raid的写洞保护方法、系统及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102580123B1 (ko) * | 2016-05-03 | 2023-09-20 | 삼성전자주식회사 | Raid 스토리지 장치 및 그것의 관리 방법 |
-
2020
- 2020-09-25 CN CN202011025552.XA patent/CN112181298B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102226892A (zh) * | 2011-05-20 | 2011-10-26 | 杭州华三通信技术有限公司 | 一种磁盘容错处理方法及设备 |
CN103513942A (zh) * | 2013-10-21 | 2014-01-15 | 华为技术有限公司 | 独立冗余磁盘阵列的重构方法及装置 |
CN107885455A (zh) * | 2016-09-30 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种磁盘日志区动态调整方法 |
CN110413205A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质 |
CN110795273A (zh) * | 2019-10-18 | 2020-02-14 | 苏州浪潮智能科技有限公司 | 一种raid的写洞保护方法、系统及存储介质 |
Non-Patent Citations (1)
Title |
---|
磁盘故障与恢复;hey_hey_yy;《CSDN,https://blog.csdn.net/hey_hey_yy/article/details/78440175》;20171103;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112181298A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112181298B (zh) | 阵列访问方法、装置、存储设备及机器可读存储介质 | |
US9047219B2 (en) | Storage system, storage control device, and storage control method | |
US8756454B2 (en) | Method, apparatus, and system for a redundant and fault tolerant solid state disk | |
US7502905B2 (en) | Storage control method, program and apparatus for accessing disk array | |
US7730257B2 (en) | Method and computer program product to increase I/O write performance in a redundant array | |
US8751862B2 (en) | System and method to support background initialization for controller that supports fast rebuild using in block data | |
JP2548480B2 (ja) | アレイディスク装置のディスク装置診断方法 | |
JP2006146833A (ja) | ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法 | |
US8601310B2 (en) | Partial memory mirroring and error containment | |
US20090006745A1 (en) | Accessing snapshot data image of a data mirroring volume | |
US8839026B2 (en) | Automatic disk power-cycle | |
US20070028041A1 (en) | Extended failure analysis in RAID environments | |
US9529674B2 (en) | Storage device management of unrecoverable logical block addresses for RAID data regeneration | |
CN103534688A (zh) | 数据恢复方法、存储设备和存储系统 | |
US8782465B1 (en) | Managing drive problems in data storage systems by tracking overall retry time | |
US8370688B2 (en) | Identifying a storage device as faulty for a first storage volume without identifying the storage device as faulty for a second storage volume | |
US9405715B2 (en) | Host computer and method for managing SAS expanders of SAS expander storage system | |
US8843781B1 (en) | Managing drive error information in data storage systems | |
CN111816239B (zh) | 磁盘检测方法、装置、电子设备及机器可读存储介质 | |
US9720756B2 (en) | Computing system with debug assert mechanism and method of operation thereof | |
JP2001075741A (ja) | ディスク制御システムおよびデータ保全方法 | |
JP6287613B2 (ja) | 制御装置、および診断制御プログラム | |
CN115061641B (zh) | 一种磁盘故障处理方法、装置、设备以及存储介质 | |
CN109753223B (zh) | 用于检测存储系统中的慢存储设备操作的方法和系统 | |
CN116244127A (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 |