一种I/O请求处理方法及设备与流程

文档序号:14120275阅读:526来源:国知局
一种I/O请求处理方法及设备与流程

本发明涉及储存技术领域,尤其涉及一种i/o请求处理方法及设备。



背景技术:

串行连接小型计算机系统接口(serialattachedscsi,sas)标准是使用sas串行连接通讯的小型计算机系统接口(smallcomputersystemsinterface,scsi)设备之间交换信息的方式。在基于sas标准的存储系统中,出于提高带宽利用率的考虑,根据各物理通道(physicallayer,phy)的忙碌程度,选择空闲的phy传输i/o,使得大量的phy处于忙碌的状态,从而提高了带宽利用率。

但上述技术至少存在如下技术问题:

单纯根据各phy的忙碌程度为i/o分配phy,这样虽然提高了带宽利用率,但在io访问不同类型的存储设备时,由于不同类型的存储设备对io的响应时间不同,例如,固态存储设备(solidstaticstorage,ssd)对io的响应时间会短一些,而机械硬盘(harddiskdrive,hdd)对io的响应时间会长一些,而根据phy的忙闲程度为io选择phy时,在同一phy中,访问响应时间快的存储设备的io需要等到响应时间慢的存储设备的io执行完成之后,才能执行,造成存储系统的每秒处理i/o的数量(i/opersecond,i/ops)较低。



技术实现要素:

本发明提供一种i/o请求处理方法及设备,可以根据i/o请求所访问存储器的类型选择传输所述i/o请求的phy。

本发明第一方面提供一种输入输出i/o请求处理方法。所述方法应用于存储系统中。所述存储系统包括控制器和至少两个不同类型的存储器,所述至少一个存储器通过端口与所述控制器进行连接,所述端口包括多个物理层通道phy,所述方法由所述控制器执行。在所述控制器接收i/o请求时,根据所述i/o请求中携带的地址信息确定所述i/o请求所访问的存储器的类型,然后根据所述存储器的类型选择传输所述io请求的phy,其中,每种类型的存储器设置有至少一个phy,最后通过选择的所述phy将所述i/o发送给所述存储器。

通过为每种类型的存储器设置不同的phy,使访问不同类型存储器的io请求可以通过不同的phy来传输,即使访问响应快的存储器的i/o请求不必等到访问响应慢的存储器的i/o请求处理完成后才被处理,从而提高了存储器整体的i/ops性能。

在本发明第一方面的第一种可能的实现的方式中,在根据存储器的类型确定传输所述io请求的phy时,如果所确定的存储器的类型对应的phy的数量大于1时,则所述控制器根据所述存储器的类型对应的phy的忙闲程度选择传输所述i/o请求的phy。

如此,在一种类型的存储器对应多个phy时,则可以进一步根据所述多个phy的忙闲程度选择传输i/o请求的phy。如此,可进一步提高存储阵列的iops。

在第一方面的第二种可能的实现的方式中,为每种类型的存储器设置的至少一个phy的数量是固定不变的。

在第一方面的第三种可能的实现的方式中,所述为每种类型的存储器所设置的至少一个phy是周期性设置的,在当前统计周期结束时,设置当前周期的下一个周期每种类型存储器对应的phy,设置方法包括:在当前统计周期内,统计访问每种类型存储器的i/o请求的数量;在当前统计周期结束时,根据所统计的访问每种类型存储器的i/o请求的数量为每种类型存储器在当前统计周期的下一个统计周期设置所述至少一个phy。

如此,可以每隔一个周期,根据上个周期每种类型的ssd处理的io请求的数量,及存储器的本身的性能重新设置每种类型的存储器对应的phy的数量,从而提升了为每种类型的存储器设置的phy的准确率,进一步提高了存储系统的iops。

在第一方面的第四种实现方式中,所述根据所统计的访问每种类型存储器的i/o请求的数量为每种类型存储器在当前统计周期的下一个统计周期设置所述至少一个phy,具体包括:

在当前统计周期内,统计访问每种类型存储器的i/o请求的数量,即iocnt(devtype);

根据所统计的访问每种类型存储器的i/o请求的数量及每种类型的存储器的影响因子(a(devtype))计算每种类型存储器在分配phy的时候所占的比例per(devtype)=iocnt(devtype)*a(devtype)/sum(iocnt(devtype)*a(devtype)),其中sum(iocnt(devtype)*a(devtype))表示每种类型存储器的i/o请求的数量乘以每种类型的存储器的影响因子后将得到的每种类型的存储器的计算结果相加;

