专利名称:一种磁盘阵列的数据读写方法
技术领域:
本发明涉及计算机存储领域,尤其涉及该领域内的独立冗余磁盘阵列 的数据读写方法。
背景技术:
随着信息技术的飞速发展,各种行业应用都对信息的存储提出了更高 的要求,这些要求主要包括存储系统的速度、容量、可靠性、可用性和安 全性等方面,传统的存储系统已经无法满足。
RAID (Redundant Array of Independent Disk,独立冗余》兹盘阵列)是一 种由多块独立磁盘构成的,能提高读写性能并具备容错能力的存储系统。 RAID实现了多个磁盘并行读写的功能,将用户的数据拆分成多个数据块并 行写入多个磁盘。读取数据时先从多个磁盘并行读出数据块再组合成用户 需要的数据,使得存储系统的带宽由多个磁盘的带宽叠加而成,大大提高 了存储系统的访问速度。RAID的容错能力是通过冗余方式实现的,所述冗 余的方式有磁盘镜像和设置校验等。除了用户需要的数据以外,RAID中还 存储了大量的冗余数据,通过所述容错方法保证磁盘在出现错误的情况下 可以恢复数据。
RAID按照实现存储的原理不同分为不同的级别,常见的具备容错能力 的RAID级别有RAIDl, RAID5, RAID10等。请参阅图1,为现有技术中 的由四块磁盘构成的一个RAID5级磁盘阵列的数据分布示意图,将所述四 块磁盘命名为磁盘1、磁盘2、磁盘3和磁盘4,每个磁盘分成N个数据块, 所述四个磁盘分别贡献出一个数据块构成一个磁盘条带(StripeD)为该磁盘阵列的一行,可以理解,该RAID5具有N个磁盘条带,每个磁盘条带具 有一个校验块,其用于存放一个校验值,所述校验值由该磁盘条带的另外 三个数据块进行异或计算而得。
具体地说,来自磁盘1的数据块0、来自磁盘2的数据块1、来自磁盘 3的数据块2以及来自磁盘4的校验块P,构成一个磁盘条带1 ( StripeDi), 依次类推,构成StripeD2、 StripeD3.........StripeDN。
对所述磁盘阵列执行写操作时,用户数据被拆分成若干个数据块,对 应写入所述N个磁盘条带中的数据块内,其校验块P,的数据由数据块0异 或数据块1,接着异或数据块2计算得到并写入校验块P,内。
因此,可以理解的是,当其中一个磁盘出错,都可以由其他磁盘通过 异或计算从而恢复其上的数据,例如,如果i兹盘2出错,那么磁盘2上的 数据块1的数据可以由数据块O、数据块2和校验块P,异或计算得到,数 据块4的数据可以由数据块3、才L睑块P2和数据块5异或计算得到,以此 类推,磁盘2的数据都可以恢复。
很明显,每一次对》兹盘阵列上的一个数据块进行写操作,都要进行一 个对其他相关数据块的读操作和一次异或计算以更新校验块的值,例如, 在完成对数据块0的写操作时,除了写数据块0以外,还需要另外完成数 据块1的读操作,数据块2的读操作,以及校验块Pt的重新计算和写操作。 此时,如果用户再请求写教:据块1和数据块2,那么还需要完成数据块0的 读操作,校验块Pi的重新计算和写操作。具体请参阅图2,为图l的磁盘 阵列处理用户读写请求的时序图,可见,每一次对其中一个数据块的写操 作(写0、写01、写012或者写2操作)都必须完成一个写时间和一个校 验块的计算写入时间。因此,为了保证》兹盘阵列的容错能力,需要花费大 量的时间读取同一/F兹盘条带中的其他数据块到内存中分配的条带结构,并 重新计算和写入校验块。这些读操作和异或计算大大增加了磁盘阵列的负 担,尤其在用户写请求频繁的情况下,校验块内数据的反复更新会大大增加磁盘阵列的开销,降低系统的读写性能,严重影响磁盘阵列对用户的响 应。
中国专利CN101055512A提出一种磁盘阵列的数据存取方法,具体为 建立一个写记录表,该写记录表中的每一项对应所述》兹盘阵列的一个》兹盘
条带;触发一个对该写记录表的定时和扫描任务。系统每次进行数据的写 操作时都要更新该写记录表中写操作所对应的磁盘条带的记录位。所述定 时的动作结束时,所述扫描任务启动,如果发现所述记录位为更新标识, 表示对应磁盘条带的数据已经更新,校验值则已经失效。读取所述有更新 标识的记录位所对应的^f兹盘条带的全部数据块,并根据这些数据块来计算 校验值,最后将校验值写入磁盘的校验块并更新记录位。重复上述步骤至 所有的记录位处理完毕,再重新启动定时。由于该方法将对目标数据块的 写操作和对校验块的更新操作采用一个定时和扫描任务分开来,每次执行 写操作都仅仅更新目标数据块,并不更新对应的校验块,而是在所述定时 的时间之后再进行校验块的更新动作。
该中国专利的技术存在以下不足首先,系统每次执行写操作时应该 进行的校验数据更新都净皮延后在所述定时时间之后,即分布在磁盘各个位 置的磁盘条带都有可能未更新校验块,整个条带的数据处于不一致状态。 如果在条带的校验块更新之前磁盘出现错误,也即是在该定时时间内磁盘 出现错误,则磁盘条带的数据将无法恢复,因此,系统的容错能力得不到 充分保证,数据丢失的风险较大。其次,写记录表的项数取决于磁盘容量, 在磁盘容量较大的情况下,每次对写记录表的扫描均会消耗大量处理器时 间,因此,所述写记录表的扫描开销较大,加重系统负担。该专利提出的 方法, 一个记录位对应多个条带,却会造成不必要的校验块更新,无法降 低开销。
又有美国专利6,282,671 "Method and system for improved efficiency of parity calculation in RAID system" 提出根据写操作对磁盘条带的覆盖情况来选择计算校验块的方法。校验块可以通过目标数据块的新数据(new data value)和条带中其他数据块的旧数据(all other old data within the associated data stripe)的异或计算得到,或者通过目标数据块的新数据(new data value)、 目标数据块的旧数据(old data value)和旧校验块(old parity value)的异或计算 得到,校验块的计算选择上述两种计算方法中进行读写次数最少(the least number of input/output operations)的一种。"i亥美国专利提供的方法通过/咸少 在计算校验块时系统进行读操作的次数,因此在一定程度上減少了计算校 验块数据的时间,但是其写校验块的时间仍然较长,尤其在写操作频繁的 情况下,校验块反复更新的开销仍然很高。
可见,现有技术还存在缺陷,有待于改进和发展。
发明内容
本发明的目的在于,提供一种磁盘阵列的自适应延迟校验方法,在充 分保证磁盘阵列的容错能力的同时,加快写操作的处理速度,有效降低更 新校验块的开销,提高磁盘阵列系统的读写性能。
为解决上述技术问题,本发明的技术方案如下
一种磁盘阵列的数据读写方法,所述磁盘阵列的每个磁盘条带具有一 个状态属性,所述状态属性为写操作频繁状态、写操作不频繁状态或者延 迟更新校验块状态,所述i兹盘阵列的数据读写方法包括以下步骤
A、 内存分配多个条带结构,创建一个磁盘条带状态位图,以记录全部 磁盘条带的状态属性;初始化所述磁盘条带状态位B、 接收用户读写请求,并更新所述磁盘条带状态位图上的目标磁盘条 带的状态属性;
C、 执行用户的读写请求,如果是写请求,则执行写目标磁盘条带并根 据目标磁盘条带的状态属性执行更新校验块或者延迟更新校验块,如果是 读请求,则执行一读请求处理流程。所述的》兹盘阵列的数据读写方法,其中,所述步骤c中,如果是写请
求,则在执行所述写目标磁盘条带的同时检查其状态属性是否为写操作不 频繁状态,如果是则选择执行所述更新校验块,如果不是则选择执行所述 延迟更新校验块。
所述的万兹盘阵列的翁:据读写方法,其中,所述步骤A中,所述初始化 ,兹盘条带状态位图为将其上记录的每个石兹盘条带的状态初始化为写操作不 频繁状态。
所述的磁盘阵列的数据读写方法,其中,所述磁盘条带的状态属性以 一个标记值记录在所述》兹盘条带状态位图上,所述标记值为2位二进制值, 所述写操作频繁状态、写操作不频繁状态或者延迟更新校验块状态的标记 值不同。
所述的磁盘阵列的数据读写方法,其中,所述步骤C中,所述读请求 处理流程包括以下步骤
将目标数据块读入对应条带结构的数据緩沖区;
判断所述对应的条带结构的所有数据緩冲区是否完全更新,如果是, 则执行步骤A5;
所述步骤A5为检查目标磁盘条带的状态属性是否为延迟更新校验块 状态,如果是,则更新目标磁盘条带的校验块并更新所述目标磁盘条带的 状态属性为写操作不频繁状态。
所述的磁盘阵列的数据读写方法,其中,在执行步骤A中,在所述初 始化每个磁盘条带的状态属性之前执行一个步骤D,所述步骤D为检查 所述磁盘条带状态位图是否记录有延迟状态,如果有则更新其相应^兹盘条 带的校验块。
所述的磁盘阵列的数据读写方法,其中,步骤A中,所述条带结构具 有一个写计数属性,其由一个写计数属性维护线程维护,^没定所述计数属 性维护线程一个计数周期,并设定一个阈值,初始化所述^兹盘条带状态位图的同时对每个条带结构的写计数属性清O,并开始一个计数周期;步骤B 中,接收用户读写请求,每接收一个写请求则所述写计数属性维护线程对 所述目标磁盘条带所对应条带结构的写计数属性加1,在所述计数周期结束 时,所述条带结构的写计数属性大于所述阈值,则更新其对应的目标磁盘 条带的状态属性为所述写操作频繁状态,所述写计数属性小于或者等于所 述阈值,则更新其对应的目标磁盘条带的状态属性为写操作不频繁状态。
所述的磁盘阵列的数据读写方法,其中,所述更新校验块的步骤为读 取目标^磁盘条带的数据块并依次进行异或计算,将所述异或计算的结果写 入所述校-睑块。
所述的;兹盘阵列的数据读写方法,其中,所述步骤C中,所述执行延 迟更新校验块包括以下步骤
判断所述目标磁盘条带的状态属性为写操作频繁状态还是延迟更新校 验块状态,如果是写操作频繁状态,则执行步骤A3,如果是延迟更新校验 块状态,则执行步骤B3;
所述步骤A3为更新所述目标磁盘条带的状态属性为延迟更新校验块 状态,并开始计时一个延迟时间,在所述延迟时间内,延迟更新校验块;
所述步骤B3为判断所述延迟时间是否结束,如果是,则执行更新校 验块并将目标^兹盘条带的状态属性更新为写操作不频繁状态。
所述的磁盘阵列的数据读写方法,其中,所述目标磁盘条带的状态属 性由 一个状态访问线程访问所述^f兹盘条带位图获得,所述写计数属性维护 线程与状态访问线程互斥。
本发明提供了 一种磁盘阵列的自适应延迟校验方法,动态地检测并记 录磁盘阵列中的写操作频率高的磁盘条带,并延迟处理处于所述写操作频 率高的磁盘条带的校验块更新。在保证系统容错功能的前提下,本发明有 效減少了写操作频繁的情况下校验块的更新次数即校验数据的计算和写入 的次数,大大提高系统的读写处理速度,加快对用户读写请求的响应,显著改善》兹盘阵列的读写性能。
图1是现有技术中的一种RAID系统的磁盘结构示意图2是现有技术中的RAID系统处理用户的读写请求的时序图3是本发明第一实施例提供的一种磁盘阵列数据分布及其磁盘条带
状态位图的示意图4是本发明第一实施例提供的磁盘阵列的数据读写方法的流程图; 图5是本发明第一实施例提供的磁盘阵列的数据读写方法中的延迟校
验处理的流程图6是本发明第一实施例提供的磁盘阵列的数据读写方法中的读请求 处理的流程图7是采用本发明第一实施例提供的磁盘阵列的数据读写方法处理读 写请求的时序具体实施例方式
下面结合附图和具体实施方式
对本发明进行详细说明。 请参阅图3,为本发明第一实施例提供的一种由四块磁盘组成的一种 RAID5叙Jf兹盘阵列以及为所述磁盘阵列创建的一个磁盘条带状态为图,所 述四块磁盘分别为磁盘1、磁盘2、磁盘3以及磁盘4。所述磁盘阵列的数 据块按照左旋不对称方式分布。
每个磁盘被划分为N个数据块,所述四个磁盘分别贡献出一个数据块 构成该磁盘阵列中的一个磁盘条带(StripeD),每个磁盘条带为所述磁盘阵列 的一个行,可以理解所述磁盘阵列有N个磁盘条带,来自磁盘I的一个数 据块0、来自磁盘2的数据块1、来自磁盘3的数据块2以及来自磁盘4的 校验块Pl构成一个磁盘条带1 (StripeDj ,依次类推,构成StripeD2、StripeD3.........StripeDN。
所述磁盘阵列的每个磁盘条带具有一个状态属性,所述状态属性为写 操作频繁状态、写操作不频繁状态或者延迟更新校验块状态。所述延迟更 新校验块状态即是目标数据块处于被写中,而校验块未更新,校验块更新 操作被延迟至一延迟时间之后进行。
定义所述f兹盘条带处于写操作频繁状态为热点状态;定义所述磁盘条
带处于写操作不频繁状态为冰点状态;定义所述磁盘条带处于延迟更新检
验块的状态为延迟状态。
优选地,在本实施例中,预先设定一个阈值,在一个计数周期内,目 标磁盘条带被执行写操作次数大于所述阈值时,标记该目标磁盘条带处于
热点状态;目标磁盘条带写^:作次数小于或者等于该阈值时,标记该目标
磁盘条带处于冰点状态。
请参阅表l,优选地,本实施例提供的所述热点状态、冰点状态以及延 迟状态分别对应的标记值按照表1的对应关系。优选地,本实施例的所述 磁盘条带状态标记值采用2bit (位)。
表1
磁盘条带状态标记值磁盘条带状态
00冰点状态
01热点状态
11延迟状态
因此,可以理解的是,对于本实施例的磁盘阵列,StripeDl、 StripeD3 和StripeD5对应的状态位图标记为00,表示在目前的一个计数周期内, StripeDl、 StripeD3和StripeD5这些磁盘条带作为目标的写请求较少,即其 处于水点状态;
StripeD2的状态位图为01,表示在该计数周期内,已接收到较多针对
12StripeD2的写请求,此时StripeD2校验块的内容需要频繁更新,但是这些 更新目前并未延迟处理,磁盘条带处于热点状态;StripeD4的状态位图为 11,表示系统判定针对StripeD4的写请求十分密集,处理写请求时对 StripeD4的校验块更新做出延迟处理来提升性能,磁盘条带处于延迟状态。 当然,所述磁盘条带状态标记值不限于所述2bit格式,其只要能够区 分所述三种磁盘条带状态且可以适合计算机存储及辨识的值的形式都可 以。
当然,所述三种磁盘条带状态与标记值"00、 01、 11"的对应关系不 限于表1给出的对应关系,还可以为水点状态对应"01"、热点状态对应 "00"以及延迟状态对应"11"的对应关系等。
在实际情况中,由于写请求通常具备连续性,则》兹盘阵列中的多个相 邻磁盘条带的状态位图标记相同。
在本实施例中,预先创建所述磁盘条带状态位图,所述磁盘条带状态 位图具有N个状态块,分别对应所述N个石兹盘条带,记录所述N个磁盘条 带的状态值,以标记其处于写操作频繁状态、写操作不频繁状态或者是延 迟更新校验块状态。
优选地,在本实施例中,内存中每个条带结构具有一个写计数属性, 系统分配一个写计数属性维护线程以维护所述写计数属性。具体地,系统 每接收一个写请求,所迷写计数维护线程对所述写计数属性加1,所述写计 数维护线程采用定时机制,即设定一个计数周期,在所述一个计数周期内, 所述写技术维护线程扫描该内存中正在使用(或者称为被激活)的条带结 构的写计数属性,判断其是否超过一个阈值,如果超过所述阈值,则将其 对应的磁盘条带对应的状态块更新为热点状态值;否则将其更新为水点状 态值,如果所述状态块的位图标记为延迟状态,则不进^f亍更新。
上述判断完毕,将所述写计数属性清O,所有被激活的条带结构扫描完 成之后进入下一个周期。下面结合图4详细说明本发明第一实施例提供的》兹盘阵列的数据读写方法。
图4为本发明第一实施例的磁盘P牟列的数据读写方法流程图,包括步 骤一、步骤二和步骤三
步骤一 内存分配多个条带结构,创建所述^f兹盘条带状态位图,以记录 所述^f兹盘条带的状态属性;初始化所述磁盘条带状态位本领域的技术人员可以理解,内存分配出多个条带结构(Stripe)。激 活其中一个条带结构用于对应所述磁盘阵列的一个目标磁盘条带StripeD, 所述目标磁盘条带即为被请求读操作或者写操作的目标磁石兹盘条带。所述 StripeD和Stripe中的数据块大小是相同的。所述内存的条带结构的数目远 远低于所述磁盘阵列中的磁盘条带的数目,内存的条带结构只分配给被用 户请求到的StripeD即目标磁盘阵列,所述分配出的对应目标磁盘条带的条 带结构称为被激活的条带结构。
所述初始化所述磁盘条带状态位图,具体为,将其上记录的每个磁盘 条带的状态值初始化为所述冰点状态。
设定所述计数属性维护线程的计数周期,并设定所述阚值,初始化所 述磁盘条带状态位图的同时对每个条带结构的写计数属性清0,并开始所述 计数周期;
步骤二接收读写请求,并更新所述磁盘条带状态位图。
本实施例中,在接收读写请求时执行一个写计数以更新所述磁盘条带
状态位图,所述执行写计数为每接收一个写请求,所述写计数属性维护
线程对目标磁盘条带对应的条带结构的写计数属性加1,并根据所述执行写
计数的结果更新所述磁盘条带状态位图。
具体地,在所述计数周期内,所述写计数属性大于所述阈值,更新所
述磁盘条带的状态属性为所述热点状态,所述写计数属性小于或者等于所
述阈值,所述磁盘条带的状态属性保持为冰点状态。步骤三执行用户的读写请求,如果是写请求,则进入一个写请求处理 流程,如果是读请求,则进入一读请求处理流程。
所述写请求处理流程包括以下步骤判断目标》兹盘条带的状态属性是 否为水点状态,如果是,则写入目标数据块并更新校验块,然后将目标磁 盘条带的状态位图更新为水点状态"00",如果否,则写入目标数据块, 然后进入一个校验延迟处理流程。
所述写请求处理流程中的更新校验块的步骤为读取目标数据块所在 磁盘条带的其他数据块并与目标数据块进行依次异或计算,将所述异或计 算的结果写入所述校验块;
下面结合图5详细说明所述写请求处理流程中的校验延迟处理流程, 所述校-险延迟处理流程的步骤为
判断所述目标》兹盘条带的状态为热点状态还是延迟状态;
如果所述目标》兹盘条带的状态是热点状态"01",则执行步骤A3,如 果所述目标磁盘条带的状态是延迟状态"11",则执行步骤B3;
所述步骤A3为更新所述目标》兹盘条带的状态为延迟状态,并开始计 时一个延迟时间。
所述步骤B3为首先判断所述延迟状态的延迟时间是否结束,如果所 述延迟时间结束,则执行更新校验块,并将目标磁盘条带的状态位图更新 为水点状态"00"。
可以理解的是,所述延迟时间的时间长度根据实际需要在系统初始化 时进行设定,不限于一个固定的值。当然,所述延迟时间越长,校验更新 的次数会越少,磁盘阵列的读写效率会越高,而数据丟失的风险相对于延 迟时间较短的磁盘阵列而言则越大。
下面结合图6详细说明所述步骤三中的读请求处理流程。
首先,读取目标数据块并写入数据緩冲区;
具体地,将目标数据块的数据读入其所在^i盘条带所对应的内存的条带结构的数据缓冲区中。
然后,判断目标数据块所在磁盘条带对应的条带结构是否更新,是则
执行步骤A5,否则结束所述读请求处理并返回;
所述步骤A5为查看所述^f兹盘条带的状态是否为延迟状态,是则更新 校验块并结束所述校验延迟时间,否则结束所述读请求处理并返回。
在本实施例中,所述磁盘条带的状态属性由一个状态访问线程访问所 述磁盘条带位图获得,所述写计数属性维护线程与状态访问线程互斥。优 选地,设定所述写计数属性维护线程的优先级高于所述磁盘条带状态位图 访问的优先级。
请参阅图7,为图3的磁盘阵列采用本发明第一实施例提供的磁盘阵列 数据读写方法的读写请求处理时序图。
所述磁盘阵列执行对磁盘条带StripeD,中数据块的读写操作,包括写数 据块0,写数据块O和数据块l,读数据块l,写数据块0、数据块l和数 据块2,以及写数据块2共计六次读写操作。
采用本发明第一实施例给出的磁盘阵列的数据读写方法后,如图7所 示,计算和写入校验块Pl的操作被延迟,在此之前针对StripeD,中数据块 的写操作处理都没有更新Pl,节省了写请求的处理时间,加快了磁盘阵列 处理读写的速度。
可见,采用本发明第一实施例提供的磁盘阵列的数据读写方法,在一 个计数周期内,读写处理时序明显比现有技术的读写处理时序减少了多个 更新校验的时间,提高了数据读写效率。在保证磁盘阵列容错能力的前提 下,有效减少了写操作频繁的情况下校验数据的更新次数,大大提高系统 的读写处理速度,加快磁盘阵列对用户的响应,有效改善磁盘阵列的读写性能。
下面详细说明本发明第二实施例的磁盘阵列的数据读取方法,其与本 发明第一实施例的不同点在于,在步骤一中,在所述初始化每个i兹盘条带
16的状态属性之前执行一个步骤D,所述步骤D为检查所述磁盘条带状态 位图是否记录有延迟状态,如果有则更新其相应磁盘条带的校验块。
可以理解的是,本发明第二实施例的磁盘阵列,在当磁盘阵列意外被 停止运行,系统在下一次启动时,在所述初始化每个磁盘条带的状态属性 之前,执行步骤D,可以恢复磁盘阵列被停止运行时的数据,在具备本发 明第一实施例的有益效果基础上,数据安全性更高。
以上说明书中的具体实施部分,仅是本发明的较佳实施例而已,并非 对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然 而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技 术方案范围内,当可利用上述揭示的方法及技术内容做出些许的更动或修 饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依 据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰, 均仍属于本发明技术方案的范围内。
权利要求
1、一种磁盘阵列的数据读写方法,所述磁盘阵列的每个磁盘条带具有一个状态属性,所述状态属性为写操作频繁状态、写操作不频繁状态或者延迟更新校验块状态,所述磁盘阵列的数据读写方法包括以下步骤A、内存分配多个条带结构,创建一个磁盘条带状态位图,以记录全部磁盘条带的状态属性;初始化所述磁盘条带状态位图;B、接收用户读写请求,并更新所述磁盘条带状态位图上的目标磁盘条带的状态属性;C、执行用户的读写请求,如果是写请求,则执行写目标磁盘条带并根据目标磁盘条带的状态属性执行更新校验块或者延迟更新校验块,如果是读请求,则执行一读请求处理流程。
2、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,所述 步骤C中,如果是写请求,则在执行所述写目标磁盘条带的同时检查其状 态属性是否为写操作不频繁状态,如果是则选择执行所述更新校验块,如 杲不是则选择执行所述延迟更新校验块。
3、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,所述 步骤A中,所述初始化》兹盘条带状态位图为将其上记录的每个磁盘条带的 状态初始化为写操作不频繁状态。
4、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,所述 磁盘条带的状态属性以一个标记值记录在所述磁盘条带状态位图上,所述 标记值为2位二进制值,所述写操作频繁状态、写操作不频繁状态或者延 迟更新校验块状态的标记值不同。
5、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,所述步骤C中,所述读请求处理流程包括以下步骤将目标数据块读入对应条带结构的数据緩冲区;判断所述对应的条带结构的所有数据緩冲区是否完全更新,如果是, 则执行步骤A5;所述步骤A5为检查目标磁盘条带的状态属性是否为延迟更新校验块 状态,如果是,则更新目标磁盘条带的校验块并更新所述目标磁盘条带的 状态属性为写操作不频繁状态。
6、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,在执 行步骤A中,在所述初始化每个磁盘条带的状态属性之前执行一个步骤D, 所述步骤D为检查所述磁盘条带状态位图是否记录有延迟状态,如果有 则更新其相应磁盘条带的校验块。
7、 如权利要求1所述的磁盘阵列的数据读写方法,其特征在于,步骤 A中,所述条带结构具有一个写计数属性,其由一个写计数属性维护线程 维护,设定所述计数属性维护线程一个计数周期,并设定一个阈值,初始 化所述磁盘条带状态位图的同时对每个条带结构的写计数属性清0,并开始 一个计数周期;步骤B中,接收用户读写请求,每接收一个写请求则所述 写计数属性维护线程对所述目标磁盘条带所对应条带结构的写计数属性加 1,在所述计数周期结束时,所述条带结构的写计数属性大于所述阈值,则 更新其对应的目标磁盘条带的状态属性为所述写操作频繁状态,所述写计 数属性小于或者等于所述阈值,则更新其对应的目标磁盘条带的状态属性 为写操作不频繁状态。
8、 如权利要求1或2所述的磁盘阵列的数据读写方法,其特征在于, 所述更新校验块的步骤为读取目标磁盘条带的数据块并依次进行异或计 算,将所述异或计算的结果写入所述校验块。
9、 如权利要求2所述的磁盘阵列的数椐读写方法,其特征在于,所述 步骤C中,所述执行延迟更新校验块包括以下步骤判断所述目标磁盘条带的状态属性为写操作频繁状态还是延迟更新校 验块状态,如果是写操作频繁状态,则执行步骤A3,如果是延迟更新校验 块状态,则执行步骤B3;所述步骤A3为更新所述目标^兹盘条带的状态属性为延迟更新校验块 状态,并开始计时一个延迟时间,在所述延迟时间内,延迟更新校验块;所述步骤B3为判断所述延迟时间是否结束,如果是,则执行更新校 验块并将目标磁盘条带的状态属性更新为写操作不频繁状态。
10、 如权利要求2或9所述的磁盘阵列的数据读写方法,其特征在于, 所迷目标磁盘条带的状态属性由一个状态访问线程访问所述磁盘条带位图 获得,所述写计数属性维护线程与状态访问线程互斥。
全文摘要
本发明提供了一种磁盘阵列的数据读写方法,其包括以下步骤内存分配多个条带结构,创建一个磁盘条带状态位图,以记录全部磁盘条带的状态属性;初始化所述磁盘条带状态位图;接收用户读写请求,并更新所述磁盘条带状态位图;执行用户的读写请求,如果是写请求,则执行写目标数据块并根据所述目标数据块所在磁盘条带的状态属性执行更新校验块或者延迟执行更新校验块,如果是读请求,则执行一读请求处理流程。本发明的磁盘阵列的数据读写方法,采用磁盘条带状态位图自适应检测其被写操作频度,对于写操作频率高的磁盘条带,延迟更新检验块,加快所述磁盘阵列的读写处理效率。
文档编号G06F3/06GK101566924SQ20081006700
公开日2009年10月28日 申请日期2008年4月23日 优先权日2008年4月23日
发明者佳 王 申请人:中兴通讯股份有限公司