CN106776046B - 一种scst读写优化方法及系统 - Google Patents

一种scst读写优化方法及系统 Download PDF

Info

Publication number
CN106776046B
CN106776046B CN201710025358.3A CN201710025358A CN106776046B CN 106776046 B CN106776046 B CN 106776046B CN 201710025358 A CN201710025358 A CN 201710025358A CN 106776046 B CN106776046 B CN 106776046B
Authority
CN
China
Prior art keywords
memory space
scst
size
request instruction
read
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
Application number
CN201710025358.3A
Other languages
English (en)
Other versions
CN106776046A (zh
Inventor
刘树亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710025358.3A priority Critical patent/CN106776046B/zh
Publication of CN106776046A publication Critical patent/CN106776046A/zh
Application granted granted Critical
Publication of CN106776046B publication Critical patent/CN106776046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System (AREA)

Abstract

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

Description

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

Claims (6)

1.一种SCST读写优化方法,其特征在于,包括:
在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,然后对该内存空间进行释放;
其中,所述数据访问命令为包括多个IO请求指令的SCSI访问命令,具体为SCSI读命令或SCSI写命令;
并且,在分配内存空间时,在scst_alloc_space函数外判断bufflen大小,如果超出SCST的最大限制,则修改scst_cmd的bufflen和lba参数,并保存旧的bufflen和lba参数,以根据所述旧的bufflen和lba来判断读写是否完成。
2.根据权利要求1所述的SCST读写优化方法,其特征在于,所述为该IO请求指令分配相应大小的内存空间的过程,包括:
确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
3.根据权利要求2所述的SCST读写优化方法,其特征在于,所述确定该IO请求指令中所请求的IO块的块大小的过程,包括:
利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
4.一种SCST读写优化系统,其特征在于,包括:
内存空间分配模块,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
指令响应模块,用于利用所述内存空间分配模块分配的内存空间对该IO请求指令进行响应;
其中,所述数据访问命令为包括多个IO请求指令的SCSI访问命令,具体为SCSI读命令或SCSI写命令;
并且,所述系统还用于:在分配内存空间时,在scst_alloc_space函数外判断bufflen大小,如果超出SCST的最大限制,则修改scst_cmd的bufflen和lba参数,并保存旧的bufflen和lba参数,以根据所述旧的bufflen和lba来判断读写是否完成;
并且,所述系统还包括:
内存空间释放模块,用于在所述指令响应模块利用该内存空间对该IO请求指令进行响应的过程之后,对该内存空间进行释放。
5.根据权利要求4所述的SCST读写优化系统,其特征在于,所述内存空间分配模块,包括:
第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
第二确定单元,用于确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
分配单元,用于为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
6.根据权利要求5所述的SCST读写优化系统,其特征在于,
所述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
CN201710025358.3A 2017-01-13 2017-01-13 一种scst读写优化方法及系统 Active CN106776046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710025358.3A CN106776046B (zh) 2017-01-13 2017-01-13 一种scst读写优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710025358.3A CN106776046B (zh) 2017-01-13 2017-01-13 一种scst读写优化方法及系统

Publications (2)

Publication Number Publication Date
CN106776046A CN106776046A (zh) 2017-05-31
CN106776046B true CN106776046B (zh) 2021-06-29

Family

ID=58945500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710025358.3A Active CN106776046B (zh) 2017-01-13 2017-01-13 一种scst读写优化方法及系统

Country Status (1)

Country Link
CN (1) CN106776046B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445943A (zh) * 2018-10-24 2019-03-08 郑州云海信息技术有限公司 内核态系统中i/o栈的内存管理方法、系统及相关装置
CN111007987A (zh) * 2019-11-08 2020-04-14 苏州浪潮智能科技有限公司 一种用于raid io的内存管理方法、系统、终端及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1205547C (zh) * 2003-05-19 2005-06-08 清华大学 用普通scsi磁盘代替存储光纤网络中光纤磁盘阵列的方法
CN101997918B (zh) * 2010-11-11 2013-02-27 清华大学 异构san环境中的海量存储资源按需分配的实现方法
CN103176751A (zh) * 2013-03-04 2013-06-26 浪潮电子信息产业股份有限公司 一种多种存储协议下的统一服务系统
CN103336672B (zh) * 2013-06-28 2016-10-05 华为技术有限公司 数据读取方法、装置及计算设备
CN105740164B (zh) * 2014-12-10 2020-03-17 阿里巴巴集团控股有限公司 支持缓存一致性的多核处理器、读写方法、装置及设备

Also Published As

Publication number Publication date
CN106776046A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
KR102094236B1 (ko) 스토리지 디바이스 및 컴퓨터 시스템
US11960749B2 (en) Data migration method, host, and solid state disk
US9311002B1 (en) Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
EP2417529A1 (en) Partitioning a flash memory data storage device
KR20240049262A (ko) 메모리 시스템 및 이의 동작 방법
US10789170B2 (en) Storage management method, electronic device and computer readable medium
CN106201652B (zh) 一种数据处理方法及虚拟机
US20160371001A1 (en) Computer system having tiered block storage device, storage controller, file arrangement method and storage medium
US20190243758A1 (en) Storage control device and storage control method
CN114036078A (zh) 用于管理存储系统中的缓存设备的方法和系统
CN105138481A (zh) 存储数据的处理方法、装置和系统
CN106776046B (zh) 一种scst读写优化方法及系统
CN112786095A (zh) 存储设备、存储系统及其操作方法
CN109213429B (zh) 存储管理方法和设备
US20210263668A1 (en) Information processing device and computer-readable recording medium recording storage control program
CN113655970A (zh) 一种io调度方法、装置、设备及计算机可读存储介质
US8572347B2 (en) Storage apparatus and method of controlling storage apparatus
US8239634B2 (en) Input/output control based on information specifying input/output issuing source and input/output priority
US10621096B2 (en) Read ahead management in a multi-stream workload
CN109508150B (zh) 一种存储空间分配的方法和装置
WO2016048325A1 (en) Storage space allocation
CN108334457B (zh) 一种io处理方法及装置
CN112000289B (zh) 全闪存储服务器系统数据管理方法及相关组件
CN111143418B (zh) 一种数据库读取数据方法、装置、设备及存储介质
CN109840217B (zh) 一种缓存资源分配和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant