太阳城集团

  • / 8
  • 下载费用:30 金币  

一种SCST读写优化方法及系统.pdf

摘要
申请专利号:

CN201710025358.3

申请日:

2017.01.13

公开号:

太阳城集团CN106776046A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 9/50申请日:20170113|||公开
IPC分类号: G06F9/50 主分类号: G06F9/50
申请人: 郑州云海太阳城集团技术有限公司
发明人: 刘树亮
地址: 450018 河南省郑州市郑东新区心怡路278号16层1601室
优先权:
专利代理机构: 北京集佳知识产权代理有限公司 11227 代理人: 罗满
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201710025358.3

授权太阳城集团号:

|||

法律状态太阳城集团日:

2017.06.23|||2017.05.31

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

太阳城集团本申请公开了一种SCST读写优化方法及系统,该方法包括:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应;其中,数据访问命令为SCSI读命令或SCSI写命令。本申请在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。

权利要求书

1.一种SCST读写优化方法,其特征在于,包括:
在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请
求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指
令进行响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
2.根据权利要求1所述的SCST读写优化方法,其特征在于,所述为该IO请求指令分配相
应大小的内存空间的过程,包括:
确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
3.根据权利要求2所述的SCST读写优化方法,其特征在于,所述确定该IO请求指令中所
请求的IO块的块大小的过程,包括:
利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
4.根据权利要求1至3任一项所述的SCST读写优化方法,其特征在于,所述利用该内存
空间对该IO请求指令进行响应的过程之后,还包括:
对该内存空间进行释放。
5.一种SCST读写优化系统,其特征在于,包括:
内存空间分配模块,用于在当前数据访问命令的执行过程中,当Target端获取到
Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
指令响应模块,用于利用所述内存空间分配模块分配的内存空间对该IO请求指令进行
响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
6.根据权利要求5所述的SCST读写优化系统,其特征在于,所述内存空间分配模块,包
括:
第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator
端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块
大小;
第二确定单元,用于确定与所述目标IO块大小相适应的内存空间大小,得到目标内存
空间大小;
分配单元,用于为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
7.根据权利要求6所述的SCST读写优化系统,其特征在于,
所述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令中所请求
的IO块的块大小进行确定。
8.根据权利要求5至7任一项所述的SCST读写优化系统,其特征在于,还包括:
内存空间释放模块,用于在所述指令响应模块利用该内存空间对该IO请求指令进行响
应的过程之后,对该内存空间进行释放。

说明书

一种SCST读写优化方法及系统

技术领域

本发明涉及SCSI技术领域,特别涉及一种SCST读写优化方法及系统。

背景技术

SCSI(即Small Computer System Interface,小型计算机系统接口)是一种适用
于计算机和智能设备之间的系统级接口的标准。

在SCSI标准所定义的读过程中,在Target端(即SCST)接收到SCSI的Read Command
(即SCSI读命令)的时候会分多次传送IO数据,直到传送完毕所有Initiator端请求的读数
据为止。

在SCSI标准所定义的写过程中,在Target端接收到SCSI的Write Command(即SCSI
写命令)的时候首先分配一块内存供数据写入,分配完成之后返回XFER_RDY消息给
Initiator端告知可以发送数据,返回的XFER_RDY消息中包含此次要求传送的写数据长度,
然后Initiator端根据数据长度发送写数据到Target端,重复此过程,直到所有写数据传送
完毕。

然而,SCST在执行读写命令的时候,是一次性分配传送所有IO所需要的内存空间,
由于SCST本身有IO块大小的限制,所以当Initiator端所发送的SCSI Command要求更大数
据块的IO读写时,就会出现内存分配失败的情况,这时Target端将会返回busy的状态,从而
造成SCSI命令执行失败。Initiator端在等待一段太阳城集团之后会重新发送SCSI Command,直到
达到Initiator端的最大重试次数,这时Initiator端会尝试各种方法恢复对逻辑卷LUN的
访问,SCSI定义的Task Manager Function,包括ABTS,LUN Reset,Target Reset等,这样会
造成性能严重下降。

综上所述可以看出,如何进一步提升SCST读写性能是目前有待解决的问题。

发明内容

有鉴于此,本发明的目的在于提供一种SCST读写优化方法及系统,能够进一步提
升SCST读写性能。其具体方案如下:

一种SCST读写优化方法,包括:

在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一
IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请
求指令进行响应;

其中,所述数据访问命令为SCSI读命令或SCSI写命令。

可选的,所述为该IO请求指令分配相应大小的内存空间的过程,包括:

确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;

确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;

为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。

可选的,所述确定该IO请求指令中所请求的IO块的块大小的过程,包括:

利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确
定。

可选的,所述利用该内存空间对该IO请求指令进行响应的过程之后,还包括:

对该内存空间进行释放。

本发明还公开了一种SCST读写优化系统,包括:

内存空间分配模块,用于在当前数据访问命令的执行过程中,当Target端获取到
Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;

指令响应模块,用于利用所述内存空间分配模块分配的内存空间对该IO请求指令
进行响应;

其中,所述数据访问命令为SCSI读命令或SCSI写命令。

