SCSI驱动侧及I/O请求的控制方法与流程

文档序号:12011709阅读:255来源:国知局
SCSI驱动侧及I/O请求的控制方法与流程
本发明涉及数据访问及存储技术领域,特别是涉及一种SCSI驱动侧及I/O请求的控制方法。

背景技术:
当前,SAN(StorageAreaNetwork,存储区域网络)存储系统一般包括多个磁盘设备提供的物理块(PhysicalBlocks,PB),这些物理块通过RAID(RedundantArraysofInexpensiveDisks,磁盘冗余阵列)技术等组合成存储资源池,并且将存储资源池分配为多个逻辑空间(LogicalUnitNumber,LUN),每一逻辑空间包含一个或多个逻辑块(LogicalBlocks,LB)。在对逻辑空间的数据进行访问时,主机根据访问需求生成一个或多个I/O请求,并将其发送至SCSI(SmallComputerSystemInterface,小型计算机系统接口)驱动侧。然后SCSI驱动侧生成驱动命令并将该驱动命令发送至SAN存储系统,SAN存储系统根据接收到的驱动命令对逻辑空间的数据进行读写。现有技术中,为了提升I/O请求的访问性能,SCSI驱动侧通常会对多个I/O请求进行合并,以减少其在传输通道上的队列占用和交互。然而,现有技术仅能对分布于同一逻辑空间的多个I/O请求进行合并,对提升I/O请求的访问性能的作用并不显著。

