一种不中断数据存储服务且修复raid阵列的方法和装置制造方法

文档序号:6632648阅读:384来源:国知局
一种不中断数据存储服务且修复raid阵列的方法和装置制造方法
【专利摘要】本发明提供一种不中断数据存储服务且修复RAID阵列的方法,该方法应用于基于块虚拟化技术的RAID阵列,包括:当RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写IO转移到所述镜像VD;当RAID中故障VD的数量超出该RAID的容错数量时,同时为各故障VD启动其对应的定时器;执行对最先超时的定时器所对应的第一故障VD的修复,其他故障VD等待该第一故障VD修复完成后再执行修复。本发明方案在RAID阵列中故障VD数量超出该RAID阵列的容错数量时,保证了数据存储服务的不中断且尽力的修复该RAID阵列,使得阵列故障前的数据和故障后的数据尽可能不丢失。
【专利说明】—种不中断数据存储服务且修复RAID阵列的方法和装置

【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种不中断数据存储服务且修复RAID阵列的方法和装置。

【背景技术】
[0002]传统存储阵列中,每一种RAID类型的磁盘容错数量都是固定的。例如RAID5最多只能允许一块磁盘发生故障,RAID6最多能允许两块磁盘发生故障。当故障磁盘的数量超出RAID的容错数量时,存储的数据将不再完整,系统无法再正常工作。这对很多应用来说都是一种灾难,许多系统会直接中止系统服务。
[0003]在监控应用领域中,实时传输数据的重要性不亚于数据本身。通常,监控系统要求全天候实时监控。倘若真的出现RAID故障导致存储系统无法运行,这时,丢失数据已经在所难免。数据丢失的后果是若干时段的监控录像文件丢失,但这对监控系统本身来说并无太大影响。因为监控系统只负责监控,存储监控数据。倘若我们能够使故障RAID阵列快速恢复工作,系统就可以继续执行存储任务。反之,如果因为RAID阵列故障而停止监控任务,那么丢失的监控录像就不仅仅是过去时间段的录像,还有未来的录像。所以对于监控系统来说,最好的应对方案不是中止系统监控服务,而是采取措施,恢复RAID的存储服务。
[0004]目前改进型的RAID技术,即基于块虚拟化的存储技术,将物理磁盘(PhysicalDisk,简称PD)划分为多块虚拟磁盘(Virtual Disk,简称VD),然后使用VD来构建具有RAID属性的VD组(VD GROUP)。传统RAID在遇到磁盘故障时,需要处理整块物理磁盘。而物理磁盘容量大,成本高,并且一个物理磁盘只能从属于一个RAID,即只有一个RAID会对该磁盘做故障处理,这是一个十分耗时的工作。假如将物理磁盘踢掉的话,势必损失非常大,耗时也非常长。而对于基于块虚拟化的存储技术,由于同一个物理磁盘上的各个VD分属于不同的VD组中;当一个物理磁盘损坏时,各个VD组同时参与修复工作,时间消耗将大大减少。另外,如果只是物理磁盘中若干数据块损坏,那么影响范围也只是一个或者若干个VD,所以只需要处理这些VD即可。这样既缩减了耗时,也减小了损失成本。所以比起传统RAID技术,基于块虚拟化的存储技术在故障修复方面多了许多先天优势。但由于VD数量众多,处理灵活,因此需要更为复杂和高效的故障修复策略才能充分发挥块虚拟化的优势。
[0005]有些方案避开故障处理,而试图降低发生这种故障的概率,例如增加RAID的磁盘容错能力;或者当RAID发生故障时,只允许读操作,禁止写操作。有的修复RAID的方案是删除该RAID,并重新创建一个同等配置的RAID,或者使用新磁盘替换故障磁盘。
[0006]增加RAID的磁盘容错能力,虽降低了故障发生的概率,但一旦发生,仍然无法解决问题。只恢复RAID的读业务,不适合监控等这种要求任何情况下都能实时写数据的应用。删除无法工作的RAID,用一个新的RAID来顶替,虽然可以恢复RAID工作,但这种代价太大,因为原RAID中的数据都丢失了。例如对于一个拥有10块磁盘的RIAD5,只损坏了 2块磁盘,却丢失了所有数据。对于使用新盘替换故障盘这种技术方案而言,添加新盘后必然需要做同步工作,但是传统RAID的同步工作非常耗时,不利于让故障RAID快速恢复工作。


【发明内容】

