调度io的方法和装置制造方法

文档序号:6521811阅读:236来源:国知局
调度io的方法和装置制造方法
【专利摘要】本发明实施例提供一种调度IO的方法和装置,该方法包括:接收主机发送的第一读IO,该第一读IO用于读取RAID的第一存储区域中的第一数据;根据该第一读IO和重构预读IO生成第二读IO,其中该重构预读IO用于读取该RAID的第二存储区域中的第二数据,该第二存储区域与该第一存储区域具有至少部分交叠的存储区域,该第二读IO用于读取该RAID的第三存储区域中的第三数据,该第三存储区域包括该至少部分交叠的存储区域;向该RAID发送该第二读IO。本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
【专利说明】调度IO的方法和装置
【技术领域】
[0001]本发明实施例涉及数据处理领域,更为具体地,涉及一种调度IO的方法和装置。【背景技术】
[0002]RAID (Redundant Arrays of Independent Disks,独立磁盘冗余阵列)将不同硬盘组成阵列的形式进行数据的存储与读写。RAID (RAID0除外)具有冗余性,可以在单盘故障的情况下,对故障盘进行数据重构,并将重构后的数据写入RAID的热备存储区域(又称热备空间,例如可以是热备盘)中,以保证RAID数据的完整性、正确性以及一致性。
[0003]主机下发的数据流包括主机的读IO (Input Output,输入输出)和主机的写10。当主机下发的数据流对正在重构或待重构的存储空间进行访问时,重构数据流(重构预读IO和重构写10)与主机下发的数据流之间会分别对同一存储空间进行多次访问,增加硬盘负担,浪费系统资源。

【发明内容】

[0004]本发明实施例提供一种调度IO的方法和装置,以减少硬盘负担,避免系统带宽浪费。
[0005]第一方面,提供一种调度IO的方法,包括:接收主机发送的第一读10,所述第一读IO用于读取RAID的第一存储区域中的第一数据;根据所述第一读IO和重构预读IO生成第二读10,其中所述重构预读IO用于读取所述RAID的第二存储区域中的第二数据,所述第二存储区域与所述第一存储区域具有至少部分交叠的存储区域,所述第二读IO用于读取所述RAID的第三存储区域中的第三数据,所述第三存储区域包括所述至少部分交叠的存储区域;向所述RAID发送所述第二读10。
[0006]结合第一方面,在第一方面的一种实现方式中,所述第三存储区域为所述RAID的非故障存储区域,且所述第三存储区域包括所述第一存储区域和所述第二存储区域,所述根据所述第一读IO和重构预读IO生成第二读10,包括:将所述第一读IO和所述重构预读IO合并为所述第二读10。
[0007]结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,还包括:根据所述第二读10,从所述RAID接收所述第三数据;向所述主机返回包含在所述第三数据中的所述第一数据;根据包含在所述第三数据中的第二数据,重构所述RAID的故障存储区域中的数据。
[0008]结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,还包括:接收所述主机发送的写10,所述写IO用于将第四数据写入所述RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域;将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
[0009]结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。[0010]结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域,包括:当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
[0011]第二方面,提供一种调度IO的方法,包括:接收主机发送的写10,所述写IO用于将第四数据写入RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域;将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
[0012]结合第二方面,在第二方面的一种实现方式中,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
[0013]结合第二方面或其上述实现方式的任一种,在第二方面的另一种实现方式中,所述将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域,包括:当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
[0014]第三方面,提供一种调度IO的装置,其特征在于,包括:第一接收单元,用于接收主机发送的第一读10,所述第一读IO用于读取RAID的第一存储区域中的第一数据;生成单元,用于根据所述第一接收单元接收到的所述第一读IO和重构预读IO生成第二读10,其中所述重构预读IO用于读取所述RAID的第二存储区域中的第二数据,所述第二存储区域与所述第一存储区域具有至少部分交叠的存储区域,所述第二读IO用于读取所述RAID的第三存储区域中的第三数据,所述第三存储区域包括所述至少部分交叠的存储区域;第一发送单元,用于向所述RAID发送所述生成单元生成的所述第二读10。
[0015]结合第三方面,在第三方面的一种实现方式中,所述第三存储区域为所述RAID的非故障存储区域,且所述第三存储区域包括所述第一存储区域和所述第二存储区域,所述生成单元具体用于将所述第一读IO和所述重构预读IO合并为所述第二读10。
[0016]结合第三方面或其上述实现方式的任一种,在第三方面的另一种实现方式中,所述装置还包括:第二接收单元,用于根据所述第二读10,从所述RAID接收所述第三数据;第二发送单元,用于向所述主机返回包含在所述第二接收单元接收的所述第三数据中的所述第一数据;重构单元,用于根据包含在第二接收单元接收的所述第三数据中的第二数据,重构所述RAID的故障存储区域中的数据。
[0017]结合第三方面或其上述实现方式的任一种,在第三方面的另一种实现方式中,还包括:第三接收单元,用于接收所述主机发送的写10,所述写IO用于将第四数据写入所述RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域;写入单元,用于将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
[0018]结合第三方面或其上述实现方式的任一种,在第三方面的另一种实现方式中,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
[0019]结合第三方面或其上述实现方式的任一种,在第三方面的另一种实现方式中,所述写入单元具体用于当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
[0020]第四方面,提供一种调度IO的装置,其特征在于,包括:接收单元,用于接收主机发送的写10,所述写IO用于将第四数据写入RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域;写入单元,用于将所述接收单元接收的所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
[0021]结合第四方面,在第四方面的一种实现方式中,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
[0022]结合第四方面或其上述实现方式的任一种,在第四方面的另一种实现方式中,所述写入单元具体用于当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
[0023]本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
【专利附图】

【附图说明】
[0024]为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]图1是根据本发明实施例的调度IO的方法的结构框架图。
[0026]图2是根据本发明实施例的调度IO的方法的示意性流程图。
[0027]图3是根据本发明实施例的调度IO的方法的示意性流程图。
[0028]图4是根据本发明实施例的调度IO的方法的流程图。
[0029]图5是根据本发明实施例的调度IO的方法的流程图。
[0030]图6是根据本发明实施例的调度IO的装置的示意性框图。
[0031]图7是根据本发明另一实施例的调度IO的装置的示意性框图。
[0032]图8是根据本发明另一实施例的调度IO的装置的示意性框图。
[0033]图9是根据本发明另一实施例的调度IO的装置的示意性框图。
【具体实施方式】[0034]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0035]在现有技术中,由于RAID具有冗余性,当RAID中的某个存储区域出现故障时(例如硬盘发生故障),可以对该存储区域中的数据进行恢复,该过程即为存储区域的数据重构过程。在该数据重构过程中,发生故障的存储区域可以分为正在重构的存储区域和待重构的存储区域。当主机数据流与重构数据流对RAID进行访问时,基于故障存储区域的上述划分,采用不同的IO调度策略,减少不同数据流对相同存储区域的重复访问,进而降低硬盘负担,避免系统带宽的浪费。
[0036]具体地,如图1所示,RAID130由n个磁盘组成,在主机的缓存110与RAID130之间设置“缓存-RAID适配器”(Cache-RAID Adaptor,简称CRA),可通过CRA控制根据本发明实施例的IO的调度,以降低相同存储区域的重复访问。该CRA可以是逻辑的功能实体,也可以是独立的硬件装置,本发明实施例对此不作具体限定。
[0037]图2是根据本发明实施例的调度IO的方法的示意性流程图。图2的方法可由图1中的CRA执行。该方法包括:
[0038]210、接收主机发送的第一读10,第一读IO用于读取RAID的第一存储区域中的第
一数据。
[0039]220、根据第一读IO和重构预读IO生成第二读10,其中重构预读IO用于读取RAID的第二存储区域中的第二数据,第二存储区域与第一存储区域具有至少部分交叠的存储区域,第二读IO用于读取RAID的第三存储区域中的第三数据,第三存储区域包括至少部分交置的存储区域。
[0040]应理解,本发明实施例对步骤210中的第一存储区域的具体位置不作限定,例如,第一存储区域可以全部位于RAID的非故障存储区域,也可以一部分位于RAID的非故障存储区域、一部分位于RAID的故障存储区域。
[0041]上述第三存储区域可以是第一存储区域和第二存储区域的交叠区域,或者是第一存储区域,或者是第三存储区域,或者是第一存储区域和第三存储区域之和(即第一存储区域和第三存储区域的合集,假设第一存储区域对应的存储地址1000H?2000H,第三存储区域的存储地址为1050H?2050H,则第一存储区域和第三存储区域的合集为1000H?2050H),本发明实施例对此不作具体限定。
[0042]重构预读IO是重构数据流的一部分,目的是通过读取非故障存储区域中的数据来重构故障存储区域的数据。当第一读IO与故障区域中某个重构预读IO读取的存储区域部分重叠时,即可生成上述第二读10。
[0043]230、向 RAID 发送第二读 10。
[0044]本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
[0045]可选地,作为一个实施例,第三存储区域为RAID的非故障存储区域,且第三存储区域包括第一存储区域和第二存储区域,步骤220可包括:将第一读IO和重构预读IO合并为第二读10。
[0046]具体地,在该实施例下,第三存储区域可全部位于非故障存储区域,第三存储区域可取第一存储区域和第二存储区域的并集,上述将第一读IO和重构预读IO合并为第二读IO具体可指:生成第二读10,该第二读IO读取的存储空间是第一读IO和重构预读IO读取的存储空间之和。
[0047]进一步地,图2方法还可包括:根据第二读10,从RAID接收第三数据;向主机返回包含在第三数据中的第一数据;根据包含在第三数据中的第二数据,重构RAID的故障存储区域中的数据。
[0048]具体地,RAID根据第二读IO将上述第三数据返回至CRA,由于第三存储空间包括第一存储空间和第二存储空间,所以第三数据中包括第一数据和第二数据。当CRA获得第三数据时,可以优先向主机返回第一读IO对应的第一数据,再根据第二数据异步计算重构数据,进而完成重构数据的下盘(即将重构数据写入RAID的热备存储区域)。
[0049]可选地,作为另一个实施例,图1的方法还可包括:接收主机发送的写10,写IO用于将第四数据写入RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0050]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0051]上述将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域具体可指:将第四数据存储至所述RAID的热备存储区域中的、用于存储所述第四存储区域的重构数据的存储区域。
[0052]举例说明,当数据重构以CHUNK为单位进行时,假设当前正在重构第i CHUNK,且第四存储区域为该第i CHUNK中的存储区域,那么在热备存储区域会建立一个与第i CHUNK对应的存储区域i,用于存储第i CHUNK的重构数据,此时仅需要将第四数据写入该存储区域i对应位置即可。
[0053]进一步地,如果第四存储区域为待重构的存储区域(不属于第i CHUNK,属于还未重构的CHUNK)时,可以采用预先划分的方式,预先建立所有待重构的CHUNK在热备存储空间的对应区域,以存储各自的重构数据。此时,即可根据预先划分好的存储区域,将第四数据存入热备空间的对应位置即可。需要说明的是,为了避免重构第四存储区域时,重构数据覆盖了该写IO的数据,可以先检测第四存储区域是否已经写入了主机写IO的数据,如果已经写入主机写10,则可以跳过第四存储区域,继续下一存储区域的数据重构。
[0054]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,进而减少硬盘负担,避免了系统带宽的浪费。
[0055]应理解,上述第四存储区域可以是正在重构的存储区域或者待重构的存储区域。当上述第四存储区域为正在重构的存储区域时,如果第四存储区域中的数据还未重构成功,可以直接将该第四数据作为该第四存储区域的重构数据;如果第四存储区域已经重构完成,准备下盘,则可用该第四数据替换第四存储区域中的重构数据,再写入硬盘中。
[0056]可选地,作为另一个实施例,将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域可包括:当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0057]具体地,上述日志信息可包括上述第四数据的内容、故障盘的逻辑ID、逻辑块地址(LBA, Logic Block Address)、逻辑块长度等,以便后续利用元数据和数据的映射关系恢复上述第四数据。
[0058]图3是根据本发明实施例的调度IO的方法的示意性流程图。图3的方法可由图1中的CRA执行。该方法包括:
[0059]310、接收主机发送的写10,写IO用于将第四数据写入RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;
[0060]320、将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0061]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0062]可选地,作为一个实施例,第四存储区域为故障存储区域中的正在重构的存储区域。
[0063]可选地,作为另一个实施例,步骤320可包括:当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0064]下面结合具体例子,更加详细地描述本发明实施例。应注意,图4至图5的例子仅仅是为了帮助本领域技术人员理解本发明实施例,而非要将本发明实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的图4至图5的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。
[0065]图4是根据本发明实施例的调度IO的方法的流程图。图4的方法可以由图1中的CRA执行。在图4的实施例中,主机发送的第一读IO用于读取第一存储区域中的第一数据,该实施例以第一存储区域为非故障存储区域为例进行说明,当第一存储区域位于故障存储区域时,可以采用降级读的方式,先记录第一读IO的日志,以便该故障存储区域的数据重构后,根据该日志向主机返回第一数据。
[0066]410、接收主机发送的第一读10。
[0067]该第一读IO用于读取RAID的第一存储区域中的第一数据。
[0068]420、判断第一读IO与重构预读IO是否可以合并,如果是,执行步骤430 ;如果否,执行步骤440。
[0069]具体地,可以搜索重构数据流中重构预读10,当某个重构预读IO读取的第二存储区域与第一存储区域至少部分交叠时,即可判断该重构预读IO与第一读IO可以合并。
[0070]430、与重构预读IO合并,生成第二读10。[0071]第二读IO读取第三存储区域的第三数据,第三存储区域可包括上述第一存储区域和第二存储区域。
[0072]440、向 RAID 发送第二读 10。
[0073]即向RAID下发读盘命令,读取第三存储区域的数据。
[0074]450、返回读盘数据。
[0075]该读盘数据即为上述第三数据。
[0076]460、优先向主机返回第一数据;同时异步计算重构数据。
[0077]由于第三存储区域包括第一存储区域,所以第三数据包括第一数据,只需要从第三数据中提取出第一数据,并向主机返回即可。
[0078]进一步地,第三数据中包括第二数据,该第二数据用于重构上述重构预读IO对应的故障存储区域中的数据,所以需要异步计算重构数据。
[0079]470、在返回主机IO之后查看本次硬盘的读是否有效提高硬盘读命中,如果是则下次硬盘读IO采用本次预读策略,否则更换预读策略。
[0080]本发明实施例中,缓存的预读策略与故障存储区域的重构顺序有关(假设故障存储区域的恢复以CHUNK为单位,该重构顺序用于指示CHUNK恢复的先后顺序)。当按照某种重构顺序恢复数据时,可以计算出主机IO与重构预读IO能够合并的概率。如果该概率过低(如低于预设阈值),可以通过调整重构顺序,相应地调整CACHE的预读策略,以提高主机IO与重构预读IO能够合并的概率。
[0081]480、结束。
[0082]本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
[0083]图5是根据本发明实施例的调度IO的方法的流程图。图5的方法可以由图1中的CRA执行。
[0084]510、接收主机发送的写10。
[0085]该写IO用于将第四数据写入RAID的第四存储区域。
[0086]520、判断第四存储区域是否位于故障盘,如果是,执行步骤530 ;如果不是,执行步骤560。
[0087]530、判断第四存储区域的类型,当第四存储区域为已重构的存储区域时,执行步骤560;当第四存储区域为正在重构的存储区域时,执行步骤540 ;当第四存储区域为待重构的存储区域时,执行步骤550。
[0088]540、将所述第四数据作为第四存储区域的重构数据写入RAID的热备存储区域,然后执行步骤560。
[0089]当第四存储区域的重构数据已经完成,准备写盘时,可以用第四数据替换该重构数据;当第四存储区域的重构数据还未开始重构或者完成重构时,直接将第四数据作为第四存储区域的重构数据写盘。
[0090]进一步地,如果本发明实施例中的RAID采用RAID5或RAID6,还可以更新写校验位,以提闻与数据的容错率。
[0091]这种情况下可与Cache刷脏数据结合,优先刷第四存储区域所在数据块。[0092]550、记录写IO的日志信息,然后执行步骤570。
[0093]记录写IO的日志信息,以便重构第四存储区域时,根据该日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域。具体地,上述日志信息可包括上述第四数据的内容、故障盘的逻辑ID、逻辑块地址、逻辑块长度等。
[0094]560、下发写盘命令。
[0095]570、结束。
[0096]上文中结合图1至图5,详细描述了根据本发明实施例的调度IO的方法,下面将结合图6至图9,详细描述根据本发明实施例的调度IO的装置。
[0097]图6是根据本发明实施例的调度IO的装置的示意性框图。
[0098]应理解,图6的装置600能够实现图2至图5流程中的各个步骤,为避免重复,不再详细描述。
[0099]装置600包括:第一接收单元610、生成单元620和第一发送单元630。
[0100]第一接收单元610,用于接收主机发送的第一读10,第一读IO用于读取独立磁盘冗余阵列RAID的第一存储区域中的第一数据;
[0101 ] 生成单元620,用于根据第一接收单元610接收到的第一读IO和重构预读IO生成第二读10,其中重构预读IO用于读取RAID的第二存储区域中的第二数据,第二存储区域与第一存储区域具有至少部分交叠的存储区域,第二读IO用于读取RAID的第三存储区域中的第三数据,第三存储区域包括至少部分交叠的存储区域;
[0102]第一发送单元630,用于向RAID发送生成单元620生成的第二读10。
[0103]本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
[0104]可选地,作为一个实施例,第三存储区域为RAID的非故障存储区域,且第三存储区域包括第一存储区域和第二存储区域,生成单元620具体用于将第一读IO和重构预读IO合并为第二读10。
[0105]可选地,作为另一个实施例,装置600还包括:第二接收单元,用于根据第二读10,从RAID接收第三数据;第二发送单元,用于向主机返回包含在第二接收单元接收的第三数据中的第一数据;重构单元,用于根据包含在第二接收单元接收的第三数据中的第二数据,重构RAID的故障存储区域中的数据。
[0106]可选地,作为另一个实施例,装置600还包括:第三接收单元,用于接收主机发送的写10,写IO用于将第四数据写入RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;写入单元,用于将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0107]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0108]可选地,作为另一个实施例,第四存储区域为故障存储区域中的正在重构的存储区域。
[0109]可选地,作为另一个实施例,写入单元具体用于当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0110]图7是根据本发明另一实施例的调度IO的装置的示意性框图。
[0111]应理解,图7的装置700能够实现图2至图5流程中的各个步骤,为避免重复,不再详细描述。
[0112]装置700包括:接收单元710和写入单元720。
[0113]接收单元710,用于接收主机发送的写10,写IO用于将第四数据写入独立磁盘冗余阵列RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;
[0114]写入单元720,用于将接收单元710接收的第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0115]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0116]可选地,作为一个实施例,第四存储区域为故障存储区域中的正在重构的存储区域。
[0117]可选地,作为另一个实施例,写入单元720具体用于当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0118]图8是根据本发明另一实施例的调度IO的装置的示意性框图。
[0119]应理解,图8的装置800能够实现图2至图5中的各个步骤,为避免重复,不再详细描述。
[0120]装置800包括:控制器810和存储器820。
[0121]存储器820,用于存储程序。
[0122]控制器810,用于执行存储器820存储的程序,程序被控制器810执行时,用于接收主机发送的第一读10,第一读IO用于读取RAID的第一存储区域中的第一数据;根据接收到的第一读IO和重构预读IO生成第二读10,其中重构预读IO用于读取RAID的第二存储区域中的第二数据,第二存储区域与第一存储区域具有至少部分交叠的存储区域,第二读IO用于读取RAID的第三存储区域中的第三数据,第三存储区域包括至少部分交叠的存储区域;向RAID发送第二读10。
[0123]本发明实施例中,第一读IO与重构预读IO访问的存储区域部分交叠,利用第二读IO读取交叠部分的存储区域,减少不同数据流对相同存储区域的重复访问,进而减少硬盘负担,避免系统带宽的浪费。
[0124]可选地,作为一个实施例,第三存储区域为RAID的非故障存储区域,且第三存储区域包括第一存储区域和第二存储区域,控制器810具体用于将第一读IO和重构预读IO合并为第二读10。[0125]可选地,作为另一个实施例,控制器810还用于根据第二读10,从RAID接收第三数据;向主机返回包含在第三数据中的第一数据;根据包含在第三数据中的第二数据,重构RAID的故障存储区域中的数据。
[0126]可选地,作为另一个实施例,控制器810还用于接收主机发送的写10,写IO用于将第四数据写入RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0127]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0128]可选地,作为另一个实施例,第四存储区域为故障存储区域中的正在重构的存储区域。
[0129]可选地,作为另一个实施例,控制器810具体用于当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0130]图9是根据本发明另一实施例的调度IO的装置的示意性框图。
[0131]应理解,图9的装置900能够实现图2至图5中的各个步骤,为避免重复,不再详细描述。
[0132]装置900包括:控制器910和存储器920。
[0133]存储器920,用于存储程序。
[0134]控制器910,用于执行存储器920的程序,程序被控制器910执行时,接收主机发送的写10,写IO用于将第四数据写入RAID的第四存储区域,其中第四存储区域位于RAID的故障存储区域;将第四数据作为第四存储区域的重构数据写入RAID的热备存储区域。
[0135]本发明实施例中,通过将主机发送的写IO的数据作为重构数据写入RAID的热备存储区域,避免了重构写IO和主机写IO对同一热备存储区域的多次写操作,避免了系统带宽的浪费。
[0136]可选地,作为一个实施例,第四存储区域为故障存储区域中的正在重构的存储区域。
[0137]可选地,作为另一个实施例,控制器910具体用于当第四存储区域为故障存储区域中的正在重构的存储区域时,将第四数据作为第四存储区域的重构数据写入热备存储区域;当第四存储区域为故障存储区域中的待重构的存储区域时,记录日志信息,以便重构第四存储区域时,根据日志信息将第四数据作为第四存储区域的重构数据写入热备存储区域,其中日志信息用于指示写IO的逻辑地址。
[0138]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0139]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0140]在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0141]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0142]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0143]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0144]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种调度输入输出IO的方法,其特征在于,包括: 接收主机发送的第一读10,所述第一读IO用于读取独立磁盘冗余阵列RAID的第一存储区域中的第一数据; 根据所述第一读IO和重构预读IO生成第二读10,其中所述重构预读IO用于读取所述RAID的第二存储区域中的第二数据,所述第二存储区域与所述第一存储区域具有至少部分交叠的存储区域,所述第二读IO用于读取所述RAID的第三存储区域中的第三数据,所述第三存储区域包括所述至少部分交叠的存储区域; 向所述RAID发送所述第二读10。
2.如权利要求1所述的方法,其特征在于,所述第三存储区域为所述RAID的非故障存储区域,且所述第三存储区域包括所述第一存储区域和所述第二存储区域,所述根据所述第一读IO和重构预读IO生成第二读10,包括: 将所述第一读IO和所述重构预读IO合并为所述第二读10。
3.如权利要求2所述的方法,其特征在于,还包括: 根据所述第二读10,从所述RAID接收所述第三数据; 向所述主机返回包含在所述第三数据中的所述第一数据; 根据包含在所述第三数据中的第二数据,重构所述RAID的故障存储区域中的数据。
4.如权利要求1-3中任一项所述的方法,其特征在于,还包括: 接收所述主机发送的写10,所述写IO用于将第四数据写入所述RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域;` 将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
5.如权利要求4所述的方法,其特征在于,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
6.如权利要求4所述的方法,其特征在于,所述将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域,包括: 当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域; 当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
7.—种调度输入输出IO的方法,其特征在于,包括: 接收主机发送的写10,所述写IO用于将第四数据写入独立磁盘冗余阵列RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域; 将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
8.如权利要求7所述的方法,其特征在于,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
9.如权利要求7所述的方法,其特征在于,所述将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域,包括: 当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
10.一种调度输入输出IO的装置,其特征在于,包括: 第一接收单元,用于接收主机发送的第一读IO,所述第一读IO用于读取独立磁盘冗余阵列RAID的第一存储区域中的第一数据; 生成单元,用于根据所述第一接收单元接收到的所述第一读IO和重构预读IO生成第二读IO,其中所述重构预读IO用于读取所述RAID的第二存储区域中的第二数据,所述第二存储区域与所述第一存储区域具有至少部分交叠的存储区域,所述第二读IO用于读取所述RAID的第三存储区域中的第三数据,所述第三存储区域包括所述至少部分交叠的存储区域; 第一发送单元,用于向所述RAID发送所述生成单元生成的所述第二读IO。
11.如权利要求10所述的装置,其特征在于,所述第三存储区域为所述RAID的非故障存储区域,且所述第三存储区域包括所述第一存储区域和所述第二存储区域,所述生成单元具体用于将所述第一读IO和所述重构预读IO合并为所述第二读IO。
12.如权利要求11所述的装置,其特征在于,所述装置还包括: 第二接收单元,用于根据所述第二读IO,从所述RAID接收所述第三数据; 第二发送单元,用于向所述主机返回包含在所述第二接收单元接收的所述第三数据中的所述第一数据; 重构单元,用于根据包含在第二接收单元接收的所述第三数据中的第二数据,重构所述RAID的故障存储区域中的数据。
13.如权利要求10-12中任一项所述的装置,其特征在于,还包括: 第三接收单元,用于接收所述主机发送的写IO,所述写IO用于将第四数据写入所述RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域; 写入单元,用于将所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
14.如权利要求13所述的装置,其特征在于,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
15.如权利要求13所述的装置,其特征在于,所述写入单元具体用于当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
16.一种调度输入输出IO的装置,其特征在于,包括: 接收单元,用于接收主机发送的写IO,所述写IO用于将第四数据写入独立磁盘冗余阵列RAID的第四存储区域,其中所述第四存储区域位于所述RAID的故障存储区域; 写入单元,用于将所述接收单元接收的所述第四数据作为所述第四存储区域的重构数据写入所述RAID的热备存储区域。
17.如权利要求16所述的装置,其特征在于,所述第四存储区域为所述故障存储区域中的正在重构的存储区域。
18.如权利要求16所述的装置,其特征在于,所述写入单元具体用于当所述第四存储区域为所述故障存储区域中的正在重构的存储区域时,将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域;当所述第四存储区域为所述故障存储区域中的待重构的存储区域时,记录日志信息,以便重构所述第四存储区域时,根据所述日志信息将所述第四数据作为所述第四存储区域的重构数据写入所述热备存储区域,其中所述日志信息用于指示所述写IO的逻辑地址。
【文档编号】G06F3/06GK103677669SQ201310633914
【公开日】2014年3月26日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】雷延钊 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1