技术实现要素:
鉴于此,本发明提供一种SCSI驱动侧及I/O请求的控制方法,以显著提升I/O请求的访问性能。第一方面提供一种I/O请求的控制方法,用于对SAN存储系统进行数据访问,该控制方法包括:接收多个I/O请求,并根据I/O请求中的逻辑块地址确定对应的物理块地址,其中多个I/O请求为对多个逻辑空间的逻辑块进行数据访问的请求;根据物理块地址的连续性,对多个I/O请求的合并;将合并后的I/O请求聚合为一个SCSI命令,发送至SAN存储系统。结合第一方面的实现方式,在第一种可能的实现方式中,根据I/O请求中的逻辑块地址确定对应的物理块地址的步骤包括:发送查询指令至SAN存储系统,并接收SAN存储系统反馈的逻辑块地址与物理块地址的映射表;根据映射表,查询得到多个I/O请求中的逻辑块地址对应的物理块地址。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,逻辑块地址和物理块地址具有相同的字节块大小。结合第一方面的实现方式,在第三种可能的实现方式中,根据物理块地址的连续性,对多个I/O请求进行合并的步骤包括:选取查询得到的物理块地址中连续的物理块地址,并将连续的物理块地址对应的I/O请求进行第一次合并;选取查询得到的物理块地址中不连续的物理块地址,并对不连续的物理块地址对应的I/O请求进行排序;将排序后的I/O请求与第一次合并后的I/O请求进行第二次合并。结合第一方面的实现方式,在第四种可能的实现方式中,对多个I/O请求进行合并的步骤之前包括:预先定义合并区段;对所述多个I/O请求进行合并的步骤包括:对位于同一合并区段之内的物理块地址对应的I/O请求进行合并,以形成第一I/O请求;对位于同一合并区段之外的物理块地址对应的I/O请求不进行合并,以形成第二I/O请求。结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,将合并后的I/O请求聚合为一个SCSI命令,发送至SAN存储系统的步骤包括:将第一I/O请求和第二I/O请求聚合于一个SCSI命令,并将SCSI命令发送至SAN存储系统。第二方面提供一种SCSI驱动侧,包括:第一接收单元,用于接收多个I/O请求,并接收SAN存储系统根据I/O请求中的逻辑块地址确定的对应的物理块地址,其中多个I/O请求为对SAN存储系统中的多个逻辑空间的逻辑块进行数据访问的请求;第一处理单元,用于根据第一接收单元接收的物理块地址的连续性,对多个I/O请求进行合并,并将合并后的I/O请求聚合为一个SCSI命令;第一发送单元,用于将SCSI命令发送至SAN存储系统。结合第二方面的实现方式,在第一种可能的实现方式中,第一处理单元用于根据第一接收单元接收的多个I/O请求生成查询指令,并控制第一发送单元将查询指令发送至SAN存储系统,第一接收单元接收SAN存储系统反馈的逻辑块地址与物理块地址的映射表,第一处理单元根据映射表查询得到多个I/O请求中的逻辑块地址对应的物理块地址。结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,逻辑块地址和物理块地址具有相同的字节块大小。结合第二方面的实现方式,在第三种可能的实现方式中,第一处理单元还用于选取查询得到的物理块地址中连续的物理块地址,并将连续的物理块地址对应的I/O请求进行第一次合并,以及选取查询得到的物理块地址中不连续的物理块地址,并对不连续的物理块地址对应的I/O请求进行排序,以将排序后的I/O请求与第一次合并后的I/O请求进行第二次合并。结合第二方面的实现方式,在第四种可能的实现方式中,第一处理单元还用于预先定义合并区段,并对位于同一合并区段之内的物理块地址对应的I/O请求进行合并,以形成第一I/O请求,以及对位于同一合并区段之外的物理块地址对应的I/O请求不进行合并,以形成第二I/O请求。结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,第一处理单元还用于将第一I/O请求和第二I/O请求聚合于一个SCSI命令,并控制第一发送单元将SCSI命令发送至SAN存储系统。本发明的有益效果是:区别于现有技术的情况,本发明通过获取多个I/O请求的逻辑块地址在SAN存储系统中对应的物理块地址,并根据物理块地址的连续性将连续的物理块地址对应的I/O请求进行合并,从而能够完成分布于多个逻辑空间的I/O请求的合并,减少I/O请求在传输通道上的队列占用和交互,并显著提升I/O请求的访问性能。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,,还可以根据这些附图获得其他的附图。其中:图1是本发明第一实施例的I/O请求的控制方法的流程图;图2是本发明SAN存储系统优选实施例的原理框图;图3是本发明第一实施例的I/O请求的控制系统的原理框图;图4是本发明第四实施例的I/O请求的控制系统的原理框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。本发明提供一种I/O请求的控制方法,请参见图1所示的本发明第一实施例的控制方法的流程图。本实施例的I/O请求的控制方法用于对图2所示的SAN存储系统210中存储资源池240中的多个逻辑空间LUN0、LUN1、…、LUNx进行数据访问,即对每一逻辑空间LUN0、LUN1、…、LUNx包括的多个逻辑块LB0、LB1、…LBa、…、LBn进行数据访问。上述对逻辑空间LUN0、LUN1、…、LUNx进行的数据访问,最终实体表现为对物理块PB0、PB1、…、PBn存储的数据进行访问。需要说明的是,本发明全文所提及的数据访问指的是对数据的读取、调用以及写入等其他可对存储数据进行的任何操作。如图1所示,本实施例中所揭示的I/O请求的控制方法包括:步骤S11:SCSI驱动侧接收多个I/O请求,并根据I/O请求中的逻辑块地址从SAN存储系统获取对应的物理块地址,其中多个I/O请求为对多个逻辑空间中的逻辑块进行数据访问的请求。参阅图2,在需要对不同逻辑空间中的逻辑块进行数据访问时,主机的应用会相应的生成多个I/O请求并发送至SCSI驱动侧。例如,在对逻辑空间LUN0的逻辑块LB2、逻辑空间LUN2的逻辑块LB7、LB50以及逻辑空间LUN9的逻辑块LB2进行数据访问时,SCSI驱动侧对应接收到的多个I/O请求依次为IO-1(LUN0,LBA2,LEN3)、IO-2(LUN2,LBA7,LEN1)、IO-3(LUN9,LBA2,LEN2)、IO-4(LUN2,LBA50,LEN2)。SCSI驱动侧在接收完成上述I/O请求后,即据此生成一个查询指令并发送至SAN存储系统。其中,该查询指令为一种SCSI命令,其以字节流的形式通过总线发送至SAN存储系统,本实施例优选该SCSI命令采用如下表1所示的CDB(CommandDescriptorBlocks,命令描述块)格式,相应地,该命令的参数格式如下表2所示:表1表2SAN存储系统在接收到该查询指令后对其特定参数进行解析,并在系统中获取IO-1、IO-2、IO-3和IO-4需要访问的逻辑块的逻辑块地址与其对应的物理块的物理块地址的映射关系,具体如下表3所示:I/O请求物理块地址IO-1(LUN0,LBA2,LEN3)(PBA10,LEN3)IO-2(LUN2,LBA7,LEN1)(PBA2,LEN1)IO-3(LUN9,LBA2,LEN2)(PBA13,LEN2)IO-4(LUN2,LBA50,LEN2)(PBA100,LEN0)表3SAN存储系统将映射关系发送给SCSI驱动侧,具体表现为通过如下表4所示的映射描述对上表1所示的SCSI命令的响应。表4在本实施例中,SAN存储系统获取的映射关系为多个I/O请求中需要访问的逻辑块的逻辑块地址与其对应的物理块的物理块地址的一一对应关系。进一步地,为便于查找,本实施例优选SCSI驱动侧首先将接收到的映射关系以映射表的形式予以显示,而后在映射表中查询接收到的多个I/O请求的逻辑块对应的物理块。在其他实施例中,SAN存储系统还可以获取全部的逻辑块地址与物理块地址的映射关系,并发送给SCSI驱动侧,以使SCSI驱动侧根据映射关系查找所要访问的逻辑块地址对应的物理块地址。或者,SAN存储系统可直接将多个I/O请求中需要访问的逻辑块地址对应的物理块地址反馈给SCSI驱动侧。需要说明的是,本发明全文提及的映射关系具体表现为逻辑块的逻辑块地址(LogicalBlockAddress,LBA)与物理块的物理块地址(PhysicalBlockAddress,PBA)的一一对应关系,并且采用上述表1所示的SCSI命令时,对逻辑块的逻辑块地址和物理块的物理块地址的描述采用相同大小的字节块(Block)大小。步骤S12:SCSI驱动侧根据物理块地址的连续性,将多个物理块地址对应的I/O请求进行合并。参阅上表3可知,获取的IO-1、IO-2、IO-3和IO-4需要访问的逻辑块对应的物理块的物理地址为(PBA10,LEN3)、(PBA2,LEN1)、(PBA13,LEN2)、(PBA100,LEN2)。然后,选取获取的四个物理块中地址连续的物理块。基于现有技术的连续性的算法,LEN表示物理块的长度(length),可知在获取的四个物理块中,连续的物理块地址为(PBA10,LEN3)和(PBA13,LEN2)。将连续的物理块地址对应的I/O请求进行第一次合并,即将IO-1和IO-3进行合并,合并后为IO-1-3。选取其中不连续的物理块地址,即(PBA2,LEN1)与(PBA10,LEN3)和(PBA13,LEN2)是不连续的。对不连续的物理块地址进行排序,而后将排序后的物理块地址对应的I/O请求与第一次合并后的I/O请求进行第二次合并,即将IO-1-3和IO-2进行合并,合并后为IO-2-1-3。步骤S13:SCSI驱动侧将合并后的I/O请求聚合为一个SCSI命令,发送至SAN存储系统。SCSI驱动侧将合并后的I/O请求,即IO-2-1-3,发送至SAN存储系统。其中,IO-2-1-3是一种地址不连续的聚合I/O请求,由于其聚合了不同逻辑空间的I/O请求,因此需要一种聚合SCSI命令将其发送至SAN存储系统,该聚合SCSI命令可采用下表5所示的CDB格式:表5SAN存储系统在接收到该聚合SCSI命令后,通过处理得到合并后的I/O请求,并据此完成对数据访问。根据数据访问的具体操作,需要构造的访问命令的格式不同,例如对逻辑空间的数据进行写入时,需构造Data-OutBuffer命令格式;对逻辑空间的数据进行读取时,需构造Data-InBuffer命令格式。在采用上述读写命令格式对数据进行访问时,还需要对读写流程进行区分,具体而言,在进行写入流程时采用如下表6所示,在进行读取流程时采用如下表7所示。其中,上述Data-OutBuffer命令格式和Data-InBuffer命令格式的参数格式如下表8所示。表6表7表8基于上述,可知本实施例通过获取多个I/O请求的逻辑块地址在SAN存储系统中对应的物理块地址,并根据物理块地址的连续性将对应的I/O请求进行合并,从而完成分布于多个逻辑空间的多个I/O请求的合并,减少I/O请求在传输通道上的队列占用以及交互,进而显著提升I/O请求的访问性能。本发明还提供第二实施例的I/O请求的控制方法,其在第一实施例所揭示的控制方法的基础上进行详细描述。本实施例与图1所示第一实施例的不同之处在于:在步骤S12中,对于不在同一合并区段内的多个I/O请求不进行合并。本实施例中,合并区段是对SAN存储系统中的多个逻辑空间的逻辑块(LBA)进行区域的划分,以避免当各个LBA在传输通道上相隔较大时即使进行合并也不能显著的减少I/O请求在传输通道上的队列占用,对I/O请求的访问性能也并没有显著的提升。对于合并区段中LBA的字节块的划分大小,本领域技术人员可根据实际需要设定,例如预定义合并区段划分LBA为30个字节块,则LBA50和LBA2、LBA7、LBA2不在一个合并区段,也就是说IO-4(LUN2,LBA50,LEN2)和上述三个I/O请求,即IO-1(LUN0,LBA2,LEN3)、IO-2(LUN2,LBA7,LEN1)和IO-3(LUN9,LBA2,LEN2),不在一个合并区段,则IO-4不能与IO-1、IO-2、IO-3进行合并。在对位于同一合并区段之内的物理块地址对应的I/O请求进行合并,以形成第一I/O请求,即IO-2-1-3。对位于同一合并区段之外的物理块地址对应的I/O请求不进行合并,以形成第二I/O请求,即IO-4(LUN2,LBA50,LEN2)。在步骤S13中,SCSI驱动侧将第一I/O请求和第二I/O请求聚合于一个SCSI命令,并将该SCSI命令发送至SAN存储系统。SAN存储系统解析该SCSI命令以对第一I/O请求和第二I/O请求分别进行响应。本实施例能够对位于不同合并区段的多个I/O请求进行操作,并将不能进行合并的I/O请求单独与合并后的I/O请求聚合在同一SCSI命令中发送给SAN存储系统,从而最大程度的完成分布于多个逻辑空间的多个I/O请求的合并,减少I/O请求的传输通道上的队列占用以及交互,进而显著提升I/O请求的访问性能。需要说明的是,本实施例与上述第一实施例所揭示的上述IO请求的逻辑块、逻辑块地址以及对应的物理块、物理块地址,以及上表中相应的具体数值,仅供说明举例。在其他实施例中,本领域技术人员可以根据实际需要进行其他设置,只需满足多个逻辑块的逻辑块地址与多个物理块的物理块地址的一一对应关系即可。本发明还提供了第一实施例的一种IO请求的控制系统,如图3所示,本实施例基于图2所示的SAN存储系统210以及SCSI驱动侧220、应用230。本实施例所揭示的SCSI驱动侧220包括第一接收单元221、第一处理单元222和第一发送单元223,SAN存储系统210包括第二接收单元211、第二处理单元212和第二发送单元213。第一接收单元221用于接收应用230形成的多个I/O请求,该多个I/O请求为对SAN存储系统210中的多个逻辑块进行数据访问的请求。第一处理单元222用于根据第一接收单元221接收到的多个I/O请求生成查询指令,并控制第一发送单元223将查询指令发送至SAN存储系统210的第二接收单元211。第二处理单元212用于根据查询指令获取SAN存储系统210中逻辑块地址与物理块地址的映射关系,并控制第二发送单元213将映射关系发送至SCSI驱动侧220的第一接收单元221。第一处理单元222用于根据物理块地址的连续性,将连续的多个物理块地址对应的I/O请求进行合并。第一发送单元223用于将第一处理单元222合并后的I/O请求发送至SAN存储系统210的第二接收单元211。第二处理单元212根据合并后的I/O请求完成对SAN存储系统210中的数据访问。本发明还提供了第二实施例的IO请求的控制系统,其在第一实施例的基础上进行详细描述。本实施例与上述第一实施例的控制系统的不同之处在于:第一接收单元221接收到的多个I/O请求并不能直接全部合并,而需要先进行排序。具体而言,第一处理单元222还用于选取多个物理块地址中连续的物理块地址,并将连续的物理块地址对应的I/O请求进行第一次合并。同时选取物理块地址中不连续的物理块地址,并对不连续的物理块地址进行排序,将排序后的物理块地址对应的I/O请求与第一次合并后的I/O请求进行第二次合并。本发明还提供了第三实施例的IO请求的控制系统,其在图3所示的第一实施例的基础上进行详细描述。本实施例与上述第一实施例的控制系统的不同之处在于:第一接收单元221接收到的多个I/O请求位于不同的预先定义的合并区段,该合并区段可由第一处理单元222预先定义。第一处理单元222对位于同一合并区段之内的物理块地址对应的I/O请求进行合并,以形成第一I/O请求。同时对位于同一合并区段之外的物理块地址对应的I/O请求不进行合并,以形成第二I/O请求。进一步地,第一处理单元222还将第一I/O请求和第二I/O请求聚合于一个SCSI命令,并控制第一发送单元223将该SCSI命令发送至SAN存储系统210的第二接收单元211,以使第二处理单元212解析该SCSI命令,并根据解析得到的第一I/O请求和第二I/O请求完成对SAN存储系统210中的数据访问。本发明的上述几个实施例的SAN存储系统210和SCSI驱动侧220,对应的基于上述实施例的I/O请求的控制方法,因此可具有相同的技术效果。并且应该理解到,所揭露的SAN存储系统210和SCSI驱动侧220的描述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统中,或一些特征可以忽略,或不执行。另外,模块相互之间的耦合或通信连接可以是通过一些接口,也可以是电性或其它的形式。上述各个功能模块作为SAN存储系统210和SCSI驱动侧220的组成部分,可以是或者也可以不是物理框,既可以位于一个地方,也可以分布到多个网络单元上,既可以采用硬件的形式实现,也可以采用软件功能框的形式实现。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本发明还提供第四实施例的一种IO请求的控制系统,其在图3所示的第一实施例中所揭示的IO请求的控制系统的基础上进行详细描述。如图4所示,本实施例中所揭示的SCSI驱动侧220包括第一接收器321、第一处理器322和第一发送器323,SAN存储系统210包括第二接收器311、第二处理器312和第二发送器313。第一接收器321用于接收应用230形成的多个I/O请求,该多个I/O请求为对SAN存储系统210中的多个逻辑块进行数据访问的请求。第一处理器322用于根据第一接收器321接收到的多个I/O请求生成查询指令,并控制第一发送器323将查询指令发送至SAN存储系统210的第二接收器311。第二处理器312用于根据查询指令获取SAN存储系统210中逻辑块地址与物理块地址的映射关系,并控制第二发送器313将映射关系发送至SCSI驱动侧220的第一接收器321。第一处理器322用于根据物理块地址的连续性,将连续的物理块地址对应的I/O请求进行合并。第一发送器323用于将第一处理器322合并后的I/O请求发送至SAN存储系统210的第二接收器311。第二处理器312根据合并后的I/O请求完成对SAN存储系统210中数据的访问。综上所述,本发明通过获取多个I/O请求中的逻辑块地址在SAN存储系统中对应的物理块地址,并将连续的物理块地址对应的I/O请求进行合并,从而能够完成分布于多个逻辑空间的I/O请求的合并,减少I/O请求的传输通道上的交互,并显著提升I/O请求的访问性能。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1