可选的,所述内存空间分配模块,包括:

第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到
Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到
目标IO块大小;

第二确定单元,用于确定与所述目标IO块大小相适应的内存空间大小,得到目标
内存空间大小;

分配单元,用于为该IO请求指令分配与所述目标内存空间大小相一致的内存空
间。

可选的,所述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指
令中所请求的IO块的块大小进行确定。

可选的,所述SCST读写优化系统,还包括:

内存空间释放模块,用于在所述指令响应模块利用该内存空间对该IO请求指令进
行响应的过程之后,对该内存空间进行释放。

本发明中,SCST读写优化方法,包括:在当前数据访问命令的执行过程中,当
Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的
内存空间,然后利用该内存空间对该IO请求指令进行响应;其中,数据访问命令为SCSI读命
令或SCSI写命令。

可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请
求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本
发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而
在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为
该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于
SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。

附图说明

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

图1为本发明实施例公开的一种SCST读写优化方法流程图;

图2为本发明实施例公开的一种具体的SCST读写优化方法流程图;

图3为本发明实施例公开的一种SCST读写优化系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。

本发明实施例公开了一种SCST读写优化方法,参见图1所示,该方法包括:

步骤S11:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发
送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;

步骤S12:利用该内存空间对该IO请求指令进行响应;

其中,数据访问命令为SCSI读命令或SCSI写命令。

可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请
求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本
发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而
在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为
该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于
SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。

参见图2所示,本发明实施例公开了一种具体的SCST读写优化方法,包括如下步
骤:

步骤S21:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发
送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小。

具体的,本实施例中,可以利用scst_alloc_space函数,对上述IO请求指令中所请
求的IO块的块大小进行确定。

步骤S22:确定与目标IO块大小相适应的内存空间大小,得到目标内存空间大小。

步骤S23:为该IO请求指令分配与目标内存空间大小相一致的内存空间,并利用该
内存空间对该IO请求指令进行响应。

可以理解的是,上述目标IO块大小的具体数值与上述目标内存空间大小的具体数
值之间呈正相关关系。另外,上述数据访问命令具体可以为SCSI读命令或SCSI写命令。

进一步的,上述步骤S23中的在利用该内存空间对该IO请求指令进行响应的过程
之后,还可以包括对该内存空间进行释放。

本实施例中,在分配内存空间时,具体在scst_alloc_space函数外判断bufflen大
小,如果超出SCST的最大限制,则修改scst_cmd的bufflen、lba参数,并保存旧的bufflen和
lba参数,后续可以根据旧的bufflen和lba来判断读写是否完成。SCST只需要分配限制内的
内存空间。SCST在分配完一次内存空间之后会修改scst cmd的执行状态state,表示下一步
要执行的动作。如果SCSI Command为SCSI写命令,则将scst cmd的执行状态state设置为
SCST_CMD_STATE_RDY_TO_XFER,如果SCSI Command为SCSI读命令,则将scst cmd的执行状
态state设置为SCST_CMD_STATE_TGT_PRE_EXEC,当SCST完成数据传输之后,会将scst cmd
的执行状态state设置为SCST_CMD_STATE_PRE_XMIT_RESP,准备回复Initiator端IO的执行
状况。

在完成IO传输之后,并在将scst cmd的执行状态state设置为SCST_CMD_STATE_
PRE_XMIT_RESP时,通过判断比较新旧bufflen和lba,以确定数据是否传送完毕,如果已经
传送完毕,则将scst cmd的执行状态state修改为SCST_CMD_STATE_PRE_XMIT_RESP,否则,
将scst cmd的执行状态state修改为SCST_CMD_STATE_PREPARE_SPACE,接着SCST会回到
scst_alloc_space函数,再次分配所需要的传送的IO内存。

相应的,本发明实施例还公开了一种SCST读写优化系统,参见图3所示,该系统包
括:

内存空间分配模块11,用于在当前数据访问命令的执行过程中,当Target端获取
到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;

指令响应模块12,用于利用内存空间分配模块11分配的内存空间对该IO请求指令
进行响应;

其中,数据访问命令为SCSI读命令或SCSI写命令。

具体的,上述内存空间分配模块,包括第一确定单元、第二确定单元和分配单元;
其中,

第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到
Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到
目标IO块大小;

第二确定单元,用于确定与目标IO块大小相适应的内存空间大小,得到目标内存
空间大小;

分配单元,用于为该IO请求指令分配与目标内存空间大小相一致的内存空间。

其中,上述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令
中所请求的IO块的块大小进行确定。

进一步的,本实施例中的SCST读写优化系统,还可以包括:

内存空间释放模块,用于在指令响应模块利用该内存空间对该IO请求指令进行响
应的过程之后,对该内存空间进行释放。

可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请
求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本
发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而
在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为
该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于
SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种SCST读写优化方法及系统进行了详细介绍,本文中应
用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理
解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在
具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发
明的限制。

关 键 词:
一种 SCST 读写 优化 方法 系统
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:一种SCST读写优化方法及系统.pdf
链接地址:http://zh228.com/p-6019505.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');