根据每种类型存储器在分配phy的时候所占的比例per(devtype)及存储器的总的phy的数量phy(sum),确定为每种类型的存储器设置的至少一个phy的数量:phy(devtype)=per(devtype)×phy(sum)。

通过上述算法可以对每种类型的存储器对应的phy的数量根据上个周期内的io请求的分布情况作动态调整。

本发明第二方面提供一种i/o处理设备,所述i/o处理设备包括接收模块、选择模块、及传输模块。所述接收模块用于接收i/o请求,所述i/o请求中携带有所述i/o请求的地址信息。所述选择模块用于根据所述i/o请求的地址信息确定所述i/o请求所访问的存储器的类型,并根据所确定的存储器的类型选择传输所述i/o请求的phy,其中,每种类型的存储器设置有至少一个phy。所述传输模块用于通过所选择的所述phy发送所述i/o请求至存储器。

通过为每种类型的存储器设置不同的phy,使访问不同类型存储器的io请求可以通过不同的phy来传输,即使访问响应快的存储器的i/o请求不必等到访问响应慢的存储器的i/o请求处理完成后才被处理,从而提高了存储器整体的i/ops性能。

在第二方面的第一种可能的实现方式中,在根据所确定的存储器的类型选择传输所述i/o请求的phy时,所述选择模块在所确定的存储器的类型对应的phy的数量大于1时,则根据所存储器的类型对应的phy的忙闲程度选择传输所述i/o请求的phy。

如此,在一种类型的存储器对应多个phy时,则可以进一步根据所述多个phy的忙闲程度选择传输i/o请求的phy。如此,可进一步提高存储阵列的iops。

在第一方面的第二种可能的实现的方式中,所述处理设备还包括设置模块,所述设置模块用于为所述每种类型的存储器设置至少一个phy。

在第一方面的第三种可能的实现的方式中,所述设置模块具体用于在当前统计周期内,统计访问每种类型存储器的i/o请求的数量;在当前统计周期结束时,根据所统计的访问每种类型存储器的i/o请求的数量为每种类型存储器在当前统计周期的下一个统计周期设置所述至少一个phy。

如此,可以每隔一个周期,根据上个周期每种类型的ssd处理的io请求的数量,及存储器的本身的性能重新设置每种类型的存储器对应的phy的数量,从而提升了为每种类型的存储器设置的phy的准确率,进一步提高了存储系统的iops。

通过上述算法可以对每种类型的存储器对应的phy的数量根据上个周期内的io请求的分布情况作动态调整。

在第一方面的第四种实现方式中,所述设置模块在根据所统计的访问每种类型存储器的i/o请求的数量为当前统计周期的下一个统计周期的每种类型存储器设置所述至少一个phy时,具体用于:在当前统计周期内,统计访问每种类型存储器的i/o请求的数量,即iocnt(devtype);

根据所统计的访问每种类型存储器的i/o请求的数量及每种类型的存储器的影响因子(a(devtype))计算每种类型存储器在分配phy的时候所占的比例per(devtype)=iocnt(devtype)*a(devtype)/sum(iocnt(devtype)*a(devtype)),其中sum(iocnt(devtype)*a(devtype))表示每种类型存储器的i/o请求的数量乘以每种类型的存储器的影响因子后将得到的每种类型的存储器的计算结果相加;

根据每种类型存储器在分配phy的时候所占的比例per(devtype)及存储器的总的phy的数量phy(sum),确定为每种类型的存储器设置的至少一个phy的数量:phy(devtype)=per(devtype)×phy(sum)。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例所提供的存储设备的结构示意图;

图2为本发明实施例中i/o请求处理方法的示意图;

图3为本发明实施例中通过图2所示的i/o请求处理方法进行i/o传输的示意图;

图4为每种类型存储器动态设置phy的方法的流程图。

图5为本发明第二实施例所提供的存储系统的结构示意图。

图6为本发明实施例提供的i/o请求处理设备的模块图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

