CN106610788A - 硬盘阵列控制方法及装置 - Google Patents
硬盘阵列控制方法及装置 Download PDFInfo
- Publication number
- CN106610788A CN106610788A CN201510702664.7A CN201510702664A CN106610788A CN 106610788 A CN106610788 A CN 106610788A CN 201510702664 A CN201510702664 A CN 201510702664A CN 106610788 A CN106610788 A CN 106610788A
- Authority
- CN
- China
- Prior art keywords
- hard disk
- record
- write
- write operation
- data
- 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.)
- Granted
Links
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/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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明实施例提供了硬盘阵列控制方法及装置,其中方法包括:接收写操作请求;将写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;若到达第一时间阈值未收到所述目标硬盘对所述写操作的反馈信息,则:将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,返回写操作成功的反馈信息。这样当由于出现坏道等硬盘问题将要产生写操作超时的情况时,在本发明实施例中上层业务却无需持续等待,而是可以很快得到写操作的结果,从而确保了上层业务执行时的连续性。
Description
技术领域
本发明涉及硬盘阵列技术领域,尤其涉及硬盘阵列控制方法及装置。
背景技术
硬盘阵列,例如RAID(Redundant Arrays of Inexpensive Disks,廉价硬盘冗余阵列),是由多个硬盘组合成的一个容量巨大的硬盘组。当上层业务下发IO(input and output,输入输出)操作时,该IO操作通常会依次经过RAID的RAID控制模块、DMP(Disk Multi Path,硬盘多路径)模块、SCSI(Small Computer System Interface,小型计算机系统接口)模块,最终下发到阵列中相应的Disk(硬盘)。
由于硬盘可能会存在坏道等情况,所以IO操作尤其是写操作有时会存在响应慢的问题,为此在现有技术中,可以在SCSI模块设定12s的超时门限,当写操作下发到某硬盘后,若超过12s后SCSI模块仍未收到该硬盘的响应,则SCSI模块主动向该硬盘下发终止命令以使该硬盘停止该IO操作,并对该硬盘进行设备及链路重启,然后再重试一次或多次下发相同的写操作并等待该硬盘响应。如果最后该硬盘仍未响应,则SCSI模块可认为该硬盘存在问题,无法工作,于是主动将该硬盘置为逻辑离线状态并通知RAID控制模块。RAID控制模块收到该通知后进行降级写,即将该写操作通过RAID算法分担写到阵列里的其它硬盘上,当该写操作最终成功实现后,便可向上层业务返回写操作成功的响应。
现有技术中的这种方案在硬盘出现坏道时,会使上层业务因等待IO操作而中断,较长时间过后上层业务才能收到RAID返回的结果,这样就破坏了上层业务执行的连续性,影响到上层业务的工作效率。
发明内容
为克服现有技术中存在的问题,本发明提供硬盘阵列控制方法及装置,以解决写操作的结果无法快速返回的问题。
为了解决上述技术问题,本发明公开了如下技术方案:
第一方面,提供了一种硬盘阵列控制方法,所述方法包括:
接收写操作请求;
将所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
如果到达第一时间阈值未收到所述目标硬盘对所述写操作的反馈信息,则:
将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,
返回写操作成功的反馈信息。
结合第一方面,在第一方面第一种可能实现的方式中,所述方法还包括:
如果超过第一时间阈值但未超过第二时间阈值时收到所述目标硬盘对所述写操作的反馈信息,则在所述预设记录表中删除所述写数据的跳转记录。
结合第一方面,在第一方面第二种可能实现的方式中,所述方法还包括:
如果达到第二时间阈值仍未收到所述目标硬盘对所述写操作的反馈信息,则令所述目标硬盘终止执行所述写操作。
结合第一方面,在第一方面第三种可能实现的方式中,所述方法还包括:
接收读操作请求;
判断所述预设记录表中是否存在与所述读操作请求中的读数据的目标地址匹配的跳转记录;
如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作;
如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
结合第一方面,在第一方面第四种可能实现的方式中,所述方法还包括:
当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1;
判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
结合第一方面第四种可能的实现方式,在第一方面第五种可能实现的方式中,所述方法还包括:
当确定所述目标硬盘为失效硬盘时,则
将所述失效硬盘的数据复制到另外一个硬盘;
使用所述另外一个硬盘替换所述失效硬盘。
结合第一方面,在第一方面第六种可能实现的方式中,所述方法还包括:
定期遍历所述预设记录表中的各条跳转记录;
遍历时,根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘;
如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则删除所述当前跳转记录。
结合第一方面第六种可能实现的方式,在第一方面第七种可能实现的方式中,所述方法还包括:
如果所述当前跳转记录所关联的写数据失败写入所述目标硬盘,则将所述当前跳转记录的重试次数加1;
判断所述当前跳转记录的重试次数是否超过第二数量阈值;
如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
第二方面,提供了一种硬盘阵列控制装置,所述装置包括:
写操作请求接收模块,用于接收写操作请求;
写操作请求下发模块,用于将所述写操作请求接收模块接收的所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
写操作监控模块,用于当到达第一时间阈值未收到所述目标硬盘对所述写操作请求下发模块所下发的所述写操作请求对应的所述写操作的反馈信息时,将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,返回写操作成功的反馈信息。
结合第二方面,在第二方面第一种可能实现的方式中,所述写操作监控模块还用于:
如果超过第一时间阈值但未超过第二时间阈值时收到所述目标硬盘对所述写操作的反馈信息,则在所述预设记录表中删除所述写数据的跳转记录。
结合第二方面,在第二方面第二种可能实现的方式中,所述写操作监控模块还用于:
如果达到第二时间阈值仍未收到所述目标硬盘对所述写操作的反馈信息,则令所述目标硬盘终止执行所述写操作。
结合第二方面,在第二方面第三种可能实现的方式中,所述装置还包括:
读操作请求接收模块,用于接收读操作请求;
跳转处理模块,用于判断所述预设记录表中是否存在与所述读操作请求接收模块接收的所述读操作请求中的读数据的目标地址匹配的跳转记录;如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作;如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
结合第二方面,在第二方面第四种可能实现的方式中,所述装置还包括:
失效处理模块,用于当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1;判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
结合第二方面第四种可能实现的方式,在第二方面第五种可能实现的方式中,所述失效处理模块还用于:
当确定所述目标硬盘为失效硬盘时,则将所述失效硬盘的数据复制到另外一个硬盘,使用所述另外一个硬盘替换所述失效硬盘。
结合第二方面,在第二方面第六种可能实现的方式中,所述装置还包括:
后台修复模块,用于定期遍历所述预设记录表中的各条跳转记录;遍历时,根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘;如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则删除所述当前跳转记录。
结合第二方面第六种可能实现的方式,在第二方面第七种可能实现的方式中,所述后台修复模块还用于:
如果所述当前跳转记录所关联的写数据失败写入所述目标硬盘,则将所述当前跳转记录的重试次数加1;判断所述当前跳转记录的重试次数是否超过第二数量阈值;如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
第三方面,提供了一种硬盘阵列控制设备,所述设备包括:处理器、存储器、收发单元及总线;
所述处理器、所述存储器、所述收发单元均与所述总线相连;
所述收发单元用于接收外部发来的数据以及向外部发送数据;
所述存储器用于存储所述处理器可执行的指令;
所述处理器被配置为:
接收写操作请求;
将所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
如果到达第一时间阈值未收到所述目标硬盘对所述写操作的反馈信息,则:
将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,
返回写操作成功的反馈信息。
本发明的实施例提供的技术方案可以包括以下有益效果:
本发明实施例会在硬盘阵列(例如其空闲空间)中建立预设存储区,当将上层业务的写操作请求下发到硬盘阵列中的目标硬盘后,如果达到第一时间阈值未收到所述目标硬盘对所述写操作的响应,则不再继续在该硬盘上重试写操作,而是马上将所述写操作中的待写数据转为写到所述预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,然后即可向上层业务返回写操作成功的响应。这样当由于出现坏道等硬盘问题将要产生写操作超时的情况时,在本发明中上层业务却无需持续等待,而是可以很快得到写操作的结果,从而确保了上层业务执行时的连续性。
另外,预设记录表中的记录可以体现各硬盘产生过故障的次数,因此在本发明实施例中还可以通过对硬盘写失败的次数进行计数来预测硬盘阵列中的硬盘是否将要失效,也即可以识别风险硬盘,提前做好数据的拷贝工作,从而可以避免因硬盘突发性失效而带来损失。
此外,在本发明实施例中还可以在后台定期进行巡检修复,即定期重试预设记录表中的写操作,对于其中部分可重试成功的写操作则在预设记录表中删除相关记录,这样原地址就可恢复正常,而预设存储区也可以得到释放。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是现有的RAID系统的架构图;
图2是根据本发明一示例性实施例示出的RAID系统的架构图;
图3是根据本发明一示例性实施例示出的一种硬盘阵列控制方法的流程图;
图4是根据本发明一示例性实施例示出的一种硬盘阵列控制方法的流程图;
图5是根据本发明一示例性实施例示出的一种硬盘阵列控制方法的流程图;
图6是根据本发明一示例性实施例示出的一种硬盘阵列控制方法的流程图;
图7是根据本发明一示例性实施例示出的一种硬盘阵列控制方法的流程图;
图8是根据本发明一示例性实施例示出的一种硬盘阵列控制装置的框图;
图9是根据本发明一示例性实施例示出的一种硬盘阵列控制装置的框图;
图10是根据本发明一示例性实施例示出的一种硬盘阵列控制装置的框图;
图11是根据本发明一示例性实施例示出的一种硬盘阵列控制装置的框图;
图12是根据本发明一示例性实施例示出的一种硬盘阵列控制设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是现有的RAID系统的架构图。所述RAID系统包括RAID控制器及RAID组,业务主机下发的IO请求经过所述RAID控制器处理后下发至所述RAID组中该IO请求对应的Disk,以执行该IO请求对应的IO操作。
图2则是根据本发明一示例性实施例示出的RAID系统的架构图。图2所示的RAID系统200在图1所示的RAID系统的基础上增加了预设记录表203及预设存储区204,当所述RAID控制器201在RAID组202中的Disk2上的写操作失败时,可以将需要写入Disk2的待写数据写到预设存储区Space,并在预设记录表中记录下所述待写数据原本写入Disk2上的地址与实际写入Space上的地址之间的映射关系。所述预设记录表可以存储在预设存储区中,也可以存储在RAID系统的其他存储设备,如RAID组的任一disk中,对此本实施例并不进行限制。
下面将结合图3说明在图2的应用场景下RAID系统对IO写请求的处理方法。
在步骤S301中,所述RAID控制器接收写操作请求。
该写操作请求是由上层业务服务器发来的。一个写操作请求通常可以包括写数据及写入所述写数据的地址也即目标地址,该目标地址所在的硬盘即为目标硬盘。在本文中,写操作中的写数据在写到某地址之前也可称为待写数据,而写到某地址之后也可称为已写数据。
在步骤S302中,所述RAID控制器将所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作。
在步骤S303中,在将所述写操作请求下发到硬盘阵列后,所述RAID控制器开始计时,计时到达第一时间阈值时,未收到所述目标硬盘对所述写操作的反馈信息,则所述RAID控制器将所述写操作请求中携带的写数据写到预设存储区,并在所述预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,并返回写操作成功的反馈信息。
在本文中,所述目标地址也可称为原地址,所述实际地址也可称为新地址。所述预设存储区例如可以是在所述硬盘阵列的空闲空间中建立的存储区。预设存储区也可称为临时写区域。
对于空闲空间的具体形式本实施例并不进行限制,例如可以是硬盘阵列的SSD(SolidState Drives,固态硬盘)盘组空间、阵列热备空间、保险箱空间或其它可用的空闲空间等等。
预设记录表也可称为新定向记录表、跳转记录表等,用于记录每次对待写数据的目标地址重新进行定向时,目标地址与实际地址(或者说是原地址与新地址)之间的映射关系。该表中记录的格式例如可以为“Disk2LBA1→Space1LBA2”,表示硬盘阵列中的硬盘Disk2的LBA1位置存在故障,将数据重新定向写到预设存储区Space1的LBA2位置。
如果在第一时间阈值内收到所述硬盘对所述写操作的反馈信息,则说明所述写数据成功写入所述目标硬盘,即可结束本次写入操作。
参见图4所示,在本实施例或本发明其他某些实施例中,所述方法还可以包括:
在步骤S401中,如果超过第一时间阈值但未超过第二时间阈值时收到所述目标硬盘对所述写操作的反馈信息,则在所述预设记录表中删除所述写数据的跳转记录。如果达到第二时间阈值仍未收到所述目标硬盘对所述写操作的反馈信息,则令所述目标硬盘终止执行所述写操作。
如果超过第一时间阈值但未超过第二时间阈值时收到所述目标硬盘对所述写操作的反馈信息,则代表所述目标硬盘还是可以成功完成写操作,也即原地址写操作正常,所以可以撤销先前的重新定向处理,也即在预设记录表中删除相应的记录。
而如果达到第二时间阈值仍未收到所述目标硬盘对所述写操作的反馈信息,则代表目标硬盘中写入所述写数据的位置可能发生了故障,无法正常写入数据,故可令所述目标硬盘终止执行所述写操作。
参见图5所示,为RAID系统通过上述方法进行数据写入之后,读取数据的方法流程:
在步骤S501中,所述RAID控制器接收读操作请求。
在步骤S502中,所述RAID控制器判断所述预设记录表中是否存在与所述读操作请求中的读数据的目标地址匹配的跳转记录。
在步骤S503中,如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则所述RAID控制器将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作。
在步骤S504中,如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则所述RAID控制器获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
因为在写数据时可能发生数据重新定向,所以在读数据时需要先查询预设记录表,查看要读取的数据的地址(即读数据的目标地址)是否发生过重新定向,如果发生过重定向,则从所述预设存储区中读取数据。
在RAID系统将存储至目标硬盘失败的数据存储至预设存储区后,还可统计目标硬盘写失败的次数,并根据统计的写失败次数判断所述目标硬盘是否为失效盘,具体如图6所示,所述数据写入方法还可以包括:
在步骤S601中,当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1。
在步骤S602中,判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
此外,也可以通过对预设记录表中的记录进行统计的方式获取所述目标硬盘的写失败次数。当确定所述目标硬盘为失效硬盘时,则可以将所述失效硬盘的数据复制到另外一个硬盘,使用所述另外一个硬盘替换所述失效硬盘。预设记录表中的记录可以客观体现各硬盘产生过故障的次数,通过图6所示步骤可以预测硬盘阵列中的硬盘是否要失效,也即可以识别风险硬盘,提前做好防备,从而可以避免因硬盘突发性失效而带来损失。
所述RAID系统还可以对定期将存储在所述预设存储区中的数据重新写入所述RAID组,具体实现方法如图图7所示:
在步骤S701中,所述RAID控制器定期遍历所述预设记录表中的各条跳转记录。
在步骤S702中,遍历时,所述RAID控制器根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘。
在步骤S703中,如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则所述RAID控制器删除所述当前跳转记录。
而如果写入失败,则可以不做处理。
如此,可以按照当前记录中的新地址(也即实际地址)读取数据,然后将读取到的数据尝试写到当前记录中的原地址(也即目标地址),从而实现对写操作的重试。如果该原地址所在的硬盘在规定时间内例如第二时间阈值内作出响应,则代表重试成功,如果未在规定时间内作出响应,则代表重试失败。
这样,通过在后台定期进行巡检修复,即定期重试记录表中的写操作,对于其中部分可重试成功的写操作则在记录表中删除相关记录,这样原地址就可恢复正常,而预设存储区也就得到了释放。至于被删除记录所对应的在预设存储区里的数据,可以随该记录一起删除,也可以不删除而是在下次写数据时直接覆盖,对此本实施例并不进行限制。
此外,如果所述当前跳转记录所关联的写数据失败写入所述目标硬盘,也可以按如下方式进行处理:
将所述当前跳转记录的重试次数加1;
判断所述当前跳转记录的重试次数是否超过第二数量阈值;
如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
这样以后不再重试该条记录,而是将该条记录视为一条永久的重定向记录。
本实施例会在硬盘阵列(例如其空闲空间)中建立预设存储区,当将上层业务的写操作请求下发到硬盘阵列中的目标硬盘后,如果达到第一时间阈值未收到所述目标硬盘对所述写操作的响应,则不再继续在该硬盘上重试写操作,而是马上将所述写操作中的待写数据转为写到所述预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,然后即可向上层业务返回写操作成功的响应。这样当由于出现坏道等硬盘问题将要出现写操作超时的情况时,在本实施例中上层业务却无需持续等待,而是可以很快得到写操作的结果,从而确保了上层业务执行时的连续性。
另外,预设记录表中的记录可以体现各硬盘产生过故障的次数,因此在本实施例中还可以通过对硬盘写失败的次数进行计数来预测硬盘阵列中的硬盘是否将要失效,也即可以识别风险硬盘,提前做好数据的拷贝工作,从而可以避免因硬盘突发性失效而带来损失。
此外,在本实施例中还可以在后台定期进行巡检修复,即定期重试预设记录表中的写操作,对于其中部分可重试成功的写操作则在预设记录表中删除相关记录,这样原地址就可恢复正常,而预设存储区也可以得到释放。
图8是根据一示例性实施例示出的一种硬盘阵列控制装置的框图,所述装置可以包括:
写操作请求接收模块801,用于接收写操作请求;
写操作请求下发模块802,用于将所述写操作请求接收模块801接收的所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
写操作监控模块803,用于当到达第一时间阈值未收到所述目标硬盘对所述写操作请求下发模块802所下发的所述写操作请求对应的所述写操作的反馈信息时,将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,返回写操作成功的反馈信息。
在本实施例或本发明其他某些实施例中,所述写操作监控模块803还可以用于:
如果超过第一时间阈值但未超过第二时间阈值时收到所述目标硬盘对所述写操作的反馈信息,则在所述预设记录表中删除所述写数据的跳转记录。
在本实施例或本发明其他某些实施例中,所述写操作监控模块803还可以用于:
如果达到第二时间阈值仍未收到所述目标硬盘对所述写操作的反馈信息,则令所述目标硬盘终止执行所述写操作。
参见图9所示,在本实施例或本发明其他某些实施例中,所述装置还可以包括:
读操作请求接收模块901,用于接收读操作请求;
跳转处理模块902,用于判断所述预设记录表中是否存在与所述读操作请求接收模块901接收的所述读操作请求中的读数据的目标地址匹配的跳转记录;如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作;如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
参见图10所示,在本实施例或本发明其他某些实施例中,所述装置还可以包括:
失效处理模块1001,用于当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1;判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
在本实施例或本发明其他某些实施例中,所述失效处理模块1001还可以用于:
当确定所述目标硬盘为失效硬盘时,则将所述失效硬盘的数据复制到另外一个硬盘,使用所述另外一个硬盘替换所述失效硬盘。
参见图11所示,在本实施例或本发明其他某些实施例中,所述装置还可以包括:
后台修复模块1101,用于定期遍历所述预设记录表中的各条跳转记录;遍历时,根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘;如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则删除所述当前跳转记录。
在本实施例或本发明其他某些实施例中,所述后台修复模块1101还可以用于:
如果所述当前跳转记录所关联的写数据失败写入所述目标硬盘,则将所述当前跳转记录的重试次数加1;判断所述当前跳转记录的重试次数是否超过第二数量阈值;如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
本实施例会在硬盘阵列(例如其空闲空间)中建立预设存储区,当将上层业务的写操作请求下发到硬盘阵列中的目标硬盘后,如果达到第一时间阈值未收到所述目标硬盘对所述写操作的响应,则不再继续在该硬盘上重试写操作,而是马上将所述写操作中的待写数据转为写到所述预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,然后即可向上层业务返回写操作成功的响应。这样当由于出现坏道等硬盘问题将要出现写操作超时的情况时,在本实施例中上层业务却无需持续等待,而是可以很快得到写操作的结果,从而确保了上层业务执行时的连续性。
另外,预设记录表中的记录可以体现各硬盘产生过故障的次数,因此在本实施例中还可以通过对硬盘写失败的次数进行计数来预测硬盘阵列中的硬盘是否将要失效,也即可以识别风险硬盘,提前做好数据的拷贝工作,从而可以避免因硬盘突发性失效而带来损失。
此外,在本实施例中还可以在后台定期进行巡检修复,即定期重试预设记录表中的写操作,对于其中部分可重试成功的写操作则在预设记录表中删除相关记录,这样原地址就可恢复正常,而预设存储区也可以得到释放。
图12是根据一示例性实施例示出的一种硬盘阵列控制设备的示意图,所述设备可以包括:处理器1201、存储器1202、收发单元1203及总线1204;
所述处理器1201、所述存储器1202、所述收发单元1203均与所述总线1204相连;
所述收发单元1203用于接收外部发来的数据以及向外部发送数据;
所述存储器1202用于存储所述处理器1201可执行的指令;
所述处理器1201被配置为执行图3-图7所示的方法。
本实施例会在硬盘阵列(例如其空闲空间)中建立预设存储区,当将上层业务的写操作请求下发到硬盘阵列中的目标硬盘后,如果达到第一时间阈值未收到所述目标硬盘对所述写操作的响应,则不再继续在该硬盘上重试写操作,而是马上将所述写操作中的待写数据转为写到所述预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,然后即可向上层业务返回写操作成功的响应。这样当由于出现坏道等硬盘问题将要出现写操作超时的情况时,在本实施例中上层业务却无需持续等待,而是可以很快得到写操作的结果,从而确保了上层业务执行时的连续性。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (11)
1.一种硬盘阵列控制方法,其特征在于,所述方法包括:
接收写操作请求;
将所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
如果到达第一时间阈值未收到所述目标硬盘对所述写操作的反馈信息,则:
将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,
返回写操作成功的反馈信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收读操作请求;
判断所述预设记录表中是否存在与所述读操作请求中的读数据的目标地址匹配的跳转记录;
如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作;
如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1;
判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定期遍历所述预设记录表中的各条跳转记录;
遍历时,根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘;
如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则删除所述当前跳转记录。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果所述当前跳转记录所关联的写数据失败写入所述目标硬盘,则将所述当前跳转记录的重试次数加1;
判断所述当前跳转记录的重试次数是否超过第二数量阈值;
如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
6.一种硬盘阵列控制装置,其特征在于,所述装置包括:
写操作请求接收模块,用于接收写操作请求;
写操作请求下发模块,用于将所述写操作请求接收模块接收的所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
写操作监控模块,用于当到达第一时间阈值未收到所述目标硬盘对所述写操作请求下发模块所下发的所述写操作请求对应的所述写操作的反馈信息时,将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,返回写操作成功的反馈信息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
读操作请求接收模块,用于接收读操作请求;
跳转处理模块,用于判断所述预设记录表中是否存在与所述读操作请求接收模块接收的所述读操作请求中的读数据的目标地址匹配的跳转记录;如果所述预设记录表中不存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则将所述读操作请求下发到所述硬盘阵列的读操作请求的目标硬盘,以使所述读操作请求的目标硬盘执行所述读操作请求对应的读操作;如果所述预设记录表中存在与所述读操作请求中的读数据的目标地址匹配的跳转记录,则获取所述匹配的跳转记录中的写数据的实际地址,并根据所述实际地址从所述预设存储区中读取数据。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
失效处理模块,用于当所述写数据被写入所述预设存储区,则对所述目标硬盘的写失败次数加1;判断所述目标硬盘的写失败次数是否大于第一数量阈值,若大于,则确定所述目标硬盘为失效盘。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
后台修复模块,用于定期遍历所述预设记录表中的各条跳转记录;遍历时,根据当前跳转记录中记录的写数据的实际地址从所述预设存储区获取所述当前跳转记录所关联的写数据,并根据所述跳转记录中记录的目标地址将所述当前跳转记录所关联的写数据写入所述目标硬盘;如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则删除所述当前跳转记录。
10.根据权利要求9所述的装置,其特征在于,所述后台修复模块还用于:
如果所述当前跳转记录所关联的写数据成功写入所述目标硬盘,则将所述当前跳转记录的重试次数加1;判断所述当前跳转记录的重试次数是否超过第二数量阈值;如果所述当前记录的重试次数超过所述第二数量阈值,则下次遍历时跳过所述当前跳转记录。
11.一种硬盘阵列控制设备,其特征在于,所述设备包括:处理器、存储器、收发单元及总线;
所述处理器、所述存储器、所述收发单元均与所述总线相连;
所述收发单元用于接收外部发来的数据以及向外部发送数据;
所述存储器用于存储所述处理器可执行的指令;
所述处理器被配置为:
接收写操作请求;
将所述写操作请求下发到硬盘阵列中的所述写操作请求的目标硬盘,以使所述目标硬盘执行所述写操作请求对应的写操作;
如果到达第一时间阈值未收到所述目标硬盘对所述写操作的反馈信息,则:
将所述写操作请求中携带的写数据写到预设存储区,并在预设记录表中记录所述写数据的跳转记录,所述跳转记录记录了所述写数据的目标地址与实际写入所述写数据的实际地址的映射关系,以及,
返回写操作成功的反馈信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510702664.7A CN106610788B (zh) | 2015-10-26 | 2015-10-26 | 硬盘阵列控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510702664.7A CN106610788B (zh) | 2015-10-26 | 2015-10-26 | 硬盘阵列控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106610788A true CN106610788A (zh) | 2017-05-03 |
CN106610788B CN106610788B (zh) | 2019-09-03 |
Family
ID=58613877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510702664.7A Active CN106610788B (zh) | 2015-10-26 | 2015-10-26 | 硬盘阵列控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106610788B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109799960A (zh) * | 2019-01-23 | 2019-05-24 | 郑州云海信息技术有限公司 | 一种提高存储系统稳定性的方法,系统,设备及可读存储介质 |
CN113568559A (zh) * | 2020-04-28 | 2021-10-29 | 浙江宇视科技有限公司 | 硬盘写错误的处理方法、装置、设备和介质 |
CN113625957A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 一种硬盘故障的检测方法、装置及设备 |
CN116661708A (zh) * | 2023-07-31 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 基于硬盘阵列的读写任务的处理方法和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587630B1 (en) * | 2005-04-29 | 2009-09-08 | Network Appliance, Inc. | Method and system for rapidly recovering data from a “dead” disk in a RAID disk group |
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
CN102521058A (zh) * | 2011-12-01 | 2012-06-27 | 北京威视数据系统有限公司 | Raid组磁盘数据预迁移方法 |
US20130047028A1 (en) * | 2011-08-17 | 2013-02-21 | Fujitsu Limited | Storage system, storage control device, and storage control method |
CN103678025A (zh) * | 2013-12-02 | 2014-03-26 | 创新科软件技术(深圳)有限公司 | 一种磁盘阵列中的磁盘故障处理方法 |
CN104407806A (zh) * | 2014-10-09 | 2015-03-11 | 杭州华为企业通信技术有限公司 | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 |
CN104407815A (zh) * | 2014-11-25 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种raid5磁盘阵列中坏扇区处理的方法和装置 |
-
2015
- 2015-10-26 CN CN201510702664.7A patent/CN106610788B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587630B1 (en) * | 2005-04-29 | 2009-09-08 | Network Appliance, Inc. | Method and system for rapidly recovering data from a “dead” disk in a RAID disk group |
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
US20130047028A1 (en) * | 2011-08-17 | 2013-02-21 | Fujitsu Limited | Storage system, storage control device, and storage control method |
CN102521058A (zh) * | 2011-12-01 | 2012-06-27 | 北京威视数据系统有限公司 | Raid组磁盘数据预迁移方法 |
CN103678025A (zh) * | 2013-12-02 | 2014-03-26 | 创新科软件技术(深圳)有限公司 | 一种磁盘阵列中的磁盘故障处理方法 |
CN104407806A (zh) * | 2014-10-09 | 2015-03-11 | 杭州华为企业通信技术有限公司 | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 |
CN104407815A (zh) * | 2014-11-25 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种raid5磁盘阵列中坏扇区处理的方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109799960A (zh) * | 2019-01-23 | 2019-05-24 | 郑州云海信息技术有限公司 | 一种提高存储系统稳定性的方法,系统,设备及可读存储介质 |
CN113568559A (zh) * | 2020-04-28 | 2021-10-29 | 浙江宇视科技有限公司 | 硬盘写错误的处理方法、装置、设备和介质 |
CN113568559B (zh) * | 2020-04-28 | 2024-02-27 | 浙江宇视科技有限公司 | 硬盘写错误的处理方法、装置、设备和介质 |
CN113625957A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 一种硬盘故障的检测方法、装置及设备 |
CN113625957B (zh) * | 2021-06-30 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种硬盘故障的检测方法、装置及设备 |
CN116661708A (zh) * | 2023-07-31 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 基于硬盘阵列的读写任务的处理方法和电子设备 |
CN116661708B (zh) * | 2023-07-31 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 基于硬盘阵列的读写任务的处理方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106610788B (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11784667B2 (en) | Selecting optimal responses to errors in a storage system | |
US10970202B1 (en) | Managing input/output (‘I/O’) requests in a storage system that includes multiple types of storage devices | |
US7975168B2 (en) | Storage system executing parallel correction write | |
JP3287203B2 (ja) | 外部記憶制御装置及び外部記憶制御装置間データ転送方法 | |
CN100378679C (zh) | 用于存储器访问请求的重定向的方法和系统 | |
US7570447B2 (en) | Storage control device and method for detecting write errors to storage media | |
CN101571815B (zh) | 信息系统及i/o处理方法 | |
US7730257B2 (en) | Method and computer program product to increase I/O write performance in a redundant array | |
CN101617295B (zh) | 集群对中的子系统控制器及集群操作方法 | |
JP5285786B2 (ja) | 回復動作中に使用するためのキャッシュ内の修正済みデータを決定するためのシステム | |
US20110225124A1 (en) | Creating a buffer point-in-time copy relationship for a point-in-time copy function executed to create a point-in-time copy relationship | |
JP3428842B2 (ja) | 情報処理システムおよびデータ多重化システム | |
US6954839B2 (en) | Computer system | |
US8838890B2 (en) | Stride based free space management on compressed volumes | |
CA2020272A1 (en) | Transferring data in a digital data processing system | |
CN1972312A (zh) | 用于选择存储群集以用来存取存储装置的方法和系统 | |
US10223221B2 (en) | Enclosure-encapsulated RAID rebuild | |
CN110058791B (zh) | 存储系统以及相应的方法和计算机可读介质 | |
CN106610788A (zh) | 硬盘阵列控制方法及装置 | |
CN108509156A (zh) | 数据读取方法、装置、设备及系统 | |
US8775756B1 (en) | Method of verifying integrity of data written by a mainframe to a virtual tape and providing feedback of errors | |
JPH10105344A (ja) | データ記録装置システム及びそのデータ書込方法 | |
CN103136075A (zh) | 磁盘系统、数据保存装置以及磁盘设备 | |
US10318196B1 (en) | Stateless storage system controller in a direct flash storage system | |
CN103677660B (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 |