一种基于raid的数据读写方法及其系统的制作方法

文档序号:6331016阅读:117来源:国知局
专利名称:一种基于raid的数据读写方法及其系统的制作方法
技术领域
本发明涉及数据存储技术领域,特别是涉及一种基于RAID的数据读写方法及其 系统。
背景技术
RAID (Redundant Array of Independent Disks,独立磁盘冗余阵列)是将多个独 立磁盘通过不同的组合方式组合在一起形成的磁盘阵列。其中,该多个独立磁盘称为RAID 的成员磁盘。由于RAID通过多个成员磁盘对数据同时进行读或写操作,从而提高了数据传 输速率;并且,RAID可以通过数据校验/镜像功能提供容错,从而增强了数据读写的安全 性。因此,RAID已广泛应用于数据读写的各个领域中。RAID中各成员磁盘的不同组合方式用RAID级别表示。目前,RAID级别包括RAID 0、RAID URAID 10、RAID 5等。其中,RAID 5应用最为广泛。如图1所示,为基于RAID 5的数据读写过程示意图。在RAID 5中,将数据存储空 间按固定大小划分成若干个条带,比如,条带1、条带2和条带3 ;各成员磁盘的相同区域则 是组成条带的分块,比如,条带1由分别位于成员磁盘1、成员磁盘2和成员磁盘3的相同区 域的分块A、分块B和分块Pl组成。当有数据需要写入到RAID 5时,首先将该数据划分成 若干个数据块,比如数据块A、数据块B...数据块F,然后将各个数据块写入到各条带的对 应分块上,比如,将数据块A写入到条带1中的分块A中,将数据块B写入到条带1中的分 块B中。RAID 5中每个条带中的分块均包括两种类型数据分块和校验分块。其中,数据 分块用于存储用户数据,如图1所示的条带1中的分块A和分块B属于数据分块;校验分块 用于存储同一条带中的数据分块所存储的数据的异或运算(X0R运算)结果,如图1所示, 条带1中的分块Pl存储条带1中的分块A与分块B所存储的数据的异或运算结果。各条 带的校验分块分别位于不同的成员磁盘上,从而可以更有效的提高RAID 5的冗余性。在实现本发明的过程中,发明人发现现有技术中至少存在以下问题在RAID中,当一个成员磁盘发生读写失败时,该成员磁盘会被直接踢出RAID(称 该成员磁盘处于离线状态)。当RAID中存在处于离线状态的成员磁盘时,会导致该RAID由 正常状态转换为降级状态,而处于降级状态的RAID需要进行重建才可以恢复到正常状态, 从而保证数据的正常读写。但RAID的重建过程较长,因此影响了 RAID的数据读写性能。