如图1所示,为本发明第一实施例提供的存储设备100的结构图。所述存储设备100包括控制器101、总线102、至少两种类型的存储器,例如ssd103及hdd107(下面以这两种类型的存储器为例进行说明)、sas端口104及内存105。sas端口104及内存105通过总线102连接至控制器101,所述内存105中存储有供控制器101执行的程序,所述控制器101通过执行所述内存105中的相关程序以实现相应的功能。所述ssd103及hdd107连接至所述sas端口104,所述sas端口104包括多个phy106。控制器101能够通过这些phy106与访问ssd103及hdd107。例如,该存储设备100中的sas端口104共包括16个phy(具体表示为:phy0~phy15、且控制器101能够通过这16个phy中的每个phy向ssd102及hdd107下发i/o。

所述控制器101执行内存105中的一段程序,以执行图2所示的i/o请求的处理方法,实现对i/o请求的下发。在图2所示的方法中,所述控制器101可以根据i/o请求所访问的存储器的类型选择下发i/o的phy,具体实现方法请参考图2。

如图2所示,所述对i/o请求处理的方法包括:

步骤s11:所述控制器101接收i/o请求,所述i/o请求中包括i/o地址。

步骤s12:所述控制器根据i/o请求确定所述i/o请求所访问的存储器的类型。所述存储器的类型根据所述i/o地址确定,具体为,所述i/o地址为逻辑地址,所述控制器获取所述i/o请求中的i/o的逻辑地址,根据内存105中存储的逻辑地址与物理地址映射表确定所述逻辑地址对应的物理地址,根据所述物理地址所在存储器即可确定所述i/o请求所访问的存储器的类型。

步骤s13:所述控制器101根据所述存储器的类型确定传输所述io请求的phy。其中,在所述内存105中设置有每种类型的存储器对应的至少一个phy,每种类型的存储器所设置的phy可以是固定不变的,例如,可以为每种类型的存储器设置两个phy。也可以为每种类型的存储设备动态设置的phy,为每种类型的存储器动态设置的phy的方法具体请参考图4的描述。每种类型存储器所设置的phy存储在内存105中,则在i/o请求所访问的存储设备的类型确定之后,即可确定出该类型的存储设备对应的phy。在所述存储器的类型只对应一个phy时,则直接确定该phy为传输所述i/o的phy。在所述存储器的类型对应多个phy时,则可根据多个phy的忙闲程度选择传输所述i/o的phy。

步骤s14:所述控制器101通过选择的所述phy将所述i/o发送给所述存储器103。例如,如图1所示,若所确定的存储器的类型为ssd,则可以选择phy0为传输所述i/o请求的phy,并通过phy0将i/o请求发送给ssd103。

这样,如图3所述,通过将为每种类型的存储器设置不同的phy,例如当i/o请求所访问的存储器为ssd时,则可通过phy0和phy1来传输所述i/o请求,当i/o请求所访问的存储器为hdd时,则可通过phy14及phy15来传输所述io请求,即访问不同类型的存储器的io请求可以通过不同的phy来传输,即使访问ssd的i/o请求通过为ssd设置的phy来传输,使访问hdd的i/o请求通过为hdd设置的phy来传输。这样,可以使访问响应快的存储器的i/o请求不必等到访问响应慢的存储器的i/o请求执行完成后再被执行,从而提高了存储器整体的i/ops性能。

如图4所示,为为每种类型的存储器动态设置phy的方法的流程图。

步骤s41,在当前统计周期内,统计访问每种类型存储器的i/o请求的数量,即iocnt(devtype)。

步骤s42,根据所统计的访问每种类型存储器的i/o请求的数量及每种类型的存储器的影响因子(a(devtype))计算每种类型存储器在分配phy的时候所占的比例per(devtype),具体计算公式如下:

per(devtype)=iocnt(devtype)*a(devtype)/sum(iocnt(devtype)*a(devtype))。

其中sum(iocnt(devtype)*a(devtype))表示每种类型存储器的i/o请求的数量乘以每种类型的存储器的影响因子后将得到的每种类型的存储器的计算结果相加,即得到所有类型的存储器的计算结果之和。

如此,可引入每种类型的存储器的影响因子及访问每种类型存储设备的io数量来计算为每种类型存储设别分配phy的数量的比例。

所述影响因子a(devtype)的确定方式为:选定几个典型的io大小(如4kb,16kb,64kb,128kb,256kb等),确定每种类型存储器对所选定的几个典型io大小的在预设时间内的最大iops,用每种类型存储器的最大iops(即iops(devtype))除以所有类型的存储器的最大iops之和(即sum(iops(devtype))),即可得到每种类型存储器的影响因子a(devtype),具体公式为:

a(devtype)=iops(devtype)/sum(iops(devtype))。

例如,存储阵列中存在ssd,sashdd,satahdd三种类型的存储器,那么ssd的影响因子就是典型io大小的io请求在ssd的单盘iops除以典型io大小的io请求在三种类型存储器的单盘iops之和得到的。

步骤s42,根据每种类型存储器在分配phy的时候所占的比例per(devtype)及存储器的总的phy的数量phy(sum),确定为每种类型的存储器设置的至少一个phy的数量:

phy(devtype)=per(devtype)×phy(sum)。

在给每种类型的存储器分配phy的时候,在所确定的每种类型的存储器的phy的数量不是整数时,则可根据所述phy的数量中的整数部分与小数部分的情况确定分配给每种类型的存储器的phy,具体如下:

若所述整数部分为非零值,且小数部分小于第一设定的值,则为每种类型存储器分配整数个phy,例如,若ssd的phy的数量为3.09,所述第一设定值是0.1,则给所述ssd分配3个phy。

若所述整数部分为非零值,且小数部分大于第二设定值,则为所述ssd分配整数部分再加一个phy,例如,若计算得到为ssd分配的phy的数量为1.91,第二设定值是0.9,则给所述ssd分配2个phy。

若所述整数部分为非零值,且小数部分为大于等于第一设定值,小于等于第二设定值,且其他类型的存储器计算得到的phy的数量中也存在大于等于第一设定值,小于等于第二设定值的小数值时,则可根据实际情况与其他类型的存储器共用一个phy,例如,计算得到ssd的phy的数量为1.4,sashdd的phy的数量为1.5时,则可给ssd及及sashdd分配一个共用的phy。

如图5所示,为本发明的第二实施例中提供的存储系统200的结构图,所述存储系统200包括控制设备201及连接至所述控制设备201的至少一个存储设备202,所述控制设备201包括处理器203、总线204、sas端口205及内存206。所述sas端口205及内存206通过总线204连接至处理器203。所述内存206中存储有供处理器203执行的程序,所述处理器203通过执行所述内存206中的相关程序以实现相应的功能。所述至少一个存储设备202通过所述sas端口205连接至所述控制设备201。所述sas端口205包括多个phy207。控制设备201能够通过这些phy207与每个存储设备202进行通信。例如,该sas端口205共包括16个phy(具体表示为:phy0~phy15、且控制器101能够通过这16个phy中的每个phy向每个存储设备103下发i/o。

所述处理器203运行内存206中存储的程序以执行i/o请求处理方法,实现对i/o请求的下发。本实施例中的i/o请求处理方法与第一实施例中的io请求处理方法基本相同,不同点仅在于本实施例中控制设备201及存储设备,例如ssd设备或者hdd设备为独立的设备,所以在本实施例中的所述i/o请求处理方法的执行主体为处理器203,io请求的下发对象为存储设备,例如ssd设备202及hdd设备208。

如图6所示,为一种i/o请求处理设备50的模块图,所述i/o请求处理设备50可以是图1所示的存储设备100,也可以是图5所示的控制设备201。所述i/o请求处理设备50包括:接收模块51、选择模块52、传输模块53、及设置模块54。

所述接收模块51用于接收i/o请求,所述i/o请求中包括i/o地址,所述接收模块51所执行的功能与图3中的步骤s11对应。

所述选择模块52根据所述i/o请求确定所述i/o请求所访问的存储设备的类型,并根据所确定的存储设备的类型选择传输所述i/o请求的phy。每种类型的存储设备设置有至少一个phy。所述选择模块52所执行的功能与图3中的步骤s12及s13对应。

所述设置模块54用于为每种类型的存储设备设置至少一个phy,每种类型的存储设备所设置的phy可以是固定不变的,例如,可以为上述每种类型的存储器设置两个phy。

可替换地,所述设置模块54也可以为每种类型的存储设备动态设置的phy,所述设置模块54为每种类型存储器动态设置phy的方法具体请参考图4的描述。

所述选择模块52在每种类型的存储器对应的phy中选择传输所述i/o的phy时,在所述每种类型存储器只对应一个phy时,则直接确定该phy为传输所述i/o的phy,在所述每种类型存储器对应多个phy时,则可根据多个phy的忙闲程度选择传输所述i/o的phy。

所述传输模块53用于通过所选择的所述phy发送所述i/o请求至目标设备。

这样,如图3所述,通过为每种类型的存储设备设置不同的phy,例如访问ssd的io请求通过phy0和phy1来传输,访问sashdd的io请求通过通过phy14及phy15传输,即访问不同类型存储设备的io请求可以通过不同的phy来传输,使访问响应快的存储设备的i/o请求不必等到访问响应慢的存储设备的i/o请求处理完成后才被处理,从而提高了存储设备整体的i/ops性能。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。本申请所提供的实施例仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1