CN101916173B - 一种基于raid的数据读写方法及其系统 - Google Patents
一种基于raid的数据读写方法及其系统 Download PDFInfo
- Publication number
- CN101916173B CN101916173B CN 201010264840 CN201010264840A CN101916173B CN 101916173 B CN101916173 B CN 101916173B CN 201010264840 CN201010264840 CN 201010264840 CN 201010264840 A CN201010264840 A CN 201010264840A CN 101916173 B CN101916173 B CN 101916173B
- Authority
- CN
- China
- Prior art keywords
- data
- piecemeal
- deblocking
- read
- write
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于RAID的数据读写方法及其系统,该方法包括以下步骤:在对RAID中的数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的信息记录到离线数据分块列表中;当需要对RAID进行读写操作时,如果在所述离线数据分块列表中查询到本次读写操作的目标数据分块的信息,则利用所述目标数据分块所属条带中的其他数据分块和校验分块进行本次读写操作。采用本发明,可提高RAID读写性能。
Description
技术领域
本发明涉及数据存储技术领域,特别是涉及一种基于RAID的数据读写方法及其系统。
背景技术
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是将多个独立磁盘通过不同的组合方式组合在一起形成的磁盘阵列。其中,该多个独立磁盘称为RAID的成员磁盘。由于RAID通过多个成员磁盘对数据同时进行读或写操作,从而提高了数据传输速率;并且,RAID可以通过数据校验/镜像功能提供容错,从而增强了数据读写的安全性。因此,RAID已广泛应用于数据读写的各个领域中。
RAID中各成员磁盘的不同组合方式用RAID级别表示。目前,RAID级别包括:RAID 0、RAID 1、RAID 10、RAID 5等。其中,RAID 5应用最为广泛。
如图1所示,为基于RAID 5的数据读写过程示意图。在RAID 5中,将数据存储空间按固定大小划分成若干个条带,比如,条带1、条带2和条带3;各成员磁盘的相同区域则是组成条带的分块,比如,条带1由分别位于成员磁盘1、成员磁盘2和成员磁盘3的相同区域的分块A、分块B和分块P1组成。当有数据需要写入到RAID 5时,首先将该数据划分成若干个数据块,比如数据块A、数据块B...数据块F,然后将各个数据块写入到各条带的对应分块上,比如,将数据块A写入到条带1中的分块A中,将数据块B写入到条带1中的分块B中。
RAID 5中每个条带中的分块均包括两种类型:数据分块和校验分块。其中,数据分块用于存储用户数据,如图1所示的条带1中的分块A和分块B属于数据分块;校验分块用于存储同一条带中的数据分块所存储的数据的异或运算(XOR运算)结果,如图1所示,条带1中的分块P1存储条带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和校验分块P1组成,其中,校验分块P1存储数据分块1-4所存储的数据的异或运算的结果。
当成员磁盘1的条带2的数据分块5由于发生读写失败而逻辑离线(图3中用“X”标记逻辑离线的数据分块),其离线数据分块列表可表示为表1。
表1
分块地址 | 分块所属条带的编号 | 分块所属成员磁盘的编号 |
0005 | 2 | 1 |
如果需要对该RAID5进行读写操作,并且本次读写操作的目标数据分块为分块5,则采用降级条带方式进行读写操作,对应的读写处理过程可以包括:
若需要读取分块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
分块地址 | 分块所属条带的编号 | 分块所属成员磁盘的编号 |
0005 | 2 | 1 |
0017 | 5 | 1 |
0027 | 7 | 4 |
步骤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级别均在本发明保护范围之内。
还需要说明的是,本发明实施例中校验分块中存储的数据是通过将所属条带中的数据分块所存储的数据进行异或运算得到的,但本发明所采用的运算规则并不仅限于异或运算,其他能够实现冗余的运算规则均在本发明保护范围之内。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (8)
1.一种基于独立磁盘冗余阵列RAID的数据读写方法,其特征在于,包括以下步骤:
在对RAID中的数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的信息记录到离线数据分块列表中;所述数据分块的信息包括:数据分块的地址、数据分块所属条带的标识以及数据分块所在磁盘的标识;
当需要对RAID进行读写操作时,如果在所述离线数据分块列表中查询到本次读写操作的目标数据分块的地址,则根据所述目标数据分块的地址确定所述数据分块所属条带,并利用所述目标数据分块所属条带中的其他数据分块和校验分块按照降级条带方式进行本次读写操作;
当RAID中存在可用热备磁盘时,根据所述离线数据分块列表中数据分块所在磁盘的标识,对发生数据读写失败的数据分块所在磁盘进行数据重建;或者,根据所述发生数据读写失败的数据分块所属条带的其他数据分块存储的数据进行异或运算,得到所述发生数据读写失败的数据分块中存储的数据后,将所述发生数据读写失败的数据分块中存储的数据写入到可用热备磁盘,并在所述离线数据分块列表中,将与所述发生数据读写失败的数据分块对应的表项删除,用以在需要对所述发生数据读写失败的数据分块进行数据读写操作时,对热备磁盘中相应的数据分块按照常规方式进行读写操作。
2.如权利要求1所述的数据读写方法,其特征在于,所述利用所述目标数据分块所属条带中的其他数据分块和校验分块按照降级条带方式进行本次读写操作,包括:
当需要对所述目标数据分块进行读操作时,将所述目标数据分块所属条带中的校验分块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数据;
当需要对所述目标数据分块进行写操作时,将所述目标数据分块的更新数据和所述目标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算得到的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。
3.如权利要求1所述的数据读写方法,其特征在于,该方法还包括:
在所述磁盘完成数据重建后,将所述磁盘中发生数据读写失败的数据分块的信息从所述离线数据分块列表中删除。
4.如权利要求1所述的数据读写方法,其特征在于,所述对发生数据读写失败的数据分块所在磁盘进行数据重建,具体为:
根据所述离线数据分块列表,确定当前具有发生数据读写失败的数据分块数量最多的磁盘,并优先重建该磁盘的数据。
5.一种基于RAID的数据读写系统,其特征在于,包括:
存储模块,用于存储离线数据分块列表,所述离线数据分块列表用于记录发生读写失败的数据分块的信息;所述数据分块的信息包括:数据分块的地址、数据分块所属条带的标识以及数据分块所在磁盘的标识;
读写处理模块,与所述存储模块连接,用于在对数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的地址和数据分块所属条带的标识记录到所述存储模块存储的离线数据分块列表中;以及,用于当需要对RAID进行读写操作时,如果在所述存储模块存储的离线数据分块列表中查询到本次读写操作的目标数据分块的地址,则根据所述目标数据分块的地址确定所述数据分块所属条带,并利用所述目标数据分块所属条带中的其他数据分块和校验分块按照降级条带方式进行本次读写操作;
重建模块,与所述存储模块连接,用于当RAID中存在可用热备磁盘时,根据所述存储模块中存储的所述离线数据分块列表,对发生数据读写失败的数据分块所在磁盘进行数据重建;或者,根据所述发生数据读写失败的数据分块所属条带的其他数据分块存储的数据进行异或运算,得到所述发生数据读写失败的数据分块中存储的数据后,将所述发生数据读写失败的数据分块中存储的数据写入到可用热备磁盘,并在所述离线数据分块列表中,将与所述发生数据读写失败的数据分块对应的表项删除,用以在需要对所述发生数据读写失败的数据分块进行数据读写操作时,对热备磁盘中相应的数据分块按照常规方式进行读写操作。
6.如权利要求5所述的数据读写系统,其特征在于,所述读写处理模块包括:
列表处理子模块,用于在对数据分块进行读写操作时如果发生读写失败,将发生读写失败的数据分块的信息记录到所述存储模块存储的离线数据分块列表中;
查询子模块,用于当需要对RAID进行读写操作时,查询所述存储模块中的离线数据分块列表,确定本次读写操作的目标数据分块是否记录在该列表中;
读操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块所属条带中的校验分块所存的数据和其他数据分块所存的数据进行运算得到该目标数据分块所存的数据;
写操作子模块,与所述查询子模块连接,用于当所述查询子模块查询到所述离线数据分块列表中记录有所述目标数据分块的信息时,将所述目标数据分块的更新数据和所述目标数据分块所属条带中的其他数据分块所存的数据进行运算得到校验数据,并用运算得到的校验数据更新所述目标数据分块所属条带中的校验分块中的数据。
7.如权利要求5所述的数据读写系统,其特征在于,还包括:
列表维护模块,与所述存储模块连接,用于在磁盘完成数据重建后,将所述磁盘中发生数据读写失败的数据分块的信息从所述存储模块中存储的所述离线数据分块列表中删除。
8.如权利要求5所述的数据读写系统,其特征在于,
所述重建模块,具体用于根据所述存储模块存储的离线数据分块列表,确定当前发生数据读写失败的数据分块数量最多的磁盘,并优先重建该磁盘的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010264840 CN101916173B (zh) | 2010-08-27 | 2010-08-27 | 一种基于raid的数据读写方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010264840 CN101916173B (zh) | 2010-08-27 | 2010-08-27 | 一种基于raid的数据读写方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916173A CN101916173A (zh) | 2010-12-15 |
CN101916173B true CN101916173B (zh) | 2013-08-28 |
Family
ID=43323693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010264840 Expired - Fee Related CN101916173B (zh) | 2010-08-27 | 2010-08-27 | 一种基于raid的数据读写方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916173B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923441B (zh) * | 2009-06-17 | 2012-08-22 | 成都市华为赛门铁克科技有限公司 | 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统 |
CN102682012A (zh) * | 2011-03-14 | 2012-09-19 | 成都市华为赛门铁克科技有限公司 | 一种文件系统内读写数据的方法及装置 |
US9069468B2 (en) | 2011-09-11 | 2015-06-30 | Microsoft Technology Licensing, Llc | Pooled partition layout and representation |
CN102385544B (zh) * | 2011-12-12 | 2014-07-16 | 创新科软件技术(深圳)有限公司 | 一种磁盘重建方法和装置 |
CN107017966B (zh) * | 2013-11-04 | 2020-06-09 | 上海数字电视国家工程研究中心有限公司 | 数据包的封装方法及校验方法 |
CN103823637B (zh) * | 2013-11-29 | 2017-07-07 | 华为技术有限公司 | 一种数据处理方法及设备 |
CN104881242A (zh) * | 2014-02-28 | 2015-09-02 | 中兴通讯股份有限公司 | 数据写入方法及装置 |
CN104035830B (zh) * | 2014-06-24 | 2017-12-15 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
CN104484135A (zh) * | 2014-12-23 | 2015-04-01 | 浙江宇视科技有限公司 | 一种快速数据读取方法及装置 |
CN105183583A (zh) * | 2015-07-31 | 2015-12-23 | 浪潮电子信息产业股份有限公司 | 一种磁盘阵列的数据重建的方法及一种磁盘阵列系统 |
CN108932176B (zh) * | 2017-05-27 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 数据降级存储方法及装置 |
CN107341070B (zh) * | 2017-06-30 | 2020-07-10 | 长江大学 | 一种基于纠删码的随机写方法及系统 |
CN107832009B (zh) * | 2017-10-30 | 2020-10-23 | 厦门万匹思网络科技有限公司 | 一种数据分配方法、设备和计算机存储介质 |
CN108595269B (zh) * | 2018-04-26 | 2020-10-09 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN111435286B (zh) * | 2019-01-14 | 2023-12-05 | 深圳市茁壮网络股份有限公司 | 一种数据存储方法、装置和系统 |
CN112100150A (zh) * | 2019-06-17 | 2020-12-18 | 深圳市茁壮网络股份有限公司 | 一种数据读取方法及系统 |
CN115543215B (zh) * | 2022-11-28 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 数据写操作、数据读操作方法、装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19720721C2 (de) * | 1996-09-16 | 1999-07-29 | Samsung Electronics Co Ltd | Speichersystem |
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276302B (zh) * | 2007-03-29 | 2010-10-06 | 中国科学院计算技术研究所 | 一种磁盘阵列系统中磁盘故障处理和数据重构方法 |
-
2010
- 2010-08-27 CN CN 201010264840 patent/CN101916173B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19720721C2 (de) * | 1996-09-16 | 1999-07-29 | Samsung Electronics Co Ltd | Speichersystem |
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN101916173A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101916173B (zh) | 一种基于raid的数据读写方法及其系统 | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US10365983B1 (en) | Repairing raid systems at per-stripe granularity | |
US7386758B2 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及系统 | |
CN104035830B (zh) | 一种数据恢复方法和装置 | |
CN102708019B (zh) | 一种硬盘数据恢复方法、装置及系统 | |
US20150371684A1 (en) | Ultra high capacity ssd | |
CN103064765B (zh) | 数据恢复方法、装置及集群存储系统 | |
US7418550B2 (en) | Methods and structure for improved import/export of raid level 6 volumes | |
CN101984400B (zh) | 一种raid控制方法、装置及系统 | |
US20090313617A1 (en) | Method for Updating Control Program of Physical Storage Device in Storage Virtualization System and Storage Virtualization Controller and System Thereof | |
CN101840360A (zh) | Raid系统的快速重建方法及装置 | |
CN103718162A (zh) | 用于ssd中灵活的raid的方法和设备 | |
CN103389920A (zh) | 一种磁盘坏块的自检测方法和装置 | |
CN101866307A (zh) | 一种基于镜像技术的数据存储方法及装置 | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
US9063869B2 (en) | Method and system for storing and rebuilding data | |
US20090307524A1 (en) | Duplication combination management program, duplication combination management apparatus, and duplication combination management method | |
CN108733326B (zh) | 一种磁盘处理方法及装置 | |
CN102968361A (zh) | 一种raid数据自修复的方法 | |
CN101727298A (zh) | 实现独立磁盘冗余阵列的方法和装置 | |
CN105095352B (zh) | 应用于分布式系统的数据处理方法及装置 | |
CN105630417A (zh) | 一种raid5系统及在raid5系统失效后继续写数据的方法 | |
CN102945191B (zh) | 一种raid5数据转移的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130828 Termination date: 20200827 |
|
CF01 | Termination of patent right due to non-payment of annual fee |