[0007]有鉴于此,本发明提供一种不中断数据存储服务且修复RAID阵列的方法和装置。该方法和装置应用于基于块虚拟化技术的RAID阵列。
[0008]该不中断数据存储服务且修复RAID阵列的方法包括:当RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写1转移到所述镜像VD ;当RAID中故障VD的数量超出该RAID的容错数量时,同时为各故障VD启动其对应的定时器;执行对最先超时的定时器所对应的第一故障VD的修复,其他故障VD等待该第一故障VD修复完成后再执行修复。
[0009]优选地,该执行对最先超时的定时器所对应的第一故障VD的修复包括:若第一故障VD是发生写错误的故障VD,则按照写错误故障VD的修复方式进行修复,具体为:在该写错误故障VD对应的定时器超时时,如果该写错误故障VD对应的镜像VD被写满,则剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;如果该写错误故障VD对应的镜像VD未被写满,则把该写错误故障VD上未被更新的数据复制到镜像VD上,并剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;若第一故障VD是物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复,具体为:在该离线导致的故障VD对应的定时器超时时,如果该离线导致的故障VD对应的镜像VD被写满,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,但离线导致的故障VD所在的物理磁盘已经上线,则将离线导致的故障VD对应的镜像VD上的数据复制到该离线导致的故障VD,并解除该镜像VD ;如果该离线导致的故障VD对应的镜像VD未被写满,且离线导致的故障VD所在的物理磁盘也未上线,且当前满足RAID重建条件,则对该离线导致的故障VD对应的镜像VD进行重建,并在重建完成后,剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,且该离线导致的故障VD所在的物理磁盘也未上线,且当前不满足RAID重建条件,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为该离线导致的故障VD在RAID中的角色。
[0010]优选地,其他故障VD等待该第一故障VD修复完成后再执行修复包括:在第一故障VD修改完成后,其他故障VD若为写错误故障VD,则按照写错误故障VD的修复方式进行修复,其他故障VD若为物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复。
[0011]优选地,若故障VD对应的定时器同时超时,则任选一个故障VD作为第一故障VD,执行对其的修复,其他的故障VD等待该第一故障VD修复完成后再执行修复。
[0012]优选地,对不同类型的故障VD设置不同时长的定时器。
[0013]该一种不中断数据存储服务且修复RAID阵列的装置包括,镜像VD单元,用于在RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写1转移到所述镜像VD ;定时器单元,用于在RAID阵列中故障VD的数量超出该RAID阵列的容错数量时,同时为各故障VD启动其对应的定时器;故障VD修复单元,用于执行对最先超时的定时器所对应的第一故障VD的修复,对其他故障VD的修复待该第一故障VD修复完成后再执行。
[0014]该故障VD修复单元执行对最先超时的定时器所对应的第一故障VD的修复包括:若第一故障VD是发生写错误的故障VD,则按照写错误故障VD的修复方式进行修复,具体为:在该写错误故障VD对应的定时器超时时,如果该写错误故障VD对应的镜像VD被写满,则剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;如果该写错误故障VD对应的镜像VD未被写满,则把该写错误故障VD上未被更新的数据复制到镜像VD上,并剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;若第一故障VD是物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复,具体为:在该离线导致的故障VD对应的定时器超时时,如果该离线导致的故障VD对应的镜像VD被写满,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,但离线导致的故障VD所在的物理磁盘已经上线,则将离线导致的故障VD对应的镜像VD上的数据复制到该离线导致的故障VD,并解除该镜像VD ;如果该离线导致的故障VD对应的镜像VD未被写满,且离线导致的故障VD所在的物理磁盘也未上线,且当前满足RAID重建条件,则对该离线导致的故障VD对应的镜像VD进行重建,并在重建完成后,剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,且该离线导致的故障VD所在的物理磁盘也未上线,且当前不满足RAID重建条件,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为该离线导致的故障VD在RAID中的角色。
[0015]优选地,该故障VD修复单元对第一故障VD修复完成后再执行对其他故障VD的修复包括:在第一故障VD修改完成后,其他故障VD若为写错误故障VD,则按照写错误故障VD的修复方式进行修复,其他故障VD若为物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复。
[0016]优选地,若故障VD对应的定时器同时超时,故障VD修复单兀任选一个故障VD作为第一故障VD,执行对其的修复,其他的故障VD等待该第一故障VD修复完成后再执行修复。
[0017]优选地,定时器单元对不同类型的故障VD设置不同时长的定时器。
[0018]相较于现有技术,本发明方案在RAID阵列中故障VD数量超出该RAID阵列的容错数量时,保证了数据存储服务的不中断且尽力的修复该RAID阵列,使得阵列故障前的数据和故障后的数据尽可能不丢失。

