CN103699340B - 一种请求处理方法及设备 - Google Patents
一种请求处理方法及设备 Download PDFInfo
- Publication number
- CN103699340B CN103699340B CN201310687352.4A CN201310687352A CN103699340B CN 103699340 B CN103699340 B CN 103699340B CN 201310687352 A CN201310687352 A CN 201310687352A CN 103699340 B CN103699340 B CN 103699340B
- Authority
- CN
- China
- Prior art keywords
- request
- redundancy
- data
- read
- sub
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种请求处理方法及设备。其中一种请求处理方法,包括:接收主机发送的第一读请求后,生成RAID***的第二读请求;为第二读请求分配的读页面;将第二读请求拆分成多个子请求;若任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求,则对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据。因此,当任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求时,在无需等待该冗余子请求返回的情况下,即可以对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,实现了对出现慢IO情况的冗余子请求快速返回数据,解决偶尔出现慢IO的子请求无法快速返回数据的问题。
Description
技术领域
本发明涉及RAID***技术领域,特别涉及一种请求处理方法及设备。
背景技术
在RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)***中,其接收到一个主机的读请求,会将该读请求拆分成多个子请求下发到RAID***中的多个硬盘上并行执行,主机读请求的处理时间取决于这些子请求的最大处理时间,当这些拆分的子请求中有一个请求处理时间较慢时可能会导致整个主机读请求超时,进而影响整个RAID***的性能。当RAID***的硬盘数目较多时某个硬盘出现慢IO(Input/Output,输入/输出)的概率就会线性增加,其中慢IO是IO响应较慢,其中IO响应是指对子请求的响应。这种慢IO已成为RAID***问题中较典型的问题。
现有解决慢IO的一种方法是增加对慢盘的识别,当发现RAID***中某个硬盘在一段时间内持续出现IO响应较慢的情况则定义该盘为慢盘,在RAID***有冗余的情况下可以将该慢盘离线,这样可以排除该慢盘对整个RAID***的影响。其中RAID***有冗余是指硬盘可以通过其他硬盘的RAID***降级读返回数据,将慢盘离线是将该慢盘从RAID***中去除。
虽然这种离线慢盘的方式可以提高主机读请求的处理时间,但是其只适用于在一段时间内连续出现慢IO的硬盘,对于偶发慢IO的硬盘无法进行处理。并且进一步地,直接将慢盘离线可能导致整个RAID***无法通过RAID***降级读返回数据,增加双盘失效的风险。另外,RAID***在将慢盘离线后,需要对其他硬盘的数据进行重构,同样会影响整个RAID***的IO性能。
发明内容
本发明所要解决的技术问题是提供一种请求处理方法及设备,用以解决现有技术中无法对偶发慢IO的硬盘处理、将慢盘离线导致的双盘失效以及将慢盘离线导致的影响整个RAID***的IO性能的问题。技术方案如下:
第一方面,本发明实施例提供一种请求处理方法,包括:
接收主机发送的第一读请求后,生成独立磁盘冗余阵列***的第二读请求,所述第二读请求用于从所述独立磁盘冗余阵列***的硬盘中读取数据;
为所述第二读请求分配的读页面,其中所述读页面用于存储所述第二读请求对应的数据;
将所述第二读请求拆分成多个子请求,其中所拆分的子请求个数取决于所述第二读请求所请求的数据范围,每个所述子请求用于读取对应硬盘中的数据;
若任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求,则对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,其中所述冗余子请求为可通过独立磁盘冗余阵列***降级读返回数据的子请求。
在第一方面的第一种可能实现方式中,所述方法还包括:获取每个所述子请求相对于所述第二读请求的偏移值,并在每个所述子请求中记录各自的偏移值及所述第二读请求的地址。
结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,包括:
通过复制所述冗余子请求的字段信息,生成一个新子请求,其中所述新子请求用于读取所述冗余子请求对应的硬盘中的数据;
根据所述新子请求中所述第二读请求的地址,查找到所述第二读请求,并为所述第二读请求重新分配读页面;
根据所述新子请求对应的硬盘和其他硬盘之间的冗余关系,对所述其他硬盘相应位置处的数据进行校验计算,得到所述新子请求对应的数据,其中重新分配的读页面为每个所述子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
结合第一方面或第一方面的第一种可能实现方式或第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,判定处理时间超过阈值的所述子请求出现慢IO情况。
结合第一方面的第三种可能实现方式中,在第一方面的第四种可能实现方式中,确定具有冗余标识的所述子请求为冗余子请求。
结合第一方面或第一方面的第一种可能实现方式或第一方面的第二种可能实现方式,在第一方面的第五种可能实现方式中,所述方法还包括:
释放所述冗余子请求,并回收所述读页面为所述冗余子请求分配的子页面。
第二方面,本发明实施例还提供一种请求处理设备,包括:
接收单元,用于接收主机发送的第一读请求后,生成独立磁盘冗余阵列***的第二读请求,所述第二读请求用于从所述独立磁盘冗余阵列***的硬盘中读取数据;
分配单元,用于为所述第二读请求分配的读页面,其中所述读页面用于存储所述第二读请求对应的数据;
拆分单元,用于将所述第二读请求拆分成多个子请求,其中所拆分的子请求个数取决于所述第二读请求所请求的数据范围,每个所述子请求用于读取对应硬盘中的数据;
数据获取单元,用于若任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求,对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,其中所述冗余子请求为可通过独立磁盘冗余阵列***降级读返回数据的子请求。
在第二方面的第一种可能实现方式中,所述设备还包括:获取单元,用于获取每个所述子请求相对于所述第二读请求的偏移值,并在每个所述子请求中记录各自的偏移值及所述第二读请求的地址。
结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述数据获取单元,包括:
请求生成子单元,用于当任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求时,通过复制所述冗余子请求的字段信息,生成一个新子请求,其中所述新子请求用于读取所述冗余子请求对应的硬盘中的数据;
查找子单元,用于根据所述新子请求中的所述第二读请求的地址,查找到所述第二读请求,并为所述第二读请求重新分配读页面;
数据获得子单元,用于根据所述新子请求对应的硬盘和其他硬盘之间的冗余关系,对所述其他硬盘相应位置处的数据进行校验计算,得到所述新子请求对应的数据,其中重新分配的读页面为每个所述子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
结合第二方面或第二方面的第一种可能实现方式或第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,所述数据获取单元具体用于:判定处理时间超过阈值的所述子请求出现慢IO情况。
结合第二方面的第三种可能实现方式,在第二方面的第四种可能实现方式中,所述数据获取单元进一步具体用于:确定具有冗余标识的所述子请求为冗余子请求。
结合第二方面或第二方面的第一种可能实现方式或第二方面的第二种可能实现方式,在第二方面的第五种可能实现方式中,所述设备还包括:回收单元,用于释放所述冗余子请求,并回收所述读页面为所述冗余子请求分配的子页面。
与现有技术相比,本发明包括以下优点:
在本发明实施例中,当接收到主机发送的第一读请求后,生成一用于从RAID***的硬盘中读取数据的第二读请求,并为第二读请求分配读页面。将第二读请求拆分成多个子请求以读取硬盘中的数据,当任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求时,在无需等待该冗余子请求返回的情况下,即可以对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,实现了对出现慢IO情况的冗余子请求快速返回数据,解决偶尔出现慢IO的子请求无法快速返回数据的问题。当出现慢IO情况的子请求返回后,还可以回收该子请求,避免该子请求长时间返回数据后对主机读请求处理造成影响。
进一步,本发明实施例提供的请求处理方法在子请求出现慢IO的情况下,仍保留其对应的硬盘,这样当其恢复为可正常处理慢IO的硬盘时,可以利用该硬盘内的数据对其他慢盘进行RAID***降级读,降低双盘失效的风险。同时RAID***无需对硬盘的数据进行重构,保证整个RAID***的IO性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种请求处理方法的一种流程图;
图2是本发明实施例提供的一种请求处理方法的另一种流程图;
图3是本发明实施例提供的一种请求处理设备的一种结构示意图;
图4是本发明实施例提供的一种请求处理设备的另一种结构示意图;
图5是本发明实施例提供的一种请求处理设备的一种子结构示意图;
图6是本发明实施例提供的一种请求处理设备的再一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明实施例提供的一种请求处理方法的一种流程图,可以包括以下步骤:
步骤101:接收主机发送的第一读请求后,生成RAID***的第二读请求,第二读请求用于从RAID***的硬盘中读取数据。
可以理解的是:第一读请求表示主机需要从RAID***的各个硬盘中读取数据。当RAID***接收到该第一读请求后,生成用于从RAID***的硬盘中读取数据的第二读请求。
步骤102:为第二读请求分配的读页面,其中读页面用于存储第二读请求对应的数据。
RAID***为第二读请求分配用于存储每个硬盘所返回数据的读页面,该读页面为每个硬盘分配独立的数据存储空间,当硬盘返回数据后,RAID***将其存储到对应的数据存储空间中。
步骤103:将第二读请求拆分成多个子请求。
当第二读请求在下发至硬盘的路径上,并拆分成多个子请求,其中所拆分的子请求个数取决于第二读请求所请求的数据范围。例如某个第二读请求所请求的数据范围为0-100,则在第二读请求下发过程中,RAID***的RAID层确定这一数据范围存储于哪些硬盘中,将这些硬盘的数量作为拆分成子请求的数量,拆分后的每个子请求分别用于读取对应硬盘中的数据。
具体的,请求拆分过程按照RAID***和LUN(Logical Unit Number,逻辑单元号)的具体属性进行,其和现有请求拆分相同,对此本发明实施例不再阐述请求拆分的过程。并且子请求与硬盘的映射关系遵循RAID***中各个RAID级别定义的映射关系和计算公式,与现有子请求和硬盘映射相同,对此本实施例不再详细阐述。
步骤104:若任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求,则对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,其中冗余子请求为可通过RAID***降级读返回数据的子请求。
在本发明实施例中,RAID***可以包括一定时器,用于记录每个子请求的处理时间,当子请求的处理时间超过阈值时,RAID***的RAID层将判定处理时间超过阈值的该子请求出现慢IO情况。
进一步,当子请求在下发过程中,可以根据RAID***的级别确定冗余子请求的个数。例如当RAID***级别为RAID5级别时,RAID***中所有硬盘均未离线时所有子请求均为冗余子请求,若有一个以上硬盘离线时所有子请求都是无冗余子请求。当RAID***级别为RAID6级别时,RAID***中所有硬盘均未离线或者仅有一个硬盘离线时,所有子请求均为冗余子请求,若有两个以上硬盘离线时所有子请求都是无冗余子请求,其中无冗余子请求是指无法通过RAID***降级读返回数据的子请求。
当RAID层判定子请求出现慢IO情况,且该子请求为冗余子请求时,RAID层对其进行RAID***降级读,其中RAID***降级读是通过读取RAID***中除该冗余子请求对应硬盘之外的其他硬盘中数据,然后通过RAID算法计算出该冗余子请求需要读取的数据。其中所读取其他硬盘中的数据与该冗余子请求所请求的硬盘中的数据具有相同存储位置和长度,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
例如:RAID***级别为RAID5时,其所有子请求对应的硬盘分别为disk1、disk2、disk3,此时要读取disk1上存储于位置1长度为100的数据,如果disk1对应的子请求为冗余子请求,则可以首先读取disk2和disk3上存储于位置1长度为100的数据,再将这两个盘上读取的数据进行奇偶校验,就可以计算出disk1上存储于位置1长度为100的数据。
应用上述技术方案,当接收到主机发送的第一读请求后,生成一用于从RAID***的硬盘中读取数据的第二读请求,并为第二读请求分配读页面。将第二读请求拆分成多个子请求以读取硬盘中的数据,当任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求时,在无需等待该冗余子请求返回的情况下,即可以对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,实现了对出现慢IO情况的冗余子请求快速返回数据,解决偶尔出现慢IO的子请求无法快速返回数据的问题。当出现慢IO情况的子请求返回后,还可以回收该子请求,避免该子请求长时间返回数据后对主机读请求处理造成影响。
进一步,本发明实施例提供的请求处理方法在子请求出现慢IO的情况下,仍保留其对应的硬盘,这样当其恢复为可正常处理慢IO的硬盘时,可以利用该硬盘内的数据对其他慢盘进行RAID***降级读,降低双盘失效的风险。同时RAID***无需对硬盘的数据进行重构,保证整个RAID***的IO性能。
请参阅图2,其示出了本发明实施例提供的一种请求处理方法的另一种流程图,阐述了如何通过RAID***降级读返回数据的过程,可以包括以下步骤:
步骤201:接收主机发送的第一读请求后,生成RAID***的第二读请求,第二读请求用于从RAID***的硬盘中读取数据。
步骤202:为第二读请求分配的读页面,其中读页面用于存储第二读请求对应的数据。
步骤203:将第二读请求拆分成多个子请求。
步骤201至步骤203:与步骤101至步骤103相同,对此本发明实施例不再加以阐述。
步骤204:获取每个子请求相对于第二读请求的偏移值,并在每个子请求中记录各自的偏移值及第二读请求的地址。
例如第二读请求的起始地址为lba=0,长度为lenth=100,该第二读请求被拆分成两个子请求REQ1和REQ2,其中REQ1lba=0lenth=20,REQ2lba=20lenth=100,那么这两个子请求中,REQ1相对于第二读请求REQ0的偏移是0,REQ2相对于第二读请求REQ0的偏移是20。
由于请求拆分在RAID***的每一层都会进行,所以一个硬盘对应的子请求可能是第二读请求经过N次拆分后生成,所以需要在每次拆分时记录第二读请求的地址,这样在子请求超时的情况下还可以通过地二读请求的地址查找其对应的第二读请求,提高第二读请求的查找过程。
步骤205:若任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求,通过复制冗余子请求的字段信息,生成一个新子请求,其中新子请求用于读取冗余子请求对应的硬盘中的数据。
在本发明实施例中,RAID***包括一定时器,用于记录每个子请求的处理时间,该定时器可以添加在块设备层。当子请求的处理时间超过阈值时,RAID***的RAID层判定处理时间超过阈值的所述子请求出现慢IO情况。进一步当子请求具有冗余标识时,确定所述子请求为冗余子请求。冗余子请求的确定请参阅步骤104中的说明,对此不在阐述。
此外块设备层在接收到子请求后,如果检测到接收到的子请求具有冗余标记,则生成一个新子请求,该新子请求通过复制冗余子请求的所有字段生成。进一步该新子请求标注有“快速返回页面替换”标记以失败结果直接返回给RADI层,其中快速返回页面替换用于提示为第二读请求重新分配读页面。
步骤206:根据新子请求中的第二读请求的地址,查找到第二读请求,并为第二读请求重新分配读页面。
步骤207:根据新子请求对应的硬盘和其他硬盘之间的冗余关系,对其他硬盘相应位置处的数据进行校验计算,得到新子请求对应的数据,其中重新分配的读页面为每个子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除冗余子请求之外的子请求对应的硬盘。
RAID层收到失败结果返回的请求后,判断该请求是否有“快速返回页面替换”标记,如果有则根据请求中需要进行页面替换:跟据子请求直接查找到“原始读请求”并且申请新的第二读请求的地址,查找到第二读请求,并为第二读请求重新分配读页面,该重新分配的读页面为每个子请求又重新分配数据存储空间,该数据存储空间可以与之前分配的数据存储空间不同,采用重新分配的数据存储空间替换之前分配的数据存储空间,以避免冗余子请求经过长时间返回数据后占用之前为其分配的数据存储空间,使得主机无法确定应该读取哪个数据,对主机读数据造成影响,同时造成存储空间的浪费。
进一步,RAID层根据新子请求对应的硬盘和其他硬盘之间的冗余关系,对其他硬盘相应位置处的数据进行校验计算,得到新子请求对应的数据,完成RADI***降级读,从而不用等待超时IO的返回。
需要说明的一点是:每个子请求可能读取硬盘中某个位置处的数据,则在进行RADI***降级读是从其他硬盘中读取相同位置处的数据。在进行校验计算时,RAID层预先存储有硬盘之间的冗余关系,因此在接收到新子请求后,可以依据新子请求对应的硬盘,从预先存储的冗余关系中查找到与其具有冗余关系的其他硬盘。
此外,块设备层在检测到接收到的子请求具有冗余标记后,添加“后台回收”标记至冗余子请求中,并向SCSI层下发abort命令结束该冗余子请求。具有“后台回收”标记的冗余子请求返回至RAID层时,RAID判断是否标记“后台回收”标记,如果有则直接该冗余子请求,并回收读页面为冗余子请求分配的子页面,避免对主机读请求处理造成影响。
与上述方法实施例相对应,本发明实施例还提供一种请求处理设备,其结构示意图如图3所示,可以包括:接收单元11、分配单元12、拆分单元13和数据获取单元14,其中:
接收单元11,用于接收主机发送的第一读请求后,生成RAID***的第二读请求,第二读请求用于从RAID***的硬盘中读取数据。
可以理解的是:第一读请求表示主机需要从RAID***的各个硬盘中读取数据。当RAID***接收到该第一读请求后,生成用于从RAID***的硬盘中读取数据的第二读请求。
分配单元12,用于为第二读请求分配的读页面,其中读页面用于存储第二读请求对应的数据。即该读页面为每个硬盘分配独立的数据存储空间,当硬盘返回数据后,RAID***将其存储到对应的数据存储空间中。
拆分单元13,用于将第二读请求拆分成多个子请求。
当第二读请求在下发至硬盘的路径上,并拆分成多个子请求,其中所拆分的子请求个数取决于第二读请求所请求的数据范围。例如某个第二读请求所请求的数据范围为0-100,则在第二读请求下发过程中,RAID***的RAID层确定这一数据范围存储于哪些硬盘中,将这些硬盘的数量作为拆分成子请求的数量,拆分后的每个子请求分别用于读取对应硬盘中的数据。
具体的,请求拆分过程按照RAID***和LUN的具体属性进行,其和现有请求拆分相同,对此本发明实施例不再阐述请求拆分的过程。并且子请求与硬盘的映射关系遵循RAID***中各个RAID级别定义的映射关系和计算公式,与现有子请求和硬盘映射相同,对此本实施例不再详细阐述。
数据获取单元14,用于任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求,则对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,其中冗余子请求为可通过RAID***降级读返回数据的子请求。
其中,数据获取单元14具体用于:判定处理时间超过阈值的子请求出现慢IO情况。进一步当子请求具有冗余标识时,数据获取单元14确定子请求为冗余子请求。
RAID***降级读是通过读取RAID***中除该冗余子请求对应硬盘之外的其他硬盘中数据,然后通过RAID算法计算出该冗余子请求需要读取的数据。其中所读取其他硬盘中的数据与该冗余子请求所请求的硬盘中的数据具有相同存储位置和长度。
例如:RAID***级别为RAID5时,所有子请求对应的硬盘分别为disk1、disk2、disk3,此时要读取disk1上存储于位置1长度为100的数据,如果disk1对应的子请求为冗余子请求,则可以首先读取disk2和disk3上存储于位置1长度为100的数据,再将这两个盘上读取的数据进行奇偶校验,就可以计算出disk1上存储于位置1长度为100的数据。
应用上述技术方案,当任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求时,在无需等待该冗余子请求返回的情况下,即可以对冗余子请求进行RAID***降级读,返回冗余子请求对应的数据,实现了对出现慢IO情况的冗余子请求快速返回数据,解决偶尔出现慢IO的子请求无法快速返回数据的问题。当出现慢IO情况的子请求返回后,还可以回收该子请求,避免该子请求长时间返回数据后对主机读请求处理造成影响。
进一步,在子请求出现慢IO的情况下,仍保留其对应的硬盘,这样当其恢复为可正常处理慢IO的硬盘时,可以利用该硬盘内的数据对其他慢盘进行RAID***降级读,降低双盘失效的风险。同时RAID***无需对硬盘的数据进行重构,保证整个RAID***的IO性能。
在图3基础上,本发明实施例提供的请求处理设备还可以进一步包括:获取单元15,如图4所示。其中获取单元15,用于获取每个子请求相对于第二读请求的偏移值,并在每个子请求中记录各自的偏移值及第二读请求的地址。
由于请求拆分在RAID***的每一层都会进行,所以一个硬盘对应的子请求可能是第二读请求经过N次拆分后生成,所以需要在每次拆分时获取单元15将第二读请求的地址记录在子请求中,这样在子请求超时的情况下还可以通过地二读请求的地址查找其对应的第二读请求,提高第二读请求的查找过程。
在上述图3和图4所示的请求处理设备中,数据获取单元14的结构示意图可以参阅图5所示,可以包括:请求生成子单元141、查找子单元142和数据获得子单元143。其中,
请求生成子单元141,用于当任意一个子请求出现慢IO情况,且出现慢IO情况的子请求为冗余子请求,通过复制冗余子请求的字段信息,生成一个新子请求,其中新子请求用于读取冗余子请求对应的硬盘中的数据。
在本发明实施例中,请求生成子单元141可以通过判断子请求的处理时间来确定子请求是否出现慢IO情况,当子请求的处理时间超过阈值时,请求生成子单元141判定处理时间超过阈值的子请求出现慢IO情况。进一步当子请求具有冗余标识时,请求生成子单元141确定子请求为冗余子请求。
查找子单元142,用于根据新子请求中的第二读请求的地址,查找到第二读请求,并为第二读请求重新分配读页面。该重新分配的读页面为每个子请求又重新分配数据存储空间,该数据存储空间可以与之前分配的数据存储空间不同,以避免冗余子请求经过长时间返回数据后占用之前为其分配的数据存储空间,使得主机无法确定应该读取哪个数据,对主机读数据造成影响,同时造成存储空间的浪费。
数据获得子单元143,用于根据新子请求对应的硬盘和其他硬盘之间的冗余关系,对其他硬盘相应位置处的数据进行校验计算,得到新子请求对应的数据,其中读页面为每个子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
需要说明的一点是:每个子请求可能读取硬盘中某个位置处的数据,则在进行RADI***降级读是从其他硬盘中读取相同位置处的数据。例如:子请求1读取硬盘disk1位置2中的数据,如果子请求1为出现慢IO情况的冗余子请求,则与其具有对应关系的disk2和disk3会读取各自位置2中的数据进行奇偶校验,计算出disk1上存储于位置2中的数据,完成RAID***降级读的过程。
此外,本发明实施例提供的请求处理设备还可以进一步包括:回收单元,用于释放冗余子请求,并回收读页面为冗余子请求分配的子页面,以避免冗余子请求在重新返回数据至子页面时,导致主机无法确定子页面中存储的数据对应哪个读请求,对主机读请求造成影响。
本发明实施例还提供另一种请求处理设备,其结构示意图可以参阅图6所示,可以包括:数据接口21(图中未画出)、存储器22和控制器23。
其中,数据接口21通过数据连接装置与主机24的数据接口相连,如数据接口21通过网线构成通信链路与主机24的数据接口相连,以接收主机24发送的第一读请求,并将第一读请求通过内部通道发送至控制器23。
控制器23在接收到第一读请求后,生成RAID***的第二读请求,并在第二读请求下发过程中拆分成多个子请求。当任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求时,对所述冗余子请求进行RAID***降级读,返回所述冗余子请求对应的数据,冗余子请求是指可通过RAID***降级读返回数据的子请求。。
在本发明实施例中,其中第二读请求用于从RAID***的硬盘中读取数据,第二读请求所拆分的子请求个数取决于所述第二读请求所请求的数据范围,每个所述子请求用于读取对应硬盘中的数据。
当控制器23生成第二读请求后,在存储器22内为所述第二读请求分配的读页面,其中读页面用于存储第二读请求对应的数据,即拆分成的每个子请求返回的数据全部存储于读页面中。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种请求处理方法及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种请求处理方法,其特征在于,包括:
接收主机发送的第一读请求后,生成独立磁盘冗余阵列***的第二读请求,所述第二读请求用于从所述独立磁盘冗余阵列***的硬盘中读取数据;
为所述第二读请求分配的读页面,其中所述读页面用于存储所述第二读请求对应的数据;
将所述第二读请求拆分成多个子请求,其中所拆分的子请求个数取决于所述第二读请求所请求的数据范围,每个所述子请求用于读取对应硬盘中的数据;
若任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求,则对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,其中所述冗余子请求为可通过独立磁盘冗余阵列***降级读返回数据的子请求;
其中,慢IO是指慢输入/输出。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取每个所述子请求相对于所述第二读请求的偏移值,并在每个所述子请求中记录各自的偏移值及所述第二读请求的地址。
3.根据权利要求2所述的方法,其特征在于,对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,包括:
通过复制所述冗余子请求的字段信息,生成一个新子请求,其中所述新子请求用于读取所述冗余子请求对应的硬盘中的数据;
根据所述新子请求中所述第二读请求的地址,查找到所述第二读请求,并为所述第二读请求重新分配读页面;
根据所述新子请求对应的硬盘和其他硬盘之间的冗余关系,对所述其他硬盘相应位置处的数据进行校验计算,得到所述新子请求对应的数据,其中重新分配的读页面为每个所述子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
4.根据权利要求1至3任意一项所述的方法,其特征在于,判定处理时间超过阈值的所述子请求出现慢IO情况。
5.根据权利要求4所述的方法,其特征在于,确定具有冗余标识的所述子请求为冗余子请求。
6.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
释放所述冗余子请求,并回收所述读页面为所述冗余子请求分配的子页面。
7.一种请求处理设备,其特征在于,包括:
接收单元,用于接收主机发送的第一读请求后,生成独立磁盘冗余阵列***的第二读请求,所述第二读请求用于从所述独立磁盘冗余阵列***的硬盘中读取数据;
分配单元,用于为所述第二读请求分配的读页面,其中所述读页面用于存储所述第二读请求对应的数据;
拆分单元,用于将所述第二读请求拆分成多个子请求,其中所拆分的子请求个数取决于所述第二读请求所请求的数据范围,每个所述子请求用于读取对应硬盘中的数据;
数据获取单元,用于若任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求,对所述冗余子请求进行独立磁盘冗余阵列***降级读,返回所述冗余子请求对应的数据,其中所述冗余子请求为可通过独立磁盘冗余阵列***降级读返回数据的子请求;
其中,慢IO是指慢输入/输出。
8.根据权利要求7所述的设备,其特征在于,所述设备还包括:获取单元,用于获取每个所述子请求相对于所述第二读请求的偏移值,并在每个所述子请求中记录各自的偏移值及所述第二读请求的地址。
9.根据权利要求8所述的设备,其特征在于,所述数据获取单元,包括:
请求生成子单元,用于当任意一个所述子请求出现慢IO情况,且出现慢IO情况的所述子请求为冗余子请求时,通过复制所述冗余子请求的字段信息,生成一个新子请求,其中所述新子请求用于读取所述冗余子请求对应的硬盘中的数据;
查找子单元,用于根据所述新子请求中的所述第二读请求的地址,查找到所述第二读请求,并为所述第二读请求重新分配读页面;
数据获得子单元,用于根据所述新子请求对应的硬盘和其他硬盘之间的冗余关系,对所述其他硬盘相应位置处的数据进行校验计算,得到所述新子请求对应的数据,其中重新分配的读页面为每个所述子请求分配存储数据的子页面,其他硬盘为拆分得到的所有子请求中除所述冗余子请求之外的子请求对应的硬盘。
10.根据权利要求7至9任意一项所述的设备,其特征在于,所述数据获取单元具体用于:判定处理时间超过阈值的所述子请求出现慢IO情况。
11.根据权利要求10所述的设备,其特征在于,所述数据获取单元进一步具体用于:确定具有冗余标识的所述子请求为冗余子请求。
12.根据权利要求7至9任意一项所述的设备,其特征在于,所述设备还包括:回收单元,用于释放所述冗余子请求,并回收所述读页面为所述冗余子请求分配的子页面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310687352.4A CN103699340B (zh) | 2013-12-16 | 2013-12-16 | 一种请求处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310687352.4A CN103699340B (zh) | 2013-12-16 | 2013-12-16 | 一种请求处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699340A CN103699340A (zh) | 2014-04-02 |
CN103699340B true CN103699340B (zh) | 2016-12-07 |
Family
ID=50360881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310687352.4A Active CN103699340B (zh) | 2013-12-16 | 2013-12-16 | 一种请求处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699340B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534242B (zh) * | 2015-09-14 | 2019-11-29 | 阿里巴巴集团控股有限公司 | 一种分布式***中请求的处理方法以及装置 |
CN106933495B (zh) * | 2015-12-30 | 2019-07-23 | 华为技术有限公司 | 一种数据读取方法、raid控制器及存储设备 |
CN110727401B (zh) * | 2019-09-09 | 2021-03-02 | 无锡江南计算技术研究所 | 一种访存*** |
CN110896415B (zh) * | 2019-11-22 | 2022-05-24 | 浪潮电子信息产业股份有限公司 | 一种数据readdir方法、***、设备及计算机介质 |
CN116661708B (zh) * | 2023-07-31 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 基于硬盘阵列的读写任务的处理方法和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055557A (zh) * | 2006-04-13 | 2007-10-17 | 国际商业机器公司 | 数据处理的***和方法 |
CN101657802A (zh) * | 2006-12-06 | 2010-02-24 | 弗森多***公司(dba弗森-艾奥) | 用于远程直接存储器存取固态存储设备的装置、***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171044B2 (en) * | 2010-02-16 | 2015-10-27 | Oracle International Corporation | Method and system for parallelizing database requests |
US9430291B2 (en) * | 2010-12-30 | 2016-08-30 | International Business Machines Corporation | Distributed topology enabler for identity manager |
-
2013
- 2013-12-16 CN CN201310687352.4A patent/CN103699340B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055557A (zh) * | 2006-04-13 | 2007-10-17 | 国际商业机器公司 | 数据处理的***和方法 |
CN101657802A (zh) * | 2006-12-06 | 2010-02-24 | 弗森多***公司(dba弗森-艾奥) | 用于远程直接存储器存取固态存储设备的装置、***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103699340A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107250975B (zh) | 数据存储***和数据存储方法 | |
US8239584B1 (en) | Techniques for automated storage management | |
CN103699340B (zh) | 一种请求处理方法及设备 | |
WO2017092480A1 (zh) | 一种数据迁移的方法及装置 | |
CN109542342B (zh) | 元数据管理与数据重构方法、设备及存储介质 | |
WO2020236353A1 (en) | Memory disaggregation for compute nodes | |
US9612758B1 (en) | Performing a pre-warm-up procedure via intelligently forecasting as to when a host computer will access certain host data | |
EP2180407A2 (en) | Fast data recovery from HDD failure | |
US8495295B2 (en) | Mass storage system and method of operating thereof | |
CN103577115B (zh) | 数据的排布处理方法、装置和服务器 | |
CN104583930B (zh) | 数据迁移的方法、控制器和数据迁移装置 | |
US9405583B2 (en) | Resource provisioning based on logical profiles and piecewise objective functions | |
US9569268B2 (en) | Resource provisioning based on logical profiles and objective functions | |
CN107273046B (zh) | 一种基于固态盘阵列的数据处理方法及*** | |
CN102981927A (zh) | 分布式独立冗余磁盘阵列存储方法及分布式集群存储*** | |
CN108733326B (zh) | 一种磁盘处理方法及装置 | |
US10324794B2 (en) | Method for storage management and storage device | |
CN102226892A (zh) | 一种磁盘容错处理方法及设备 | |
CN114442937B (zh) | 文件缓存方法、装置、计算机设备及存储介质 | |
CN111897486A (zh) | 一种基于软件定义的智能统一存储*** | |
US11461250B2 (en) | Tuning data storage equipment based on comparing observed I/O statistics with expected I/O statistics which are defined by operating settings that control operation | |
Thomasian et al. | Mirrored disk organization reliability analysis | |
US20210216403A1 (en) | Dynamically adjusting redundancy levels of storage stripes | |
US20130019122A1 (en) | Storage device and alternative storage medium selection method | |
Wu et al. | {IDO}: Intelligent Data Outsourcing with Improved {RAID} Reconstruction Performance in {Large-Scale} Data Centers |
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 |