CN110658980A - 数据处理方法及装置、存储系统 - Google Patents
数据处理方法及装置、存储系统 Download PDFInfo
- Publication number
- CN110658980A CN110658980A CN201810713188.2A CN201810713188A CN110658980A CN 110658980 A CN110658980 A CN 110658980A CN 201810713188 A CN201810713188 A CN 201810713188A CN 110658980 A CN110658980 A CN 110658980A
- Authority
- CN
- China
- Prior art keywords
- request
- processed
- ssd
- processor
- processing
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
-
- 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
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法及装置、存储系统。该方法包括:处理器获取待处理I/O请求,该待处理I/O请求可以包括第一地址,该第一地址为待读取、写入或擦除数据在目标SSD中逻辑地址;处理器可以根据FTL映射表对待处理I/O请求进行地址转换,以将第一地址转换为第二地址,第二地址用于指示待读取、写入或擦除数据在目标SSD中物理地址,该FTL映射表可以用于记录n个SSD中物理地址和逻辑地址的转换关系;处理器可以根据第二地址向目标SSD发送地址转换后的待处理I/O请求,并在预置休眠时长后,查询待处理I/O请求的处理结果。以此解决存储系统中数据处理的效率较低的问题。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据处理方法及装置、存储系统。
背景技术
存储技术领域常用的数据载体是机械硬盘和固态硬盘(solid state drives,SSD),由于SSD具有高性能、低延迟、低功耗、环境适应性强等优点,因此得到了广泛的应用。
传统的存储系统通常包括:处理器和SSD。处理器在获取到输入/输出(input/output,I/O)请求后,可以结合SSD对该I/O请求进行处理,并得到该I/O请求的处理结果。示例地,处理器可以将I/O请求发送给SSD,以使得SSD的控制器在接收到I/O请求后,根据闪存转化层(flash transform layer,FTL映射表)将该I/O请求所携带的逻辑地址转换为SSD中的物理地址。之后,SSD的控制器可以根据该I/O请求将数据写入物理地址对应的存储区域,或读取物理地址对应存储区域中数据,或擦除物理地址对应存储区域中的数据,并将I/O请求最终的处理结果反馈给处理器。需要说明的是,处理器在向SSD发送I/O请求后,处理器会在固定的休眠时长后,重复查询SSD的是否反馈该I/O请求的处理结果,直至查询到该处理结果,并对该处理结果进行相应处理。但是,由于传统的SSD对I/O请求的处理过程较复杂,SSD对I/O请求进行处理所需的时间较长。使得休眠时长往往小于SSD对I/O请求进行处理所需的时长,进而使处理器需要耗费较长时间反复查询处理结果,数据处理的效率较低。
发明内容
本申请提供了一种数据处理方法及装置、存储系统,可以解决数据处理的效率较低的问题,所述技术方案如下:
第一方面,本申请提供了一种数据处理方法,该方法可以包括:首先,处理器获取待处理I/O请求,该待处理I/O请求可以包括待读取、写入或擦除数据的第一地址,该第一地址为待读取、写入或擦除数据在目标SSD中逻辑地址,目标SSD为与处理器连接的n个SSD中的任一SSD,n≥1;然后,处理器可以根据FTL映射表对待处理I/O请求进行地址转换,以将第一地址转换为第二地址,其中,第二地址用于指示待读取、写入或擦除数据在目标SSD中物理地址,该FTL映射表可以用于记录n个SSD中物理地址和逻辑地址的转换关系;最后,处理器可以根据第二地址向目标SSD发送地址转换后的待处理I/O请求,并在预置休眠时长后,查询待处理I/O请求的处理结果。
由于处理器在将待处理I/O请求发送至SSD之前,就根据FTL映射表对I/O请求进行了地址转换,因此,SSD在接收到I/O请求后,无需对该I/O请求进行地址的转换,所以减少了SSD对每个I/O请求的处理时长,降低了SSD对I/O请求进行处理所需的时长大于休眠时长的概率,进而降低了处理器需要耗费较长时间反复查询处理结果的概率,提高了数据处理的效率。且在传统技术中,SSD处理I/O请求的时长远大于处理器的休眠时长,则处理器频繁的查询I/O请求的处理结果会占用较多处理器资源,因此会影响处理器的处理能力。而本申请中由于降低了处理器需要耗费较长时间反复查询处理结果的概率,因此能够减少对处理器资源的占用程度,减少对处理器处理能力的影响。
作为一种可能的实现方式,FTL映射表还可以用于记录n个SSD中的存储页中是否存储有数据,以及存储页中存储的数据是否为有效数据,处理器获取待处理I/O请求的过程可以包括:处理器在接收到用户I/O请求后,确定该用户I/O请求为待处理I/O请求;处理器还可以根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行GC处理,并在确定该至少一个SSD中的某一SSD需要进行GC处理时,处理器可以生成用于指示对该某一SSD进行GC处理的I/O请求,并确定生成的I/O请求为待处理的I/O请求。
传统技术中处理器在获取到待处理I/O请求后,均会向SSD发送该I/O请求,并确定SSD对该I/O请求的处理时长,以及将该时长作为休眠时长,进而在该休眠时长后再开始查询该I/O请求的处理结果。但是,SSD在接收到该I/O请求前有可能还需要对SSD内部生成的用于指示进行GC处理的I/O请求进行处理,从而使得SSD在接收到处理器发送的待处理I/O请求后,无法立即对该待处理I/O请求进行处理,这样会导致处理器的休眠时长远小于SSD向处理器反馈处理结果的实际时长,使得处理器需要花费较长的时间查询待处理I/O请求的处理结果,造成了处理器资源的耗费。而本申请中的FTL映射表在用户层实现,因此,处理器还可以根据FTL映射表确定是否需要对SSD进行GC处理,且在确定SSD需要进行GC处理时,可以生成用于指示GC处理的I/O请求。保证处理器发送至SSD的所有I/O请求与SSD实际上处理的I/O请求均相同,使得在发送每个待处理I/O请求后,处理器的预置休眠时长均较准确,从而使处理器在预置休眠时长后就能够立即查询到该待处理I/O请求的处理结果,提高了处理器查询到处理结果的效率,减少了对处理器资源的耗费。
作为一种可能的实现方式,FTL映射表还可以用于记录n个SSD中的存储块的擦除次数,处理器获取待处理I/O请求的过程可以包括:处理器每隔预设时长根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行WL处理;在确定至少一个SSD中的某一SSD需要进行WL处理时,处理器可以生成用于指示对该SSD进行WL处理的I/O请求,并确定生成的I/O请求为待处理I/O请求。
传统技术中处理器在获取到待处理I/O请求后,均会向SSD发送该I/O请求,并确定SSD对该I/O请求的处理时长,以及将该时长作为休眠时长,进而在该休眠时长后再开始查询该I/O请求的处理结果。但是,SSD在接收到该I/O请求前有可能还需要对SSD内部生成的用于指示进行WL处理的I/O请求进行处理,从而使得SSD在接收到处理器发送的待处理I/O请求后,无法立即对该待处理I/O请求进行处理,这样会导致处理器的休眠时长远小于SSD向处理器反馈处理结果的实际时长,使得处理器需要花费较长的时间查询待处理I/O请求的处理结果,造成了处理器资源的耗费。而本申请中的FTL映射表在用户层实现,因此,处理器还可以根据FTL映射表确定是否需要对SSD进行WL处理,且在确定SSD需要进行WL处理时,可以生成用于指示WL处理的I/O请求。保证处理器发送至SSD的所有I/O请求与SSD实际上处理的I/O请求均相同,使得在发送每个待处理I/O请求后,处理器的预置休眠时长均较准确,从而使处理器在预置休眠时长后就能够立即查询到该待处理I/O请求的处理结果,提高了处理器查询到处理结果的效率,减少了对处理器资源的耗费。
作为一种可能的实现方式,在处理器查询待处理I/O请求的处理结果之前,处理器还可以在预设的多种请求类型对应的时长中,查找待处理I/O请求的类型对应的时长,并可以将待处理I/O请求的类型对应的时长确定为预置休眠时长。其中,每种请求类型对应的时长为根据SSD对每种请求类型的I/O请求的历史处理时长计算得到的时长。
传统SSD对各个I/O请求的处理时长存在差异,无法保证休眠时长的有效性,可能导致休眠时长与SSD对I/O请求的实际处理时长存在差异。如果SSD处理I/O请求的时长远小于休眠时长,此时,处理器只能等到本次休眠时长结束后才会去查询I/O请求的处理结果,从而延长了处理器得到该I/O请求的处理结果的时长。而本申请中,处理器能够根据I/O请求的类型的不同进行不同时长的休眠,从而能够提高休眠时长的精准度,减少处理器查询I/O请求的处理结果所需的时长。
作为一种可能的实现方式,在处理器查询待处理I/O请求的处理结果之前,处理器还可以根据FTL映射表判断目标SSD在处理待处理I/O请求前是否需要进行m个预设处理,m个预设处理包括:GC处理和WL处理中的至少一个,m≥1;然后,处理器可以根据判断结果确定请求集合,该请求集合可以包括:待处理I/O请求,且在判断结果为目标SSD在处理待处理I/O请求前需要进行至少一个预设处理时,该请求集合还可以包括:分别用于指示对目标SSD进行至少一个预设处理中的每个预设处理的I/O请求;最后,处理器可以在预设的多种请求类型对应的时长中,查找请求集合中每个I/O请求的类型对应的时长,并将请求集合中所有I/O请求的类型对应的时长之和,确定为预置休眠时长。其中,每种请求类型对应的时长根据SSD对每种请求类型的I/O请求的历史处理时长计算得到。
本申请中的FTL映射表在用户层实现,因此,处理器还可以根据FTL映射表确定目标SSD在对待处理I/O请求前是否需要进行GC处理和/或WL处理,且可以根据GC处理和WL处理中目标SSD需要执行的处理,确定处理器需要等待的预置休眠时长。从而提高了预置休眠时长的准确性,提高了处理器查询到处理结果的效率,减少了对处理器资源的耗费。
作为一种可能的实现方式,每种请求类型对应的时长可以为:SSD对每种请求类型的I/O请求的历史处理时长的算数平均值或加权平均值。
作为一种可能的实现方式,在向目标SSD发送地址转换后的待处理I/O请求前,处理器还可以将待处理I/O请求加入预设的发送队列;在向目标SSD发送地址转换后的待处理I/O请求后,处理器还可以将待处理I/O请求的标识加入预设的查询队列;并在查询到待处理I/O请求的处理结果后,处理器可以将查询队列中待处理I/O请求的标识进行删除。其中,发送队列包括待发送至SSD的I/O请求,查询队列包括已发送至SSD且未查询到处理结果的目标I/O请求的标识。本申请中通过将I/O请求加入各种队列,以实现对I/O请求进行依次发送,以及对I/O请求的处理结果的依次查询。
作为一种可能的实现方式,处理器在将待处理I/O请求加入预设的发送队列时,可以首先检测待处理I/O请求是否满足预设条件,其中,预设条件包括:发送队列中不存在与待处理I/O请求携带同一物理地址的I/O请求;在确定待处理I/O请求满足预设条件时,处理器将待处理I/O请求加入发送队列。
处理器需要将待处理I/O请求所携带的物理地址与每个发送队列和每个查询队列中的I/O请求所携带的物理地址进行比较。若确定该待处理I/O请求所携带的物理地址与每个发送队列和每个查询队列中的每个I/O请求所携带的物理地址均不同,则处理器可以确定该待处理I/O请求满足预设条件。也即,此时并没有其他待发送至SSD的I/O请求与当前检测的待处理I/O请求用于请求对同一个物理地址进行读取、写入或擦除数据的操作,当前检测的待处理I/O请求能够与多个发送队列中的任一I/O请求并行发送至SSD。且将多个I/O请求并行发送至SSD,这样一来就可以大大加快向SSD发送I/O请求的效率。
作为一种可能的实现方式,处理器中预设有:与多种请求类型一一对应的多个发送队列,以及与多种请求类型一一对应的多个查询队列;处理器在将待处理I/O请求加入预设的发送队列时,可以将待处理I/O请求加入其类型对应的发送队列;处理器在将待处理I/O请求的标识加入预设的查询队列时,可以将待处理I/O请求的标识加入待处理I/O请求的类型对应的查询队列。由于处理器在发送每个I/O请求后,会将该I/O请求的标识加入其类型对应的查询队列,因此,查询每个查询队列中的I/O请求的处理结果所需等待的预置休眠时长均相同,在每个查询队列中包括多个I/O请求的标识时,只需获取一次预置休眠时长即可。
作为一种可能的实现方式,在处理器将待处理I/O请求加入预设的发送队列之前,处理器还可以将待处理I/O请求加入检测队列,该检测队列可以用于记录待发送至SSD的I/O请求;其中,当检测队列包括:用于指示进行GC处理的I/O请求和用户I/O请求时,用于指示进行GC处理的I/O请求排在用户I/O请求前。也即,将用于指示进行GC处理的I/O请求优先处理,这样一来就能够使得后续SSD优先执行GC处理,且GC处理能够增大SSD的可用存储空间,从而能够使得在SSD处理用户I/O请求时,SSD具有足够的存储空间。
第二方面,本申请提供了一种数据处理装置,所述数据处理装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据处理方法的各个模块。
第三方面,提供了一种存储系统,所述存储系统包括:处理器、存储器、通信接口以及总线,所述存储器包括n个SSD,存储器与网络接口分别通过总线与处理器相连;处理器被配置为执行存储器中存储的指令;处理器通过执行指令来实现第一方面或第一方面任一种可能实现方式中的数据处理方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面或第一方面任一种可能实现方式中的数据处理方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面或第一方面任一种可能实现方式中的数据处理方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
本申请提供了一种数据处理方法及装置、存储系统,通过在将待处理I/O请求发送至SSD之前,处理器根据FTL映射表对I/O请求进行了地址转换,因此,SSD在接收到I/O请求后,无需对该I/O请求进行地址的转换,所以减少了SSD对每个I/O请求的处理时长,降低了SSD对I/O请求进行处理所需的时长大于休眠时长的概率,进而降低了处理器需要耗费较长时间反复查询处理结果的概率,提高了数据处理的效率。
附图说明
图1为本发明实施例提供的一种存储系统的结构示意图;
图2为本发明实施例提供的一种协议栈的示意图;
图3为本发明实施例提供一种数据处理方法的流程图;
图4为本发明实施例提供的一种发送队列的示意图;
图5为本发明实施例提供的一种发送队列与查询队列的示意图;
图6为本发明实施例提供的一种数据处理装置的结构示意图;
图7为本发明实施例提供的另一种数据处理装置的结构示意图;
图8为本发明实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本发明实施例提供的一种存储系统100的结构示意图,如图1所示,存储系统100可以包括:处理器01、存储器(图1中未示出)、通信接口(图1中未示出)以及总线(图1中未示出),存储器可以包括n个SSD 02以及其他存储模块,存储器可以与网络接口分别通过总线与处理器01相连,且处理器01被配置为执行存储器中存储的指令。需要说明的是,n≥1,图1中以存储系统100包括多个SSD 02为例。
在本发明实施例中,由处理器01实现SSD控制器的功能,处理器01中可以存储有闪存转换层(flash translation layer,FTL映射表)映射表,FTL映射表可以用于记录:n个SSD 02中物理地址和逻辑地址的转换关系。处理器01可以根据该FTL映射表实现SSD的控制器03的功能。
需要说明的是,处理器01可以为中央处理器,处理器01可以向SSD 02发送I/O请求,以便于SSD 02根据该I/O请求对SSD 02中的某一物理地址进行读取、写入或擦除数据的操作,并得到该I/O请求的处理结果,进而将该处理结果反馈至处理器01。
上述过程可以通过协议栈表示,如图2所示,该协议栈可以包括:用户层和硬件层。其中,硬件层包括硬件,如处理器和SSD,用户层建立处理器上运行的操作系统上。用户层包括非易失性内存主机控制器接口规范(Non-Volatile Memory express,NVMe)驱动,操作系统以及FTL模块。用户层中的FTL模块可以根据FTL映射表对I/O请求进行地址转换,以将I/O请求中的逻辑地址转换为物理地址。FTL模块还可以通过该NVMe驱动将地址转换后的I/O请求发送至硬件层中的SSD。SSD在得到该I/O请求的处理结果后,可以将该处理结果通过NVMe驱动反馈至用户层。
传统技术中,由于传统的数据处理过程,需要由SSD控制器完成I/O请求的逻辑地址到物理地址的转换,而且,处理器查询I/O请求时利用固定的休眠时长查询I/O请求执行结果,直至该I/O请求执行完成,休眠时长往往小于SSD对I/O请求处理时长,进而使处理器需要耗费较长时间反复查询I/O请求是否完成,整个数据处理过程耗时长,效率较低。本发明实施例提供了一种数据处理方法,能够降低处理器需要耗费较长时间反复查询处理结果的概率,并提高数据处理的处理效率。
图3为本发明实施例提供一种数据处理方法的流程图,该数据处理方法可以用于图1所示的存储系统,如图3所示,该数据处理方法可以包括:
步骤301、处理器获取待处理I/O请求。
待处理I/O请求可以包括待读取、写入或擦除数据的第一地址,第一地址为待读取、写入或擦除数据在目标SSD中逻辑地址,目标SSD为与处理器连接的n个SSD中的任一SSD。该待处理I/O请求可以用于指示对该目标SSD中的该第一地址进行读取、写入或擦除数据的操作。
可选地,步骤301中处理器获取的待处理I/O请求可以包括:用户I/O请求和系统I/O请求中的至少一种I/O请求。也即,待处理I/O请求可以包括:用户I/O请求,或者,系统I/O请求,或者,用户I/O请求和系统I/O请求。
该用户I/O请求可以为用户(也即使用存储系统的人)在存储系统上操作所触发的I/O请求,具体可以为用户利用存储系统中应用程序发出的I/O请求。可选地,当存储系统还包括虚拟机时,该用户I/O请求还可以为用户在与虚拟机上进行操作所触发的I/O请求,本发明实施例对此不作限定。
该系统I/O请求可以为处理器生成的I/O请求,该系统I/O请求可以包括:用于指示GC处理的I/O请求,和/或,用于指示WL处理的I/O请求。
示例地,FTL映射表还可以用于记录:n个SSD中的存储页中是否存储有数据,以及该存储页中存储的数据是否为有效数据。处理器在接收到用户I/O请求后,可以根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行垃圾回收(garbage collection,GC)处理。例如,处理器可以判断n个SSD中的每个SSD当前是否需要进行GC处理;在确定某一SSD当前需要进行GC处理时,处理器可以生成用于指示对该SSD进行GC处理的I/O请求,并将该I/O请求作为待处理I/O请求。需要说明的是,处理器中的FTL模块在根据FTL映射表判断SSD当前是否需要进行GC处理时,可以根据FTL映射表确定SSD中未存储有数据的存储页,进而确定当前SSD中的剩余存储空间的占比;当该剩余存储空间小于预设存储空间阈值(如10%、20%等)时,可以确定SSD当前需要进行GC处理。另外,SSD在进行GC处理时,可以将SSD中的某存储块中的所有数据删除,并将该存储块中的有效存储页中的数据写入其他存储块,从而实现删除SSD中无效数据的目的,增多了SSD中的剩余存储空间。
又示例地,FTL映射表还可以用于记录:n个SSD中存储块的擦除次数。处理器还可以每隔预设时长根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行磨损均衡(wear leveling,WL)处理,在确定某一SSD当前需要进行WL处理时,可以生成用于指示对该SSD进行WL处理的I/O请求,并将该I/O请求作为待处理I/O请求。处理器中的FTL模块在根据FTL映射表判断SSD当前是否需要进行WL处理时,可以根据FTL映射表确定SSD中每个存储块的擦除次数,并判断该擦除次数是否大于预设次数阈值,在某一存储块的擦除次数大于预设次数阈值时,可以确定该存储块当前需要进行WL处理。另外,SSD在进行WL处理时,可以将擦除次数多的存储块上的数据转移至擦除次数少的存储块上,从而使得SSD中的所有存储块的擦除次数达到一个比较均衡的状态。
需要说明的是,本发明实施例中处理器判断SSD是否需要进行GC处理的步骤可以在处理器获取到用户I/O请求之后,也即,一旦处理器获取到用户I/O请求,处理器就可以判断n个SSD中的至少一个SSD是否需要进行GC处理。处理器判断n个SSD中的至少一个SSD是否需要进行WL处理的步骤可以与处理器获取到用户I/O请求的步骤无关,也即,处理器获取到用户I/O请求并不会触发处理器进行SSD是否需要执行WL处理的判断步骤。
步骤302、处理器根据FTL映射表对待处理I/O请求进行地址转换。
处理器在对待处理I/O请求进行地址转换后,可以将待处理I/O请求中的第一地址转换为第二地址,其中,第二地址用于指示待读取、写入或擦除数据在目标SSD中的物理地址。
示例地,SSD包括多个存储块,每个存储块包括至少一个存储页,每个存储页包括多个物理地址,每个物理地址用于存储数据。FTL映射表用于管理SSD中物理地址和逻辑地址的转换关系。本发明实施例中的FTL映射表可以在用户层实现,因此,处理器在每获取到I/O请求之后,处理器中的FTL模块就可以根据在用户层实现的FTL映射表,将该I/O请求中携带的逻辑地址转换为SSD中的物理地址。而处理器无需将该I/O请求发送至SSD进行逻辑地址和物理地址的转换,从而实现了预先地址转换。
步骤303、处理器检测地址转换后的待处理I/O请求是否满足预设条件。若待处理I/O请求满足预设条件,则执行步骤304;若待处理I/O请求不满足预设条件,则执行步骤303。
预设条件可以包括:处理器中的发送队列中不存在与当前检测的待处理I/O请求携带同一物理地址的I/O请求。该发送队列可以包括待发送至SSD的I/O请求。
可选地,该处理器中可以预设有与多种请求类型一一对应的多个发送队列,且该多个发送队列中的任意两个I/O请求中的物理地址均不同,这些I/O请求可以并行发送至SSD,该多种类型可以包括:读取、写入和擦除。
处理器在步骤303中需要将待处理I/O请求所携带的物理地址与每个发送队列中的I/O请求所携带的物理地址进行比较。若确定该待处理I/O请求所携带的物理地址与发送队列中的各个I/O请求所携带的物理地址均不同,则处理器可以确定该待处理I/O请求满足预设条件。也即,此时并没有其他待发送至SSD的I/O请求与当前检测的待处理I/O请求用于请求对同一个物理地址进行读取、写入或擦除数据的操作,当前检测的待处理I/O请求能够与多个发送队列中的任一I/O请求并行发送至SSD。
另外,若某一待处理I/O请求不满足预设条件,则可以确定该待处理I/O请求不满足加入发送队列的条件,并可以重复执行步骤303,也即重复判断该待处理I/O请求是否满足预设条件,直至该待处理I/O请求满足预设条件才可以确定该待处理I/O请求满足加入发送队列的条件。
步骤304、处理器将待处理I/O请求加入发送队列。
在确定待处理I/O请求满足预设条件后,处理器可以将该待处理I/O请求加入该待处理I/O请求的类型所对应的发送队列。示例地,在步骤304中处理器可以首先确定待处理I/O请求的类型(如读取类型),并在多个发送队列中查找与其类型对应的发送队列,最后将该待处理I/O请求加入其类型对应的发送队列(如读取类型对应的发送队列)。
如图4所示,假设多个发送队列包括:读取类型对应的发送队列1、写入类型对应的发送队列2以及擦除类型对应的发送队列3。若待处理I/O请求的类型为写入,则在待处理I/O请求满足预设条件时,可以将待处理I/O请求加入写入类型对应的发送队列2。
步骤305、处理器向目标SSD发送该发送队列中的待处理I/O请求。
目标SSD为n个SSD中该待处理I/O请求中的第二地址所指示的SSD。需要说明的是,由于多个发送队列中的I/O请求所携带的物理地址不同,因此多个发送队列中I/O请求可以并行发送至SSD。也即,处理器可以同时对多个发送队列中的I/O请求进行发送,且每个发送队列中的I/O请求可以依次发送。这样一来就可以大大加快向SSD发送I/O请求的效率。
目标SSD在接收到待处理I/O请求之后,就可以对该待处理I/O请求进行处理,如对该待处理I/O请求中的第二地址进行读取、写入或擦除数据的操作,之后,目标SSD还可以将该待处理I/O请求的处理结果反馈至处理器。需要说明的是,在处理器将待处理I/O请求发送至目标SSD后,该发送队列就不再记录有该待处理I/O请求。
步骤306、目标SSD对待处理I/O请求进行处理。
目标SSD在接收到待处理I/O请求后,就可以根据该待处理I/O请求中的第二地址(目标SSD中的物理地址),对该第二地址进行读取、写入或擦除数据,以对该待处理I/O请求进行处理。
需要说明的是,存储系统中还可以预先设置有共享内存,该共享内存用于存放每个I/O请求的处理结果。目标SSD在对待处理I/O请求处理完毕后,可以将处理结果反馈至存储系统中的该共享内存。处理器后续在查询每个I/O请求的处理结果时,均可以在该共享内存中进行查询。
步骤307、处理器在查询队列中增加待处理I/O请求的标识。
处理器中还可以预设有查询队列,该查询队列可以包括已发送至SSD且未查询到处理结果的I/O请求。
可选地,处理器中可以预设有与多种请求类型一一对应的多个查询队列。在将待处理I/O请求发送至目标SSD后,处理器就可以在待处理I/O请求的类型对应的查询队列中增加该待处理I/O请求的标识。
如图5所示,发送队列1和查询队列1均对应读取类型,发送队列2和查询队列2均对应写入类型,发送队列3和查询队列3均对应擦除类型。在向SSD发送该发送队列1中的I/O请求3后,该发送队列1不再记录有该I/O请求3,且处理器需要在查询队列1中增加I/O请求3的标识;在发送该发送队列2中的I/O请求2后,发送队列2不再记录有该I/O请求2,且处理器需要在查询队列2中增加I/O请求2的标识;在发送该发送队列3中的I/O请求1后,发送队列3中不再记录有该I/O请求1,且处理器需要在查询队列3中增加I/O请求1的标识。
步骤308、处理器获取预置休眠时长。
处理器中可以预置有多种请求类型对应的时长。其中,预置休眠时长可以采用以下方式中任意一种方式实现:
方式一:维护人员根据经验值人为设定预置休眠时长。
方式二:根据存储系统中I/O请求处理过程的历史时长确定I/O请求平均时长,并依此确定预置休眠时长。
示例地,每种请求类型对应的预置休眠时长可以根据SSD对该种请求类型的I/O请求的历史处理时长计算得到,如:每种请求类型对应的时长为:SSD对该种请求类型的I/O请求的历史处理时长的算数平均值或加权平均值。示例地,假设SSD在对某一请求类型的三个I/O请求的历史处理时长分别为:1.5秒、2秒和2.5秒,则处理器可以将1秒、2秒和2.5秒的平均值2秒作为SSD对该请求类型的I/O请求的历史处理时长的算数平均值。进一步地,若1.5秒的权值为2,2秒的权值为5,2.5秒的权值为3,则处理器可以将1秒、2秒和2.5秒的加权平均值2.5秒作为SSD对该请求类型的I/O请求的历史处理时长的加权平均值。
可选地,在该方式二中,多种请求类型对应的预置休眠时长可以根据最新的历史处理时长重新计算,并进行周期性的更新。
可选地,由于处理器在发送每个I/O请求后,会将该I/O请求的标识加入其类型对应的查询队列,因此,每个查询队列中的I/O请求均为同一种请求类型的I/O请求,查询每个查询队列中的I/O请求的处理结果所需等待的预置休眠时长均相同,在每个查询队列中包括多个I/O请求的标识时,只需获取一次预置休眠时长即可。
需要说明的是,若处理器在步骤301中并未根据FTL映射表对SSD是否需要进行GC处理和WL处理的判断,也即步骤301中获取到的待处理I/O请求只有用户I/O请求,则处理器确定该预置休眠时长的过程还可以为:处理器根据FTL映射表判断目标SSD处理该待处理I/O请求前,目标SSD是否需要进行m个预设处理,m个预设处理包括:GC处理和WL处理中的至少一个,m≥1;然后,处理器可以根据判断结果确定请求集合,该请求集合可以包括:该待处理I/O请求,且在判断结果为目标SSD需要进行至少一个预设处理时,请求集合还包括:用于指示对目标SSD进行该至少一个预设处理中的每个预设处理的I/O请求;处理器在确定请求集合后,还可以在预设的多种请求类型对应的时长中,查找请求集合中每个I/O请求的类型对应的时长,并将请求集合中所有I/O请求的类型对应的时长之和,确定为该预置休眠时长。也即,处理器还可以根据FTL映射表确定目标SSD在对待处理I/O请求前是否需要进行GC处理和/或WL处理,且可以根据GC处理和WL处理中目标SSD需要执行的处理,确定处理器需要等待的预置休眠时长。从而提高了预置休眠时长的准确性,提高了处理器查询到处理结果的效率,减少了对处理器资源的耗费。
步骤309、在预置休眠时长后,对查询队列中的待处理I/O请求的处理结果进行查询。
在确定预置休眠时长后,处理器就可以将该待处理I/O请求进行搁置,并在该预置休眠时长后,再开始不断查询该待处理I/O请求的处理结果。在该待处理I/O请求进行搁置的过程中,处理器可以执行与该待处理I/O请求无关的其他操作,从而实现处理器资源的有效利用。另外,由于SSD会向存储系统中的共享内存反馈I/O请求的处理结果,因此,处理器可以从存储系统中的共享内存查询该待处理I/O请求的处理结果。
需要说明的是,存储系统还可以具有操作系统,该操作系统可以包括多个线程,处理器在执行每个步骤均可以通过调用线程实现,且在调用线程发送待处理I/O请求后,可以控制该线程休眠预置休眠时长,并在该预置休眠时长后唤醒该线程,以进行待处理I/O请求的处理结果的查询。
需要说明的是,传统技术中处理器在调用某一线程向SSD发送I/O请求后,还可以直接停止调用该第一线程,并切换到其他线程。SSD在得到I/O请求的处理结果后,可以通过中断的方式向处理器发送该I/O请求的处理结果,此时处理器又可以从其他线程切换到第一线程。但是,在高速I/O的场景下,SSD能够立即反馈I/O请求的处理结果,这样一来,就会导致处理器在线程间频繁的切换,影响处理器的处理效率。而本发明实施例中,若SSD能够立即反馈I/O请求的处理结果,则处理器确定出的预置休眠时长通常较小,当该预置休眠时长为0秒时,处理器可以在向SSD发送I/O请求后,立即查询该I/O请求的处理结果,而无需在多个线程间进行切换,因此提高了处理器的处理效率。
另外,传统技术中处理器在向SSD发送I/O请求后,还可以不在休眠时长后查询处理结果,而是直接开始不断地查询该I/O请求的处理结果,这样一来,就造成了处理器资源的浪费。而本发明实施例中,处理器在向SSD发送待处理I/O请求后,可以执行其他操作,并在预置休眠时长后再查询该待处理I/O请求的处理结果,这样一来就大大提高了对处理器资源的利用率。
步骤310、在查询到待处理I/O请求的处理结果后,删除查询队列中该待处理I/O请求的标识。
处理器在查询到SSD反馈的待处理I/O请求的处理结果后,就可以将该待处理I/O请求的标识从该待处理I/O请求的类型对应的查询队列中移除,以保证该查询队列始终记载已发送至SSD,且未查询到处理结果的I/O请求的标识。
另外,处理器在查询到用户I/O请求的处理结果后,还可以向用户反馈用户I/O请求的处理结果。
作为一个可能的实施例,在步骤302之后以及步骤303之前,处理器还可以先将地址转换后的待处理I/O请求加入预设的检测队列。该检测队列可以包括待检测是否满足预设条件的I/O请求。然后,在步骤303中可以检测该检测队列中的待处理I/O请求是否满足预设条件。并且,当该检测队列包括用于指示进行GC处理的I/O请求以及用户I/O请求时,该用于指示进行GC处理的I/O请求可以排在用户I/O请求前。也即,本发明实施例中,将用于指示进行GC处理的I/O请求优先处理,这样一来就能够使得后续SSD优先执行GC处理,且GC处理能够增大SSD的可用存储空间,从而能够使得在SSD处理用户I/O请求时,SSD具有足够的存储空间。
综上所述,本发明实施例提供的数据处理方法中,由于处理器在将待处理I/O请求发送至SSD之前,就根据FTL映射表对I/O请求进行了地址转换,因此,SSD在接收到I/O请求后,无需对该I/O请求进行地址的转换,所以减少了SSD对每个I/O请求的处理时长,降低了SSD对I/O请求进行处理所需的时长大于休眠时长的概率,进而降低了处理器需要耗费较长时间反复查询处理结果的概率,提高了数据处理的效率。在传统技术中,SSD处理I/O请求的时长远大于处理器的休眠时长,则处理器频繁的查询I/O请求的处理结果会占用较多处理器资源,因此会影响处理器的处理能力。而本发明实施例中由于降低了处理器需要耗费较长时间反复查询处理结果的概率,因此能够减少对处理器资源的占用程度,减少对处理器处理能力的影响。另一方面,传统SSD对各个I/O请求的处理时长存在差异,无法保证休眠时长的有效性,可能导致休眠时长与SSD对I/O请求的实际处理时长存在差异。如果SSD处理I/O请求的时长远小于休眠时长,此时,处理器只能等到本次休眠时长结束后才会去查询I/O请求的处理结果,从而延长了处理器得到该I/O请求的处理结果的时长。而本发明实施例中,处理器能够根据I/O请求的类型的不同进行不同时长的休眠,从而能够提高休眠时长的精准度,减少处理器查询I/O请求的处理结果所需的时长。
进一步地,传统技术中处理器在获取到待处理I/O请求后,均会向SSD发送该I/O请求,并确定SSD对该I/O请求的处理时长,以及将该时长作为休眠时长,进而在该休眠时长后再开始查询该I/O请求的处理结果。但是,SSD在接收到该I/O请求前有可能还需要对SSD内部生成的系统I/O请求(如用于指示进行GC处理的I/O请求,和/或,用于指示进行WL处理的I/O请求)进行处理,从而使得SSD在接收到处理器发送的待处理I/O请求后,无法立即对该待处理I/O请求进行处理,这样会导致处理器的休眠时长远小于SSD向处理器反馈处理结果的实际时长,使得处理器需要花费较长的时间查询待处理I/O请求的处理结果,造成了处理器资源的耗费。而本发明实施例中的FTL映射表在用户层实现,因此,处理器还可以根据FTL映射表确定是否需要对SSD进行GC处理和/或WL处理,且在确定SSD需要进行GC处理和/或WL处理时,可以生成用于指示GC处理和/或WL处理的I/O请求。保证处理器发送至SSD的所有I/O请求与SSD实际上处理的I/O请求均相同,使得在发送每个待处理I/O请求后,处理器的预置休眠时长均较准确,从而使处理器在预置休眠时长后就能够立即查询到该待处理I/O请求的处理结果,提高了处理器查询到处理结果的效率,减少了对处理器资源的耗费。
图6为本发明实施例提供的一种数据处理装置的结构示意图,该数据处理装置可以用于图1所示的存储系统中的处理器01。如图6所示,该数据处理装置可以包括:
获取模块601,用于获取待处理I/O请求,待处理I/O请求包括待读取、写入或擦除数据的第一地址,第一地址为待读取、写入或擦除数据在目标固态硬盘SSD中逻辑地址,目标SSD为与处理器连接的n个SSD中的任一SSD,n≥1;
转换模块602,用于根据闪存转化层FTL映射表对待处理I/O请求进行地址转换,以将第一地址转换为第二地址,其中,第二地址用于指示待读取、写入或擦除数据在目标SSD中物理地址,FTL映射表用于记录n个SSD中物理地址和逻辑地址的转换关系;
发送模块603,用于根据第二地址向目标SSD发送地址转换后的待处理I/O请求;
查询模块604,用于在预置休眠时长后,查询待处理I/O请求的处理结果。
综上所述,本发明实施例提供的数据处理装置中,由于在发送模块将待处理I/O请求发送至SSD之前,转换模块已经根据FTL映射表对I/O请求进行了地址转换,因此,SSD在接收到I/O请求后,无需对该I/O请求进行地址的转换,所以减少了SSD对每个I/O请求的处理时长,降低了SSD对I/O请求进行处理所需的时长大于休眠时长的概率,进而降低了处理器需要耗费较长时间反复查询处理结果的概率,提高了数据处理的效率。
可选地,FTL映射表还用于记录n个SSD中的存储页中是否存储有数据,以及存储页中存储的数据是否为有效数据,获取模块601可以用于:在接收到用户I/O请求后,确定用户I/O请求为待处理I/O请求;根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行垃圾回收GC处理;在确定至少一个SSD中的某一SSD需要进行GC处理时,生成用于指示对某一SSD进行GC处理的I/O请求,并确定生成的I/O请求为待处理的I/O请求。
可选地,FTL映射表还用于记录n个SSD中的存储块的擦除次数,获取模块601可以用于:处理器每隔预设时长根据FTL映射表判断n个SSD中的至少一个SSD当前是否需要进行磨损平衡WL处理;在确定至少一个SSD中的某一SSD需要进行WL处理时,处理器生成用于指示对某一SSD进行WL处理的I/O请求,并确定生成的I/O请求为待处理I/O请求。
可选地,图7为本发明实施例提供的另一种数据处理装置的结构示意图,如图7所示,在图6的基础上,该数据处理装置60还可以包括:
第一查找模块605,用于在预设的多种请求类型对应的时长中,查找待处理I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对每种请求类型的I/O请求的历史处理时长计算得到;
第一确定模块606,用于将待处理I/O请求的类型对应的时长确定为预置休眠时长。
第一加入模块607,用于在向目标SSD发送地址转换后的待处理I/O请求前,将待处理I/O请求加入预设的发送队列,发送队列包括待发送至SSD的I/O请求;
第二加入模块608,用于在向目标SSD发送地址转换后的待处理I/O请求后,将待处理I/O请求的标识加入预设的查询队列,查询队列包括已发送至SSD且未查询到处理结果的目标I/O请求的标识;
删除模块609,用于在查询到待处理I/O请求的处理结果后,将查询队列中待处理I/O请求的标识进行删除。
可选地,第一加入模块607可以用于:处理器检测待处理I/O请求是否满足预设条件,其中,预设条件包括:发送队列中不存在与待处理I/O请求携带同一物理地址的I/O请求;在确定待处理I/O请求满足预设条件时,处理器将待处理I/O请求加入发送队列。
可选地,处理器中预设有:与多种请求类型一一对应的多个发送队列,以及与多种请求类型一一对应的多个查询队列;第一加入模块607可以用于:将待处理I/O请求加入其类型对应的发送队列;第二加入模块608可以用于:将待处理I/O请求的标识加入待处理I/O请求的类型对应的查询队列。
可选地,该数据处理装置60还可以包括:第三加入模块610,用于将待处理I/O请求加入检测队列,检测队列包括待发送至SSD的I/O请求;其中,当检测队列包括:用于指示进行GC处理的I/O请求和用户I/O请求时,用于指示进行GC处理的I/O请求排在用户I/O请求前。
可选地,图8为本发明实施例提供的另一种数据处理装置的结构示意图,如图7所示,在图6的基础上,该数据处理装置60还可以包括:
判断模块611,用于根据FTL映射表判断目标SSD在处理待处理I/O请求前是否需要进行m个预设处理,m个预设处理包括:GC处理和WL处理中的至少一个,m≥1;
第二确定模块612,用于根据判断结果确定请求集合,请求集合包括:待处理I/O请求,且在判断结果为目标SSD在处理待处理I/O请求前需要进行至少一个预设处理时,请求集合还包括:分别用于指示对目标SSD进行至少一个预设处理中的每个预设处理的I/O请求;
第二查找模块613,用于在预设的多种请求类型对应的时长中,查找请求集合中每个I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对每种请求类型的I/O请求的历史处理时长计算得到;
第三确定模块614,用于将请求集合中所有I/O请求的类型对应的时长之和,确定为预置休眠时长。
可选地,每种请求类型对应的时长为:SSD对每种请求类型的I/O请求的历史处理时长的算数平均值或加权平均值。
综上所述,本发明实施例提供的数据处理装置中,由于在发送模块将待处理I/O请求发送至SSD之前,转换模块已经根据FTL映射表对I/O请求进行了地址转换,因此,SSD在接收到I/O请求后,无需对该I/O请求进行地址的转换,所以减少了SSD对每个I/O请求的处理时长,降低了SSD对I/O请求进行处理所需的时长大于休眠时长的概率,进而降低了处理器需要耗费较长时间反复查询处理结果的概率,提高了数据处理的效率。
需要说明的是,图6、图7和图8所示的数据处理装置均可以用于处理器,且每个数据处理装置所实现的功能均可以与图2所示的协议栈中的FTL模块所实现的功能相同。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
需要说明的是,本发明实施例提供的方法实施例能够与相应的装置实施例相互参考,本发明实施例对此不做限定。本发明实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (21)
1.一种数据处理方法,其特征在于,所述方法包括:
处理器获取待处理I/O请求,所述待处理I/O请求包括待读取、写入或擦除数据的第一地址,所述第一地址为所述待读取、写入或擦除数据在目标固态硬盘SSD中逻辑地址,目标SSD为与所述处理器连接的n个SSD中的任一SSD,n≥1;
所述处理器根据闪存转化层FTL映射表对所述待处理I/O请求进行地址转换,以将所述第一地址转换为第二地址,其中,所述第二地址用于指示所述待读取、写入或擦除数据在所述目标SSD中物理地址,所述FTL映射表用于记录所述n个SSD中物理地址和逻辑地址的转换关系;
所述处理器根据所述第二地址向所述目标SSD发送地址转换后的所述待处理I/O请求;
在预置休眠时长后,所述处理器查询所述待处理I/O请求的处理结果。
2.根据权利要求1所述的方法,其特征在于,所述FTL映射表还用于记录所述n个SSD中的存储页中是否存储有数据,以及所述存储页中存储的数据是否为有效数据,所述处理器获取待处理I/O请求,包括:
所述处理器在接收到用户I/O请求后,确定所述用户I/O请求为所述待处理I/O请求;
所述处理器根据所述FTL映射表判断所述n个SSD中的至少一个SSD当前是否需要进行垃圾回收GC处理;
在确定所述至少一个SSD中的某一SSD需要进行所述GC处理时,所述处理器生成用于指示对所述某一SSD进行所述GC处理的I/O请求,并确定生成的I/O请求为所述待处理的I/O请求。
3.根据权利要求1或2所述的方法,其特征在于,所述FTL映射表还用于记录所述n个SSD中的存储块的擦除次数,所述处理器获取待处理I/O请求,包括:
所述处理器每隔预设时长根据所述FTL映射表判断所述n个SSD中的至少一个SSD当前是否需要进行磨损平衡WL处理;
在确定所述至少一个SSD中的某一SSD需要进行所述WL处理时,所述处理器生成用于指示对所述某一SSD进行所述WL处理的I/O请求,并确定生成的I/O请求为所述待处理I/O请求。
4.根据权利要求3所述的方法,其特征在于,在所述处理器查询所述待处理I/O请求的处理结果之前,所述方法还包括:
所述处理器在预设的多种请求类型对应的时长中,查找所述待处理I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对所述每种请求类型的I/O请求的历史处理时长计算得到;
所述处理器将所述待处理I/O请求的类型对应的时长确定为所述预置休眠时长。
5.根据权利要求1所述的方法,其特征在于,在所述处理器查询所述待处理I/O请求的处理结果之前,所述方法还包括:
所述处理器根据所述FTL映射表判断所述目标SSD在处理所述待处理I/O请求前是否需要进行m个预设处理,所述m个预设处理包括:GC处理和WL处理中的至少一个,m≥1;
所述处理器根据判断结果确定请求集合,所述请求集合包括:所述待处理I/O请求,且在所述判断结果为所述目标SSD在处理所述待处理I/O请求前需要进行至少一个预设处理时,所述请求集合还包括:分别用于指示对所述目标SSD进行所述至少一个预设处理中的每个预设处理的I/O请求;
所述处理器在预设的多种请求类型对应的时长中,查找所述请求集合中每个I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对所述每种请求类型的I/O请求的历史处理时长计算得到;
所述处理器将所述请求集合中所有I/O请求的类型对应的时长之和,确定为所述预置休眠时长。
6.根据权利要求4或5所述的方法,其特征在于,所述每种请求类型对应的时长为:SSD对所述每种请求类型的I/O请求的历史处理时长的算数平均值或加权平均值。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在向所述目标SSD发送地址转换后的所述待处理I/O请求前,所述处理器将所述待处理I/O请求加入预设的发送队列,所述发送队列包括待发送至SSD的I/O请求;
在向所述目标SSD发送地址转换后的所述待处理I/O请求后,所述处理器将所述待处理I/O请求的标识加入预设的查询队列,所述查询队列包括已发送至SSD且未查询到处理结果的目标I/O请求的标识;
在查询到所述待处理I/O请求的处理结果后,所述处理器将所述查询队列中所述待处理I/O请求的标识进行删除。
8.根据权利要求7所述的方法,其特征在于,所述处理器将所述待处理I/O请求加入预设的发送队列,包括:
所述处理器检测所述待处理I/O请求是否满足预设条件,其中,所述预设条件包括:所述发送队列中不存在与所述待处理I/O请求携带同一物理地址的I/O请求;
在确定所述待处理I/O请求满足所述预设条件时,所述处理器将所述待处理I/O请求加入所述发送队列。
9.根据权利要求7或8所述的方法,其特征在于,所述处理器中预设有:与多种请求类型一一对应的多个发送队列,以及与所述多种请求类型一一对应的多个查询队列;
所述处理器将所述待处理I/O请求加入预设的发送队列,包括:所述处理器将所述待处理I/O请求加入其类型对应的发送队列;
所述处理器将所述待处理I/O请求的标识加入预设的查询队列,包括:所述处理器将所述待处理I/O请求的标识加入所述待处理I/O请求的类型对应的查询队列。
10.根据权利要求7或8所述的方法,其特征在于,在所述处理器将所述待处理I/O请求加入预设的发送队列之前,所述方法还包括:
所述处理器将所述待处理I/O请求加入检测队列,所述检测队列包括待发送至SSD的I/O请求;
其中,当所述检测队列包括:用于指示进行GC处理的I/O请求和用户I/O请求时,所述用于指示进行GC处理的I/O请求排在所述用户I/O请求前。
11.一种数据处理装置,其特征在于,用于处理器,所述数据处理装置包括:
获取模块,用于获取待处理I/O请求,所述待处理I/O请求包括待读取、写入或擦除数据的第一地址,所述第一地址为所述待读取、写入或擦除数据在目标固态硬盘SSD中逻辑地址,目标SSD为与所述处理器连接的n个SSD中的任一SSD,n≥1;
转换模块,用于根据闪存转化层FTL映射表对所述待处理I/O请求进行地址转换,以将所述第一地址转换为第二地址,其中,所述第二地址用于指示所述待读取、写入或擦除数据在所述目标SSD中物理地址,所述FTL映射表用于记录所述n个SSD中物理地址和逻辑地址的转换关系;
发送模块,用于根据所述第二地址向所述目标SSD发送地址转换后的所述待处理I/O请求;
查询模块,用于在预置休眠时长后,查询所述待处理I/O请求的处理结果。
12.根据权利要求11所述的数据处理装置,其特征在于,所述FTL映射表还用于记录所述n个SSD中的存储页中是否存储有数据,以及所述存储页中存储的数据是否为有效数据,所述获取模块用于:
在接收到用户I/O请求后,确定所述用户I/O请求为所述待处理I/O请求;
根据所述FTL映射表判断所述n个SSD中的至少一个SSD当前是否需要进行垃圾回收GC处理;
在确定所述至少一个SSD中的某一SSD需要进行所述GC处理时,生成用于指示对所述某一SSD进行所述GC处理的I/O请求,并确定生成的I/O请求为所述待处理的I/O请求。
13.根据权利要求11或12所述的数据处理装置,其特征在于,所述FTL映射表还用于记录所述n个SSD中的存储块的擦除次数,所述获取模块用于:
所述处理器每隔预设时长根据所述FTL映射表判断所述n个SSD中的至少一个SSD当前是否需要进行磨损平衡WL处理;
在确定所述至少一个SSD中的某一SSD需要进行所述WL处理时,所述处理器生成用于指示对所述某一SSD进行所述WL处理的I/O请求,并确定生成的I/O请求为所述待处理I/O请求。
14.根据权利要求13所述的数据处理装置,其特征在于,所述数据处理装置还包括:
第一查找模块,用于在预设的多种请求类型对应的时长中,查找所述待处理I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对所述每种请求类型的I/O请求的历史处理时长计算得到;
第一确定模块,用于将所述待处理I/O请求的类型对应的时长确定为所述预置休眠时长。
15.根据权利要求11所述的数据处理装置,其特征在于,所述数据处理装置还包括:
判断模块,用于根据所述FTL映射表判断所述目标SSD在处理所述待处理I/O请求前是否需要进行m个预设处理,所述m个预设处理包括:GC处理和WL处理中的至少一个,m≥1;
第二确定模块,用于根据判断结果确定请求集合,所述请求集合包括:所述待处理I/O请求,且在所述判断结果为所述目标SSD在处理所述待处理I/O请求前需要进行至少一个预设处理时,所述请求集合还包括:分别用于指示对所述目标SSD进行所述至少一个预设处理中的每个预设处理的I/O请求;
第二查找模块,用于在预设的多种请求类型对应的时长中,查找所述请求集合中每个I/O请求的类型对应的时长,其中,每种请求类型对应的时长根据SSD对所述每种请求类型的I/O请求的历史处理时长计算得到;
第三确定模块,用于将所述请求集合中所有I/O请求的类型对应的时长之和,确定为所述预置休眠时长。
16.根据权利要求14或15所述的数据处理装置,其特征在于,所述每种请求类型对应的时长为:SSD对所述每种请求类型的I/O请求的历史处理时长的算数平均值或加权平均值。
17.根据权利要求11所述的数据处理装置,其特征在于,所述数据处理装置还包括:
第一加入模块,用于在向所述目标SSD发送地址转换后的所述待处理I/O请求前,将所述待处理I/O请求加入预设的发送队列,所述发送队列包括待发送至SSD的I/O请求;
第二加入模块,用于在向所述目标SSD发送地址转换后的所述待处理I/O请求后,将所述待处理I/O请求的标识加入预设的查询队列,所述查询队列包括已发送至SSD且未查询到处理结果的目标I/O请求的标识;
删除模块,用于在查询到所述待处理I/O请求的处理结果后,将所述查询队列中所述待处理I/O请求的标识进行删除。
18.根据权利要求17所述的数据处理装置,其特征在于,所述第一加入模块用于:
所述处理器检测所述待处理I/O请求是否满足预设条件,其中,所述预设条件包括:所述发送队列中不存在与所述待处理I/O请求携带同一物理地址的I/O请求;
在确定所述待处理I/O请求满足所述预设条件时,所述处理器将所述待处理I/O请求加入所述发送队列。
19.根据权利要求17或18所述的数据处理装置,其特征在于,所述处理器中预设有:与多种请求类型一一对应的多个发送队列,以及与所述多种请求类型一一对应的多个查询队列;
所述第一加入模块用于:将所述待处理I/O请求加入其类型对应的发送队列;
所述第二加入模块用于:将所述待处理I/O请求的标识加入所述待处理I/O请求的类型对应的查询队列。
20.根据权利要求17或18所述的数据处理装置,其特征在于,所述数据处理装置还包括:
第三加入模块,用于将所述待处理I/O请求加入检测队列,所述检测队列包括待发送至SSD的I/O请求;
其中,当所述检测队列包括:用于指示进行GC处理的I/O请求和用户I/O请求时,所述用于指示进行GC处理的I/O请求排在所述用户I/O请求前。
21.一种存储系统,其特征在于,所述存储系统包括:处理器、存储器、通信接口以及总线,所述存储器包括n个SSD,存储器与网络接口分别通过总线与处理器相连;处理器被配置为执行存储器中存储的指令;处理器通过执行指令来实现权利要求1至10任一所述的数据处理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810713188.2A CN110658980B (zh) | 2018-06-29 | 2018-06-29 | 数据处理方法及装置、存储系统 |
PCT/CN2019/085467 WO2020001158A1 (zh) | 2018-06-29 | 2019-05-05 | 数据处理方法及装置、存储系统 |
US17/135,560 US11481318B2 (en) | 2018-06-29 | 2020-12-28 | Method and apparatus, and storage system for translating I/O requests before sending |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810713188.2A CN110658980B (zh) | 2018-06-29 | 2018-06-29 | 数据处理方法及装置、存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110658980A true CN110658980A (zh) | 2020-01-07 |
CN110658980B CN110658980B (zh) | 2021-03-23 |
Family
ID=68985989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810713188.2A Active CN110658980B (zh) | 2018-06-29 | 2018-06-29 | 数据处理方法及装置、存储系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11481318B2 (zh) |
CN (1) | CN110658980B (zh) |
WO (1) | WO2020001158A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486967A (zh) * | 2020-11-27 | 2021-03-12 | 智业软件股份有限公司 | 一种数据采集方法、终端设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11829359B1 (en) * | 2022-07-29 | 2023-11-28 | Microsoft Technology Licensing, Llc | System and method for scalable data processing operations |
WO2023249775A1 (en) * | 2022-06-22 | 2023-12-28 | Microsoft Technology Licensing, Llc | System and method for scalable data processing operations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630233A (zh) * | 2008-07-17 | 2010-01-20 | 群联电子股份有限公司 | 用于闪存的数据存取方法、储存系统与控制器 |
CN102541760A (zh) * | 2012-01-04 | 2012-07-04 | 记忆科技(深圳)有限公司 | 基于固态硬盘的计算机系统 |
US20130332650A1 (en) * | 2012-06-12 | 2013-12-12 | International Business Machines Corporation | Flash translation layer system for maintaining data versions in solid state memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
US8881121B2 (en) * | 2009-02-18 | 2014-11-04 | International Business Machines Corporation | Processing an object-oriented query to retrieve data from a data source |
US9129000B2 (en) * | 2010-04-30 | 2015-09-08 | International Business Machines Corporation | Method and system for centralized control of database applications |
US9977732B1 (en) * | 2011-01-04 | 2018-05-22 | Seagate Technology Llc | Selective nonvolatile data caching based on estimated resource usage |
US9405672B2 (en) * | 2013-06-25 | 2016-08-02 | Seagate Technology Llc | Map recycling acceleration |
US9898404B2 (en) * | 2013-07-14 | 2018-02-20 | Cnex Labs | Method and apparatus for providing improved garbage collection process in solid state drive |
WO2016178661A1 (en) * | 2015-05-04 | 2016-11-10 | Hewlett Packard Enterprise Development Lp | Determining idle testing periods |
KR101779174B1 (ko) * | 2016-05-26 | 2017-09-18 | 성균관대학교산학협력단 | 저널링 파일시스템의 데이터 폐기 방법 및 이를 구현하기 위한 메모리 관리 장치 |
US10635581B2 (en) * | 2017-01-20 | 2020-04-28 | Seagate Technology Llc | Hybrid drive garbage collection |
JP7074454B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
-
2018
- 2018-06-29 CN CN201810713188.2A patent/CN110658980B/zh active Active
-
2019
- 2019-05-05 WO PCT/CN2019/085467 patent/WO2020001158A1/zh active Application Filing
-
2020
- 2020-12-28 US US17/135,560 patent/US11481318B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630233A (zh) * | 2008-07-17 | 2010-01-20 | 群联电子股份有限公司 | 用于闪存的数据存取方法、储存系统与控制器 |
CN102541760A (zh) * | 2012-01-04 | 2012-07-04 | 记忆科技(深圳)有限公司 | 基于固态硬盘的计算机系统 |
US20130332650A1 (en) * | 2012-06-12 | 2013-12-12 | International Business Machines Corporation | Flash translation layer system for maintaining data versions in solid state memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486967A (zh) * | 2020-11-27 | 2021-03-12 | 智业软件股份有限公司 | 一种数据采集方法、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11481318B2 (en) | 2022-10-25 |
CN110658980B (zh) | 2021-03-23 |
WO2020001158A1 (zh) | 2020-01-02 |
US20210117316A1 (en) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11467975B2 (en) | Data processing method and NVMe storage device | |
US11481318B2 (en) | Method and apparatus, and storage system for translating I/O requests before sending | |
JP6319607B2 (ja) | データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 | |
WO2017006674A1 (ja) | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム | |
US9182912B2 (en) | Method to allow storage cache acceleration when the slow tier is on independent controller | |
JP6147933B2 (ja) | コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法 | |
TW201734804A (zh) | 用戶可配置被動背景操作 | |
WO2011107046A2 (zh) | 内存访问监测方法和装置 | |
CN105917303B (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
US10592148B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program for evaluating access performance to a storage medium | |
US20110246667A1 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
US10824425B2 (en) | Selecting destination for processing management instructions based on the processor buffer size and uncompleted management instructions | |
CN106250322B (zh) | 一种写数据的方法和装置 | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
US9652155B2 (en) | Computer system, cash data management method, and computer | |
US10061725B2 (en) | Scanning memory for de-duplication using RDMA | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
US8566521B2 (en) | Implementing cache offloading | |
WO2018154725A1 (ja) | 計算機及びキャッシュ制御方法 | |
KR20140042428A (ko) | 컴퓨팅 시스템 및 그 데이터 관리 방법 | |
WO2021052230A1 (zh) | 一种存储系统、存储节点和数据存储方法 | |
CN117891779A (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 |