【专利附图】

【附图说明】
[0019]图1是包含本发明实施例装置的存储设备硬件架构图。
[0020]图2是本发明实施例流程图。
[0021]图3是本发明实施例子流程图。
[0022]图4是本发明实施例另一子流程图。
[0023]图5a?图5b是本发明未被更新数据的图示说明。

【具体实施方式】
[0024]针对【背景技术】中提到的问题,本发明基于块虚拟化的存储技术给出了一种RAID阵列(VD构建的RAID阵列)中故障的VD数量超出该RAID阵列的容错数量时,数据存储服务不中断且尽力修复该RAID阵列,使得阵列故障前的数据和故障后的数据尽可能不丢失的方案。以下通过具体实施例详细说明。
[0025]请参图1所示的本实施例提供的一种存储设备。该存储设备包括CPU、内存、非易失性存储介质、网络接口部件以及总线。基于图1所示的结构,请参考图2,以软件实现为例,本实施例提供一种不中断数据存储服务修复RAID阵列的装置。该修复RAID阵列的装置在逻辑上包括镜像VD单元、定时器单元和故障VD修复单元。该装置在运行过程中执行如下步骤的流程:
[0026]S21、镜像VD单元在RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写1转移到所述镜像VD。
[0027]S22、定时器单元在RAID阵列中故障VD的数量超出该RAID阵列的容错数量时,同时为各故障VD启动其对应的定时器。
[0028]S23、故障VD修复单元执行对最先超时的定时器所对应的第一故障VD的修复,对其他故障VD的修复待该第一故障VD修复完成后再执行。
[0029]在RAID阵列正常运行过程中,如果有一个VD出现了故障,比如说针对该VD的写1失败,则镜像VD单元为该VD申请一镜像VD (镜像VD的大小和故障VD的大小一般是一致的。因为在虚拟化存储系统中,VD的大小一般是建立存储池的时候就已经设置好了。该大小在设置的时候,可以根据系统的性能要求而定,比如256M,IG等等),后续针对该故障VD的写1全部转移到该镜像VD上。后续可以利用该镜像VD来修复RAID阵列。如果在一个VD出现故障的同时,另一个VD也出现了故障,此时,镜像VD单元要为该另一个VD也申请其对应的镜像VD,后续针对该另一个VD的写1也全部转移到其对应的镜像VD上,这样后续要存储的数据将不会丢失。所以在步骤S21中,只要有VD出现故障,镜像VD单元就为其申请对应的镜像VD。而现有技术中如果超出RAID阵列的容错数量时,比如说RAID5出现两个VD故障时,系统将无法正常工作,中止系统服务。而本发明实施例中,在超出该RAID阵列的容错数量时,系统不中止对外的服务,所有未来需要存储的数据全部转移到镜像VD上;如果存在读数据的业务需求,也可以从对应的VD上进行读取。关于RAID阵列的容错数量,不同的RAID阵列,其容错数量不同。比如说RAID5的最大容错数量是I个VD,即一个VD故障的时候,存储设备能恢复出所有的数据,且不会中止服务;RAID6的最大容错数量是2个VD,即两个VD故障的时候,存储设备也能恢复出所有的数据,且不会中止服务。
[0030]为了让系统知道故障VD和该故障VD对应的镜像VD分别存储了哪些数据,我们需要知道该镜像VD在后来的数据存储中哪些磁盘空间被写了数据。这里后来的数据是指在VD故障后,转移到镜像VD上的写1数据。只有这样,在数据恢复阶段我们才能区分哪些数据需要被恢复。为此,可以把一个VD以扇区为单位(系统默认一个1的最小单位是一个扇区)划分为更细粒度的数据单元,然后为每一个镜像VD申请一个位图表,该位图表的所占空间(bit数量)的每一位,代表一个数据单元。每当有写1落到镜像VD的某个数据单元上,就要把该数据单元对应的bit置1,以示该数据单元被更新过数据。
[0031]定时器单元需要在RAID阵列中故障VD的数量超出该RAID阵列的容错数量时,同时为各故障VD启动其对应的定时器。这里设置定时器的目的是为了有计划的,有序的进行RAID阵列的修复。通常,不同的VD故障类型将设置不同时长的定时器。比如说对于写错误的故障,可以设置定时器的超时时长为tl,离线的故障,可以设置定时器的超时时长为t2,tl〈t2。需要说明的是,各故障VD的定时器是同时启动的。比如说,对于RAID5阵列,当前已经有一 VD离线了(通常,VD离线后不会立即进行重建修复),过了几分钟,又一 VD出现了写错误,在该又一 VD出现写错误的时候,定时器单元同时针对这两个VD分别开启不同的定时器。另外,定时器的时长在设置的时候可以依据一定的经验进行设置,它跟系统的业务和性能有关。例如系统的业务总是十分繁忙,那么该时长可以设置的大一些。如果系统对修复工作的及时性要求不是很大,也可以设置的大一些,比如说10分钟、20分钟。
[0032]对于不同类型故障的VD,由于定时器的超时时长不一样,所以有的VD的定时器会先超时,有的VD的定时器会晚超时。故障VD修复单元会对先超时的定时器所对应的故障VD进行修复处理。为了便于描述,这里将最先超时的定时器所对应的故障VD称为第一故障VD。然后,等待该第一故障VD修复完成后故障VD修复单元再执行对其他故障VD的修复。
[0033]对于相同类型故障的VD,定时器的时长一般设置成一样,此时故障VD修复单兀将任选一个故障VD作为第一故障VD,执行对其的修复,其他的故障VD等待该第一故障VD修复完成后再执行修复。
[0034]故障VD修复单元在执行修复的时候,针对不同类型的故障VD按照不同的方法进行修复。图3是针对写错误故障VD的修复流程;图4是针对离线VD的修复流程。对于故障VD的修复,实际上更确切的说应该是对该故障VD所在RAID阵列的修复。
[0035]请参图3流程图针对写错误故障VD的修复流程。
[0036]S31、判断写错误故障VD对应的定时器超时时,该写错误故障VD对应的镜像VD是否被写满,如果是,转步骤S32,否则转步骤S33。
[0037]S32、剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色。
[0038]S33、把该写错误故障VD上未被更新的数据复制到镜像VD上,并剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为写错误故障VD在RAID中的角色。
[0039]步骤S33中的写错误故障VD上未被更新的数据是指该写错误故障VD对应的镜像VD上未写入转移1数据的空间对应写错误故障VD的空间中存储的数据。结合图5a和图5b进行简单说明。图5a中,比如说A空间刚写满时,该VD出现了写故障,后续将写入C空间的数据全部转移到镜像VD上的D空间。假设D空间刚被写满时,定时器超时,此时该镜像VD未被写满,A空间存储的数据即为故障VD上未被更新的数据。该数据需要被从A空间复制到镜像VD的B空间。图5b中,写入C空间的数据也全部转移到镜像VD的D空间,并且在定时器超时时,镜像VD的F空间刚写满,该镜像VD的F空间对应的是故障VD的E空间,此时镜像VD的B空间还没有新数据写入,该B空间对应的是故障VD的A空间,所以A空间存储的数据即为故障VD上未被更新的数据。
[0040]另外说明一下,由于在块虚拟化阵列中,VD的容量通常较小,所以在定时器超时之前镜像VD被写满数据的可能性很大,所以图3流程所显示的方法在不用复制数据和重建就可以快速地恢复RAID阵列。
[0041]请参图4针对物理磁盘离线导致的故障VD (以下简称离线VD)的修复流程。
[0042]S41、离线离线VD对应的定时器超时时,判断该离线VD对应的镜像VD是否被写满,如果是,转步骤S42,否则转步骤S43。
[0043]S42、剔除该离线VD,并将该离线VD对应的镜像VD的角色修改为离线VD在RAID中的角色。
[0044]S43、判断定时器超时时离线VD是否上线,如果是,转步骤S44,否则转步骤S45。
[0045]S44、将转移到镜像VD上的数据恢复到离线VD上,并解除该镜像VD0
[0046]S45、判断阵列是否满足重建条件,如果是,转步骤S46,否则转步骤S47。
[0047]S46、对镜像VD进行重建,转步骤S47。
[0048]S47、剔除该离线VD,并将该离线VD对应的镜像VD的角色修改为离线VD在RAID中的角色。
[0049]针对物理磁盘离线而导致VD离线的故障,如果定时器超时时,镜像VD已经写满了,即此时可以认为离线VD上的数据已经全部成为无效的旧数据时,直接踢掉该离线VD,将镜像VD加入到RAID中来,此时不管该离线的VD当前是否已经上线。这样的操作最简单方便。
[0050]如果定时器超时的时候,镜像VD还没有写满,但此时离线VD已经上线了,则在RAID阵列中还是保留原离线VD,但需要把镜像VD上的数据复制到该原离线VD上。
[0051]如果定时器超时时,镜像VD还没有写满,且离线的VD也还没有上线,此时判断是否满足重建的条件,,如果满足,则对镜像VD进行重建,否则直接剔除该离线VD,将镜像VD加入到RAID阵列中来。在这种情况下,故障发生前的部分数据将会丢失。实际上,第一故障VD是该离线VD的时候,对于RAID5来讲,是不满足重建条件的;如果对第一故障VD修复完成后(修复完成并不一定表示数据不丢失,只是完成了修复流程),对第二故障VD进行修复时,如果该第二故障VD是最后一个待修复的故障VD,且该第二故障VD也是离线VD,则通常是满足重建条件的。
[0052]在第一故障VD完成修复后,其他故障VD根据其故障类型的不同,按照不同的方法进行修复,即如果是写错误故障VD,则按照写错误故障VD的修复方法进行修复,如果是离线导致的故障,则按照离线导致的故障来进行该VD的修复。
[0053]本发明适用于多种RAID类型,尤其是业界常用的RAID5、RAID6阵列。
[0054]下面再通过一个例子来帮助对本发明实施例的理解。
[0055]以RAID5为例,该RAID5由5个VD构建。开始时,整个RAID5阵列运行正常;时刻LVDl出现了写错误故障,则为该VDl分配镜像VD,新的写1转移到镜像VD上。由于整个RAID5上当前仅有一个故障,故障数量未超出其冗余度,所以可以按照现有RAID5的方式进行故障VD的处理,比如说,进一步进行该RAID5阵列的重建。在对VDl的故障处理还没有完成之前,VD2又发生了故障,比如说该VD2的故障是离线故障。此时,该RAID5阵列中的VD故障数量超出了其容错数量。在VD2发生故障时,定时器单元同时给VDl和VD2启动定时器I和定时器2,比如说VDl对应的定时器I的超时时长为10分钟,VD2对应的定时器2的超时时长是20分钟。在定时器I超时后,即按照图3的方法执行对VDl的修复;在对VDl的修复完成后再开始对VD2按照图4的方法执行对VD2的修复。这里需要说明的是,在VD2离线后,也需要立即给该VD2申请一镜像VD,以使得后续的数据存储到该镜像VD上,从而使得新的这些数据不丢失。在对VDl和VD2执行修复前,所有新产生的写数据都需要转移到VDl和VD2对应的镜像VD上。
[0056]上述例子简单描述了下写故障VD和离线故障VD发生时的处理过程。另外,还有出现两个写故障VD的情况,两个离线故障VD的情况等,处理思路和上述出现一个写故障VD、一个离线故障VD的情况一样。
[0057]本发明给出的基于块虚拟化技术构建的RAID阵列的故障解决方案,在减少数据损失方面的效果十分明显,并且整个过程无需中断系统的存储服务。在基于块虚拟化技术的存储系统中,一个VD的容量通常是M级别的,而存储系统的容量通常T级别的,因此至多丢失若干个VD的数量,就可以恢复存储服务,是非常值得的。并且整个过程中寻找新VD做镜像,踢出故障VD等操作十分灵活。由于VD容量小,拷贝VD数据和同步VD,速度非常快,使得故障恢复工作能够在短时间内完成。
[0058]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种不中断数据存储服务且修复RAID阵列的方法,该方法应用于基于块虚拟化技术的RAID阵列,其特征在于,该方法包括: 当RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写1转移到所述镜像VD; 当RAID中故障VD的数量超出该RAID的容错数量时,同时为各故障VD启动其对应的定时器; 执行对最先超时的定时器所对应的第一故障VD的修复,其他故障VD等待该第一故障VD修复完成后再执行修复。
2.如权利要求1所述的方法,其特征在于,所述执行对最先超时的定时器所对应的第一故障VD的修复包括: 若第一故障VD是发生写错误的故障VD,则按照写错误故障VD的修复方式进行修复,具体为:在该写错误故障VD对应的定时器超时时,如果该写错误故障VD对应的镜像VD被写满,则剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;如果该写错误故障VD对应的镜像VD未被写满,则把该写错误故障VD上未被更新的数据复制到镜像VD上,并剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色; 若第一故障VD是物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复,具体为:在该离线导致的故障VD对应的定时器超时时,如果该离线导致的故障VD对应的镜像VD被写满,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,但离线导致的故障VD所在的物理磁盘已经上线,则将离线导致的故障VD对应的镜像VD上的数据复制到该离线导致的故障VD,并解除该镜像VD ;如果该离线导致的故障VD对应的镜像VD未被写满,且离线导致的故障VD所在的物理磁盘也未上线,且当前满足RAID重建条件,则对该离线导致的故障VD对应的镜像VD进行重建,并在重建完成后,剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,且该离线导致的故障VD所在的物理磁盘也未上线,且当前不满足RAID重建条件,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为该离线导致的故障VD在RAID中的角色。
3.如权利要求2所述的方法,其特征在于,其他故障VD等待该第一故障VD修复完成后再执行修复包括: 在第一故障VD修改完成后,其他故障VD若为写错误故障VD,则按照写错误故障VD的修复方式进行修复,其他故障VD若为物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复。
4.如权利要求1所述的方法,其特征在于,若故障VD对应的定时器同时超时,则任选一个故障VD作为第一故障VD,执行对其的修复,其他的故障VD等待该第一故障VD修复完成后再执行修复。
5.如权利要求1所述的方法,其特征在于,对不同类型的故障VD设置不同时长的定时器。
6.一种不中断数据存储服务且修复RAID阵列的装置,该装置应用于基于块虚拟化技术的RAID阵列,其特征在于,该装置包括, 镜像VD单元,用于在RAID阵列中出现故障的虚拟磁盘VD时,为所述故障VD申请镜像VD,以把故障VD的写1转移到所述镜像VD ; 定时器单元,用于在RAID阵列中故障VD的数量超出该RAID阵列的容错数量时,同时为各故障VD启动其对应的定时器; 故障VD修复单元,用于执行对最先超时的定时器所对应的第一故障VD的修复,对其他故障VD的修复待该第一故障VD修复完成后再执行。
7.如权利要求6所述的装置,其特征在于,故障VD修复单元执行对最先超时的定时器所对应的第一故障VD的修复包括: 若第一故障VD是发生写错误的故障VD,则按照写错误故障VD的修复方式进行修复,具体为:在该写错误故障VD对应的定时器超时时,如果该写错误故障VD对应的镜像VD被写满,则剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色;如果该写错误故障VD对应的镜像VD未被写满,则把该写错误故障VD上未被更新的数据复制到镜像VD上,并剔除该写错误故障VD,并将该写错误故障VD对应的镜像VD的角色修改为该写错误故障VD在RAID中的角色; 若第一故障VD是物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复,具体为:在该离线导致的故障VD对应的定时器超时时,如果该离线导致的故障VD对应的镜像VD被写满,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,但离线导致的故障VD所在的物理磁盘已经上线,则将离线导致的故障VD对应的镜像VD上的数据复制到该离线导致的故障VD,并解除该镜像VD ;如果该离线导致的故障VD对应的镜像VD未被写满,且离线导致的故障VD所在的物理磁盘也未上线,且当前满足RAID重建条件,则对该离线导致的故障VD对应的镜像VD进行重建,并在重建完成后,剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为离线导致的故障VD在RAID中的角色;如果该离线导致的故障VD对应的镜像VD未被写满,且该离线导致的故障VD所在的物理磁盘也未上线,且当前不满足RAID重建条件,则剔除该离线导致的故障VD,并将该离线导致的故障VD对应的镜像VD的角色修改为该离线导致的故障VD在RAID中的角色。
8.如权利要求7所述的装置,其特征在于,故障VD修复单元对第一故障VD修复完成后再执行对其他故障VD的修复包括: 在第一故障VD修改完成后,其他故障VD若为写错误故障VD,则按照写错误故障VD的修复方式进行修复,其他故障VD若为物理磁盘离线导致的故障VD,则按照物理磁盘离线导致故障VD的修复方式进行修复。
9.如权利要求6所述的装置,其特征在于,若故障VD对应的定时器同时超时,故障VD修复单兀任选一个故障VD作为第一故障VD,执行对其的修复,其他的故障VD等待该第一故障VD修复完成后再执行修复。
10.如权利要求6所述的装置,其特征在于,定时器单元对不同类型的故障VD设置不同时长的定时器。
【文档编号】G06F11/16GK104317678SQ201410603460
【公开日】2015年1月28日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】李勇昌, 罗亚山, 王丽红, 李华英 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1