CN117331511B - 一种存储设备及其数据传输方法、装置、系统和存储介质 - Google Patents
一种存储设备及其数据传输方法、装置、系统和存储介质 Download PDFInfo
- Publication number
- CN117331511B CN117331511B CN202311617807.5A CN202311617807A CN117331511B CN 117331511 B CN117331511 B CN 117331511B CN 202311617807 A CN202311617807 A CN 202311617807A CN 117331511 B CN117331511 B CN 117331511B
- Authority
- CN
- China
- Prior art keywords
- hard disk
- command
- data transmission
- splitting
- data
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 417
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000012545 processing Methods 0.000 claims abstract description 158
- 239000000725 suspension Substances 0.000 claims description 37
- 238000012546 transfer Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002618 waking effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种存储设备及其数据传输方法、装置、系统和存储介质,涉及数据存储技术领域,该方法包括:存储设备获取主机设备发送的硬盘数据传输命令;根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;根据存储拆分命令和硬盘拆分命令,分别与主机设备和硬盘设备进行数据传输,完成硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取;本发明对存储设备和主机设备之间的大IO采用多轮数据传输,且对存储设备与硬盘设备之间的大IO采用拆分下发的方式传递给硬盘设备,减少了主机设备下发IO命令的次数,提高了主机设备和硬盘设备之间的数据传输效率。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种存储设备及其数据传输方法、装置、系统和存储介质。
背景技术
在存储领域,不同计算机设备(即主机设备)及硬盘设备之间进行数据传输是频率出现最多的应用场景;保证这些数据安全且有序地在这些设备之间进行传输是存储领域一个重要的课题。各计算机设备和硬盘设备之间的数据传输效率(如吞吐量和带宽)是评价一台存储设备的非常重要的指标。但是,由于网卡、网络交换机、硬盘处理能力等因素,主机设备、存储设备及硬盘设备之间单次数据传输的能力受到了很大的限制。例如,有些硬盘设备一次只能处理128K字节的数据,如果传输的数据块的长度大于128K字节,主机设备只能向存储设备发送多个IO(Input/Output,输入输出)命令,经过多次命令传输和数据传输,才能完成对硬盘设备的读写任务。
因此,如何能够提高主机设备、存储设备及硬盘设备之间的数据传输效率,减少主机设备下发IO命令的次数,是现今急需解决的问题。
发明内容
本发明的目的是提供一种存储设备的数据传输方法、装置、系统及计算机可读存储介质,以提高主机设备、存储设备及硬盘设备之间的数据传输效率,减少主机设备下发IO命令的次数。
为解决上述技术问题,本发明提供一种存储设备的数据传输方法,包括:
存储设备获取主机设备发送的硬盘数据传输命令;其中,所述硬盘数据传输命令为数据写入命令或数据读取命令;
根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各所述存储拆分命令的待传输数据大小均小于所述预设数据传输阈值,各所述硬盘拆分命令的待传输数据大小均小于所述预设硬盘处理阈值;全部所述存储拆分命令的待传输数据大小之和与全部所述硬盘拆分命令的待传输数据大小之和均为所述硬盘数据传输命令的待传输数据大小;
根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取。
在一些实施例中,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
根据所述待传输数据大小和所述预设数据传输阈值,获取所述硬盘数据传输命令对应的存储拆分命令;
根据各所述存储拆分命令的待传输数据大小和所述预设硬盘处理阈值,获取各所述存储拆分命令各自对应的硬盘拆分命令。
在一些实施例中,所述根据各所述存储拆分命令的待传输数据大小和所述预设硬盘处理阈值,获取各所述存储拆分命令各自对应的硬盘拆分命令,包括:
获取当前存储拆分命令的待传输数据大小、数据起始地址和所述预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一所述存储拆分命令;
根据所述硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
在一些实施例中,所述硬盘数据传输命令为所述数据写入命令时,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取,包括:
根据各所述存储拆分命令,依次从所述主机设备请求所述硬盘数据传输命令对应的待写入数据;
根据各所述硬盘拆分命令,依次将所述硬盘数据传输命令对应的待写入数据写入到所述硬盘设备。
在一些实施例中,该方法还包括:
获取所述主机设备发送的所述硬盘数据传输命令对应的中止命令;
根据所述硬盘拆分命令,获取所述中止命令对应的中止拆分命令;其中,每个所述中止命令各自对应一个硬盘拆分命令;
将所述中止拆分命令发送到所述硬盘设备;
获取所述硬盘设备返回的全部所述中止拆分命令对应的拆分状态码;
根据所述拆分状态码,生成并向所述主机设备发送所述中止命令对应的状态码。
在一些实施例中,所述硬盘数据传输命令为所述数据读取命令时,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取,包括:
根据各所述硬盘拆分命令,依次从所述硬盘设备读取所述硬盘数据传输命令对应的待读取数据;
根据各所述存储拆分命令,依次将所述硬盘数据传输命令对应的待读取数据传输到所述主机设备。
在一些实施例中,所述预设硬盘处理阈值为所述硬盘设备的识别控制器的预设字段的数据传输能力值。
在一些实施例中,所述存储设备获取主机设备发送的硬盘数据传输命令之后,还包括:
将所述硬盘数据传输命令加入到目标队列;其中,所述目标队列为任一预设数据传输处理队列,每个所述预设数据传输处理队列用于对各自队列中的硬盘数据传输命令同时进行处理。
在一些实施例中,所述将所述硬盘数据传输命令加入到目标队列,包括:
利用目标线程,将所述硬盘数据传输命令加入到目标队列;其中,每个所述预设数据传输处理队列设置各自对应的一个预设数据传输处理线程,所述目标线程为所述目标队列对应的一个预设数据传输处理线程;
对应的,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
利用所述目标线程,根据所述待传输数据大小、所述预设数据传输阈值和所述预设硬盘处理阈值,获取所述目标队列中的所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令。
在一些实施例中,所述存储设备包括所述预设数据传输处理线程和一个管理线程,所述管理线程用于处理管理队列中的管理命令,所述管理命令包括所述硬盘数据传输命令对应的中止命令;所述预设数据传输处理线程包括所述存储设备中所述管理线程之外的全部线程。
在一些实施例中,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
利用所述目标队列的存储拆分命令表,保存所述存储拆分命令和各所述存储拆分命令各自的第一上级指针;其中,所述第一上级指针包括所述目标队列的队列标识和所述硬盘数据传输命令的唯一标识;
利用所述目标队列的硬盘拆分命令表,保存所述硬盘拆分命令和各所述硬盘数据传输命令各自的第二上级指针;其中,所述第二上级指针包括所述目标队列的队列标识和对应的存储拆分命令的唯一标识;
配置所述硬盘数据传输命令的第一拆分指针和各所述存储拆分命令各自的第二拆分指针;其中,所述第一拆分指针包括所述存储拆分命令表中所述存储拆分命令的起始位置标识,所述第二拆分指针包括所述硬盘拆分命令表中对应的硬盘拆分命令的起始位置标识。
在一些实施例中,所述存储设备获取主机设备发送的硬盘数据传输命令之前,还包括:
所述存储设备为所述目标队列分配预设内存大小的内存空间;
对应的,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取之后,还包括:
在所述目标队列中的全部硬盘数据传输命令处理完成后,清空所述内存空间,不释放所述内存空间。
本发明还提供了一种存储设备的数据传输装置,应用于存储设备,包括:
命令获取模块,用于获取主机设备发送的硬盘数据传输命令;其中,所述硬盘数据传输命令为数据写入命令或数据读取命令;
命令拆分模块,用于根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各所述存储拆分命令的待传输数据大小均小于所述预设数据传输阈值,各所述硬盘拆分命令的待传输数据大小均小于所述预设硬盘处理阈值;全部所述存储拆分命令的待传输数据大小之和与全部所述硬盘拆分命令的待传输数据大小之和均为所述硬盘数据传输命令的待传输数据大小;
数据传输模块,用于根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取。
本发明还提供了一种存储设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述存储设备的数据传输方法的步骤。
本发明还提供了一种存储设备的数据传输系统,包括:如上述所述的存储设备以及与所述存储设备连接的主机设备和硬盘设备。
此外,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述存储设备的数据传输方法的步骤。
本发明所提供的一种存储设备的数据传输方法,包括:存储设备获取主机设备发送的硬盘数据传输命令;其中,硬盘数据传输命令为数据写入命令或数据读取命令;根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各存储拆分命令的待传输数据大小均小于预设数据传输阈值,各硬盘拆分命令的待传输数据大小均小于预设硬盘处理阈值;全部存储拆分命令的待传输数据大小之和与全部硬盘拆分命令的待传输数据大小之和均为硬盘数据传输命令的待传输数据大小;根据存储拆分命令和硬盘拆分命令,分别与主机设备和硬盘设备进行数据传输,完成硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取;
可见,本发明通过根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,能够对存储设备和主机设备之间的大IO采用多轮数据传输,且对存储设备与硬盘设备之间的大IO采用拆分下发的方式传递给硬盘设备,减少了主机设备下发IO命令的次数,提高了主机设备、存储设备及硬盘设备之间的数据传输效率。此外,本发明还提供了一种存储设备的数据传输装置、系统及计算机可读存储介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种存储设备的数据传输方法的流程图;
图2为本发明实施例所提供的一种主机设备写入硬盘设备数据的流程示意图;
图3为本发明实施例所提供的一种主机设备读取硬盘设备数据的流程示意图;
图4为本发明实施例所提供的另一种存储设备的数据传输方法的流程图;
图5为本发明实施例所提供的一种存储设备的数据传输装置的结构框图;
图6为本发明实施例所提供的一种存储设备的结构示意图;
图7为本发明实施例所提供的一种计算机可读存储介质的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种存储设备的数据传输方法的流程图。该方法可以包括:
步骤101:存储设备获取主机设备发送的硬盘数据传输命令;其中,硬盘数据传输命令为数据写入命令或数据读取命令。
可以理解的是,本实施例中的存储设备可以为主机设备与硬盘设备之间的设备,用于实现主机设备与硬盘设备之间的数据传输。对于本实施例中的存储设备、主机设备和硬盘设备的具体设备类型,可以由设计人员根据实用场景和用户需求自行设置,如主机设备可以为计算机设备或服务器设备。硬盘设备可以为NVMe(Non-volatile memoryexpress,非易失性内存主机控制器接口规范)硬盘,或如HDD硬盘(机械硬盘)的其他硬盘。存储设备可以为用于插入安装硬盘设备的机柜。本实施例对此不做任何限制。
对应的,本实施例中的硬盘数据传输命令(即IO命令)可以为主机设备发送的用于向硬盘设备写入数据的数据写入命令(即IO写命令)或用于从硬盘设备读取数据的数据读取命令(即IO读命令)。也就是说,本实施例是以存储设备对主机设备发送的一个硬盘数据传输命令的处理为例进行的展示,对于存储设备对主机设备发送的其他硬盘数据传输命令的处理,可以采用与本实施例所提供的方法相同或相似的方式实现,即主机设备发送的多个硬盘数据传输命令可以包括数据写入命令和数据读取命令,本实施例对此不做任何限制。
相应的,对于本实施例中存储设备获取主机设备发送的硬盘数据传输命令的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如采用与现有技术中存储设备接收主机设备下发的IO命令的方法相同或相似的方式实现,本实施例对此不做任何限制。
进一步的,本实施例中可以将硬盘数据传输命令加入到预设数据传输处理队列(即IO队列),利用预设数据传输处理队列,对队列中的全部硬盘数据传输命令同时进行处理。例如,步骤101之后,存储设备可以将硬盘数据传输命令加入到目标队列;相应的,步骤102和步骤103的硬盘数据传输命令的处理过程可以利用目标队列实现;其中,目标队列为任一预设数据传输处理队列,每个预设数据传输处理队列用于对各自队列中的硬盘数据传输命令同时进行处理,以通过多个预设数据传输处理队列的设置,进一步提高主机设备、存储设备及硬盘设备之间的数据传输效率。
对应的,在读写硬盘设备的过程中,存储设备中设置的队列可以分为管理队列(Admin队列)和预设数据传输处理队列(即IO队列)。管理队列可以专门用于处理与硬盘设备读写的数据无关的命令(即管理命令),如管理命令可以包括硬盘数据传输命令对应的中止(abort)命令;预设数据传输处理队列可以有能力读写硬盘设备的数据。为了提高IO性能,提升数据传输和IO命令处理的速率,本实施例中可以为管理队列分配一个线程,处理管理命令,其他所有线程都分配给IO队列进行IO命令的处理。
相应的,为了防止线程切换而导致出现加锁、解锁和唤醒线程等操作,一个IO队列中IO命令的处理过程中的存储接收、处理同一IO队列的IO命令、存储设备与主机设备和存储设备与硬盘设备之间的数据传输以及记录日志等过程,可以使用同一个线程进行处理,不再进行线程的切换,大大减少因为对临界资源进行加锁和解锁等操作而导致IO性能的降低,同时大大增强了存储设备的稳定性,减少存储操作系统出现问题的概率,增加可维护性。
也就是说,上述将硬盘数据传输命令加入到目标队列的过程,可以为利用目标线程,将硬盘数据传输命令加入到目标队列;其中,每个预设数据传输处理队列设置各自对应的一个预设数据传输处理线程,目标线程为目标队列对应的一个预设数据传输处理线程;相应的,步骤102中可以利用目标线程,根据待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取目标队列中的硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令。
对应的,存储设备可以包括预设数据传输处理线程和一个管理线程,管理线程用于处理管理队列中的管理命令,管理命令包括硬盘数据传输命令对应的中止命令;预设数据传输处理线程包括存储设备中管理线程之外的全部线程,即预设数据传输处理线程的数量可以大于或等于存储设备中管理线程之外的全部线程的数量相同。
进一步的,由于IO命令的处理过程中,命令处理和数据传输等过程需要消耗存储设备的内存。为了兼顾性能和减少资源消耗,本实施例中可以为IO队列(即预设数据传输处理队列)提前分配内存空间,即步骤101之前存储设备可以为目标队列分配预设内存大小的内存空间,如在存储设备的操作系统启动时,为各预设数据传输处理队列分配各自对应的预设内存大小的内存空间,使得存储设备在获取主机设备发送的硬盘数据传输命令(即IO命令)时,可以直接使用为目标队列提前分配的内存空间,提升存储的IO性能;在IO命令处理完成后,内存空间不释放,等待下一IO命令处理,实现一次分配的内存空间的永久使用,即在目标队列中的全部硬盘数据传输命令处理完成后,仅清空内存空间,不释放内存空间。
对应的,上述预设内存大小可以为由设计人员自行设置,如根据存储设备中对应的预设数据传输处理队列的深度(即限定的能够同时处理的硬盘数据传输命令的最大数量),确定各预设数据传输处理队列的内存空间的大小(即预设内存大小)。也就是说,上述为目标队列分配预设内存大小的内存空间的过程,可以包括根据目标队列的深度,确定预设内存大小,如该预设内存大小可以为目标队列的深度与预设内存阈值的乘积;为目标队列分配该预设内存大小的内存空间。
步骤102:根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令。
其中,各存储拆分命令的待传输数据大小均小于预设数据传输阈值,各硬盘拆分命令的待传输数据大小均小于预设硬盘处理阈值;全部存储拆分命令的待传输数据大小之和与全部硬盘拆分命令的待传输数据大小之和均为硬盘数据传输命令的待传输数据大小。
对应的,本实施例中硬盘数据传输命令的待传输数据大小可以为硬盘数据传输命令对应的需要传输的数据块的大小;如硬盘数据传输命令为数据写入命令时,硬盘数据传输命令的待传输数据大小可以为对应的待写入数据的大小;硬盘数据传输命令为数据读取命令时,硬盘数据传输命令的待传输数据大小可以为对应的待读取数据的大小。
其中,本实施例中的预设数据传输阈值可以为预先设置存储设备与主机设备之间的单次数据传输的最大数据量阈值。本实施例中的预设硬盘处理阈值可以为预先设置的存储设备与硬盘设备之间的单次数据传输的最大数据量阈值,即硬盘设备的数据传输能力。对于本实施例中的预设数据传输阈值和预设硬盘处理阈值的具体数值和获取方式设置,可以由设计人员根据实用场景和用户需求自行设置,如预设数据传输阈值可以为根据存储设备与主机设备的网络带宽、网卡的处理能力和存储设备的处理能力,确定的存储设备与主机设备之间的单次数据传输的最大数据量阈值,如512KB。预设硬盘处理阈值可以为根据硬盘设备的数据传输能力,确定的存储设备与硬盘设备之间的单次数据传输的最大数据量阈值,如预设硬盘处理阈值可以为硬盘设备的识别控制器(identify controller)的预设字段的数据传输能力值(如128KB);例如,硬盘设备为NVMe硬盘时,预设硬盘处理阈值可以为NVMe硬盘的identify controller的mdts字段(一种用于限定单次传输的最大大小的字段)的数据传输能力值。
相应的,对于本实施例中存储设备根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令的具体方式,可以由设计人员自行设置,如存储设备可以将硬盘数据传输命令分别拆分为对应的存储拆分命令和硬盘拆分命令;也就是说,本步骤中存储设备可以根据待传输数据大小和预设数据传输阈值,获取硬盘数据传输命令对应的存储拆分命令;根据待传输数据大小和预设硬盘处理阈值,获取硬盘数据传输命令对应的硬盘拆分命令。存储设备也可以先将硬盘数据传输命令拆分为对应的存储拆分命令,再将各存储拆分命令拆分为各自对应的硬盘拆分命令;也就是说,本步骤中存储设备可以根据待传输数据大小和预设数据传输阈值,获取硬盘数据传输命令对应的存储拆分命令;根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令。
对应的,对于上述硬盘数据传输命令与存储拆分命令的具体拆分方式,可以由设计人员自行设置,如存储设备可以为根据所要拆分的命令(即硬盘数据传输命令或存储拆分命令)的待传输数据大小、数据起始地址和相应阈值(如预设数据传输阈值或预设硬盘处理阈值),对该命令进行拆分。例如,上述根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令的过程,可以包括:获取当前存储拆分命令的待传输数据大小、数据起始地址和预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一存储拆分命令;根据硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
需要说明的是,本实施例中全部存储拆分命令的待传输数据大小之和可以为硬盘数据传输命令的待传输数据大小;全部硬盘拆分命令的待传输数据大小之和可以为硬盘数据传输命令的待传输数据大小。相应的,在采用上述根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令的情况下,任一存储拆分命令对应的全部硬盘拆分命令的待传输数据大小之和可以为该存储拆分命令的待传输数据大小。
对应的,本步骤中存储设备还可以记录硬盘数据传输命令与各存储拆分命令的对应关系和硬盘数据传输命令与各硬盘拆分命令的对应关系,以使原命令(即硬盘数据传输命令)和拆分后的命令(即存储拆分命令和硬盘拆分命令)能够相互绑定,保证后续中止(abort)命令的正常运行。对于上述记录硬盘数据传输命令与各存储拆分命令的对应关系和硬盘数据传输命令与各硬盘拆分命令的对应关系的具体方式,可以由设计人员自行设置,如在采用上述根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令的情况下,存储设备可以记录硬盘数据传输命令与各存储拆分命令的对应关系和各存储拆分命令与各自对应的各硬盘拆分命令的对应关系,以通过各存储拆分命令与各自对应的各硬盘拆分命令的对应关系的记录,体现硬盘数据传输命令与各硬盘拆分命令的对应关系。
相应的,对于上述记录硬盘数据传输命令与各存储拆分命令的对应关系和硬盘数据传输命令与各硬盘拆分命令的对应关系的具体记录内容,可以由设计人员自行设置,如存储设备可以设置各预设数据传输处理队列各自的存储拆分命令表和硬盘拆分命令表,存储拆分命令表可以用于保存目标队列中的硬盘数据传输命令拆分得到的存储拆分命令和各存储拆分命令各自的第一上级指针,以使各存储拆分命令可以通过各自的第一上级指针查找到拆分前的硬盘数据传输命令。硬盘拆分命令表可以用于保存硬盘数据传输命令或存储拆分命令拆分得到的硬盘拆分命令和各硬盘拆分命令各自的第二上级指针;以使各硬盘拆分命令可以通过各自的第二上级指针查找到拆分前的硬盘数据传输命令或存储拆分命令。相应的,存储设备可以为拆分前的命令(如硬盘数据传输命令和存储拆分命令)配置指向其拆分后的命令(即存储拆分命令和硬盘拆分命令)的两种拆分指针,分别指向两种拆分后的命令在拆分IO表(即存储拆分命令表和硬盘拆分命令表)中的起始位置,避免对拆分IO表的遍历。
例如,在采用上述根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令的情况下,步骤102中存储设备可以利用目标队列的存储拆分命令表,保存存储拆分命令和各存储拆分命令各自的第一上级指针;其中,第一上级指针包括目标队列的队列标识(queue id)和硬盘数据传输命令的唯一标识(cid);利用目标队列的硬盘拆分命令表,保存硬盘拆分命令和各硬盘数据传输命令各自的第二上级指针;其中,第二上级指针包括目标队列的队列标识和对应的存储拆分命令的唯一标识;配置硬盘数据传输命令的第一拆分指针和各存储拆分命令各自的第二拆分指针;其中,第一拆分指针包括存储拆分命令表中存储拆分命令的起始位置标识,第二拆分指针包括硬盘拆分命令表中对应的硬盘拆分命令的起始位置标识。也就是说,硬盘数据传输命令、存储拆分命令和硬盘拆分命令均可以设置目标队列的队列标识和各自的唯一标识,硬盘数据传输命令的唯一标识可以为其在目标队列中的位置标识。
步骤103:根据存储拆分命令和硬盘拆分命令,分别与主机设备和硬盘设备进行数据传输,完成硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取。
可以理解的是,本步骤中存储设备可以利用存储拆分命令,与主机设备进行数据传输,如从主机设备请求的数据写入命令对应的待写入数据的传输或向主机设备发送的数据读取命令对应的待读取数据的传输;利用存储拆分命令,与硬盘设备进行数据传输,如向硬盘设备发送的数据写入命令对应的待写入数据的传输或从硬盘设备请求的数据读取命令对应的待读取数据的传输;完成数据写入命令对应的硬盘数据写入或数据读取命令对应的硬盘数据读取。
对应的,本步骤中硬盘数据传输命令为数据写入命令时,存储设备可以根据各存储拆分命令,依次从主机设备请求硬盘数据传输命令对应的待写入数据;根据各硬盘拆分命令,依次将硬盘数据传输命令对应的待写入数据写入到硬盘设备。如图2所示,存储设备接收到主机设备发送的命令(写),即数据写入命令,解析出需要写入的数据块的大小(即待传输数据大小),根据预设数据传输阈值,向主机设备请求多轮数据,然后根据预设硬盘处理阈值,将请求得到的数据拆分进行落盘。
相应的,本步骤中硬盘数据传输命令为数据读取命令时,存储设备可以根据各硬盘拆分命令,依次从硬盘设备读取硬盘数据传输命令对应的待读取数据;根据各存储拆分命令,依次将硬盘数据传输命令对应的待读取数据传输到主机设备。如图3所示,存储设备接收到主机设备发送的命令(读),即数据读取命令,根据预设硬盘处理阈值,将该命令拆分成多个读取数据的任务,然后,将读取的数据汇总在一起,根据预设数据传输阈值,将从硬盘设备中读取的数据发送给主机设备。
需要说明的是,本实施例并不限定步骤102和步骤103的具体先后顺序,如可以如本实施例所示先进行步骤102再进行步骤103,也可以在步骤102的过程中进行步骤103,如在获取数据读取命令对应的存储拆分命令时,可以直接从主机设备请求相应的数据,不需要等待数据读取命令对应的硬盘拆分命令的拆分。
进一步的,因为硬盘设备和驱动故障等原因,存储设备在传输数据的过程中,如果下发到硬盘设备的IO很长时间没有返回到主机设备,主机会发送abort(中止)命令到存储设备,存储设备接收到abort命令后,根据原IO命令找到对应的拆分后的IO命令,让存储设备停止处理对应的IO,返回主机设备相应的状态码;同时,如果IO命令已经提交给硬盘设备,则将abort命令也拆分成多个对应的abort命令,提交给硬盘设备进行处理,abort掉对应的IO命令。也就是说,本实施例中存储设备可以获取主机设备发送的硬盘数据传输命令对应的中止命令;根据该中止命令,查找该硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,并停止查找到的存储拆分命令和硬盘拆分命令的处理。如图3所示,abort命令对应的IO命令(即硬盘数据传输命令)为数据读取命令时,由于存储设备有能力停止数据读取命令的处理,可以查找找到拆分后的IO命令,停止处理,然后将原IO命令返回状态码到主机;如图2所示,abort命令对应的IO命令(即硬盘数据传输命令)为数据写入命令时,若IO命令已经落盘,因为存储设备无法之间停止处理已经落盘的io命令,可以将abort命令也拆分成多个abort命令,下发到硬盘设备进行处理,等待硬盘设备处理完abort命令后,再找到对应的原abort命令,返回给主机相应的状态码。
也就是说,硬盘数据传输命令为数据写入命令时,存储设备可以获取主机设备发送的硬盘数据传输命令对应的中止命令;根据硬盘拆分命令,获取中止命令对应的中止拆分命令;其中,每个中止命令各自对应一个硬盘拆分命令;将中止拆分命令发送到硬盘设备;获取硬盘设备返回的全部中止拆分命令对应的拆分状态码;根据拆分状态码,生成并向主机设备发送中止命令对应的状态码。
本实施例中,本发明实施例通过根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,能够对存储设备和主机设备之间的大IO采用多轮数据传输,且对存储设备与硬盘设备之间的大IO采用拆分下发的方式传递给硬盘设备,减少了主机设备下发IO命令的次数,提高了主机设备、存储设备及硬盘设备之间的数据传输效率。
基于上一实施例,本发明还提供了另一种存储设备的数据传输方法,以提高存储系统的性能,并增强存储设备的稳定性,保证数据的安全性。具体的,请参考图4,图4为本发明实施例所提供的另一种存储设备的数据传输方法的流程图。该方法可以包括:
步骤201:存储设备获取主机设备发送的硬盘数据传输命令;其中,硬盘数据传输命令为数据写入命令或数据读取命令。
其中,本步骤与步骤101相似,在此不再赘述。
步骤202:利用目标线程,将硬盘数据传输命令加入到目标队列。
其中,每个预设数据传输处理队列设置各自对应的一个预设数据传输处理线程,目标线程为目标队列对应的一个预设数据传输处理线程;目标队列为任一预设数据传输处理队列,每个预设数据传输处理队列用于对各自队列中的硬盘数据传输命令同时进行处理。
可以理解的是,本实施例中存储设备可以包括预设数据传输处理线程和一个管理线程,管理线程用于处理管理队列中的管理命令(如中止命令);预设数据传输处理线程包括存储设备中管理线程之外的全部线程。本实施例中通过每个预设数据传输处理队列各自对应的一个预设数据传输处理线程的设置,能够避免线程切换而导致出现加锁、解锁、唤醒线程等操作,从而提高io性能,大大增强了存储的稳定性,减少存储操作系统出现问题的概率。
进一步的,本实施例中可以预先为各预设数据传输处理队列(即IO队列)分配各自对应的预设内存大小的内存空间,使存储设备接收到IO命令(即硬盘数据传输命令)后,可以直接使用目标队列的内存空间进行IO命令的处理,不需要再次分配内存空间,提升存储设备的IO性能。预设内存大小可以根据预设数据传输处理队列的深度(即限定的能够同时处理的硬盘数据传输命令的最大数量)进行分配,避免造成内存资源的浪费;也就是说,存储设备中的没有处理完成的IO命令不会超过IO队列的深度;如果存储设备分配给该IO队列的内存空间全部使用,主机设备提交给存储设备新的IO命令,只能等待其它IO命令处理完成后,再分配给新的IO命令;通过内存空间的分配就可以完成存储设备的IO队列的规格限制,不需再做其它处理。
对应的,本步骤中的目标线程可以为对应的预设数据传输处理队列中的硬盘数据传输命令的数量未达到预设数据传输处理队列的深度的预设数据传输处理线程。
步骤203:根据目标队列中硬盘数据传输命令的待传输数据大小和预设数据传输阈值,获取硬盘数据传输命令对应的存储拆分命令。
可以理解的是,本步骤中存储设备可以利用目标线程,根据目标队列中硬盘数据传输命令的待传输数据大小和预设数据传输阈值,获取硬盘数据传输命令对应的存储拆分命令。本实施例中的预设数据传输阈值可以为存储设备与主机设备之间单次数据传输的最大数据量阈值,如512KB。如果主机设备下发的硬盘数据传输命令中指定的数据块的长度(即待传输数据大小)大于预设数据传输阈值,需要存储设备对硬盘数据传输命令进行拆分,得到相应的存储拆分命令,以进行多轮数据传输。例如,预设数据传输阈值为512KB时,主机设备和存储设备之间需要传输514KB的数据,则主机设备和存储设备之间需要传输两次:第一次传输512KB,第二次传输2 KB。
举例来说,存储设备可以利用目标线程,解析出硬盘数据传输命令的待传输数据大小(即传输的数据长度字段);判断待传输数据大小是否大于512KB(预设数据传输阈值)。若大于预设数据传输阈值,则硬盘数据传输命令为数据读取命令时,依次拆分出待传输数据大小为512KB和最后小于512KB的存储拆分命令,将拆分出的存储拆分命令再次拆分得到对应的硬盘拆分命令提交给硬盘设备处理,从硬盘设备读取数据后,按照拆分出的存储拆分命令依次返回给主机设备;硬盘数据传输命令为写入读取命令时,依次拆分出待传输数据大小为512KB和最后小于512KB的存储拆分命令,向主机设备请求数据,然后将拆分出的存储拆分命令再次拆分得到对应的硬盘拆分命令提交给硬盘设备处理提交到硬盘设备,以将从主机设备请求的数据传输到硬盘设备进行落盘。
对应的,本步骤中还可以记录硬盘数据传输命令与存储拆分命令的对应关系。例如,假设一个预设数据传输处理队列的深度是n,即一个预设数据传输处理队列只能同时处理n个硬盘数据传输命令。存储设备和主机设备之间最多支持4 MB的数据传输,即一个硬盘数据传输命令最多拆分4 MB /512KB=8个存储拆分命令;可以设计大小是8×n的表(即存储拆分命令表)保存拆分后的存储拆分命令,即各预设数据传输处理队列各自的存储拆分命令表的规格可以为存储设备和主机设备之间的数据传输阈值(如4MB)与预设数据传输阈值(如512KB)之商与预设数据传输处理队列的深度(n)的乘积。相应的,可以采用相似的方式设置硬盘拆分命令表,以保存各存储拆分命令与各自拆分后的硬盘拆分命令。为了方便找到拆分后的命令,提高性能,可以为这两种拆分前的命令设计2个指针,分别指向拆分后的命令在各自表中的起始位置,从而不需要再遍历整个表。为了方便拆分后的命令和原命令能够相互找到,为拆分后的命令也可以设置一个指针,指向原命令。
步骤204:根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令。
可以理解的是,本步骤中存储设备可以利用目标线程,根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令。本实施例中的预设硬盘处理阈值可以为存储设备与硬盘设备之间单次数据传输的最大数据量阈值,如硬盘设备的数据传输能力;不同硬盘设备的读写数据的能力有所不同,根据硬盘设备的数据传输能力,存储设备可以将大于硬盘设备的数据传输能力的存储拆分命令再依次拆分成小于或等于硬盘设备的数据传输能力的硬盘拆分命令,以进行数据读取或落盘处理。
举例来说,存储设备可以利用目标线程,存储读取硬盘设备的数据传输能力作为预设硬盘处理阈值,例如NVMe硬盘的数据传输能力可以在identify controller的mdts字段。根据预设硬盘处理阈值,将存储拆分命令拆分成硬盘拆分命令,如读取存储拆分命令的数据起始地址和待传输数据大小(即数据总长度);根据该存储拆分命令的数据起始地址和待传输数据大小以及预设硬盘处理阈值(即拆分后命令的最大数据长度),计算出该存储拆分命令对应的各硬盘拆分命令的数据起始地址和待传输数据大小,并更新各硬盘拆分命令的cid(唯一标识,用于区分同一IO队列中的命令)。
也就是说,本步骤中存储设备可以获取当前存储拆分命令的待传输数据大小、数据起始地址和预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一存储拆分命令,当前存储拆分命令的待传输数据大小大于预设硬盘处理阈值;根据硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
相应的,各存储拆分命令各自拆分后的硬盘拆分命令可以保存在中止拆分命令表,该表中可以包括各硬盘拆分命令各自对应的硬盘数据传输命令所在的预设数据传输处理队列的队列标识(queue id)和各自的唯一标识(cid)。因为,存储设备无法之间停止处理已经落盘的硬盘拆分命令,所以,还可以对应设置中止拆分命令表,根据拆分得到的硬盘拆分命令将中止命令也拆分成多个中止拆分命令在中止拆分命令表中保存,中止拆分命令可以与硬盘拆分命令一一对应,然后将中止拆分命令下发到硬盘设备,等待硬盘设备处理完中止拆分命令后,再利用中止拆分命令表找到对应的拆分前的中止命令,返回给主机设备相应的状态码。
也就是说,本实施例所提供的方法还可以包括:获取主机设备发送的硬盘数据传输命令(如数据写入命令)对应的中止命令;根据硬盘拆分命令,获取中止命令对应的中止拆分命令;其中,每个中止命令各自对应一个硬盘拆分命令;将中止拆分命令发送到硬盘设备;获取硬盘设备返回的全部中止拆分命令对应的拆分状态码;根据拆分状态码,生成并向主机设备发送中止命令对应的状态码。
步骤205:根据存储拆分命令和硬盘拆分命令,分别与主机设备和硬盘设备进行数据传输,完成硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取。
其中,步骤205与步骤103相似,在此不再赘述。
相应于上面的方法实施例,本发明实施例还提供了一种存储设备的数据传输装置,下文描述的一种存储设备的数据传输装置与上文描述的一种存储设备的数据传输方法可相互对应参照。
请参考图5,图5为本发明实施例所提供的一种存储设备的数据传输装置的结构框图。该装置应用于存储设备,可以包括:
命令获取模块10,用于获取主机设备发送的硬盘数据传输命令;其中,硬盘数据传输命令为数据写入命令或数据读取命令;
命令拆分模块20,用于根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各存储拆分命令的待传输数据大小均小于预设数据传输阈值,各硬盘拆分命令的待传输数据大小均小于预设硬盘处理阈值;全部存储拆分命令的待传输数据大小之和与全部硬盘拆分命令的待传输数据大小之和均为硬盘数据传输命令的待传输数据大小;
数据传输模块30,用于根据存储拆分命令和硬盘拆分命令,分别与主机设备和硬盘设备进行数据传输,完成硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取。
在一些实施例中,命令拆分模块20可以包括:
第一拆分子模块,用于根据待传输数据大小和预设数据传输阈值,获取硬盘数据传输命令对应的存储拆分命令;
第二拆分子模块,用于根据各存储拆分命令的待传输数据大小和预设硬盘处理阈值,获取各存储拆分命令各自对应的硬盘拆分命令。
在一些实施例中,第二拆分子模块可以包括:
计算单元,用于获取当前存储拆分命令的待传输数据大小、数据起始地址和预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一存储拆分命令;
生成单元,用于根据硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
在一些实施例中,硬盘数据传输命令为数据写入命令时,数据传输模块30可以包括:
第一主机通信子模块,用于根据各存储拆分命令,依次从主机设备请求硬盘数据传输命令对应的待写入数据;
第一硬盘通信子模块,用于根据各硬盘拆分命令,依次将硬盘数据传输命令对应的待写入数据写入到硬盘设备。
在一些实施例中,该装置还可以包括:
中止获取模块,用于获取主机设备发送的硬盘数据传输命令对应的中止命令;
中止拆分模块,用于根据硬盘拆分命令,获取中止命令对应的中止拆分命令;其中,每个中止命令各自对应一个硬盘拆分命令;
中止下发模块,用于将中止拆分命令发送到硬盘设备;
中止反馈模块,用于获取硬盘设备返回的全部中止拆分命令对应的拆分状态码;
反馈发送模块,用于根据拆分状态码,生成并向主机设备发送中止命令对应的状态码。
在一些实施例中,硬盘数据传输命令为数据读取命令时,数据传输模块30可以包括:
第二硬盘通信子模块,用于根据各硬盘拆分命令,依次从硬盘设备读取硬盘数据传输命令对应的待读取数据;
第二主机通信子模块,用于根据各存储拆分命令,依次将硬盘数据传输命令对应的待读取数据传输到主机设备。
在一些实施例中,预设硬盘处理阈值为硬盘设备的识别控制器的预设字段的数据传输能力值。
在一些实施例中,该装置还可以包括:
队列模块,用于将硬盘数据传输命令加入到目标队列;其中,目标队列为任一预设数据传输处理队列,每个预设数据传输处理队列用于对各自队列中的硬盘数据传输命令同时进行处理。
在一些实施例中,队列模块可以具体用于利用目标线程,将硬盘数据传输命令加入到目标队列;其中,每个预设数据传输处理队列设置各自对应的一个预设数据传输处理线程,目标线程为目标队列对应的一个预设数据传输处理线程;
对应的,命令拆分模块20可以具体用于利用目标线程,根据待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取目标队列中的硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令。
在一些实施例中,存储设备包括预设数据传输处理线程和一个管理线程,管理线程用于处理管理队列中的管理命令,管理命令包括硬盘数据传输命令对应的中止命令;预设数据传输处理线程包括存储设备中管理线程之外的全部线程。
在一些实施例中,命令拆分模块20可以包括:
第一保存子模块,用于利用目标队列的存储拆分命令表,保存存储拆分命令和各存储拆分命令各自的第一上级指针;其中,第一上级指针包括目标队列的队列标识和硬盘数据传输命令的唯一标识;
第二保存子模块,用于利用目标队列的硬盘拆分命令表,保存硬盘拆分命令和各硬盘数据传输命令各自的第二上级指针;其中,第二上级指针包括目标队列的队列标识和对应的存储拆分命令的唯一标识;
配置子模块,用于利配置硬盘数据传输命令的第一拆分指针和各存储拆分命令各自的第二拆分指针;其中,第一拆分指针包括存储拆分命令表中存储拆分命令的起始位置标识,第二拆分指针包括硬盘拆分命令表中对应的硬盘拆分命令的起始位置标识。
在一些实施例中,该装置还可以包括:
内存配置模块,用于在获取主机设备发送的硬盘数据传输命令之前,为目标队列分配预设内存大小的内存空间;
对应的,该装置还可以包括:
内存清空模块,用于在目标队列中的全部硬盘数据传输命令处理完成后,清空内存空间,不释放内存空间。
本实施例中,本发明实施例通过命令拆分模块20根据硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,能够对存储设备和主机设备之间的大IO采用多轮数据传输,且对存储设备与硬盘设备之间的大IO采用拆分下发的方式传递给硬盘设备,减少了主机设备下发IO命令的次数,提高了主机设备、存储设备及硬盘设备之间的数据传输效率。
相应于上面的方法实施例,本发明实施例还提供了一种存储设备,下文描述的一种存储设备与上文描述的一种存储设备的数据传输方法可相互对应参照。
请参考图6,图6为本发明实施例所提供的一种存储设备的结构示意图。该存储设备可以包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例所提供的存储设备的数据传输方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种存储设备的数据传输系统,下文描述的一种存储设备的数据传输系统与上文描述的一种存储设备的数据传输方法可相互对应参照。
一种存储设备的数据传输系统,包括:如上述实施例所提供的存储设备以及与存储设备连接的主机设备和硬盘设备。
其中,本实施例中所提供的主机设备可以为计算机设备或服务器设备。硬盘设备可以为NVMe硬盘,或如HDD硬盘(机械硬盘)的其他硬盘。
相应于上面的方法实施例,本发明实施例还提供了一种计算机可读存储介质,下文描述的一种计算机可读存储介质与上文描述的一种存储设备的数据传输方法可相互对应参照。
请参考图7,图7为本发明实施例所提供的一种计算机可读存储介质的结构示意图。该计算机可读存储介质40上存储有计算机程序41,计算机程序41被处理器执行时实现如上述方法实施例所提供的存储设备的数据传输方法的步骤。
该计算机可读存储介质40具体可以为U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的存储介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、系统及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上对本发明所提供的一种存储设备的数据传输方法、装置、系统及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (14)
1.一种存储设备的数据传输方法,其特征在于,包括:
存储设备获取主机设备发送的硬盘数据传输命令;其中,所述硬盘数据传输命令为数据写入命令或数据读取命令;
根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各所述存储拆分命令的待传输数据大小均小于所述预设数据传输阈值,各所述硬盘拆分命令的待传输数据大小均小于所述预设硬盘处理阈值;全部所述存储拆分命令的待传输数据大小之和与全部所述硬盘拆分命令的待传输数据大小之和均为所述硬盘数据传输命令的待传输数据大小;
根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取;
其中,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
根据所述待传输数据大小、所述预设数据传输阈值和所述预设硬盘处理阈值,将所述硬盘数据传输命令分别拆分为对应的存储拆分命令和硬盘拆分命令;或者,
根据所述待传输数据大小和所述预设数据传输阈值,获取所述硬盘数据传输命令对应的存储拆分命令;
根据各所述存储拆分命令的待传输数据大小和所述预设硬盘处理阈值,获取各所述存储拆分命令各自对应的硬盘拆分命令;
对应的,所述根据各所述存储拆分命令的待传输数据大小和所述预设硬盘处理阈值,获取各所述存储拆分命令各自对应的硬盘拆分命令,包括:
获取当前存储拆分命令的待传输数据大小、数据起始地址和所述预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一所述存储拆分命令;
根据所述硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
2.根据权利要求1所述的存储设备的数据传输方法,其特征在于,所述硬盘数据传输命令为所述数据写入命令时,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取,包括:
根据各所述存储拆分命令,依次从所述主机设备请求所述硬盘数据传输命令对应的待写入数据;
根据各所述硬盘拆分命令,依次将所述硬盘数据传输命令对应的待写入数据写入到所述硬盘设备。
3.根据权利要求2所述的存储设备的数据传输方法,其特征在于,还包括:
获取所述主机设备发送的所述硬盘数据传输命令对应的中止命令;
根据所述硬盘拆分命令,获取所述中止命令对应的中止拆分命令;其中,每个所述中止命令各自对应一个硬盘拆分命令;
将所述中止拆分命令发送到所述硬盘设备;
获取所述硬盘设备返回的全部所述中止拆分命令对应的拆分状态码;
根据所述拆分状态码,生成并向所述主机设备发送所述中止命令对应的状态码。
4.根据权利要求1所述的存储设备的数据传输方法,其特征在于,所述硬盘数据传输命令为所述数据读取命令时,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取,包括:
根据各所述硬盘拆分命令,依次从所述硬盘设备读取所述硬盘数据传输命令对应的待读取数据;
根据各所述存储拆分命令,依次将所述硬盘数据传输命令对应的待读取数据传输到所述主机设备。
5.根据权利要求1所述的存储设备的数据传输方法,其特征在于,所述预设硬盘处理阈值为所述硬盘设备的识别控制器的预设字段的数据传输能力值。
6.根据权利要求1至5任一项所述的存储设备的数据传输方法,其特征在于,所述存储设备获取主机设备发送的硬盘数据传输命令之后,还包括:
将所述硬盘数据传输命令加入到目标队列;其中,所述目标队列为任一预设数据传输处理队列,每个所述预设数据传输处理队列用于对各自队列中的硬盘数据传输命令同时进行处理。
7.根据权利要求6所述的存储设备的数据传输方法,其特征在于,所述将所述硬盘数据传输命令加入到目标队列,包括:
利用目标线程,将所述硬盘数据传输命令加入到目标队列;其中,每个所述预设数据传输处理队列设置各自对应的一个预设数据传输处理线程,所述目标线程为所述目标队列对应的一个预设数据传输处理线程;
对应的,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
利用所述目标线程,根据所述待传输数据大小、所述预设数据传输阈值和所述预设硬盘处理阈值,获取所述目标队列中的所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令。
8.根据权利要求7所述的存储设备的数据传输方法,其特征在于,所述存储设备包括所述预设数据传输处理线程和一个管理线程,所述管理线程用于处理管理队列中的管理命令,所述管理命令包括所述硬盘数据传输命令对应的中止命令;所述预设数据传输处理线程包括所述存储设备中所述管理线程之外的全部线程。
9.根据权利要求6所述的存储设备的数据传输方法,其特征在于,所述根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令,包括:
利用所述目标队列的存储拆分命令表,保存所述存储拆分命令和各所述存储拆分命令各自的第一上级指针;其中,所述第一上级指针包括所述目标队列的队列标识和所述硬盘数据传输命令的唯一标识;
利用所述目标队列的硬盘拆分命令表,保存所述硬盘拆分命令和各所述硬盘数据传输命令各自的第二上级指针;其中,所述第二上级指针包括所述目标队列的队列标识和对应的存储拆分命令的唯一标识;
配置所述硬盘数据传输命令的第一拆分指针和各所述存储拆分命令各自的第二拆分指针;其中,所述第一拆分指针包括所述存储拆分命令表中所述存储拆分命令的起始位置标识,所述第二拆分指针包括所述硬盘拆分命令表中对应的硬盘拆分命令的起始位置标识。
10.根据权利要求6所述的存储设备的数据传输方法,其特征在于,所述存储设备获取主机设备发送的硬盘数据传输命令之前,还包括:
所述存储设备为所述目标队列分配预设内存大小的内存空间;
对应的,所述根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取之后,还包括:
在所述目标队列中的全部硬盘数据传输命令处理完成后,清空所述内存空间,不释放所述内存空间。
11.一种存储设备的数据传输装置,其特征在于,应用于存储设备,包括:
命令获取模块,用于获取主机设备发送的硬盘数据传输命令;其中,所述硬盘数据传输命令为数据写入命令或数据读取命令;
命令拆分模块,用于根据所述硬盘数据传输命令的待传输数据大小、预设数据传输阈值和预设硬盘处理阈值,获取所述硬盘数据传输命令对应的存储拆分命令和硬盘拆分命令;其中,各所述存储拆分命令的待传输数据大小均小于所述预设数据传输阈值,各所述硬盘拆分命令的待传输数据大小均小于所述预设硬盘处理阈值;全部所述存储拆分命令的待传输数据大小之和与全部所述硬盘拆分命令的待传输数据大小之和均为所述硬盘数据传输命令的待传输数据大小;
数据传输模块,用于根据所述存储拆分命令和所述硬盘拆分命令,分别与所述主机设备和硬盘设备进行数据传输,完成所述硬盘数据传输命令对应的硬盘数据写入或硬盘数据读取;
其中,所述命令拆分模块,包括:
直接拆分子模块,用于根据所述待传输数据大小、所述预设数据传输阈值和所述预设硬盘处理阈值,将所述硬盘数据传输命令分别拆分为对应的存储拆分命令和硬盘拆分命令;或者,
第一拆分子模块,用于根据所述待传输数据大小和所述预设数据传输阈值,获取所述硬盘数据传输命令对应的存储拆分命令;
第二拆分子模块,用于根据各所述存储拆分命令的待传输数据大小和所述预设硬盘处理阈值,获取各所述存储拆分命令各自对应的硬盘拆分命令;
对应的,所述第二拆分子模块包括:
计算单元,用于获取当前存储拆分命令的待传输数据大小、数据起始地址和所述预设硬盘处理阈值,计算当前存储拆分命令对应的各硬盘拆分命令的硬盘拆分数据大小和数据起始地址;其中,当前存储拆分命令为任一所述存储拆分命令;
生成单元,用于根据所述硬盘拆分命令的硬盘拆分数据大小和数据起始地址,生成当前存储拆分命令对应的各硬盘拆分命令。
12.一种存储设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至10任一项所述存储设备的数据传输方法的步骤。
13.一种存储设备的数据传输系统,其特征在于,包括:如权利要求12所述的存储设备以及与所述存储设备连接的主机设备和硬盘设备。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述存储设备的数据传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311617807.5A CN117331511B (zh) | 2023-11-30 | 2023-11-30 | 一种存储设备及其数据传输方法、装置、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311617807.5A CN117331511B (zh) | 2023-11-30 | 2023-11-30 | 一种存储设备及其数据传输方法、装置、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117331511A CN117331511A (zh) | 2024-01-02 |
CN117331511B true CN117331511B (zh) | 2024-02-23 |
Family
ID=89293740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311617807.5A Active CN117331511B (zh) | 2023-11-30 | 2023-11-30 | 一种存储设备及其数据传输方法、装置、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117331511B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103502925A (zh) * | 2012-12-21 | 2014-01-08 | 华为技术有限公司 | 一种监控记录管理方法与装置 |
CN104834478A (zh) * | 2015-03-25 | 2015-08-12 | 中国科学院计算技术研究所 | 一种基于异构混合存储设备的数据写入及读取方法 |
-
2023
- 2023-11-30 CN CN202311617807.5A patent/CN117331511B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103502925A (zh) * | 2012-12-21 | 2014-01-08 | 华为技术有限公司 | 一种监控记录管理方法与装置 |
CN104834478A (zh) * | 2015-03-25 | 2015-08-12 | 中国科学院计算技术研究所 | 一种基于异构混合存储设备的数据写入及读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117331511A (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10152501B2 (en) | Rollover strategies in a n-bit dictionary compressed column store | |
US10885030B2 (en) | Database management system and computer system having first and second query execution parts which execute database operations in parallel | |
CN103970520A (zh) | MapReduce架构中的资源管理方法、装置和架构系统 | |
JP2012523619A (ja) | データストレージデバイスのコマンド及び割り込みのグループ化 | |
CN105956035A (zh) | 一种文件存储方法及装置 | |
CN105446813A (zh) | 一种资源分配的方法及装置 | |
US9448920B2 (en) | Granting and revoking supplemental memory allocation requests | |
US20190026317A1 (en) | Memory use in a distributed index and query system | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN111339078A (zh) | 数据实时存储方法、数据查询方法、装置、设备、介质 | |
CN110858162A (zh) | 内存管理方法及装置、服务器 | |
CN108932112B (zh) | 一种固态颗粒的数据读写方法、装置、设备及介质 | |
CN108132759B (zh) | 一种文件系统中管理数据的方法和装置 | |
CN117331511B (zh) | 一种存储设备及其数据传输方法、装置、系统和存储介质 | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN115658625B (zh) | 数据解压系统、图形处理系统、装置、设备及解压方法 | |
EP3293625A1 (en) | Method and device for accessing file, and storage system | |
CN115658328A (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN115586943A (zh) | 一种智能网卡虚拟机脏页的硬件标记实现方法 | |
CN115878910A (zh) | 线路查询方法、装置和存储介质 | |
CN111104435B (zh) | 一种元数据组织方法、装置、设备及计算机可读存储介质 | |
CN1333346C (zh) | 一种访问文件的方法 | |
CN117055820B (zh) | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 | |
CN114296639B (zh) | 命令处理方法及闪存设备 | |
CN115543222B (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 |