专利名称:一种基于镜像技术的数据存储方法及装置的制作方法
技术领域:
本发明涉及通信技术领域,特别是涉及一种基于镜像技术的数据存储方法及装置。
背景技术:
RAID (Redundant Array of Inexpensive Disks,磁盘冗余阵列)是一种高性能、 高可靠性的存储技术,通过将一系列单独的磁盘以不同的方式组合起来,为应用终端或终 端集群提供逻辑上的磁盘。其中,使用RAID的优点包括扩大磁 盘容量、提高磁盘读写的性 能和数据的安全性。具体的,RAID技术已经广泛应用于数据存储的各种场合,常用的RAID技术包括 RAIDO、RAIDU RAID5、RAID6、RAIDlO等;其中,RAIDO不具有冗余能力,RAIDl并不是完全 的磁盘阵列;而RAID5、RAID6和RAIDlO分别由多块磁盘(例如,RAID5和RAID6不少于3 块,RAIDlO不少于4块)组成,各个RAID以条带的方式向阵列中的磁盘写数据,并将奇偶 校验数据存放在阵列中的各个磁盘上。其中,奇偶校验数据是由每个条带中的数据位使用 XOR运算得出,从而使得在一个磁盘发生损坏时,可以通过条带中的数据位+奇偶校验位使 用XOR运算来还原丢失的那部分数据。进一步的,RAID5的每个条带上含有1个校验位,支持任意损坏其中一块磁盘,通 过其他磁盘上的奇偶校验位来重建数据;RAID6的每个条带上含有2个校验位,支持任意损 坏其中两块磁盘,通过其他磁盘上的奇偶校验位来恢复数据;RAIDlO是对磁盘组先进行镜 像,再对磁盘进行条带,当一块磁盘损坏后通过其对应的镜像盘恢复数据,最多允许不同位 置下50%的磁盘损坏。如图1所示,为现有技术中一种以RAID5为例的数据存储过程示意图,其中,RAID5 是一种基于条带校验模型的存储结构,还有一个校验位,当对数据写入RAID5阵列时,需要 对条带上的数据进行校验,并将校验和写入到校验位。具体的,RAID5阵列由3块磁盘组成,而写入RAID5的有6块数据,此时,需要将6 块数据分成3个条带写入磁盘中。其中,条带P(P1、P2和P3)中的数据块是奇偶校验数据, 分别由每个条带中的数据XOR算出,即P1=A@B,P2=C D,P3=E F;假设磁盘1损坏 时,对于条带1中的数据A,可以由B @ Pl运算得出。如图2所示,为现有技术中一种以RAIDlO为例的数据存储过程示意图,其中, RAIDlO是RAIDl和RAIDO的结合,也可称为RAID (0+1),先进行镜像后进行条带化,既提高 了系统的读写性能,又提供了数据的冗余保护,RAIDlO的磁盘空间利用率和RAIDl是一样 的,均为50%。具体的,在RAIDlO中,只要不是镜像组的一对磁盘同时出现损坏,则可以支持多 块磁盘同时掉线。例如,在图2中,当磁盘1、4、5三块磁盘同时掉线时,只要磁盘2、3、6仍 然正常工作,则可以保证数据不丢失。但是,在使用RAID5进行数据存储时,当数据写入时有数据发生变化,则条带需要重新进行校验,从而导致写入的性能较低。尤其是在随机写较多的情况下,为了计算新校验 和还需要将老数据读出,开销巨大,性能严重下降。另外,当有磁盘因为写入失败发生踢盘 或者其他原因损失后,则阵列重建过程需要将所有保留数据全部读出并通过异或关系计算 来恢复数据,从而导致系统资源被大量占用,严重影响对正常业务的响应速度。在使用RAIDlO进行数据存储时,当一对镜像组磁盘同时掉线时,则数据将无法恢 复,例如,如果磁盘1和磁盘2同时损坏时,则RAIDlO阵列中的数据就无法恢复了。此外, RAIDlO的磁盘利用率不是很高,需要消耗50%的磁盘来对数据进行冗余,大大增加了设备 的成本
发明内容
本发明提供一种基于镜像技术的数据存储方法及装置,以节省系统资源,并提高 磁盘的利用率。为了达到上述目的,本发明提出了一种基于镜像技术的数据存储方法,应用于包 括至少两个磁盘的RAID阵列中,所述RAID阵列中的磁盘设有局部镜像分区,所述方法进一 步包括以下步骤当有数据需要对所述磁盘进行写操作时,从所述磁盘对应的其他磁盘的局部镜像 分区中选择活动分块,并将所述数据写入所述磁盘和选择的局部镜像分区的活动分块;当所述数据写入所述磁盘和局部镜像分区的活动分块成功时,删除所述局部镜像 分区的活动分块中写入的数据;当所述数据写入所述磁盘失败且写入所述局部镜像分区的活动分块成功时,根据 所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。所述RAID阵列中的磁盘设有局部镜像分区,具体为将所述RAID阵列的所有磁盘进行排序,并根据排序结果从所有磁盘中选择一个 磁盘的预设个数的条带分块作为前一个磁盘的局部镜像分区。将所述数据写入所述磁盘和选择的局部镜像分区的活动分块,之后还包括将所述局部镜像分区的活动分块设置为锁定状态;其中,处于锁定状态的活动分 块无法写入数据;删除所述局部镜像分区的活动分块中写入的数据,之后还包括清除所述局部镜 像分区的活动分块设置的锁定状态;根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复,之前还包 括保持所述局部镜像分区的活动分块设置的锁定状态。根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复,具体包 括获取所述磁盘的性能信息,并当所述性能信息小于预设的性能指标时,根据所述 局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复,具体包 括将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘;如果预设次 数内将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘成功时,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动分块设置的锁定 状态;如果预设次数内将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘 均失败时,如果当前有可用的热备磁盘,则通过所述热备磁盘对所述磁盘进行重建。通过所述热备磁盘对所述磁盘进行重建,具体包括将所述磁盘中的数据和所述局部镜像分区的活动分块中写入的数据拷贝到所述 热备磁盘,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的 活动分块设置的锁定状态。一种基于镜像技术的数据存储装置,应用于包括至少两个磁盘的RAID阵列中,所 述RAID阵列中的磁盘设有局部镜像分区,所述装置包括选择模块,用于当有数据需要对所述磁盘进行写操作时,从所述磁盘对应的其他 磁盘的局部镜像分区中选择活动分块;
写入模块,与所述选择模块连接,用于将所述数据写入所述磁盘和选择的局部镜 像分区的活动分块;删除模块,与所述选择模块和所述写入模块分别连接,用于当所述数据写入所述 磁盘和局部镜像分区的活动分块成功时,删除所述局部镜像分区的活动分块中写入的数 据;处理模块,与所述选择模块和所述写入模块分别连接,用于当所述数据写入所述 磁盘失败且写入所述局部镜像分区的活动分块成功时,根据所述局部镜像分区的活动分块 中写入的数据对所述磁盘进行恢复。还包括设置模块,与所述选择模块连接,用于将所述RAID阵列的所有磁盘进行排序,并 根据排序结果从所有磁盘中选择一个磁盘的预设个数的条带分块作为前一个磁盘的局部 镜像分区。还包括维护模块,用于当所述数据写入所述磁盘和选择的局部镜像分区的活动分块时, 将所述局部镜像分区的活动分块设置为锁定状态;其中,处于锁定状态的活动分块无法写 入数据;当删除所述局部镜像分区的活动分块中写入的数据时,清除所述局部镜像分区的 活动分块设置的锁定状态;当根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复时,保持 所述局部镜像分区的活动分块设置的锁定状态。所述处理模块,具体用于获取所述磁盘的性能信息,并当所述性能信息小于预设 的性能指标时,根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。所述处理模块,进一步用于将所述局部镜像分区的活动分块中写入的数据重新写 入到所述磁盘;如果预设次数内将所述局部镜像分区的活动分块中写入的数据重新写入到 所述磁盘成功时,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像 分区的活动分块设置的锁定状态;如果预设次数内将所述局部镜像分区的活动分块中写入 的数据重新写入到所述磁盘均失败时,如果当前有可用的热备磁盘,则通过所述热备磁盘 对所述磁盘进行重建。
在通过所述热备磁盘对所述磁盘进行重建时,所述处理模块,进一步用于将所述 磁盘中的数据和所述局部镜像分区的活动分块中写入的数据拷贝到所述热备磁盘,删除所 述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动分块设置的锁 定状态。与现有技术相比,本发明具有以下优点通过为RAID阵列中的磁盘设置局部镜像分区,并将数据同时写入到磁盘和对应 的局部镜像分区,当磁盘出现故障导致数据写入失败时,能够通过局部镜像分区内写入的 数据进行恢复,从而加快了业务的响应速度,对正常业知性能的影响较小,磁盘利用率很
尚ο
图1为现有技术中以RAID5为例的数据存储过程示意图; 图2为现有技术中以RAIDlO为例的数据存储过程示意图;图3为本发明提出的一种基于镜像技术的数据存储方法流程图;图4为本发明应用场景下提出的一种基于镜像技术的数据存储方法流程图;图5为本发明应用场景下数据写入示意图;图6为本发明提出的一种基于镜像技术的数据存储装置结构图。
具体实施例方式本发明中,通过为RAID阵列中的磁盘设置局部镜像分区,在数据的写入过程中, 需要将数据同时写入到磁盘和对应的局部镜像分区中,当磁盘出现故障导致数据写入磁盘 失败时,如果数据写入对应的局部镜像分区成功,则能够通过局部镜像分区内写入的数据 对所述磁盘进行恢复(例如,对写入磁盘失败的分块进行数据恢复、对写入磁盘失败的磁 盘进行重建等);从而加快了业务的响应速度,对正常业务性能的影响较小,磁盘利用率很 尚ο本发明提出的一种基于镜像技术的数据存储方法,应用于包括至少两个磁盘的 RAID阵列中,如图3所示,所述方法包括以下步骤步骤301,为所述RAID阵列中的磁盘设置局部镜像分区。步骤302,当有数据需要对所述磁盘进行写操作时,从所述磁盘对应的其他磁盘的 局部镜像分区中选择活动分块,并将所述数据写入所述磁盘和选择的局部镜像分区的活动 分块。步骤303,当所述数据写入所述磁盘和局部镜像分区的活动分块成功时,删除所述 局部镜像分区的活动分块中写入的数据。步骤304,当所述数据写入所述磁盘失败且写入所述局部镜像分区的活动分块成 功时,根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。为了更加清楚的阐述本发明提供的技术方案,以下结合具体的应用场景对本发明 进行详细描述。按照业界的经验,硬盘故障大多是出现在磁盘写入时,如果一块磁盘写入失 败,则意味着这块磁盘有不可恢复的扇区(磁盘自身的g-list已经使用完),需要进行更 换。基于此,本应用场景下,需要为RAID阵列中的磁盘设置局部镜像分区。
需要说明的是,本发明提供的技术方案可以应用于当前的RAID阵列(例如,RAID5阵列等)中,也可以应用于其他的RAID阵列(例如,包括12个磁盘的RAID阵列等)中。本应用场景下,假设每个磁盘柜有16块磁盘(该磁盘个数可以根据实际需要任意 选择),磁盘柜中磁盘的个数不会影响本发明的实现,为了方便描述,将16个磁盘分别编号 为1 16,并将16个磁盘中的15个磁盘(本应用场景下以磁盘1 磁盘15为例)组成 一个阵列(即RAID阵列),将另一个磁盘作为热备磁盘(本应用场景下以磁盘16为例)。 对于该RAID阵列来说,需要对该RAID阵列进行条带化,本应用场景下,以每个条带大小为 128KB(实际应用中,该条带大小可以根据需要进行任意设定,例如还可以为64KB等)为例 进行说明。具体的,当条带化完成后,需要为RAID阵列中的磁盘设置局部镜像分区,即从 RAID阵列的所有磁盘中选择磁盘,并使用所选择磁盘的预设个数的条带分块作为其他磁盘 的局部镜像分区。例如,从磁盘1 磁盘15中选择磁盘1,并使用磁盘1的280个条带分块作为磁 盘2 磁盘15的局部镜像分区,并使用磁盘2的20条带分块作为磁盘1的局部镜像分区。 其中,该条带分块可以从磁盘(以磁盘1为例)中任意选择,例如,可以选择磁盘1的头280 个条带分块作为局部镜像分区,可以选择磁盘1的最后280个条带分块作为局部镜像分区, 可以从磁盘1的中间选择280个条带分块作为局部镜像分区等。优选的,本应用场景下,为了充分利用每个磁盘,可以将RAID阵列的所有磁盘进 行排序,并根据排序结果从所有磁盘中选择一个磁盘的预设个数的条带分块作为前一个磁 盘的局部镜像分区。例如,可以将每个磁盘的头20个条带分块(该条带分块的个数以及条 带分块的位置可以根据实际需要任意选择)作为前一个磁盘的局部镜像分区,即将磁盘15 的头20个条带分块作为磁盘14的局部镜像分区,将磁盘14的头20个条带分块作为磁盘 13的局部镜像分区,以此类推,将将磁盘1的头20个条带分块作为磁盘15的局部镜像分 区。如图4所示,基于上述情况,本发明提供的基于镜像技术的数据存储方法包括以 下步骤步骤401,当有数据需要写入时,将该数据写入到磁盘和对应的局部镜像分区。本应用场景下,以数据需要写入到磁盘1 (即有数据对磁盘1的某个条带分块进行 写操作)为例进行说明,相应的,磁盘1对应的局部镜像分区为磁盘2的头20个条带分块; 即当有数据需要写入到磁盘1时,将该数据同时写入到磁盘1和磁盘2的局部镜像分区中, 如图5所示的数据写入过程,磁盘2的局部镜像分区作为磁盘1的镜像对。需要说明的是,在将数据写入到磁盘2的局部镜像分区时,需要从磁盘2的局部镜 像分区中选择活动分块(即没有被设置为锁定状态的分块),并将数据写入到选择的活动 分块中。其中,该选择活动分块的方式可以为从磁盘2的局部镜像分区中随机选择。进一步的,将数据写入到选择的活动分块之后,还需要将该活动分块设置为锁定 状态,以保证该活动分块中的内容不会被后续的数据所覆盖;其中,处于锁定状态的活动分 块无法写入数据。步骤402,判断数据写入磁盘是否成功,如果成功,则转到步骤403,否则,转到步 骤 404。
需要注意的是,本应用场景下,当有数据需要写入时,需要先对该数据进行缓存, 并将缓存的数据写入到磁盘(或者对应的局部镜像分区)。步骤403,删除局部镜像分区的活动分块中写入的数据,并清除局部镜像分区的活 动分块设置的锁定状态。本应用场景下,以数据写入局部镜像分区的活动分块成功为例进行说明,当数据 写入磁盘成功时,则说明磁盘没有出现故障,不需要保留局部镜像分区的活动分块中写入 的数据,即需要删除局部镜像分区的活动分块中写入的数据,并清除局部镜像分区的活动 分块设置的锁定状态,以使该局部镜像分区的活动分块能够继续写入后续的数据。 另外,需要注意的是,当数据写入磁盘时,还需要删除缓存的数据,本应用场景下 不对该缓存的数据详加赘述。步骤404,建立写入数据失败的分块地址与局部镜像分区的活动分块的地址之间 的对应关系。具体的,当获知磁盘2的局部镜像分区写入成功的信息后,需要将磁盘1写入数据 失败的分块地址(即目的地址)映射到局部镜像分区的活动分块的地址,并将磁盘1写入 数据失败的分块地址记录到失败表中。如表1所示的一种失败表的示意情况。表 1 需要注意的是,当目的地址(即写入数据失败的分块地址)写入失败时,需要保 存局部镜像分区的活动分块中写入的数据,并保持局部镜像分区的活动分块设置的锁定状 态。例如,如表1所示,对目的地址0X236A79写入失败时,则地址0X236A79对应的当前局 部镜像分块0X1111A8将被设置为锁定状态,处于锁定状态的局部镜像分块不能写入数据。 在后续对其他地址的写入操作进行分配活动分块时,不能分配该局部镜像分块0X1111A8。另外,需要说明的是,每次向目的地址(例如,0X236A79)写入数据失败时,需要将 写入失败次数加1。步骤405,根据预设策略将局部镜像分区的活动分块中写入的数据重新写入到写 入数据失败的分块地址。具体的,当建立了写入数据失败的分块地址与局部镜像分区的活动分块的地址之 间的对应关系之后,当磁盘(例如,磁盘1)空闲(即通过获取磁盘的性能信息,确定当前性 能信息小于预设的性能指标时)时,还需要读取局部镜像分块0X1111A8中写入的数据,并 将0X1111A8中写入的数据重新写入到目的地址0X236A79。本应用场景下,该预设策略可以根据实际需要任意选择,例如,该预设策略可以为 预设周期(即每到预设周期时将局部镜像分区的活动分块中写入的数据重新写入到写入数据失败的分块地址),该预设策略可以为预设性能指标(即每次性能到达该指标时将局部镜像分区的活动分块中写入的数据重新写入到写入数据失败的分块地址),实际应用中, 该预设策略还可以为其他策略,本应用场景下不再赘述。步骤406,判断预设次数内将局部镜像分区的活动分块中写入的数据重新写入到 写入数据失败的分块地址是否成功,如果成功,转到步骤407,如果不成功,转到步骤408。具体的,如果将局部镜像分区的活动分块中写入的数据重新写入到写入数据失败 的分块地址失败时,则需要更新表1所示的失败表,每失败一次,将写入失败次数加1。在本 步骤中,可以根据该失败表判断预设次数内将局部镜像分区的活动分块中写入的数据重新 写入到写入数据失败的分块地址是否成功。需要注意的是,以该预设次数为3次为例,如果在写失败操作次数未达到3次 之前,新业务的目的地址为0X236A79时,此时,仍然需要尝试将数据写入到目的地址 0X236A79,并将数据写入到0X236A79对应的局部镜像分块0X1111A8 (从表1中可以获得相
关信息)。具体的,当数据需要写入到目的地址0X236A79时,需要判断失败表中是否记录了 目的地址0X236A79的信息,如果是(本应用场景下记录了目的地址0X236A79与局部镜像 分块0X1111A8),则能够获取到局部镜像分块的地址信息,此时需要将数据写入到获取的局 部镜像分块中。进一步的,如果将数据写入到目的地址0X236A79成功,则删除局部镜像分区的活 动分块中写入的数据,并清除局部镜像分区的活动分块设置的锁定状态,并将失败表中相 应的记录删除。如果将数据写入到目的地址0X236A79失败,则需要更新表1所示的失败表, 每失败一次,将写入失败次数加1。需要注意的是,在上述过程中,对于目的地址为0X236A79的读请求操作,需要从 对应的局部镜像分块0X1111A8中读取相关数据。步骤407,删除局部镜像分区的活动分块中写入的数据,并清除局部镜像分区的活 动分块设置的锁定状态,并将失败表中相应的记录删除。步骤408,判断当前是否有可用的热备磁盘,如果当前有可用的热备磁盘,转到步 骤409,否则,转到步骤410。步骤409,通过热备磁盘对磁盘进行重建。具体的,在通过热备磁盘(以磁盘16为例)对磁盘(以磁盘1为例)进行重建时, 需要将磁盘1中的数据和局部镜像分区的活动分块中写入的数据拷贝到热备磁盘16中,并 删除局部镜像分区的活动分块中写入的数据,以及清除局部镜像分区的活动分块设置的锁 定状态。本应用场景下,如果有热备磁盘则需要启动重建功能,拷贝磁盘1上的数据到热 备磁盘16,并将写入数据失败的分块(例如0X236A79地址的分块)中的数据,通过对应的 局部镜像分区的活动分块(例如0X1111A8地址的分块)中拷入,当数据拷贝到磁盘16之 后,需要删除局部镜像分区的活动分块中写入的数据,以及清除局部镜像分区的活动分块 设置的锁定状态,并清除写入失败表中的内容。需要注意的是,在执行上述操作的过程中,发生的业务读写可以正常进行,对于写 操作,直接定位到热备磁盘16,磁盘2的局部镜像也相应的镜像到热备磁盘1 ;对于读操作,拷贝到热备磁盘16的数据直接从热备磁盘16中进行读取,未拷贝到热备磁盘16的数据从 磁盘1中进行读取,当拷贝完成后踢出磁盘1。步骤410,上报告警,并使用局部镜像分区中的活动分块替代磁盘中的坏分块进行工作。具体的,由于上述步骤中已经建立了写入数据失败的分块地址与局部镜像分区的 活动分块的地址之间的对应关系,则本步骤中,根据该对应关系,则能够使用局部镜像分区 中的活动分块替代磁盘中的坏分块进行工作。例如,当有数据需要写入到目的地址0X236A79时,由于目的地址0X236A79对应的 分块已经无法写入数据,则本步骤中,能够直接将数据写入到局部镜像分块0X1111A8中。本应用场景下,在使用局部镜像分区中的活动分块替代磁盘中的坏分块进行工作 的过程 中,如果发现空闲的热备磁盘,则开始重建。其中,本发明中的步骤可以根据实际的需要进行调整。可见,通过采用本发明提供的技术方案,具有以下优点(1)当数据写入磁盘发生首次写入失败时,可以不在繁忙时进行重试,而在空闲时 通过局部镜像分块中数据进行重试,加快业务的响应速度。(2)本发明在对磁盘进行重建时,不需要CPU参与运算,对正常的业务性能影响较 小。(3)与其他冗余阵列相比,本发明在阵列具有冗余性的同时,对磁盘的利用率很高 (例如,损失的空间为每个磁盘的头20个分块)。(4)本发明在具备高磁盘利用率,冗余性的同时,业务性能较高,特别是随机写性 能较高,并不降低数据的写入性能(特别是随机写性能)。基于同样的发明构思,本发明提出的一种基于镜像技术的数据存储装置,应用于 包括至少两个磁盘的RAID阵列中,所述RAID阵列中的磁盘设有局部镜像分区,如图6所 示,所述装置包括设置模块11,用于为所述RAID阵列中的磁盘设置局部镜像分区。本发明中,所述设置模块11,具体用于将所述RAID阵列的所有磁盘进行排序,并 根据排序结果从所有磁盘中选择一个磁盘的预设个数的条带分块作为前一个磁盘的局部 镜像分区。选择模块12,与所述设置模块11连接,用于当有数据需要对所述磁盘进行写操作 时,从所述磁盘对应的其他磁盘的局部镜像分区中选择活动分块。写入模块13,与所述选择模块12连接,用于将所述数据写入所述磁盘和选择的局 部镜像分区的活动分块。删除模块14,与所述选择模块12和所述写入模块13分别连接,用于当所述数据写 入所述磁盘和局部镜像分区的活动分块成功时,删除所述局部镜像分区的活动分块中写入 的数据。处理模块15,与所述选择模块12和所述写入模块13分别连接,用于当所述数据写 入所述磁盘失败且写入所述局部镜像分区的活动分块成功时,根据所述局部镜像分区的活 动分块中写入的数据对所述磁盘进行恢复。本发明中,所述处理模块15,具体用于获取所述磁盘的性能信息,并当所述性能信息小于预设的性能指标时,根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进 行恢复。所述处理模块15,进一步用于将所述局部镜像分区的活动分块中写入的数据重新 写入到所述磁盘;如果预设次数内将所述局部镜像分区的活动分块中写入的数据重新写入 到所述磁盘成功时,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜 像分区的活动分块设置的锁定状态;如果预设次数内将所述局部镜像分区的活动分块中写 入的数据重新写入到所述磁盘均失败时,如果当前有可用的热备磁盘,则通过所述热备磁 盘对所述磁盘进行重建。
进一步的,在通过所述热备磁盘对所述磁盘进行重建时,所述处理模块15,进一步 用于将所述磁盘中的数据和所述局部镜像分区的活动分块中写入的数据拷贝到所述热备 磁盘,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动 分块设置的锁定状态。维护模块16,与所述设置模块11连接,用于当所述数据写入所述磁盘和选择的局 部镜像分区的活动分块时,将所述局部镜像分区的活动分块设置为锁定状态;其中,处于锁 定状态的活动分块无法写入数据;当删除所述局部镜像分区的活动分块中写入的数据时,清除所述局部镜像分区的 活动分块设置的锁定状态;当根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复时,保持 所述局部镜像分区的活动分块设置的锁定状态。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合 并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通 过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发 明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储 介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可 以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流 程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分 布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上 述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领 域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
一种基于镜像技术的数据存储方法,应用于包括至少两个磁盘的RAID阵列中,其特征在于,所述RAID阵列中的磁盘设有局部镜像分区,所述方法进一步包括以下步骤当有数据需要对所述磁盘进行写操作时,从所述磁盘对应的其他磁盘的局部镜像分区中选择活动分块,并将所述数据写入所述磁盘和选择的局部镜像分区的活动分块;当所述数据写入所述磁盘和局部镜像分区的活动分块成功时,删除所述局部镜像分区的活动分块中写入的数据;当所述数据写入所述磁盘失败且写入所述局部镜像分区的活动分块成功时,根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。
2.如权利要求1所述的方法,其特征在于,所述RAID阵列中的磁盘设有局部镜像分区, 具体为将所述RAID阵列的所有磁盘进行排序,并根据排序结果从所有磁盘中选择一个磁盘 的预设个数的条带分块作为前一个磁盘的局部镜像分区。
3.如权利要求1所述的方法,其特征在于,将所述数据写入所述磁盘和选择的局部镜 像分区的活动分块,之后还包括将所述局部镜像分区的活动分块设置为锁定状态;其中,处于锁定状态的活动分块无 法写入数据;删除所述局部镜像分区的活动分块中写入的数据,之后还包括清除所述局部镜像分 区的活动分块设置的锁定状态;根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复,之前还包括 保持所述局部镜像分区的活动分块设置的锁定状态。
4.如权利要求1所述的方法,其特征在于,根据所述局部镜像分区的活动分块中写入 的数据对所述磁盘进行恢复,具体包括获取所述磁盘的性能信息,并当所述性能信息小于预设的性能指标时,根据所述局部 镜像分区的活动分块中写入的数据对所述磁盘进行恢复。
5.如权利要求1或4所述的方法,其特征在于,根据所述局部镜像分区的活动分块中写 入的数据对所述磁盘进行恢复,具体包括将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘;如果预设次数 内将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘成功时,删除所述局 部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动分块设置的锁定状 态;如果预设次数内将所述局部镜像分区的活动分块中写入的数据重新写入到所述磁盘均 失败时,如果当前有可用的热备磁盘,则通过所述热备磁盘对所述磁盘进行重建。
6.如权利要求5所述的方法,其特征在于,通过所述热备磁盘对所述磁盘进行重建,具 体包括将所述磁盘中的数据和所述局部镜像分区的活动分块中写入的数据拷贝到所述热备 磁盘,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动 分块设置的锁定状态。
7.一种基于镜像技术的数据存储装置,应用于包括至少两个磁盘的RAID阵列中,其特 征在于,所述RAID阵列中的磁盘设有局部镜像分区,所述装置包括选择模块,用于当有数据需要对所述磁盘进行写操作时,从所述磁盘对应的其他磁盘的局部镜像分区中选择活动分块;写入模块,与所述选择模块连接,用于将所述数据写入所述磁盘和选择的局部镜像分 区的活动分块;删除模块,与所述选择模块和所述写入模块分别连接,用于当所述数据写入所述磁盘 和局部镜像分区的活动分块成功时,删除所述局部镜像分区的活动分块中写入的数据;处理模块,与所述选择模块和所述写入模块分别连接,用于当所述数据写入所述磁盘失败且写入所述局部镜像分区的活动分块成功时,根据所述局部镜像分区的活动分块中写 入的数据对所述磁盘进行恢复。
8.如权利要求7所述的装置,其特征在于,还包括设置模块,与所述选择模块连接,用于将所述RAID阵列的所有磁盘进行排序,并根据 排序结果从所有磁盘中选择一个磁盘的预设个数的条带分块作为前一个磁盘的局部镜像 分区。
9.如权利要求7所述的装置,其特征在于,还包括维护模块,用于当所述数据写入所述磁盘和选择的局部镜像分区的活动分块时,将所 述局部镜像分区的活动分块设置为锁定状态;其中,处于锁定状态的活动分块无法写入数 据;当删除所述局部镜像分区的活动分块中写入的数据时,清除所述局部镜像分区的活动 分块设置的锁定状态;当根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复时,保持所述 局部镜像分区的活动分块设置的锁定状态。
10.如权利要求7所述的装置,其特征在于,所述处理模块,具体用于获取所述磁盘的性能信息,并当所述性能信息小于预设的性 能指标时,根据所述局部镜像分区的活动分块中写入的数据对所述磁盘进行恢复。
11.如权利要求7或10所述的装置,其特征在于,所述处理模块,进一步用于将所述局部镜像分区的活动分块中写入的数据重新写入到 所述磁盘;如果预设次数内将所述局部镜像分区的活动分块中写入的数据重新写入到所述 磁盘成功时,删除所述局部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区 的活动分块设置的锁定状态;如果预设次数内将所述局部镜像分区的活动分块中写入的数 据重新写入到所述磁盘均失败时,如果当前有可用的热备磁盘,则通过所述热备磁盘对所 述磁盘进行重建。
12.如权利要求11所述的装置,其特征在于,在通过所述热备磁盘对所述磁盘进行重建时,所述处理模块,进一步用于将所述磁盘 中的数据和所述局部镜像分区的活动分块中写入的数据拷贝到所述热备磁盘,删除所述局 部镜像分区的活动分块中写入的数据,并清除所述局部镜像分区的活动分块设置的锁定状 态。
全文摘要
本发明公开了一种基于镜像技术的数据存储方法,该方法包括当有数据需要对磁盘进行写操作时,从所述磁盘对应的局部镜像分区中选择活动分块,并将所述数据写入所述磁盘和活动分块;当所述数据写入所述磁盘失败且写入所述活动分块成功时,根据所述活动分块中写入的数据对所述磁盘进行恢复。本发明中,加快了业务的响应速度,对正常业务性能的影响较小,磁盘利用率很高。
文档编号G06F3/06GK101866307SQ20101020823
公开日2010年10月20日 申请日期2010年6月24日 优先权日2010年6月24日
发明者吕琳, 孙策 申请人:杭州华三通信技术有限公司