CN110119248B - 数据读写命令的控制方法、存储设备和系统 - Google Patents
数据读写命令的控制方法、存储设备和系统 Download PDFInfo
- Publication number
- CN110119248B CN110119248B CN201910243001.1A CN201910243001A CN110119248B CN 110119248 B CN110119248 B CN 110119248B CN 201910243001 A CN201910243001 A CN 201910243001A CN 110119248 B CN110119248 B CN 110119248B
- Authority
- CN
- China
- Prior art keywords
- data
- storage space
- read
- write command
- unit
- 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
Images
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0656—Data buffering arrangements
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Abstract
本发明实施例提供一种NVMe over Fabric架构中数据读写命令的控制方法、设备和系统,以解决现有技术中因数据读写命令所要传输的数据大,存储设备中的缓存单元因存储空间不足而导致的数据读写命令执行失败的问题。根据本发明实施例提供的方法,数据处理单元根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度,并依次将所述数据读写命令所要传输的数据迁移到目的地址所对应的存储空间中。解决了因数据读写命令所要传输的数据大,缓存单元无法缓存需要传输的数据而导致的数据读写命令无法被执行的问题。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种基于Fabric的非易失性高速传输总线NVMe,NVMe over Fabric,架构中数据读写命令的控制方法、存储设备和系统。
背景技术
非易失性高速传输总线(英文:NVMe,non-volatile memory express)是一种控制器接口标准,统一了通过快速外围部件互连(英文:PCIe,Peripheral ComponentInterconnect Express)总线进行连接的NVMe设备和主机(英文:Host)之间的队列(英文:Queue)传输机制,优化了队列接口等。
已经发布的PCIe架构的NVMe标准在产业界取得了巨大的成功之后,业界很快希望将NVMe标准扩展到数据中心领域。但受限于数据中心领域没有大量现成的PCIe网络以及PCIe协议本身的缺陷(扩展性、远距离连接等),产业界正在推动将NVMe协议运行在iWrap,基于融合以太的远程内存直接访问协议(英文:ROCE,remote direct memory access overConverged Ethernet),Infiniband,光纤通道(英文:FC,Fiber Channel),Omni-Path等网络上,以提供更灵活的更广泛的应用。业界将NVMe协议运行在iWrap、ROCE、Infiniband、FC和Omni-Path等网络上的应用称之为NVMe over Fabric(简称NOF)。
在NVMe over Fabric的架构中,Host表示主机,主机负责发起数据的读写;Target表示目标存储设备,负责接收并且执行Host发送的命令。当Target接收到Host发送的WriteCommand之后,解析Write Command中的内容得到Write Command需要传输的数据长度,并在Target的网卡内存中分配对应的缓存空间,用于缓存Host待传输的数据。Target的网卡分配好缓存数据所需的存储空间后,Host将数据传输到被分配的网卡内存的缓存空间中。之后,缓存在网卡内存的缓存空间的数据被写入Target的硬盘中。当Host发送Read Command时,实现过程类似,即需要将Target硬盘中的数据缓存在Target的网卡内存的缓存空间中,再将缓存在缓存空间中的数据,发送给Host。
在具体的业务实现时,可能会出现Host发送的一个Write Command或一个ReadCommand需要传输的数据量很大,超过了Target的网卡内存的最大缓存空间,导致Target的网卡内存无法缓存需要传输的数据而造成数据读写命令执行的失败。
发明内容
本发明实施例提供一种NVMe over Fabric架构中数据读写命令的控制方法、设备和系统,以解决现有技术中因数据读写命令所要传输的数据大,存储设备中的缓存单元因存储空间不足而导致的数据读写命令执行失败的问题。
一方面,本发明实施例提供了一种NVMe over Fabric架构中控制设备与存储设备之间数据读写命令的控制方法,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其中,所述方法包括:
所述数据处理单元接收所述控制设备发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度;
所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述方法,所述数据处理单元根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度,并依次将所述数据读写命令所要传输的数据迁移到目的地址所对应的存储空间中。解决了因数据读写命令所要传输的数据大,缓存单元无法缓存需要传输的数据而导致的数据读写命令无法被执行的问题。
可选的,所述NVMe over Fabric架构中,所述控制设备与所述存储设备之间可以通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络实现连接和通信。
所述存储设备中的数据处理单元可以是网卡、独立的FPGA芯片或所述存储设备中的中央处理器(英文:CPU,central processing unit)来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存中的至少两个组成的缓存资源池来实现来实现。
可选的,所述第一存储空间的大小是固定的,所述第一长度也是固定的。这样,所述数据处理单元每次获取的所述第一长度的数据大小或长度是固定的。这样,数据处理单元每次按照固定的大小分配所述第一存储空间,数据处理单元的实现方式简单,容易实现。
可选的,所述第一存储空间的大小也可以是变化的,所述第一长度也随之相应变化。即所述数据处理单元至少有两次分配的所述第一存储空间的大小不同,相应的,所述第一长度的数据大小或长度至少有两次是不同的。这样,数据处理单元分配大小不同的所述第一存储空间,能够灵活地调整所述第一存储空间的大小,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的位置是固定的,所述数据处理单元每次获取的所述第一长度的数据,被缓存在所述缓存单元固定位置的存储空间中。这样,数据处理单元每次在固定的所述第一存储空间缓存需要传输的数据,实现方式简单,容易实现。
可选的,所述第一存储空间的位置是变化的,即所述数据处理单元至少有两次分配的所述第一存储空间的位置不同。这样,数据处理单元能够能够灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的大小和位置都是变化的,这样能够更进一步灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述数据处理单元可以在分配所述第一存储空间之间,判断所述数据读写命令所要传输的数据的长度或大小是否大于或等于预设的阈值,在所述数据读写命令所要传输的数据的长度或大小,大于或等于预设的阈值时,分配所述第一存储空间。这样,能够避免数据读写命令所要传输的数据不大时,不用分多次传输需要传输的数据,提高数据传输的效率,并能够节省所述数据处理单元和所述缓存单元因多次缓存需要传输的数据所带来的资源的消耗。
在一个可能的设计中,所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间;或,
所述第一存储空间为预设的阈值,当所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元从所述缓存单元的可用存储空间中分配所述第一存储空间;当所述第一存储空间大于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元在等待预设时间后再判断所述第一存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述第一存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配所述第一存储空间。
在一个可能的设计中,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
在一个可能的设计中,所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元从所述控制设备处获取所述需要存储的数据中所述第一长度的数据;
步骤S2:所述数据处理单元将获取到的所述第一长度的数据缓存在所述缓存单元的所述第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为所述第一长度;
步骤S3:所述数据处理单元将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
可选的,所述步骤S1中,所述数据处理单元通过远程直接数据存取(英文:RDMA,remote direct memory access)的方式,从所述控制设备处获取所述需要存储的数据中所述第一长度的数据。
可选的,所述步骤S3中,所述数据处理单元可以将修改后的所述写命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述写命令中所述需要存储的数据在所述存储单元中的目的地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的写命令,通过RDMA或直接内存存取(英文:DMA,direct memory access)的方式,将所述需要存储的数据写入目的硬盘的目的地址对应的存储空间中。
在一个可能的设计中,所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述第一存储空间的地址,将所述需要读取的数据的长度修改为所述第一长度;并将修改后的读命令发送给存储单元;
步骤S2:所述数据处理单元将所述第一长度的数据缓存在所述第一存储空间中,并将所述第一存储空间中的数据发送给所述控制设备;
重复执行所述步骤S1-S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
可选的,上述步骤S1中,所述数据处理单元可以将修改后的所述读命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述读命令中所述需要读取的数据在所述存储单元中的源地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的读命令,通过RDMA或DMA的方式,将所述需要读取的数据缓存在所述缓存单元的所述第一存储空间中。
可选的,所述步骤S2中,所述数据处理单元可以通过RDMA的方式,将所述第一存储空间中的数据发送给所述控制设备。
在一个可能的设计中,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
在一个可能的设计中,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易矢性存储控制器。
另一方面,本发明实施例提供了一种存储设备,所述存储设备是NVMe overFabric架构中的存储设备,所述存储设备与NVMe over Fabric架构中的控制设备之间进行数据传输,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其中,所述数据处理单元包括处理器,所述处理器用于执行下述步骤:
接收所述控制设备发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度;
依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述存储设备,所述数据处理单元根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度,并依次将所述数据读写命令所要传输的数据迁移到目的地址所对应的存储空间中。解决了因数据读写命令所要传输的数据大,缓存单元无法缓存需要传输的数据而导致的数据读写命令无法被执行的问题。
可选的,所述NVMe over Fabric架构中,所述控制设备与所述存储设备之间可以通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络实现连接和通信。
所述存储设备中的数据处理单元可以是网卡、独立的FPGA芯片或所述存储设备中的CPU来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存中的至少两个组成的缓存资源池来实现来实现。
可选的,所述第一存储空间的大小是固定的,所述第一长度也是固定的。这样,所述数据处理单元每次获取的所述第一长度的数据大小或长度是固定的。这样,数据处理单元每次按照固定的大小分配所述第一存储空间,数据处理单元的实现方式简单,容易实现。
可选的,所述第一存储空间的大小也可以是变化的,所述第一长度也随之相应变化。即所述数据处理单元至少有两次分配的所述第一存储空间的大小不同,相应的,所述第一长度的数据大小或长度至少有两次是不同的。这样,数据处理单元分配大小不同的所述第一存储空间,能够灵活地调整所述第一存储空间的大小,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的位置是固定的,所述数据处理单元每次获取的所述第一长度的数据,被缓存在所述缓存单元固定位置的存储空间中。这样,数据处理单元每次在固定的所述第一存储空间缓存需要传输的数据,实现方式简单,容易实现。
可选的,所述第一存储空间的位置是变化的,即所述数据处理单元至少有两次分配的所述第一存储空间的位置不同。这样,数据处理单元能够能够灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的大小和位置都是变化的,这样能够更进一步灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述数据处理单元可以在分配所述第一存储空间之间,判断所述数据读写命令所要传输的数据的长度或大小是否大于或等于预设的阈值,在所述数据读写命令所要传输的数据的长度或大小,大于或等于预设的阈值时,分配所述第一存储空间。这样,能够避免数据读写命令所要传输的数据不大时,不用分多次传输需要传输的数据,提高数据传输的效率,并能够节省所述数据处理单元和所述缓存单元因多次缓存需要传输的数据所带来的资源的消耗。
在一个可能的设计中,所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间;或,
所述第一存储空间为预设的阈值,当所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元从所述缓存单元的可用存储空间中分配所述第一存储空间;当所述第一存储空间大于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元在等待预设时间后再判断所述第一存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述第一存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配所述第一存储空间。
在一个可能的设计中,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
在一个可能的设计中,所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,所述依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元从所述控制设备处获取所述需要存储的数据中所述第一长度的数据;
步骤S2:所述数据处理单元将获取到的所述第一长度的数据缓存在所述缓存单元的所述第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为所述第一长度;
步骤S3:所述数据处理单元将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
可选的,所述步骤S1中,所述数据处理单元通过RDMA的方式,从所述控制设备处获取所述需要存储的数据中所述第一长度的数据。
可选的,所述步骤S3中,所述数据处理单元可以将修改后的所述写命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述写命令中所述需要存储的数据在所述存储单元中的目的地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的写命令,通过RDMA或DMA的方式,将所述需要存储的数据写入目的硬盘的目的地址对应的存储空间中。
在一个可能的设计中,所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,所述依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述第一存储空间的地址,将所述需要读取的数据的长度修改为所述第一长度;并将修改后的读命令发送给存储单元;
步骤S2:所述数据处理单元将所述第一长度的数据缓存在所述第一存储空间中,并将所述第一存储空间中的数据发送给所述控制设备;
重复执行所述步骤S1-S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
可选的,上述步骤S1中,所述数据处理单元可以将修改后的所述读命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述读命令中所述需要读取的数据在所述存储单元中的源地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的读命令,通过RDMA或DMA的方式,将所述需要读取的数据缓存在所述缓存单元的所述第一存储空间中。
可选的,所述步骤S2中,所述数据处理单元可以通过RDMA的方式,将所述第一存储空间中的数据发送给所述控制设备。
在一个可能的设计中,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
在一个可能的设计中,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易矢性存储控制器。
再一方面,本发明实施例提供了一种实现数据读写命令控制的系统,所述系统包括NVMe over Fabric架构中的控制设备和存储设备,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其中,
所述控制设备,用于向所述存储设备发送数据读写命令;
所述数据处理单元,用于接收所述控制设备发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度;
所述数据处理单元,还用于依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述系统,所述数据处理单元根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度,并依次将所述数据读写命令所要传输的数据迁移到目的地址所对应的存储空间中。解决了因数据读写命令所要传输的数据大,缓存单元无法缓存需要传输的数据而导致的数据读写命令无法被执行的问题。
可选的,所述NVMe over Fabric架构中,所述控制设备与所述存储设备之间可以通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络实现连接和通信。
所述存储设备中的数据处理单元可以是网卡、独立的FPGA芯片或所述存储设备中的CPU来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存来实现。所述存储设备中的缓存单元也可以由网卡内存、FPGA芯片中的存储单元、存储设备上的缓存单元或所述存储设备中的CPU的内存中的至少两个组成的缓存资源池来实现来实现。
可选的,所述第一存储空间的大小是固定的,所述第一长度也是固定的。这样,所述数据处理单元每次获取的所述第一长度的数据大小或长度是固定的。这样,数据处理单元每次按照固定的大小分配所述第一存储空间,数据处理单元的实现方式简单,容易实现。
可选的,所述第一存储空间的大小也可以是变化的,所述第一长度也随之相应变化。即所述数据处理单元至少有两次分配的所述第一存储空间的大小不同,相应的,所述第一长度的数据大小或长度至少有两次是不同的。这样,数据处理单元分配大小不同的所述第一存储空间,能够灵活地调整所述第一存储空间的大小,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的位置是固定的,所述数据处理单元每次获取的所述第一长度的数据,被缓存在所述缓存单元固定位置的存储空间中。这样,数据处理单元每次在固定的所述第一存储空间缓存需要传输的数据,实现方式简单,容易实现。
可选的,所述第一存储空间的位置是变化的,即所述数据处理单元至少有两次分配的所述第一存储空间的位置不同。这样,数据处理单元能够能够灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述第一存储空间的大小和位置都是变化的,这样能够更进一步灵活地分配所述第一存储空间,使得所述缓存单元能够有更灵活的可用存储空间来缓存各种数据读写命令所要传输的数据。
可选的,所述数据处理单元可以在分配所述第一存储空间之间,判断所述数据读写命令所要传输的数据的长度或大小是否大于或等于预设的阈值,在所述数据读写命令所要传输的数据的长度或大小,大于或等于预设的阈值时,分配所述第一存储空间。这样,能够避免数据读写命令所要传输的数据不大时,不用分多次传输需要传输的数据,提高数据传输的效率,并能够节省所述数据处理单元和所述缓存单元因多次缓存需要传输的数据所带来的资源的消耗。
在一个可能的设计中,所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间;或,
所述第一存储空间为预设的阈值,当所述第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元从所述缓存单元的可用存储空间中分配所述第一存储空间;当所述第一存储空间大于所述数据处理单元接收数据读写命令时的可用存储空间时,所述数据处理单元在等待预设时间后再判断所述第一存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述第一存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配所述第一存储空间。
在一个可能的设计中,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
在一个可能的设计中,所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元从所述控制设备处获取所述需要存储的数据中所述第一长度的数据;
步骤S2:所述数据处理单元将获取到的所述第一长度的数据缓存在所述缓存单元的所述第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为所述第一长度;
步骤S3:所述数据处理单元将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
可选的,所述步骤S1中,所述数据处理单元通过RDMA的方式,从所述控制设备处获取所述需要存储的数据中所述第一长度的数据。
可选的,所述步骤S3中,所述数据处理单元可以将修改后的所述写命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述写命令中所述需要存储的数据在所述存储单元中的目的地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的写命令,通过RDMA或DMA的方式,将所述需要存储的数据写入目的硬盘的目的地址对应的存储空间中。
在一个可能的设计中,所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述第一存储空间的地址,将所述需要读取的数据的长度修改为所述第一长度;并将修改后的读命令发送给存储单元;
步骤S2:所述数据处理单元将所述第一长度的数据缓存在所述第一存储空间中,并将所述第一存储空间中的数据发送给所述控制设备;
重复执行所述步骤S1-S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
可选的,上述步骤S1中,所述数据处理单元可以将修改后的所述读命令发送给所述存储单元中的目的硬盘的控制器。其中,所述目的硬盘是所述数据处理设备根据所述读命令中所述需要读取的数据在所述存储单元中的源地址确定的。
可选的,所述目的硬盘的控制器可以根据接收到的修改后的读命令,通过RDMA或DMA的方式,将所述需要读取的数据缓存在所述缓存单元的所述第一存储空间中。
可选的,所述步骤S2中,所述数据处理单元可以通过RDMA的方式,将所述第一存储空间中的数据发送给所述控制设备。
在一个可能的设计中,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
在一个可能的设计中,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易矢性存储控制器。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中NVMe over Fabric一种实现方式架构示意图;
图2为本发明实施例中主机Host与一个Target连接并实现数据传递的实现方式的结构示意图;
图3本发明实施例提供的NVMe over Fabric中数据读写命令的控制方法一种实现方式的流程示意图;
图4本发明实施例提供的NVMe over Fabric中数据读写命令的控制方法另一种实现方式的流程示意图;
图5为本发明实施例一种NVMe over Fabric架构中控制设备与存储设备之间数据读写命令的控制方法的流程示意图;
图6为本发明实施例提供的一种存储设备600的结构示意图;
图7为本发明实施例一种实现数据读写命令控制的系统的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
另外,本发明实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
参考图1,图1为现有技术中NVMe over Fabric一种实现方式架构示意图。图1中包括Host 100、Target 200和Target 300。其中,Host 100是主机,主要负责发起数据的读写,例如发送数据读写命令等。Target 200和Target 210是目标存储设备,在NVMe协议中也称为NVM Subsystem,主要负责接收并且执行主机Host 100发送的数据读写命令。其中,主机Host 100的具体形态包括但不限于物理服务器或物理服务器上的虚拟机,所述物理服务器可以是包括CPU、内存和网卡等组成部件的计算机设备等。
Target 200可以是一个独立的物理硬盘系统,如图1所示,Target 200包括网卡201和一个以上的硬盘,网卡201和一个以上的硬盘分别连接。需要说明的是,图1中以三个硬盘为例进行说明,在具体实现时,Target 200可以包括一个以上的硬盘。Target 200中的硬盘可以是固态磁盘(英文:SSD,Solid State Disk)或硬盘驱动器(英文:HDD,Hard DiskDriver)等具备存储功能的存储介质。其中网卡201具有网络接口卡的功能,可以是NVMeover Fabric中的远端网络接口卡(英文:RNIC,Remote Network Interface Card),网卡201通过Fabric与Host 100进行与数据读写命令或数据传输相关的通信。
Target210的结构与Target 200类似,包括网卡211和一个以上的硬盘。Target210中组成部件(网卡211和硬盘等)的功能和实现方式,与Target 200中的组成部件(网卡201和硬盘)的功能和实现方式类同。在具体实现时,还可以有多个Target,图1只是示出两个Target(Target 200和Target 210)为例进行说明。
下面以图1中Host 100需要向Target 200存储数据为例,对Host 100发送数据、Target接收数据的过程进行描述,包括:
步骤S100:当Host 100需要存储数据到Target 200时,Host 100通过WriteCommand发送命令,该Write Command通常会携带需要存储的数据。如果需要存储的数据量较大,Host 100无法通过Write Command承载并发送时(例如需要存储的数据超过WriteCommand能够承载的最大数据量),Host 100会在Write Command中携带SGL(ScatterGather List)。所述SGL中包括一个字段,例如可以是一个entry,该字段包括需要存储的数据在Host 100中的源地址、需要存储的数据的长度、以及需要存储的数据在Target 200中的目的地址等信息。需要说明的是,所述SGL也可以包括多个字段,例如多个entry,每个entry都包含需要存储的数据在Host 100中的源地址、需要存储的数据的长度、以及需要存储的数据在Target 200中的目的地址等信息。当所述需要存储的数据包括多个地址段,即所述需要存储的数据在Host 100中是不连续,存在于多个地址段中时,就需要用多个entry来记录多个地址段中的数据。本发明实施例以SGL中包括一个entry为例进行说明。
下面的步骤以Host 100需要存储的数据超过Write Command自身能够携带的数据量,需要在Write Command中通过SGL通知Target200需要存储的数据的地址信息和长度为例进行说明。
步骤S101:Host 100通过网卡103发送Write Command到Target 200;所述WriteCommand中包括SGL;
可选的,所述需要存储的数据可以是一个以上的数据块,由于数据块的长度是固定的,所述待写数据的长度可以通过数据块的个数来记录。
步骤S102:Target 200中的网卡201接收到所述Write Command之后,获取所述Write Command中携带的需要存储的数据的长度,并在网卡201的网卡内存(图1中未示出)中分配相应的存储空间,即在网卡201的网卡内存中分配与所述Write Command中携带的需要存储的数据的长度相同的存储空间,用于缓存Host 100发送的需要存储的数据。
步骤S103:网卡201分配好缓存数据所需的存储空间后,通过RDMA命令通知网卡103通过RDMA方式传输需要存储的数据。即通知网卡103根据所述需要存储的数据在Host100的源地址,读取所述需要存储的数据,并接收网卡103通过网络传输的所述需要存储的数据,将接收到的所述需要存储的数据缓存在网卡内存的存储空间中。
缓存在网卡内存的所述需要存储的数据会被迁移到Target 200中的硬盘中。
上述步骤S102中,可能会出现网卡内存的存储空间不足的情况。例如:网卡内存的存储空间的大小为1000K Bytes,但是Host 100发送Target 200的Write Command所要传输的数据的大小为5000K Bytes。即该Write Command所要传输的数据占用的存储空间大于网卡内存的最大存储空间。此时网卡201会因无足够的存储空间来缓存所述需要存储的数据,导致执行所述Write Command失败。或者,网卡内存的存储空间的大小为1000K Bytes,但是Host 100发送Target 200的Write Command所要传输的数据的大小为800K Bytes。即该Write Command所要传输的数据占用的存储空间需要占用网卡内存存储空间的80%,网卡内存的存储空间因缓存其它数据而无法提供80%的存储空间来缓存该Write Command所要传输的数据,也会导致执行所述Write Command失败。
同样的,当Host 100向Target 200发送读取数据请求时,Host 100会发送ReadCommand到网卡201。如果所述需要Read Command需要传输的数据占用的存储空间大于网卡内存的存储空间,也会导致所述网卡201执行所述Read Command失败。如果通过扩大网卡内存的存储空间的方式,会造成成本的提升。如果通过外挂普通存储设备作为Target的网卡内存的存储空间,则会因为存储时延的增大造成性能的下降。
为解决上述技术问题,本发明实施例提供一种NVMe over Fabric中数据读写命令的控制方法、存储设备和系统。下面实施例的描述,以主机Host与一个Target连接并实现数据传递为例进行说明。对于Host与多个Target连接并实现数据传输的情况,可以参照Host与一个Target连接的情况来实现,不再赘述。
需要说明的是,作为存储设备的Target,在具体实现时,可以由网卡、独立的现场可编程门阵列(英文:FPGA,field programmable gate array)芯片或Target中的中央处理器(英文:CPU,central process ing unit)来接收作为控制设备的Host发送的数据读写命令。本发明实施例将存储设备中接收控制设备发送的数据读写命令的网卡、FPGA芯片或CPU等,统称为数据处理单元。可以理解,本发明实施例中的数据处理单元,还可以是与网卡、FPGA芯片或CPU具有相同功能的单元或实体,只要能够接收作为控制设备的Host发送的数据读写命令并处理,都可以作为本发明实施例的存储设备中的数据处理单元。
当网卡作为存储设备中的数据处理单元时,网卡内存用于缓存网卡接收到的数据读写命令所要传输的数据。当FPGA作为存储设备中的数据处理单元时,FPGA中的存储单元用于缓存FPGA接收到的数据读写命令所要传输的数据。当存储设备中的CPU作为存储设备中的数据处理单元时,CPU的内存用于缓存CPU接收到的数据读写命令所要传输的数据,即通过共享CPU的内存实现数据的缓存。另外,在Target上的缓存单元,例如以DDR作为缓存的缓存设备,也可以作为网卡、FPGA或CPU的缓存。本发明实施例中将上述网卡内存、FPGA芯片中的存储单元、CPU的内存或Target上的缓存单元,统称为缓存单元。可以理解,本发明实施例中的缓存单元,还可以是与网卡内存、FPGA芯片中的存储单元或CPU的内存具有相同功能的其它存储介质,只要能够用于缓存作为控制设备的Host发送的数据读写命令所要传输的数据,都可以作为本发明实施例的存储设备中的缓存单元。并且,上述网卡内存、FPGA芯片中的存储单元、CPU的内存或Target上的缓存单元也可以组成一个缓存资源池,在具体实现时,可以由网卡、FPGA芯片或CPU中的一个或多个接收Host发送的数据读写命令,并将需要传输的数据缓存在该缓存资源池中。
下面以网卡作为存储设备中的数据处理单元,网卡内存作为存储设备中的缓存单元,Target作为存储设备,Host作为控制设备,对本发明实施例进行说明。可以理解,对于FPGA和CPU作为数据处理单元的实现方式,可以参考网卡作为数据处理单元的实现方式来实现。对于FPGA芯片中的存储单元、Target上的缓存单元或CPU的内存作为缓存单元的实现方式或其组成的资源池的实现方式,可以参考网卡内存作为缓存单元的实现方式来实现,不再赘述。
图2为本发明实施例中主机Host与一个Target连接并实现数据传递的实现方式的结构示意图。如图2所示,Host300与Target400通过Fabric连接。具体的,Host300与Target400之间可以通过iWrap、ROCE、Infiniband、FC或Omni-Path等网络实现连接和通信。
其中,Host 300包括CPU 301、内存302和网卡303等硬件组成,Target 400包括网卡401和一个以上的硬盘。Host 300是主机,主要负责发起数据的读写,例如发送数据的读写命令等。主机Host 300的具体形态包括但不限于物理服务器或物理服务器上的虚拟机,所述物理服务器可以是包括CPU、内存和网卡等组成部件的计算机设备等。需要说明的是,在主机Host 300为物理服务器上的虚拟机的情况下,以上所述的Host 300包括CPU 301、内存302和网卡303等硬件组成指的是物理服务器分配给该虚拟机使用的CPU、内存和网卡等资源。同理,在Target 400中的网卡401也可以为虚拟网卡,该虚拟网卡为Target 400中的物理网卡分配给该虚拟网卡使用的网卡资源。
Target 400是目标存储设备,在NVMe over Fabric架构中也称为NVM Subsystem,主要负责接收并且执行主机Host 300发送的读写命令。Target 400中的硬盘可以是SSD或HDD等具有存储功能的介质,图2中以三个硬盘为例进行说明。网卡401包括网卡处理器4011和网卡内存4012。网卡401具有网络接口卡的功能,可以是NVMe over Fabric中的RNIC,网卡401通过NVMe over Fabric架构中的网络与Host 300进行与数据读写命令或数据传输相关的通信。
图2以网卡内存4012位于网卡401中,即网卡401中包括网卡内存4012为例进行说明。在具体实现时,网卡内存4012也可以位于网卡401的外部,即Target 400中的网卡内存可以是独立于网卡401的存储介质。本发明实施例中,独立于网卡401的存储介质,可以是双倍数据速率(英文:DDR,double data rate)等存储介质。作为另一种可选的实现方式,网卡401的网卡内存4012也可以是Target 400中多个网卡的内存资源共同构成的一个内存资源池。本发明实施例不限定网卡内存的具体呈现形式。
为避免现有技术中因网卡401的网卡内存的存储空间不足导致的数据读写命令无法被执行的问题,下面分别以Host 300向Target 400发送写数据命令和Host 300向Target400发送读数据命令为例,对本发明实施例提供的NVMe over Fabric中数据读写命令的控制方法进行详细说明。
当Host 300向Target 400发送写数据命令时,本发明实施例提供的NVMe overFabric中数据读写命令的控制方法如图3所示,包括:
步骤200:网卡401接收Host 300发送的Write Command,所述Write Command中携带SGL,所述SGL中包括所述需要存储的数据在Host 300中的源地址、所述需要存储的数据的长度、以及所述需要存储的数据在Target 400中的目的地址等信息;
具体的,当Host 300需要向Target 400写入需要存储的数据时,Host 300向Target 400发送Write Command。即Host 300通过iWrap、ROCE、Infiniband、FC或Omni-Path等网络向Target 400发送所述Write Command。
步骤202:网卡401判断所述需要存储的数据的长度是否达到预设阈值;
所述预设阈值根据具体的业务实现场景会有不同的设置。例如当网卡内存4012的总的存储空间为1GB时,所述预设阈值为200MB;或当网卡内存4012的总的存储空间为500MB时,所述预设阈值为150MB。在具体实现时,可以根据网卡内存4012的总的存储空间以及对不同业务的需要设置不同的预设阈值。
步骤204:当所述需要存储的数据的长度达到预设阈值时,所述网卡401从网卡内存4012的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述网卡内存4012的存储空间,且所述第一长度小于所述需要存储数据的长度;
其中,所述第一存储空间可以是小于或等于所述数据处理单元接收数据读写命令时的可用存储空间。例如,网卡401接收到所述Write Command时,网卡4012的可用存储空间是100KB,则所述第一存储空间的大小可以是80KB或100KB;或者网卡401接收到所述WriteCommand时,网卡4012的可用存储空间是可存储100个数据块,则所述第一存储空间的大小可以是80个数据块或100个数据块。
所述第一存储空间的大小也可以为预设的阈值。例如,预先设定所述第一存储空间的阈值为100个数据块。当网卡401接收到的所述Write Command时,网卡4012的可用存储空间是可存储120个数据块,所述Write Command需要存储的数据为500个数据块,则所述网卡分配100个数据块的存储空间为第一存储空间。当网卡401接收到所述Write Command时,网卡4012的可用存储空间是可存储80个数据块,则网卡等待预设的时间,例如3分钟,在该预设时间后再次判断网卡4012的可用存储空间是否大于或等于所述预设的阈值。如果此时网卡4012的可用存储空间大于或等于所述预设的阈值,例如网卡4012的可用存储空间为150个数据块,则所述网卡分配100个数据块的存储空间为第一存储空间。如果此时网卡4012的可用存储空间小于所述预设的阈值,例如网卡4012的可用存储空间为90个数据块,则继续等待预设时间后再判断网卡4012的可用存储空间是否大于或等于所述预设的阈值。
在具体实现时,可以在网卡401中的一个寄存器中设置所述第一存储空间的大小。所述第一存储空间的大小可以用可存储数据的长度(例如20MB)来表示,也可以用可存储的数据块的个数来(例如20个数据块)表示。当所述第一存储空间的大小用可存储的数据的长度表示时,所述第一长度是可存储数据的长度的值,例如20MB。当所述第一存储空间的大小用可存储的数据块的个数来表示时,所述第一长度是可存储数据块的值,例如20个数据块。
当然,在具体实现时,网卡401也可以不判断所述需要存储的数据的长度是否达到预设阈值,即上述步骤202是一个可选的实现步骤。当没有执行判断所述需要存储的数据的长度是否达到预设阈值的步骤时,所述网卡401可以直接从网卡内存4012的可用存储空间中分配第一存储空间。这时网卡401分配的第一存储空间,既可以是第一存储空间小于或等于所述数据处理单元接收数据读写命令时的可用存储空间,也可以预设的阈值大小的第一存储空间。
可以理解,所述网卡401从网卡内存4012的可用存储空间中分配的第一存储空间,可以是一个位置固定的存储空间,也可以是位置变动的存储空间。
当所述第一存储空间的位置固定时,是从网卡内存4012的可用存储空间中划分出的一段地址空间,该段地址空间在所述Write Command需要存储的数据被传输的过程中不被用于缓存其它数据读写命令所要传输的数据。例如地址段0001到0100,从起始地址0001到结束地址0100,这个地址段所对应的存储空间为第一存储空间。具体的,网卡401可以在分配所述第一存储空间后,为所述第一存储空间所在的地址段设置一个标识,该标识用于指示该地址段已经被占用,网卡401不再将其它数据读写命令所要传输的数据缓存在该地址段对应的存储空间中。这样,所述第一存储空间只被用于缓存所述Write Command所要存储的数据。当所述Write Command所要存储的数据都被写入Target 400中的目的地址所对应的存储空间后,网卡401取消设置的所述标识,所述第一存储空间即可被用于缓存其它数据读写命令所要传输的数据。
当所述第一存储空间的位置不固定时,在所述Write Command需要存储的数据被传输的过程中,每次分配的第一存储空间的地址段会不相同。例如第一次分配的第一存储空间的地址段为0001到0100,即从起始地址0001到结束地址0100的地址段所对应的存储空间为所述第一存储空间所在的地址空间;第二次分配的第一存储空间的地址段为0301到0400,即从起始地址0301到结束地址0400的地址段所对应的存储空间为所述第一存储空间所在的地址空间。这样,网卡401可以根据网卡内存4012的可用存储空间,灵活分配所述第一存储空间。
本发明实施例不限定分配的第一存储空间在网卡内存4012中的位置,所述第一存储空间的位置固定或变化的情况,都是本发明实施例中分配所述第一存储空间的实现方式。
步骤206:网卡401通知网卡303传输所述需要存储的数据中第一长度的数据;
具体的,网卡401可以通过RDMA的方式通知网卡303,从所述Write Command携带的SGL中所述需要存储的数据的源地址处,读取第一长度的数据。
具体的,所述Write Command携带的SGL中所述需要存储的数据的源地址是一个起始地址,在读取所述第一长度的数据时,从所述需要存储的数据的源地址开始读取所述第一长度的数据。
步骤208:网卡401接收网卡303通过网络传输的所述第一长度的数据,并将接收到的与第一长度的数据缓存在已经分配的网卡内存4012的所述第一存储空间中;并修改接收到的Write Command,将修改后的Write Command发送给目的硬盘,即发送给目的硬盘的控制器;
具体的,可以是网卡401接收网卡303通过网络传输的所述第一长度的数据,并将接收到的与第一长度的数据缓存在已经分配的网卡内存4012的所述第一存储空间中。然后修改接收到的Write Command,将所述Write Command携带的SGL中需要存储的数据在Host300中的源地址修改为网卡内存4012中所述第一存储空间的地址,将所述Write Command携带的SGL中所述需要存储的数据的长度修改为所述第一长度;并将修改后的Write Command发送给目的硬盘,即发送给目的硬盘的控制器;即网卡401发送给目的硬盘的控制器的Write Command携带的SGL中包括网卡内存4012中所述第一存储空间的地址,所述第一长度,以及所述需要存储的数据在Target 400中的目的地址等信息。
其中,目的硬盘是网卡401根据所述Write Command中所述需要存储的数据在Target 400中的目的地址确定的。网卡401能够根据所述需要存储的数据在Target 400中的目的地址,确定所述需要存储的数据在Target 400中的哪个硬盘中,并将所述需要存储的数据在Target 400中的目的地址所在的硬盘确定为目的硬盘。在Target 400中,每个硬盘都会对应一个地址段,网卡401根据所述Write Command的SGL中所述需要存储的数据在Target 400中的目的地址,确定该目的地址所在的地址段,与该地址段对应的硬盘即为目的硬盘。
步骤210:目的硬盘的控制器根据接收到的Write Command中携带的所述第一存储空间的地址,从网卡内存4012中读取所述第一长度的数据,并将所述第一长度的数据写入目的硬盘的目的地址对应的存储空间中。
可选的,目的硬盘的控制器可以通过RDMA或直接内存存取(英文:DMA,directmemory access)的方式,将所述需要存储的数据写入目的硬盘的目的地址对应的存储空间中。本发明实施例中,网卡401与Target 400中的硬盘之间,基于NVMe over PCIe架构实现连接。因此,Target 400中目的硬盘的控制器与网卡401之间,可以通过NVMe over PCIe连接和通信方式,即目的硬盘的控制器可以基于NVMe over PCIe协议规定的方式,将所述需要存储的数据从网卡内存4012写入目的硬盘中。
上述网卡401修改所述Write Command并将修改后的Write Command发送给目的硬盘的控制器,可以由网卡401中的一个控制模块来实现。该控制模块可以由一个物理芯片(例如ARM、X86或Power PC等处理器)实现,也可以由运行在物理芯片上的软件模块来实现,还可以是在物理芯片上通过虚拟机技术创建一个或多个虚拟的控制器。该控制模块可以是NVMe over Fabric中的Phys ical control ler或NVM Control ler。
循环执行上述步骤206-步骤210,直到将所述需要存储的数据全部写入所述需要存储的数据在Target 400中的目的地址所对应的存储空间中。
下面以需要存储的数据为202个数据块,所述第一长度为10个数据块为例,说明循环执行上述步骤206-步骤210的过程。在第一次执行步骤206-步骤210时,缓存在网卡内存4012的第一长度的数据是从Host 300中所述需要存储的数据的源地址开始的第1至第10的数据块;该第一长度的数据被写入所述需要存储的数据在Target 400中的目的地址的起始地址所开始的10个数据块所对应的存储空间中。在第二次执行步骤206-步骤210时,缓存在网卡内存4012的第一长度的数据是从Host 300中所述需要存储的数据的源地址开始的第11至第20的数据块;该第一长度的数据被写入所述需要存储的数据在Target 400中的目的地址的起始地址并加上10个数据块的地址空间开始的10个数据块所对应的存储空间中。以此类推,直到将所述需要存储的数据全部写入所述需要存储的数据在Target 400中的目的地址所对应的存储空间中。
需要说明的是,当最后一次执行步骤206-步骤210时,由于剩余的数据为2个数据块,网卡401发送给目的硬盘的控制器的Write Command携带的SGL中所包含的需要存储数据的长度为剩余数据的长度,即2个数据块的长度。即网卡401发送给目的硬盘的控制器的Write Command携带的SGL中包括网卡内存4012中所述第一存储空间的地址,2个数据块的长度,以及所述需要存储的数据在Target 400中的目的地址的起始地址加上200个数据块的长度后的起始地址的信息。
当所述需要存储的数据是通过数据长度来表示时,例如需要存储的数据为200KB,表示需要存储的数据的源地址可以为具体的地址信息,例如00001-01000等。在循环执行步骤206-步骤210时的实现方式与上述以数据块表示时的实现方式类似,不再赘述。
上述循环执行步骤206-步骤210的过程中,所述第一存储空间的大小是固定的,只是在最后一次执行步骤206-步骤210中因数据的长度不足所述第一长度,才根据实际的数据长度进行传输。可以理解,在循环执行步骤206-步骤210时所述第一存储空间的大小也可以变化。即根据网卡内存4012的可用存储空间的大小,可以在每次执行步骤206-步骤210时,分配的所述第一存储空间的大小可以不同。例如,第N次分配的所述第一存储空间的大小为100个数据块;在第N+2次时,网卡内存4012的可用存储空间增大了,则分配的所述第一存储空间的大小为150个数据块;在第N+6次时,网卡内存4012的可用存储空间减小了,则分配的所述第一存储空间的大小为50个数据块等等。其中,N为大于等于1的正整数。
并且,在循环执行步骤206-步骤210的过程中,当每次分配的所述第一存储空间的大小不同时,网卡401在修改Write Command时,所写入的需要存储数据的长度也会随之改变。其实现过程与上述描述的实现过程类似,不再赘述。
当Host 300向Target 400发送读数据命令时,本发明实施例提供的NVMe overFabric中数据读写命令的控制方法如图4所示,包括:
步骤300:网卡401接收Host 300发送的Read Command;所述Read Command中携带SGL,所述SGL中包括所述需要读取的数据在Target 400中的源地址、所述需要读取的数据的长度、以及所述需要读取的数据在Host 300中的目的地址等信息;
具体的,当Host 300需要从Target 400读取数据时,Host 300向Target 400发送Read Command。即Host 300通过iWrap、ROCE、Infiniband、FC或Omni-Path等网络向Target400发送所述Read Command。
步骤302:网卡401判断所述需要读取的数据的长度是否达到预设阈值;
所述预设阈值根据具体的业务实现场景会有不同的设置。例如当网卡内存4012的总的存储空间为10GB时,所述预设阈值为2GB;或当网卡内存4012的总的存储空间为500MB时,所述预设阈值为450MB。在具体实现时,可以根据网卡内存4012的总的存储空间以及对不同业务的需要设置不同的预设阈值。
步骤304:当所述需要读取的数据的长度达到预设阈值时,所述网卡401从网卡内存4012的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述网卡内存4012的存储空间,且所述第一长度小于所述需要读取数据的长度;
其中,所述第一存储空间可以是小于或等于所述数据处理单元接收数据读写命令时的可用存储空间。例如,网卡401接收到所述Read Command,网卡4012的可用存储空间是100KB,则所述第一存储空间的大小可以是80KB或100KB;或者网卡401接收到所述ReadCommand时,网卡4012的可用存储空间是可存储100个数据块,则所述第一存储空间的大小可以是80个数据块或100个数据块。
所述第一存储空间的大小也可以为预设的阈值。例如,预先设定所述第一存储空间的阈值为100个数据块。当网卡401接收到所述Read Command时,网卡4012的可用存储空间是可存储120个数据块,所述Read Command需要存储的数据为600个数据块,则所述网卡分配100个数据块的存储空间为第一存储空间。当网卡401接收到所述Read Command时,网卡4012的可用存储空间是可存储80个数据块,则网卡等待预设的时间,例如3分钟,在该预设时间后再次判断网卡4012的可用存储空间是否大于或等于所述预设的阈值。如果此时网卡4012的可用存储空间大于或等于所述预设的阈值,例如网卡4012的可用存储空间为150个数据块,则所述网卡分配100个数据块的存储空间为第一存储空间。如果此时网卡4012的可用存储空间小于所述预设的阈值,例如网卡4012的可用存储空间为90个数据块,则继续等待预设时间后再判断网卡4012的可用存储空间是否大于或等于所述预设的阈值。
在具体实现时,可以在网卡401中的一个寄存器中设置所述第一存储空间的大小。所述第一存储空间的大小可以用可存储数据的长度(例如20MB)来表示,也可以用可存储的数据块的个数来(例如20个数据块)表示。当所述第一存储空间的大小用可读取的数据的长度表示时,所述第一长度是可读取数据的长度的值,例如20MB。当所述第一存储空间的大小用可读取的数据块的个数来表示时,所述第一长度是可读取数据块的值,例如20个数据块。
当然,在具体实现时,网卡401也可以不判断所述需要存储的数据的长度是否达到预设阈值,即上述步骤302是一个可选的实现步骤。当没有执行判断所述需要存储的数据的长度是否达到预设阈值的步骤时,所述网卡401可以直接从网卡内存4012的可用存储空间中分配第一存储空间。这时网卡401分配的第一存储空间,既可以是第一存储空间可以是小于或等于所述数据处理单元接收数据读写命令时的可用存储空间,也可以预设的阈值大小的第一存储空间。
与上述Write Command的实现过程类似,所述网卡401从网卡内存4012的可用存储空间中分配的第一存储空间用于存储Read Command所要读取的数据时,该被分配的第一存储空间可以是一个位置固定的存储空间,也可以是位置变动的存储空间。
步骤306:网卡401修改所述Read Command,将所述Read Command中携带的所述需要读取的数据在Host 300中的目的地址,修改为所述网卡内存4012中所述第一存储空间的地址,将所述Read Command携带的SGL中所述需要读取的数据的长度修改为所述第一长度,并将修改后的Read Command发送给目的硬盘,即目的硬盘的控制器。
即网卡401发送给目的硬盘控制器的Read Command携带的SGL中包括所述需要读取的数据在Target 400中的源地址、所述第一长度、以及所述网卡内存4012所述第一存储空间的地址等信息。目的硬盘的控制器根据接收到的所述修改后的Read Command,将所述第一长度的所述需要读取的数据缓存在网卡内存4012的所述第一存储空间中。可选的,目的硬盘的控制器通过RDMA或直接内存存取(英文:DMA,direct memory access)的方式,将所述需要读取的数据迁移到所述第一命令队列对应的网卡内存4012的存储空间中。
可选的,所述网卡401与Target 400中的硬盘之间基于NVMe over PCIe架构实现连接。网卡401与Target 400中目的硬盘的控制器之间,通过NVMe over PCIe架构中连接和通信的方式,将所述需要读取的数据缓存在所述第一命令队列对应的网卡内存4012的存储空间中。
其中,目的硬盘是网卡401根据所述Read Command中所述需要读取的数据在Target 400中的源地址确定的。网卡401能够根据所述需要读取的数据在Target 400中的源地址,确定所述需要读取的数据在Target 400中的哪个硬盘中,并将所述需要读取的数据在Target 400中的源地址所在的硬盘确定为目的硬盘。
具体的,在上述实现网卡内存4012中数据缓存和迁移过程中,可以由网卡401中的一个控制模块来实现对所述Write Command或Read Command的修改。该控制模块可以由一个物理芯片(例如ARM、X86或Power PC等处理器)实现,也可以由运行在物理芯片上的软件模块来实现,还可以是在物理芯片上通过虚拟机技术创建的一个或多个虚拟控制器。该控制模块可以是NVMe over Fabric中的Physical controller或NVM Controller。
步骤308:网卡401接收所述目的硬盘控制器发送的所述第一长度的需要读取的数据,缓存在所述网卡内存4012的所述第一存储空间,并根据所述Read Command中所述需要读取的数据在Host 300中的目的地址,将缓存的所述第一长度的需要读取的数据发送给Host 300。
可选的,网卡401可以通过RDMA的方式,将缓存的所述第一长度的需要读取的数据发送给Host 300。
循环执行上述步骤306-步骤308,直到将所述需要读取的数据全部写入所述需要读取的数据在Host 300中的目的地址所对应的存储空间中。
下面以需要读取的数据为202个数据块,所述第一长度为10个数据块为例,说明循环执行上述步骤步骤306-步骤308的过程。在第一次执行步骤306-步骤308时,缓存在网卡内存4012的第一长度的数据是从Target 400中所述需要读取的数据的源地址开始的第1至第10的数据块;该第一长度的数据被写入所述需要读取的数据在Host 300中的目的地址的起始地址所开始的10个数据块所对应的存储空间中。在第二次执行步骤306-步骤308时,缓存在网卡内存4012的所述第一长度的数据是从Target 400中所述需要读取的数据的源地址开始的第11至第20的数据块;该第一长度的数据被写入所述需要读取的数据在Host 300中的目的地址的起始地址并加上10个数据块的地址空间后开始的10个数据块所对应的存储空间中。以此类推,直到将所述需要读取的数据全部写入所述需要读取的数据在Host300中的目的地址所对应的存储空间中。
需要说明的是,当最后一次步骤306-步骤308时,由于剩余的数据为2个数据块,网卡401发送给目的硬盘的控制器的Read Command携带的SGL中所包含的需要存储数据的长度为剩余数据的长度,即2个数据块的长度。即网卡401发送给目的硬盘的控制器的ReadCommand携带的SGL中包括网卡内存4012中所述第一存储空间的地址,2个数据块的长度,以及所述需要读取的数据在Target 400中的目的地址的起始地址加上200个数据块的长度后的起始地址的信息。
当所述需要读取的数据是通过数据长度来表示时,例如需要读取的数据为200KB,表示需要读取的数据的源地址可以为具体的地址信息,例如00001-01000等。在循环执行步骤306-步骤308时的实现方式与上述以数据块表示时的实现方式类似,不再赘述。
上述循环执行步骤306-步骤308的过程中,所述第一存储空间的大小是固定的,只是在最后一次执行步骤步骤306-步骤308中因数据的长度不足所述第一长度,才根据实际的数据长度进行传输。可以理解,每次执行步骤306-步骤308时所述第一存储空间的大小也可以变化。即根据网卡内存4012的可用存储空间的大小,可以在每次执行步骤306-步骤308时,分配的所述第一存储空间的大小不同。例如,第N次分配的所述第一存储空间的大小为100个数据块;在第N+2次时,网卡内存4012的可用存储空间增大了,则分配的所述第一存储空间的大小为150个数据块;在第N+6次时,网卡内存4012的可用存储空间减小了,则分配的所述第一存储空间的大小为50个数据块等等。其中,N为大于等于1的正整数。
在循环执行步骤306-步骤308的过程中,当每次分配的所述第一存储空间的大小不同时,网卡401在修改Read Command时,所写入的需要存储数据的长度也会随之改变。其实现过程与上述描述的实现过程类似,不再赘述。
图5为本发明实施例一种NVMe over Fabric架构中控制设备与存储设备之间数据读写命令的控制方法的流程示意图,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其中,所述方法包括下述步骤:
步骤500:所述数据处理单元接收所述控制设备发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度;
步骤502:所述数据处理单元依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述方法,由于所述数据处理单元从所述缓存单元的可用存储空间中分配第一存储空间小于所述缓存单元的存储空间,且所述第一长度小于所述需要传输数据的长度,通过依次将所述第一长度的数据迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中,能够解决因一个数据读写命令所要传输的数据大于存储设备中缓存单元的存储空间所带来的数据读写命令执行失败的问题。
本发明实施例中图5所示的方法实现方式,还可以参考上述图2、图3和图4所示的实现方式来实现,不再赘述。例如,数据处理单元可以参考网卡401的方式来实现,缓存单元可以参考网卡内存4012的实现方式来实现,存储单元可以参考图2中硬盘的实现方式来实现,控制设备可以参考Host 300的实现方式来实现等。
图6为本发明实施例提供的一种存储设备600的结构示意图,所述存储设备600是NVMe over Fabric架构中的存储设备,所述存储设备600与NVMe over Fabric架构中的控制设备之间进行数据传输,所述存储设备600包括数据处理单元601、缓存单元602和存储单元603,所述控制设备需要读写的数据存储在所述存储单元603中,所述数据处理单元601用于接收所述控制设备发送的数据读写命令,所述缓存单元602用于缓存所述数据读写命令所需要传输的数据;其中,所述数据处理单元601包括处理器,所述处理器用于执行下述步骤:
接收所述控制设备发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元602的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元602的存储空间,且所述第一长度小于所述需要传输数据的长度;
依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述存储设备600提供的实现方式,由于所述数据处理单元601从所述缓存单元602的可用存储空间中分配第一存储空间小于所述缓存单元602的存储空间,且所述第一长度小于所述需要传输数据的长度,通过依次将所述第一长度的数据迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中,能够解决因一个数据读写命令所要传输的数据大于存储设备中缓存单元602的存储空间所带来的数据读写命令执行失败的问题。
本发明实施例中图6所示的存储设备600实现方式,还可以参考上述图2、图3和图4所示的实现方式来实现,不再赘述。例如,数据处理单元601可以参考网卡401的方式来实现,缓存单元602可以参考网卡内存4012的实现方式来实现,存储单元603可以参考图2中硬盘的实现方式来实现,控制设备可以参考Host 300的实现方式来实现等。
图7为本发明实施例一种实现数据读写命令控制的系统的结构示意图,所述系统包括NVMe over Fabric架构中的控制设备700和存储设备800,所述存储设备800包括数据处理单元801、缓存单元802和存储单元803,所述控制设备需要读写的数据存储在所述存储单元803中,所述数据处理单元801用于接收所述控制设备发送的数据读写命令,所述缓存单元802用于缓存所述数据读写命令所需要传输的数据;其中:
所述控制设备700,用于向所述存储设备800发送数据读写命令;
所述数据处理单元801,用于接收所述控制设备700发送的数据读写命令,根据所述数据读写命令中携带的需要传输数据的长度,从所述缓存单元802的可用存储空间中分配第一存储空间,所述第一存储空间能够存储数据的长度为第一长度,所述第一存储空间小于所述缓存单元802的存储空间,且所述第一长度小于所述需要传输数据的长度;
所述数据处理单元801,还用于依次获取所述第一长度的数据,缓存在所述第一存储空间中,并将缓存在所述第一存储空间的数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
通过上述系统提供的实现方式,由于所述数据处理单元801从所述缓存单元802的可用存储空间中分配第一存储空间小于所述缓存单元802的存储空间,且所述第一长度小于所述需要传输数据的长度,通过依次将所述第一长度的数据迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中,能够解决因一个数据读写命令所要传输的数据大于存储设备中缓存单元的存储空间所带来的数据读写命令执行失败的问题。
本发明实施例中图7所示的系统实现方式,还可以参考上述图2、图3和图4所示的实现方式来实现,不再赘述。例如,数据处理单元801可以参考网卡401的方式来实现,缓存单元802可以参考网卡内存4012的实现方式来实现,存储单元803可以参考图2中硬盘的实现方式来实现,控制设备700可以参考Host 300的实现方式来实现等。
结合本发明公开内容所描述的方法或步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(英文:Random Access Memory,RAM)、闪存、只读存储器(英文:ReadOnly Memory,ROM)、可擦除可编程只读存储器(英文:Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(英文:Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(英文:CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:ROM,Read-OnlyMemory)、随机存取存储器(英文:RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (21)
1.一种基于Fabric的非易失性高速传输总线NVMe,NVMe over Fabric,架构中控制设备与存储设备之间数据读写命令的控制方法,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其特征在于,所述方法包括:
所述数据处理单元接收所述控制设备发送的数据读写命令,将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述分段数据占用的存储空间小于所述缓存单元的存储空间;
所述数据处理单元将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
2.根据权利要求1所述的方法,其特征在于:
所述分段数据占用的存储空间小于或等于所述数据处理单元接收所述数据读写命令时的可用存储空间;或,
当所述分段数据占用的存储空间小于或等于所述数据处理单元接收所述数据读写命令时的可用存储空间时,所述数据处理单元从所述缓存单元的可用存储空间中分配相应的存储空间用于存储所述分段数据;当所述分段数据占用的存储空间大于所述数据处理单元接收所述数据读写命令时的可用存储空间时,所述数据处理单元在等待预设时间后再判断所述分段数据占用的存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述分段数据占用的存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配相应的存储空间用于存储数据分段数据。
3.根据权利要求1或2所述的方法,其特征在于,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
4.根据权利要求1或2所述的方法,其特征在于:
所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,所述数据处理单元将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述数据处理单元将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元从所述控制设备处获取所述需要存储的数据中的一个分段数据;
步骤S2:所述数据处理单元将获取到的所述分段数据缓存在所述缓存单元的第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为所述一个分段数据的长度;
步骤S3:所述数据处理单元将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-步骤S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
5.根据权利要求1或2所述的方法,其特征在于:
所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,所述数据处理单元将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述数据处理单元将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述分段数据在所述缓存单元的第一存储空间的地址,将所述需要读取的数据的长度修改为一个分段数据的长度;并将修改后的读命令发送给存储单元;
步骤S2:所述数据处理单元将一个分段数据缓存在所述第一存储空间中,并将所述第一存储空间中的分段数据发送给所述控制设备;
重复执行所述步骤S1-步骤S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
6.根据权利要求1或2所述的方法,其特征在于,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
7.根据权利要求1或2所述的方法,其特征在于,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易失性存储控制器。
8.一种存储设备,所述存储设备是基于Fabric的非易失性高速传输总线NVMe,NVMeoverFabric,架构中的存储设备,所述存储设备与NVMe over Fabric架构中的控制设备之间进行数据传输,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其特征在于,所述数据处理单元包括处理器,所述处理器用于执行下述步骤:
接收所述控制设备发送的数据读写命令,将所述数据读写命令中携带的需要传输数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述分段数据占用的存储空间小于所述缓存单元的存储空间;
将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
9.根据权利要求8所述的存储设备,其特征在于:
所述分段数据占用的存储空间小于或等于所述存储设备接收所述数据读写命令时所述缓存单元的可用存储空间;或,
当所述分段数据占用的存储空间小于或等于所述存储设备接收所述数据读写命令时所述缓存单元的可用存储空间,从所述缓存单元的可用存储空间中分配相应的存储空间用于存储所述分段数据;当所述分段数据占用的存储空间大于所述存储设备接收所述数据读写命令时所述缓存单元的可用存储空间,所述数据处理单元在等待预设时间后再判断所述分段数据占用的存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述分段数据占用的存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配相应的存储空间用于存储数据分段数据。
10.根据权利要求8或9所述的存储设备,其特征在于,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
11.根据权利要求8或9所述的存储设备,其特征在于:
所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,将所述数据读写命令中携带的需要传输数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中:
步骤S1:从所述控制设备处获取所述需要存储的一个分段数据;
步骤S2:将获取到的分段数据缓存在所述缓存单元的第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为所述分段数据长度;
步骤S3:将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-步骤S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
12.根据权利要求8或9所述的存储设备,其特征在于:
所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,将所述数据读写命令中携带的需要传输数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述分段数据在所述缓存单元的第一存储空间的地址,将所述需要读取的数据的长度修改为一个分段数据的长度;并将修改后的读命令发送给存储单元;
步骤S2:将所述一个分段数据缓存在所述第一存储空间中,并将所述第一存储空间中的数据发送给所述控制设备;
重复执行所述步骤S1-步骤S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
13.根据权利要求8或9所述的存储设备,其特征在于,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
14.根据权利要求8或9所述的存储设备,其特征在于,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易失性存储控制器。
15.一种实现数据读写命令控制的系统,所述系统包括基于Fabric的非易失性高速传输总线NVMe,NVMe over Fabric,架构中的控制设备和存储设备,所述存储设备包括数据处理单元、缓存单元和存储单元,所述控制设备需要读写的数据存储在所述存储单元中,所述数据处理单元用于接收所述控制设备发送的数据读写命令,所述缓存单元用于缓存所述数据读写命令所需要传输的数据;其特征在于:
所述控制设备,用于向所述存储设备发送数据读写命令;
所述数据处理单元,用于接收所述控制设备发送的数据读写命令,将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述分段数据占用的存储空间小于所述缓存单元的存储空间;并将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中。
16.根据权利要求15所述的系统,其特征在于:
所述分段数据占用的存储空间小于或等于所述数据处理单元接收所述数据读写命令时的可用存储空间;或,
当所述分段数据占用的存储空间小于或等于所述数据处理单元接收所述数据读写命令时的可用存储空间时,所述数据处理单元从所述缓存单元的可用存储空间中分配相应的存储空间用于存储所述分段数据;当所述分段数据占用的存储空间大于所述数据处理单元接收所述数据读写命令时的可用存储空间时,所述数据处理单元在等待预设时间后再判断所述分段数据占用的存储空间是否小于或等于所述缓存单元的可用存储空间,并在所述分段数据占用的存储空间小于所述缓存单元的可用存储空间时,从所述缓存单元的可用存储空间中分配相应的存储空间用于存储数据分段数据。
17.根据权利要求15或16所述的系统,其特征在于,所述数据读写命令包括所述需要传输的数据的地址信息和所述需要传输的数据的长度。
18.根据权利要求15或16所述的系统,其特征在于:
所述数据读写命令为写命令,所述需要传输的数据为需要存储的数据,所述写命令包括所述需要存储的数据在所述控制设备的源地址,所述需要存储的数据的长度和所述需要存储的数据在所述存储单元的目的地址;
相应的,所述数据处理单元将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述数据处理单元将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元从所述控制设备处获取所述需要存储的数据中的一个分段数据;
步骤S2:所述数据处理单元将获取到的所述分段数据缓存在所述缓存单元的第一存储空间中,并修改所述写命令,将所述写命令中的所述需要存储的数据在所述控制设备的源地址修改为所述第一存储空间的地址,将所述需要存储的数据的长度修改为一个分段数据的长度;
步骤S3:所述数据处理单元将修改后的所述写命令发送给所述存储单元;
重复执行所述步骤S1-步骤S3,直到将所述需要存储的数据迁移到所述需要存储的数据在所述存储单元的目的地址所对应的存储空间中。
19.根据权利要求15或16所述的系统,其特征在于:
所述数据读写命令为读命令,所述需要传输的数据为需要读取数据,所述读命令包括所述需要读取的数据在所述存储单元的源地址,所述需要读取的数据的长度和所述需要读取的数据在所述控制设备的目的地址;
相应的,所述数据处理单元将所述数据读写命令中携带的需要传输的数据划分为两个以上的分段数据,并依次将所述分段数据缓存在所述缓存单元中,所述数据处理单元将缓存的所述分段数据,依次迁移到所述数据读写命令所要传输的数据的目的地址所对应的存储空间中包括:
步骤S1:所述数据处理单元修改所述读命令,将所述读命令中的所述需要读取的数据在所述控制设备的目的地址修改为所述分段数据在所述缓存单元的第一存储空间的地址,将所述需要读取的数据的长度修改为所述一个分段数据的长度;并将修改后的读命令发送给存储单元;
步骤S2:所述数据处理单元将一个分段数据缓存在所述第一存储空间中,并将所述第一存储空间中的数据发送给所述控制设备;
重复执行所述步骤S1-步骤S2,直到将所述需要读取的数据迁移到所述需要读取的数据在所述控制设备的目的地址所对应的存储空间中。
20.根据权利要求15或16所述的系统,其特征在于,所述数据处理单元与所述存储单元之间通过基于快捷外围部件互连标准PCIe的NVMe,NVMe over PCIe,架构实现连接。
21.根据权利要求15或16所述的系统,其特征在于,所述数据处理单元中包括控制器,所述控制器用于控制所述缓存单元中缓存的数据与所述存储单元之间的传输,所述控制器是NVMe over Fabric架构中的物理控制器或非易失性存储控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243001.1A CN110119248B (zh) | 2016-12-05 | 2016-12-05 | 数据读写命令的控制方法、存储设备和系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243001.1A CN110119248B (zh) | 2016-12-05 | 2016-12-05 | 数据读写命令的控制方法、存储设备和系统 |
CN201680002975.5A CN107003943B (zh) | 2016-12-05 | 2016-12-05 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
PCT/CN2016/108599 WO2018102967A1 (zh) | 2016-12-05 | 2016-12-05 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680002975.5A Division CN107003943B (zh) | 2016-12-05 | 2016-12-05 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110119248A CN110119248A (zh) | 2019-08-13 |
CN110119248B true CN110119248B (zh) | 2021-10-15 |
Family
ID=59431102
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680002975.5A Active CN107003943B (zh) | 2016-12-05 | 2016-12-05 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
CN201910243001.1A Active CN110119248B (zh) | 2016-12-05 | 2016-12-05 | 数据读写命令的控制方法、存储设备和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680002975.5A Active CN107003943B (zh) | 2016-12-05 | 2016-12-05 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180314450A1 (zh) |
EP (1) | EP3358456A4 (zh) |
CN (2) | CN107003943B (zh) |
WO (1) | WO2018102967A1 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766261A (zh) * | 2017-09-22 | 2018-03-06 | 华为技术有限公司 | 数据校验的方法、装置以及网卡 |
CN108965161A (zh) * | 2018-06-11 | 2018-12-07 | 联想(北京)有限公司 | 信息处理方法和电子设备 |
CN110989918B (zh) * | 2018-10-03 | 2023-03-28 | 慧荣科技股份有限公司 | 写入控制方法以及数据存储装置及其控制器 |
CN109582592B (zh) * | 2018-10-26 | 2021-06-15 | 华为技术有限公司 | 资源管理的方法和装置 |
WO2020102998A1 (zh) * | 2018-11-20 | 2020-05-28 | 华为技术有限公司 | 一种删除内存中索引项的方法、装置 |
CN109669635B (zh) * | 2018-12-19 | 2022-01-21 | 深圳忆联信息系统有限公司 | 用于固态存储主控芯片的命令lba重合检测方法及装置 |
CN109710187B (zh) * | 2018-12-24 | 2022-12-02 | 深圳忆联信息系统有限公司 | NVMe SSD主控芯片的读命令加速方法、装置、计算机设备及存储介质 |
US10942677B2 (en) * | 2019-01-24 | 2021-03-09 | Silicon Motion, Inc. | Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device |
CN110058819A (zh) * | 2019-04-19 | 2019-07-26 | 深圳忆联信息系统有限公司 | 基于可变缓存管理机制的主机命令处理方法和装置 |
US11010084B2 (en) * | 2019-05-03 | 2021-05-18 | Dell Products L.P. | Virtual machine migration system |
WO2021022441A1 (zh) * | 2019-08-05 | 2021-02-11 | 华为技术有限公司 | 数据传输方法、装置、电子设备及可读存储介质 |
CN112732166A (zh) * | 2019-10-28 | 2021-04-30 | 华为技术有限公司 | 访问固态硬盘的方法及装置 |
CN112988623B (zh) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
CN111831587A (zh) * | 2020-04-17 | 2020-10-27 | 北京奕斯伟计算技术有限公司 | 数据写入方法、装置和电子设备 |
US11372586B2 (en) * | 2020-05-19 | 2022-06-28 | Hewlett Packard Enterprise Development Lp | System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates |
WO2021249141A1 (zh) * | 2020-06-11 | 2021-12-16 | 华为技术有限公司 | 存储设备中的元数据处理方法及相关设备 |
US11513977B2 (en) | 2020-06-17 | 2022-11-29 | Samsung Electronics Co., Ltd. | Pipelined data processing in fabric-enabled computational storage |
CN113422669B (zh) * | 2020-07-09 | 2023-09-08 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置和系统、电子设备以及存储介质 |
CN111966610B (zh) * | 2020-09-04 | 2023-12-01 | Oppo广东移动通信有限公司 | 数据传输方法、处理芯片和计算机设备 |
CN114327248A (zh) * | 2020-10-10 | 2022-04-12 | 华为技术有限公司 | 存储节点、存储设备及网络芯片 |
JP2022076620A (ja) | 2020-11-10 | 2022-05-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN113064552A (zh) * | 2021-03-24 | 2021-07-02 | 山东华芯半导体有限公司 | 一种自主分离的NVMe PRP获取加速方法 |
CN113076281B (zh) * | 2021-03-30 | 2022-11-04 | 山东英信计算机技术有限公司 | 一种Ceph内核客户端进行通信的方法、系统、设备及介质 |
CN113485652B (zh) * | 2021-07-31 | 2022-02-22 | 郑州信大捷安信息技术股份有限公司 | 一种大数据块迭代的高速处理方法、fpga装置和系统 |
CN114168076A (zh) * | 2021-12-06 | 2022-03-11 | 陕西空天动力研究院有限公司 | 一种数据存储方法、装置及系统 |
CN114328345A (zh) * | 2021-12-10 | 2022-04-12 | 北京泽石科技有限公司 | 控制信息的处理方法、装置以及计算机可读存储介质 |
US11899585B2 (en) | 2021-12-24 | 2024-02-13 | Western Digital Technologies, Inc. | In-kernel caching for distributed cache |
US11934663B2 (en) * | 2022-01-10 | 2024-03-19 | Western Digital Technologies, Inc. | Computational acceleration for distributed cache |
US11797379B2 (en) | 2022-02-04 | 2023-10-24 | Western Digital Technologies, Inc. | Error detection and data recovery for distributed cache |
CN116886719B (zh) * | 2023-09-05 | 2024-01-23 | 苏州浪潮智能科技有限公司 | 存储系统的数据处理方法、装置、存储系统、设备及介质 |
CN117573043A (zh) * | 2024-01-17 | 2024-02-20 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、系统、设备和介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408357B1 (en) * | 1999-01-15 | 2002-06-18 | Western Digital Technologies, Inc. | Disk drive having a cache portion for storing write data segments of a predetermined length |
CN101093466A (zh) * | 2007-08-10 | 2007-12-26 | 杭州华三通信技术有限公司 | 通过缓存写数据的方法和缓存系统及装置 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
CN104536701A (zh) * | 2014-12-23 | 2015-04-22 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
CN104951252A (zh) * | 2015-06-12 | 2015-09-30 | 联想(北京)有限公司 | 一种数据访问方法及PCIe存储设备 |
CN104965798A (zh) * | 2015-06-10 | 2015-10-07 | 上海华为技术有限公司 | 一种数据处理方法、相关设备以及系统 |
WO2015196378A1 (zh) * | 2014-06-25 | 2015-12-30 | 华为技术有限公司 | 读写闪存中数据的方法、装置及用户设备 |
CN105573668A (zh) * | 2015-12-11 | 2016-05-11 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储方法及装置 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
CN105843557A (zh) * | 2016-03-24 | 2016-08-10 | 天津书生云科技有限公司 | 冗余存储系统、冗余存储方法和冗余存储装置 |
CN105868121A (zh) * | 2016-03-28 | 2016-08-17 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105915595A (zh) * | 2016-04-11 | 2016-08-31 | 深圳市瑞驰信息技术有限公司 | 一种集群存储系统存取数据的方法以及集群存储系统 |
CN106095694A (zh) * | 2016-06-15 | 2016-11-09 | 华为技术有限公司 | 数据存储方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401188B2 (en) * | 2005-06-29 | 2008-07-15 | Intel Corporation | Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
KR101663667B1 (ko) * | 2009-02-03 | 2016-10-07 | 삼성전자주식회사 | 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치 |
US8914576B2 (en) * | 2012-07-30 | 2014-12-16 | Hewlett-Packard Development Company, Lp. | Buffer for RAID controller with disabled post write cache |
US9785356B2 (en) * | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
KR102074329B1 (ko) * | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9336412B2 (en) * | 2013-12-12 | 2016-05-10 | Hitachi, Ltd. | Storage system and method for controlling storage system |
US20150254088A1 (en) * | 2014-03-08 | 2015-09-10 | Datawise Systems, Inc. | Methods and systems for converged networking and storage |
WO2015145724A1 (ja) * | 2014-03-28 | 2015-10-01 | 株式会社日立製作所 | ストレージシステム |
US9389787B2 (en) * | 2014-05-15 | 2016-07-12 | Netapp, Inc. | System and method for simulating a persistent byte addressable storage device on a persistent block addressable storage device |
WO2016121026A1 (ja) * | 2015-01-28 | 2016-08-04 | 株式会社日立製作所 | ストレージ装置、計算機システム、及び、方法 |
US10073774B2 (en) * | 2016-04-29 | 2018-09-11 | Netapp, Inc. | Managing input/output operations for shingled magnetic recording in a storage system |
-
2016
- 2016-12-05 CN CN201680002975.5A patent/CN107003943B/zh active Active
- 2016-12-05 EP EP16897475.6A patent/EP3358456A4/en not_active Withdrawn
- 2016-12-05 WO PCT/CN2016/108599 patent/WO2018102967A1/zh active Application Filing
- 2016-12-05 CN CN201910243001.1A patent/CN110119248B/zh active Active
-
2018
- 2018-07-05 US US16/027,512 patent/US20180314450A1/en not_active Abandoned
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408357B1 (en) * | 1999-01-15 | 2002-06-18 | Western Digital Technologies, Inc. | Disk drive having a cache portion for storing write data segments of a predetermined length |
CN101093466A (zh) * | 2007-08-10 | 2007-12-26 | 杭州华三通信技术有限公司 | 通过缓存写数据的方法和缓存系统及装置 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
WO2015196378A1 (zh) * | 2014-06-25 | 2015-12-30 | 华为技术有限公司 | 读写闪存中数据的方法、装置及用户设备 |
CN105393228A (zh) * | 2014-06-25 | 2016-03-09 | 华为技术有限公司 | 读写闪存中数据的方法、装置及用户设备 |
CN104536701A (zh) * | 2014-12-23 | 2015-04-22 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
CN104965798A (zh) * | 2015-06-10 | 2015-10-07 | 上海华为技术有限公司 | 一种数据处理方法、相关设备以及系统 |
CN104951252A (zh) * | 2015-06-12 | 2015-09-30 | 联想(北京)有限公司 | 一种数据访问方法及PCIe存储设备 |
CN105573668A (zh) * | 2015-12-11 | 2016-05-11 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储方法及装置 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
CN105843557A (zh) * | 2016-03-24 | 2016-08-10 | 天津书生云科技有限公司 | 冗余存储系统、冗余存储方法和冗余存储装置 |
CN105868121A (zh) * | 2016-03-28 | 2016-08-17 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105915595A (zh) * | 2016-04-11 | 2016-08-31 | 深圳市瑞驰信息技术有限公司 | 一种集群存储系统存取数据的方法以及集群存储系统 |
CN106095694A (zh) * | 2016-06-15 | 2016-11-09 | 华为技术有限公司 | 数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107003943B (zh) | 2019-04-12 |
WO2018102967A1 (zh) | 2018-06-14 |
CN107003943A (zh) | 2017-08-01 |
CN110119248A (zh) | 2019-08-13 |
EP3358456A1 (en) | 2018-08-08 |
US20180314450A1 (en) | 2018-11-01 |
EP3358456A4 (en) | 2018-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119248B (zh) | 数据读写命令的控制方法、存储设备和系统 | |
CN110413542B (zh) | NVMe over Fabric架构中数据读写命令的控制方法、设备和系统 | |
US11762581B2 (en) | Method, device, and system for controlling data read/write command in NVMe over fabric architecture | |
US11726948B2 (en) | System and method for storing data using ethernet drives and ethernet open-channel drives | |
US10474397B2 (en) | Unified indirection in a multi-device hybrid storage unit | |
US9734085B2 (en) | DMA transmission method and system thereof | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
US20220334975A1 (en) | Systems and methods for streaming storage device content | |
US9423984B2 (en) | Storage apparatus and control method thereof | |
CN108475229B (zh) | 数据迁移的方法、主机、及固态存储设备 | |
KR102471219B1 (ko) | NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 | |
US9513834B1 (en) | Virtual accounting container for supporting small volumes of data | |
EP3792743A1 (en) | Nvme-based data writing method, device, and system | |
US20210255794A1 (en) | Optimizing Data Write Size Using Storage Device Geometry | |
US9448941B1 (en) | System and method for cache management | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
CN115905056A (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 |