发明内容
本发明提供一种基于RAID的数据读写方法和系统,用以解决现有技术中RAID中 的成员磁盘发生数据读写失败时RAID的数据读写性能低的问题。本发明提供的基于独立磁盘冗余阵列RAID的数据读写方法,包括以下步骤在对RAID中的数据分块进行读写操作时如果发生读写失败,将发生读写失败的 数据分块的信息记录到离线数据分块列表中;
当需要对RAID进行读写操作时,如果在所述离线数据分块列表中查询到本次读 写操作的目标数据分块的信息,则利用所述目标数据分块所属条带中的其他数据分块和校 验分块进行本次读写操作。上述数据读写方法中,所述利用所述目标数据分块所属条带中的其他数据分块和 校验分块进行本次读写操作,包括当需要对所述目标数据分块进行读操作时,将所述目标数据分块所属条带中的 校验分块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数 据;当需要对所述目标数据分块进行写操作时,将所述目标数据分块的更新数据和所 述目标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算 得到的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。上述数据读写方法中,还包括根据所述离线数据分块列表,对发生数据读写失败 的数据分块所在磁盘进行数据重建,并在所述磁盘完成数据重建后,将所述磁盘中发生数 据读写失败的数据分块的信息从所述离线数据分块列表中删除。上述数据读写方法中,所述对发生数据读写失败的数据分块所在磁盘进行数据重 建,具体为根据所述离线数据分块列表,确定当前具有发生数据读写失败的数据分块数量最 多的磁盘,并优先重建该磁盘的数据。上述数据读写方法中,所述数据分块的信息包括数据分块的地址、数据分块所属 条带的标识,以及数据分块所在磁盘的标识。本发明提供的基于RAID的数据读写系统,包括存储模块,用于存储离线数据分块列表,所述离线数据分块列表用于记录发生读 写失败的数据分块的信息;读写处理模块,与所述存储模块连接,用于在对数据分块进行读写操作时如果发 生读写失败,将发生读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块 列表中;以及,用于当需要对RAID进行读写操作时,如果在所述存储模块存储的离线数据 分块列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条 带中的其他数据分块和校验分块进行本次读写操作。上述数据读写系统中,所述读写处理模块包括列表处理子模块,用于在对数据分块进行读写操作时如果发生读写失败,将发生 读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块列表中;查询子模块,用于当需要对RAID进行读写操作时,查询所述存储模块中的离线数 据分块列表,确定本次读写操作的目标数据分块是否记录在该列表中;读操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线 数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块所属条带中的 校验分块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数 据;写操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线 数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块的更新数据和所述目标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算 得到的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。上述数据读写系统中,还包括重建模块,与所述存储模块连接,用于根据所述存储模块中存储的所述离线数据 分块列表,对发生数据读写失败的数据分块所在磁盘进行数据重建;列表维护模块,与所述存储模块连接,用于在磁盘完成数据重建后,将所述磁盘中 发生数据读写失败的数据分块的信息从所述存储模块中存储的所述离线数据分块列表中 删除。上述数据读写系统中,所述重建模块,具体用于根据所述存储模块存储的离线数 据分块列表,确定当前发生数据读写失败的数据分块数量最多的磁盘,并优先重建该磁盘 的数据。上述数据读写系统中,所述存储模块存储的离线数据分块列表中记录的数据分块 的信息包括数据分块的地址、数据分块所属条带的标识,以及数据分块所在磁盘的标识。本发明具有如下有益效果当数据分块发生读写失败时,将该数据分块的信息记录到离线数据分块列表中; 当进行RAID读写时,通过查询离线数据分块列表判断本次读写操作的目标数据分块是否 已经发生读写失败;若是,并不直接将所属成员磁盘踢出,而是利用所属条带中的其他分块 进行本次读写操作,而不影响其他条带的读写性能,进而提高整个RAID的读写性能。


图1为现有技术中RAID 5中数据读写过程示意图;图2为本发明实施例提供的一种基于RAID的数据读写流程图;图3为本发明实施例提供的RAID 5中数据存储方式示意图;图4为本发明实施例提供的一种RAID重建流程示意图;图5为本发明实施例提供的一种RAID 5中数据分块逻辑离线示意图;图6为本发明实施例提供的一种基于RAID的数据读写系统结构示意图。
具体实施例方式针对现有技术存在的上述问题,本发明实施例提供一种基于RAID的数据读写方 案,使得当RAID中成员磁盘发生读写失败时,只将该成员磁盘中发生读写失败的数据分块 进行逻辑离线处理,并使该数据分块所属条带按降级方式进行数据读写操作,而不会影响 到其他条带的读写性能,进而与现有技术相比提高了 RAID的数据读写性能。下面结合附图对本发明实施例进行详细描述。本发明实施例中,RAID各成员磁盘是通过条带的方式进行数据存储的,而组成条 带的基本单元是分块(可以包括数据分块、校验分块),因此,分块是存储数据的基本单兀。当RAID中的成员磁盘发生读写失败时,由于各成员磁盘存储数据的基本单元为 数据分块,因此,实质上是成员磁盘中的数据分块发生读写失败。因此,本发明实施例中,将 发生数据读写失败的数据分块的相关信息记录到离线数据分块列表中。离线数据分块列表中记录的离线数据分块的相关信息可包括发生读写失败的数据分块的地址(包括物理地 址或逻辑地址)、该数据分块所属条带的标识(如条带编号)、该数据分块所在成员磁盘的 标识(如磁盘编号)等。通过该列表中记录的数据分块的相关信息可以在RAID中唯一定 位出相应的数据分块。其中,数据分块发生读写失败时,可将该数据分块所属条带设置为降级状态。如果 降级状态的条带中又有数据分块发生读写失败,则将该RAID设置为失败(failed)状态。处 于失败状态的RAID将无法再进行读写操作。具体的,当数据分块发生读写失败时,可通过 查询离线数据分块列表判断该当前发生读写失败的数据分块所属条带是否记录在该列表 中,如果是,则需要将该RAID设置为失败状态;否则,将该当前发生读写失败的数据分块的 相关信息记录到离线数据分块列表中。当需要对该RAID进行读写操作时,首先查询该离线数据分块列表,如果目标数据 分块的相关信息记录在该列表中,则按照本发明实施例描述的条带降级方式进行数据读写 处理;如果目标数据分块的相关信息没有记录在该列表中,则按照常规方式进行数据读写处理。其中,本发明实施例提供的条带降级方式中,对于发生数据读写失败的目标数据 分块,并不真正对其进行数据读写操作,而是通过对该目标数据分块所属条带中的其他分 块存储的数据进行运算来达到读写该目标数据分块的目的。因此,本发明实施例中将因发 生数据读写失败而被记录到离线数据分块列表中的数据分块称为逻辑离线分块;相应的, 将发生读写失败的数据分块的相关信息记录到离线数据分块列表中的操作称为对数据分 块进行逻辑离线处理。参见图2,为本发明实施例提供的一种基于RAID的数据读写流程图。该流程描述 了当RAID发生读写失败时,只将发生读写失败的数据分块进行逻辑离线,并使逻辑离线分 块所属条带按照降级方式进行读写操作,而不会影响其他条带的读写性能。该流程可包括 以下步骤步骤201,当需要对RAID进行读写操作时,通过查询离线数据分块列表判断目标 数据分块是否为逻辑离线分块,如果判断结果为是,则执行步骤202 ;如果判断结果为否, 则执行步骤203。通常,在接收到上层应用发送的数据读写请求时,需要对RAID进行读写操作。步骤202,按照降级条带方式进行数据读写操作。该步骤中,由于目标数据分块为逻辑离线分块,即发生过数据读写失败的数据分 块,因此不能保证成功从该数据分块读出数据或者将数据成功写入该数据分块。但利用 RAID的冗余特性,可根据该目标数据分块所属条带中的其他分块达到对该目标数据分块进 行读写的目的。具体的,当需要读取目标数据分块中的数据时,可将与该目标数据分块同一条带 中的其他数据分块所存储的数据和校验分块所存储的校验数据进行异或运算,得到该目标 数据分块中存储的数据,从而达到读取逻辑离线的目标数据分块所存数据的目的;当需要 向目标数据分块写入数据时,可将与该目标数据分块同一条带中的其他数据分块所存储的 数据与需要写入目标数据分块的数据进行异或运算,得到新的校验数据,并使用该新的校 验数据更新该条带中校验分块中的校验数据,这样,通过更新后的校验分块和该条带中的其他数据分块运算得到的数据就是需要写入目标数据分块的数据,从而达到向逻辑离线的 目标数据分块写入数据的目的。步骤203,按常规方式对目标数据分块进行读写操作。若目标数据分块没有记录在离线数据分块列表中时,表明该目标数据分块当前为 正常状态,因此,可以按照常规方式对该数据分块进行读写操作。具体的,当需要读取目标数据分块中的数据时,可直接读取该目标数据分块中存 储的数据;当需要向目标数据分块写入数据时,可将目标数据分块所属条带中的校验分块 所存数据与该目标数据分块所存数据进行异或运算,得到该条带中除该目标数据分块以外 的其他数据分块的校验和,然后向目标数据分块写入数据,并用写入数据后的该目标数据 分块所存数据与上一步计算得到的校验和进行异或运算,得到新的校验数据,并使用新的 校验数据更新该条带中的校验分块。进一步的,如果在数据读写过程中发生了数据分块读写失败,则还包括将发生读写失败的数据分块的相关信息记录到数据分块列表中。数据分块发生读 写失败时,可将该数据分块所属条带设置为降级状态。如果降级状态的条带中又有数据分 块发生读写失败,则将该RAID设置为失败(failed)状态。具体的,当数据分块发生读写失 败时,可通过查询离线数据分块列表判断该当前发生读写失败的数据分块所属条带是否记 录在该列表中,如果是,则需要将该RAID设置为失败状态;否则,将该当前发生读写失败的 数据分块的相关信息记录到离线数据分块列表中。通过以上描述可以看出,当数据分块发生读写失败时,只降级该数据分块所属的 条带,并相应采用条带降级方式进行数据读写处理,不影响其他条带的读写性能,整个RAID 仍可以进行读写操作,不会变成failed状态,只有当同一条带中有两个或两个以上数据分 块发生读写失败时,整个RAID才会变成failed状态。与现有技术相比,提高了 RAID的读 写性能。下面以一 RAID5的具体示例,对上述流程进行详细描述。如图3所示,该示例中的RAID 5包括成员磁盘1、成员磁盘2、成员磁盘3、成员磁 盘4和成员磁盘5共5个成员磁盘,该RAID 5存储空间划分成10个条带(条带1_10),各 条带均由1个校验分块和4个数据分块组成,比如条带1由逻辑地址为0001-0004的数据 分块1-4和校验分块Pl组成,其中,校验分块Pl存储数据分块1-4所存储的数据的异或运
算的结果。当成员磁盘1的条带2的数据分块5由于发生读写失败而逻辑离线(图3中用 “X”标记逻辑离线的数据分块),其离线数据分块列表可表示为表1。表 1 如果需要对该RAID5进行读写操作,并且本次读写操作的目标数据分块为分块5, 则采用降级条带方式进行读写操作,对应的读写处理过程可以包括
8
若需要读取分块5中的数据,则分别读取条带2中分块6、分块7、分块8和分块P2 中的数据,并将读取到的各分块数据进行异或运算,所得到的数据即为分块5中存储的数 据;若需要修改分块5中的数据,则分别读取条带2中分块6、分块7、分块8中的数据, 将读取到的各分块的数据与数据更新后分块5中应该存储的数据进行异或运算,得到新的 校验数据,然后用新的校验数据更新条带2中的分块P2。如果本次读写操作的目标数据分块为分块6,则采用常规方式进行读写操作,对应 的读写处理过程可以包括若需要读取分块6中的数据,则直接读取条带2中分块6中的数据;若需要修改分块6中的数据,则分别读取条带2中分块6、分块P2中的数据,将读 取到的各分块的数据进行异或运算,得到分块5、分块7、分块8的校验和,然后直接向分块6 写入数据从而实现数据修改,再将分块6 (数据修改后)所存储的数据与分块5、分块7、分 块8的校验和进行异或运算,得到新的校验数据,并使用新的校验数据更新条带2中的分块 P2。本发明实施例中,虽然处于降级状态的条带可以按照降级条带方式进行数据的读 写操作,但由于RAID中存在具有逻辑离线分块的成员磁盘,因此其可靠性不高。为了提高 RAID数据读写的可靠性,可对RAID中具有逻辑离线分块的成员磁盘进行重建。如图4所示,为本发明实施例提供的一种RAID成员磁盘重建方法流程示意图,该 流程可包括以下步骤步骤401,当RAID中存在逻辑离线分块时,如果RAID中存在可用热备磁盘,则执行 步骤402 ;如果RAID中不存在可用热备磁盘,则转到步骤405。具体的,可以通过查询离线数据分块列表来判断RAID中是否存在逻辑离线分块。 由于离线数据分块列表用于记录逻辑离线分块的相关信息,因此,如果离线数据分块列表 不为空,则可以确定RAID中存在逻辑离线分块。步骤402,RAID对逻辑离线分块所在成员磁盘进行数据重建过程。在有热备磁盘的情况下,可以自动进行重建,也可以由人为选择是否执行重建。重 建的方法有很多,这里不做表述。在进行磁盘重建时,可优先重建具有逻辑离线分块数量最多的磁盘。具体的,可通 过查询离线数据分块列表获知RAID中各成员磁盘所具有的逻辑离线分块的数量,选择具 有逻辑离线分块数量最多的成员磁盘开始进行重建。如果RAID中存在多个成员磁盘具有 相同数量的逻辑离线分块,则可以按成员磁盘的编号从小到大依次进行重建。当然,对具 有逻辑离线分块的成员磁盘进行重建的选择顺序并不局限于此,可以根据实际需要灵活配 置,本发明实施例对此并不限制。步骤403,在成员磁盘完成数据重建后,将离线数据分块列表中已完成数据重建的 磁盘中的逻辑离线分块从该列表中删除。通过在完成磁盘数据重建后及时删除离线数据分 块列表中相关的表项,可达到对离线数据分块列表进行更新的目的,并保证离线数据分块 列表中所存储的表项的有效性,进而保证RAID的读写性能。当然,在实际应用中,也可以在通过离线分块所属条带的其他分块(校验分块与 数据分块)所存储的数据进行异或运算得到该逻辑离线分块中存储的数据,并将运算得到的数据写入到可用热备磁盘后,即可将与该逻辑离线分块对应的表项删除,从而可以达到 更及时的更新离线数据分块列表的目的。相应的,当需要对该数据分块进行数据读写操作 时,直接对热备磁盘中的该数据分块按照常规方式进行读写操作。步骤404,判断是否还有未进行数据重建的成员磁盘,如果有,则返回步骤401,按 照上述流程对存在逻辑离线分块的磁盘进行数据重建,直到对所有存在逻辑离线分块的磁 盘完成数据重建为止。步骤405,在没有热备磁盘的情况下,如果需要对逻辑离线分块进行数据读写操 作,则按照前述降级条带方式进行数据读写操作。该过程中,如果出现数据读写失败情况, 则可将发生数据读写失败的数据分块进行逻辑离线处理。如果当前发生数据读写失败的数 据分块所属条带中已经存在逻辑离线分块时,将RAID设置为失败状态。下面以RAID5的一 个示例进行说明。如图5所示,在图2的基础上,当对数据分块5所属的成员磁盘1进行数据重建的 过程中,如果数据分块17 (与数据分块5均属于成员磁盘1)和数据分块27 (与数据分块5 属于不同的成员磁盘)均发生数据读写失败时,则对数据分块17和数据分块27均进行逻 辑离线处理,且将数据分块17所属的条带5和数据分块27所属的条带7标记为降级状态。表2示出了添加新的逻辑离线分块相关信息后的离线数据分块列表。表 2 步骤406,当RAID中存在可用热备磁盘时,转到步骤402。通常,当RAID中设置了可用热备磁盘时,可以通过向RAID发送提示消息的方式使 RAID获知已存在可用热备磁盘。通过以上描述可以看出,在RAID重建过程中,可以根据离线数据分块列表中的记 录信息优先选择具有离线分块数量最多的成员磁盘进行重建,从而减少了离线分块对RAID 读写性能的影响程度。基于相同的技术构思,本发明实施例还提供了一种基于RAID的数据读写系统,可 应用于本发明实施例的上述流程。如图6所示,本发明实施例提供的基于RAID的数据读写系统,可包括存储模块61,用于存储离线数据分块列表;读写处理模块62,与存储模块61连接,用于在对数据分块进行读写操作时如果发 生读写失败,将发生读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块 列表中;以及,用于当需要对RAID进行读写操作时,如果在所述存储模块存储的离线数据分块列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条 带中的其他数据分块和校验分块进行本次读写操作。上述数据读写系统中,读写处理模块62可包括列表处理子模块621,用于在对数据分块进行读写操作时如果发生读写失败,将发 生读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块列表中;查询子模块622,用于当需要对RAID进行读写操作时,查询存储模块61中的离线 数据分块列表,确定本次读写操作的目标数据分块是否记录在该列表中;读操作子模块623,与查询子模块621连接,用于当查询子模块622查询到所述离 线数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块所属条带中的 校验分块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数 据;写操作子模块623,与查询子模块622连接,用于当查询子模块622查询到所述离 线数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块的更新数据和 所述目标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运 算得到的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。上述数据读写系统中,读写处理模块62还可用于,若当前发生读写失败的数据分 块所属条带中已经有数据分块记录到所述离线数据分块列表中,则将该数据分块所属的 RAID设置为失败状态。上述数据读写系统中,还可包括重建模块63和列表维护模块64。其中重建模块63与存储模块61连接,用于根据存储模块61存储的离线数据分块列 表,对发生数据读写失败的数据分块所在磁盘进行数据重建;进一步的,重建模块63可根 据离线数据分块列表,确定当前发生数据读写失败的数据分块数量最多的磁盘,并优先重 建该磁盘的数据;列表维护模块64与存储模块61连接,可在磁盘完成数据重建后,将所述磁盘中发 生数据读写失败的数据分块的信息从存储模块61中存储的离线数据分块列表中删除。上述数据读写系统中,存储模块61存储的离线数据分块列表中记录的数据分块 的信息可包括数据分块的地址、数据分块所属条带的标识,以及数据分块所在磁盘的标 识。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合 并为一个模块,也可以进一步拆分成多个子模块。需要说明的是,适用于本发明实施例提供的技术方案的RAID级别包括但不限于 RAID 0、RAID 5、RAID 6等,凡是以条带中的分块为基本单元进行数据存储的RAID级别均 在本发明保护范围之内。还需要说明的是,本发明实施例中校验分块中存储的数据是通过将所属条带中的 数据分块所存储的数据进行异或运算得到的,但本发明所采用的运算规则并不仅限于异或 运算,其他能够实现冗余的运算规则均在本发明保护范围之内。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通 过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发 明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储
11介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可 以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流 程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分 布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上 述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领 域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
一种基于独立磁盘冗余阵列RAID的数据读写方法,其特征在于,包括以下步骤在对RAID中的数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的信息记录到离线数据分块列表中;当需要对RAID进行读写操作时,如果在所述离线数据分块列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条带中的其他数据分块和校验分块进行本次读写操作。
2.如权利要求1所述的数据读写方法,其特征在于,所述利用所述目标数据分块所属 条带中的其他数据分块和校验分块进行本次读写操作,包括当需要对所述目标数据分块进行读操作时,将所述目标数据分块所属条带中的校验分 块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数据;当需要对所述目标数据分块进行写操作时,将所述目标数据分块的更新数据和所述目 标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算得到 的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。
3.如权利要求1所述的数据读写方法,其特征在于,该方法还包括根据所述离线数据分块列表,对发生数据读写失败的数据分块所在磁盘进行数据重 建,并在所述磁盘完成数据重建后,将所述磁盘中发生数据读写失败的数据分块的信息从 所述离线数据分块列表中删除。
4.如权利要求3所述的数据读写方法,其特征在于,所述对发生数据读写失败的数据 分块所在磁盘进行数据重建,具体为根据所述离线数据分块列表,确定当前具有发生数据读写失败的数据分块数量最多的 磁盘,并优先重建该磁盘的数据。
5.如权利要求1-4任一项所述的数据读写方法,其特征在于,所述数据分块的信息包 括数据分块的地址、数据分块所属条带的标识,以及数据分块所在磁盘的标识。
6.一种基于RAID的数据读写系统,其特征在于,包括存储模块,用于存储离线数据分块列表,所述离线数据分块列表用于记录发生读写失 败的数据分块的信息;读写处理模块,与所述存储模块连接,用于在对数据分块进行读写操作时如果发生读 写失败,将发生读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块列表 中;以及,用于当需要对RAID进行读写操作时,如果在所述存储模块存储的离线数据分块 列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条带中 的其他数据分块和校验分块进行本次读写操作。
7.如权利要求6所述的数据读写系统,其特征在于,所述读写处理模块包括列表处理子模块,用于在对数据分块进行读写操作时如果发生读写失败,将发生读写 失败的数据分块的信息记录到所述存储模块存储的离线数据分块列表中;查询子模块,用于当需要对RAID进行读写操作时,查询所述存储模块中的离线数据分 块列表,确定本次读写操作的目标数据分块是否记录在该列表中;读操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线数据 分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块所属条带中的校验分 块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数据;写操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线数据 分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块的更新数据和所述目 标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算得到 的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。
8.如权利要求6所述的数据读写系统,其特征在于,还包括重建模块,与所述存储模块连接,用于根据所述存储模块中存储的所述离线数据分块 列表,对发生数据读写失败的数据分块所在磁盘进行数据重建;列表维护模块,与所述存储模块连接,用于在磁盘完成数据重建后,将所述磁盘中发生 数据读写失败的数据分块的信息从所述存储模块中存储的所述离线数据分块列表中删除。
9.如权利要求8所述的数据读写系统,其特征在于,所述重建模块,具体用于根据所述存储模块存储的离线数据分块列表,确定当前发生 数据读写失败的数据分块数量最多的磁盘,并优先重建该磁盘的数据。
10.如权利要求6-9任一项所述的数据读写系统,其特征在于,所述存储模块存储的离 线数据分块列表中记录的数据分块的信息包括数据分块的地址、数据分块所属条带的标 识,以及数据分块所在磁盘的标识。
全文摘要
本发明公开了一种基于RAID的数据读写方法及其系统,该方法包括以下步骤在对RAID中的数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的信息记录到离线数据分块列表中;当需要对RAID进行读写操作时,如果在所述离线数据分块列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条带中的其他数据分块和校验分块进行本次读写操作。采用本发明,可提高RAID读写性能。
文档编号G06F12/06GK101916173SQ201010264840
公开日2010年12月15日 申请日期2010年8月27日 优先权日2010年8月27日
发明者夏飞, 孙策 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1