固态硬盘、垃圾回收及控制方法、设备、系统及存储介质与流程

文档序号:26589251发布日期:2021-09-10 20:21阅读:154来源:国知局

1.本技术涉及数据处理技术领域,尤其涉及一种固态硬盘、垃圾回收及控制方法、设备、系统及存储介质。


背景技术:

2.固态驱动器(solid state drive,ssd),俗称固态硬盘,是使用固态电子存储芯片阵列而制成的一类硬盘,相比于传统硬盘,其有更高速度,更低功耗,更低噪音等优点,因此越来越受欢迎。
3.垃圾回收(garbage collection,gc)是ssd内部的重要操作。简单来看,gc过程是将几个物理块(block)中的有效数据全部迁移到一个新的block中,然后将这几个block擦除以产生可用block的过程。
4.现有ssd的gc操作会带来比较明显的写放大问题,这些写放大会成为ssd内部的背景流量。gc背景流量会降低ssd的io读写操作的带宽,致使ssd的单gb性能越来越低。


技术实现要素:

5.本技术的多个方面提供一种固态硬盘、垃圾回收及控制方法、设备、系统及存储介质,用以提供一种新的gc解决方案,降低gc背景流量对ssd的io读写操作的影响,为提高ssd的单gb性能提供条件。
6.本技术实施例提供一种固态硬盘ssd,所述ssd面向主机端提供垃圾回收gc控制接口,所述ssd包括控制器和由所述控制器所控制的存储介质;所述控制器,用于获取所述主机端基于所述gc控制接口下发的gc命令,根据所述gc命令针对所述存储介质执行gc操作。
7.本技术实施例还提供一种垃圾回收gc方法,适用于固态硬盘ssd的控制器,所述ssd面向主机端提供有gc控制接口;所述方法包括:获取所述主机端基于所述gc控制接口下发的gc命令;根据所述gc命令对所述ssd的存储介质执行gc操作。
8.本技术实施例还提供一种垃圾回收gc控制方法,适用于主机端,所述主机端挂载有固态硬盘ssd,所述ssd面向主机端提供有gc控制接口;所述方法包括:确定所述ssd提供的gc控制接口;基于所述gc控制接口,向所述ssd下发gc命令,以控制所述ssd执行gc操作。
9.本技术实施例还提供一种计算机设备,挂载有固态硬盘ssd,所述ssd面向所述计算机设备提供有垃圾回收gc控制接口,所述计算机设备还包括非固态硬盘型的存储介质和处理器;所述非固态硬盘型的存储介质中存储有gc控制程序;所述处理器执行所述gc控制程序,可通过所述gc控制接口向所述ssd下发gc命令,以控制所述ssd执行gc操作。
10.本技术实施例还提供一种基于固态硬盘ssd的存储系统,包括主机和挂载于所述主机上的ssd;所述ssd面向所述主机提供有gc控制接口;所述主机可基于所述gc控制接口,向所述ssd下发gc命令;所述ssd包括:控制器和由所述控制器所控制的存储介质;其中,所述控制器,用于获取所述主机基于所述gc控制接口下发的gc命令,根据所述gc命令针对所述存储介质执行gc操作。
11.本技术实施例还提供一种云存储系统,包括分布式部署的多个ssd;每个ssd面向可对其进行访问的上层应用端提供gc控制接口;所述上层应用端可基于所述gc控制接口,向其需要访问的ssd下发gc命令;每个ssd包括控制器和由所述控制器所控制的存储介质;其中,所述控制器,用于获取所述上层应用端基于所述gc控制接口下发的gc命令,根据所述gc命令针对所述存储介质执行gc操作。
12.本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被控制器执行时,致使所述控制器实现本技术实施例提供的垃圾回收方法中的步骤。
13.本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器实现本技术实施例提供的垃圾回收方法中的步骤。
14.在本技术实施例中,ssd面向主机端提供gc控制接口,基于该gc控制接口,使主机端有机会控制ssd内部的gc操作,为提高ssd的单gb性能提供了条件。如果主机端需要保证io读写操作的性能,可对gc操作和io读写操作进行分时调度,降低gc背景流量对ssd的io读写操作的影响,保证ssd内部的总线给io读写操作独享,提高ssd的单gb性能。
附图说明
15.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
16.图1a为本技术示例性实施例提供的一种ssd的结构示意图;
17.图1b为本技术示例性实施例提供的另一种ssd的结构示意图;
18.图1c为本技术示例性实施例提供的采用nand flash实现的ssd的内部简化结构及io操作与gc操作调度关系示意图;
19.图1d为现有ssd的内部简化结构及io操作与gc操作调度关系示意图;
20.图2为本技术示例性实施例提供的一种计算机设备的结构示意图;
21.图3为本技术示例性实施例提供的一种基于ssd的存储系统的结构示意图;
22.图4为本技术示例性实施例提供的一种gc方法的流程示意图;
23.图5为本技术示例性实施例提供的一种gc控制方法的流程示意图。
具体实施方式
24.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.在现有技术中,ssd的gc背景流量会降低ssd的io读写操作的带宽,致使ssd的单gb性能越来越低。针对该技术问题,在本技术实施例中,ssd面向主机端提供gc控制接口,基于该gc控制接口,主机端可灵活地控制ssd内部的gc操作,为提高ssd的单gb性能提供了条件。如果主机端需要保证io读写操作的性能,可对gc操作和io读写操作进行分时调度,降低gc背景流量对ssd的io读写操作的影响,保证ssd内部的总线给io读写操作独享,提高ssd的单
gb性能。
26.以下结合附图,详细说明本技术各实施例提供的技术方案。
27.图1a为本技术示例性实施例提供的一种ssd的结构示意图。本技术实施例提供的ssd 10可以是任何采用固态电子存储芯片阵列而制成的硬盘。如图1a所示,该ssd 10的结构包括:控制器11和由该控制器11所控制的存储介质12。
28.其中,存储介质12是ssd 10的固态存储单元,对外提供物理存储空间,主要负责数据存储任务。存储介质12可以采用动态随机存取存储器(dynamic random access memory,dram)或闪存(flash)芯片等实现。进一步,在存储介质12采用flash芯片实现的情况下,存储介质12可以采用nand flash,或者nor flash实现。在图1a中,以存储介质12采用nand flash为例进行图示,但并不限于此。
29.存储介质12的实现形式不同,其物理空间管理方式会有所差异。可选地,以分页管理为例,存储介质12的物理空间可被划分为多个物理页(physics page),读写操作以物理页为单位进行,而擦除操作可以以物理块(physics block)为单位进行的。其中,一个物理块可以包括多个物理页。
30.其中,控制器11是ssd 10的主控芯片,即大脑,可执行ssd 10的固件算法中的相应程序,至少可以实现以下功能:错误检查和纠正(ecc),磨损平衡,坏块管理、垃圾回收、与主机端(如电脑)通信,以及数据加密等。
31.其中,控制器11与存储介质12之间通过内部的数据访问总线进行互连。控制器11通过数据访问总线向存储介质12中写入数据,也可以通过数据访问总线从存储介质12中读取数据。例如,控制器11作为存储介质12与ssd 10所挂载的主机端20之间的中转者,可根据主机端20的io写请求将主机端20的数据写入存储介质12,也可以根据主机端20的io读请求从存储介质中读取数据并返回给主机端20。
32.对ssd 10来说,可采用某种接口协议,与其挂载的主机端20进行通信。在本实施例中,并不限定ssd 10支持的接口协议,其可以支持nvme(nvm express)、sata-2、sata-3、sas、msata、pcie、ngff或cfast等各种接口协议。其中,主机端20可以是任何需要存储资源的计算机设备。例如,主机端20可以是台式电脑、笔记本电脑、平板电脑、智能手机、游戏机、mp3播放器、摄像机、照相机、电视机或智能音箱等终端设备。又例如,主机端20可以是一些常规服务器、云服务器或服务器阵列等服务器设备。又例如,主机端20还可以是一些边缘计算设备,例如路灯、信号灯或交通监控设备等。交通监控设备可以包括但不限于各种摄像头或电子眼。主机端20可以使用ssd 10存储其产生的数据,也可以从ssd 10中读取其需要的数据,即主机端20可对ssd 10进行io读写操作。其中,触发主机端20对ssd 10进行io读写操作的对象可以是运行于主机端20上的程序,也可以是主机端20上的硬件模块,对此不做限定。无论是哪种情况,主机端20可以看作是ssd 10的上层应用端。
33.在ssd 10使用过程中,存储介质12会产生垃圾数据。以采用nand flash的ssd为例,其采用追加写入(append write)方式往nand flash中记录数据,这种数据记录方式会产生大量的垃圾数据。为了保证存储介质12(即数据存储空间)的有效利用,需要对垃圾数据进行清理,对一些物理块中的有效数据进行合并,这个数据整理的过程被称之为gc过程。
34.gc是ssd内部的重要操作。在现有ssd中,gc操作由ssd的控制器在后台自行执行,大量的gc操作会产生数据写放大,这些写放大会成为ssd内部的背景流量。这些背景流量会
与主机端对ssd的io读写操作形成竞争,即背景流量会与io读写操作共享ssd内部存储介质(如nand flash)的数据访问总线,这会影响主机端io读写操作的整体性能,并且会导致主机端出现io服务质量(qos)问题。尤其是,在ssd处于稳态情况下,gc操作需要一直执行,会一直和主机端的io读写请求争抢存储介质(如nand flash)的数据访问总线,导致io读写请求无法获得足够的带宽,从而影响ssd对外体现的单gb性能。
35.本实施例提供的ssd 10与现有ssd不同。ssd 10的gc功能被拆分为gc执行单元112和gc控制接口111两部分;gc执行单元112是执行层,受控于来自gc控制接口111的gc命令。gc控制接口111提供给主机端,用于供主机端向控制器11发送gc命令。gc执行单元112是逻辑单元,其功能可由控制器11执行固件算法中的相应代码实现,主要用于根据gc命令针对存储介质12执行gc操作。假设存储介质12以物理块为单位进行擦除操作,则执行gc操作的过程是指将几个物理块中的有效数据全部迁移到一个新的物理块,然后将这几个物理块擦除以产生可用物理块的过程。
36.在本实施例中,ssd 10面向主机端20提供其gc控制接口111,这使得主机端20有机会对ssd内部的gc操作进行控制。对主机端20来说,可基于该gc控制接口111向ssd 10下发gc命令,控制ssd 10执行gc操作。对控制器11来说,可接收主机端20基于gc控制接口下发的gc命令,根据该gc命令对存储介质12执行gc操作。
37.在本实施例中,并不对gc命令的格式和内容等进行限定,凡是可以指示控制器11对存储介质12执行gc操作的命令格式和内容均适用于本技术实施例。例如,主机端20可以在gc命令中携带gc控制参数;控制器11从gc命令中解析出gc控制参数,根据gc控制参数针对存储介质12执行gc操作。其中,gc控制参数可以是任何与执行gc操作相关的控制参数。例如,gc控制参数包括但不限于:gc操作的执行时间、执行时长、执行对象等等。执行时间是指开始执行gc操作的时间。执行时长是指gc操作需要执行的时间长度,例如30秒钟、20秒钟、1分钟等。执行对象是指gc操作所针对的对象,可以是存储介质12中的一个或多个物理块。
38.进一步,对主机端20来说,由于具有了对ssd 10内部的gc操作进行控制的机会,如果需要保证其对ssd 10的io读写操作的性能,可借助其能够对ssd 10内部的gc操作进行控制的机会,对gc操作和io读写操作进行分时调度,这样在执行io读写操作期间,可保证存储介质12的数据访问总线给io读写操作独享,降低gc操作对io读写操作的影响,使io读写操作获得较佳的性能,提高ssd 10的单gb性能。其中,主机端20对gc操作和io读写操作进行分时调度,意味着,gc命令指示的gc操作的执行时间和io读写操作的执行时间不同。换句话说,在一个时隙内部,处理器11要么执行io读写操作,要么执行gc操作。
39.在本技术实施例中,并不限定主机端20通过gc控制接口111向ssd 10下发gc命令的具体实施方式。可选地,主机端20可以根据本地配置的gc策略,通过gc控制接口向ssd 10下发gc命令,以对gc操作进行调度。gc策略可以是周期性地执行gc操作,也可以是定点执行gc操作等。除此之外,主机端20也可以结合io读写需求,通过gc控制接口向ssd 10下发gc命令,以对gc操作进行调度。例如,可以避开io读写请求,即在没有io读写请求的情况下,通过gc控制接口向ssd 10下发gc命令,以对gc操作进行调度。
40.进一步可选地,主机端20通过gc控制接口111向ssd 10下发gc命令,对gc操作进行调度时,还可以参考ssd 10内部的gc调度参数。基于此,控制器11还用于将ssd 10内部的gc调度参数提供给主机端20。其中,gc调度参数是指一些对gc操作有影响的参数,例如包括存
储介质12中物理可用空间的信息。
41.在一可选实施例中,ssd 10可以对外提供逻辑存储空间和物理存储空间,并在逻辑存储空间与物理存储空间之间建立映射关系。其中,物理存储空间由存储介质12提供。逻辑存储空间是用户可见的,物理存储空间是用户感知不到的,然而,gc调度是针对存储介质12提供的物理存储空间的,因此,需要将存储介质12中物理可用空间的信息提供给主机端20(例如用户),以便主机端20据此判断是否需要对gc操作进行调度。例如,在物理可用空间大小小于设定空间阈值的情况下,可对gc操作进行调度。
42.在本技术实施例中,并不限定控制器11将gc调度参数提供给主机端20的实施方式。在一可选实施例中,如图1b所示,ssd 10还可以包括:第一队列13。该第一队列13可被控制器11和主机端20读写,是控制器11和主机端20之间进行交互的媒介。基于此,控制器11可将ssd 10内部的gc调度参数写入第一队列13中;主机端20可以从第一队列13中读取控制器11写入的gc调度参数,从而达到向主机端20提供gc调度参数的目的。
43.进一步,如图1b所示,本实施例的第一队列13包括:第一提交队列131和第一完成队列132。其中,第一提交队列131由主机端20进行更新,即主机端20可以向第一提交队列131写入数据。对控制器11来说,不能向第一提交队列131写入数据,但是可以从第一提交队列131中读数据。第一完成队列132由控制器11进行更新,即控制器11可以向第一完成队列132写入数据。对主机端20来说,不能向第一完成队列132写入数据,但是可以从第一完成队列132中读数据。
44.基于上述,控制器11可以将gc调度参数写入第一完成队列132中,以向主机端20提供gc调度参数。对主机端20来说,可以从第一完成队列132中读取gc调度参数,进而根据gc调度参数生成gc命令。进一步,主机端20可以将gc命令写入第一提交队列131中,以向控制器11下发gc命令。控制器11从第一提交队列131中读取gc命令,根据gc命令针对存储介质12执行gc操作。
45.进一步,在执行gc操作之后,控制器11还可以将gc操作的执行结果写入第一完成队列132中,以汇报给主机端20。主机端20还可以从第一完成队列132中读取gc操作的执行结果。gc操作的执行结果包括:成功或失败,等。
46.主机端20除了可以对ssd 10进行gc操作调度之外,还可以根据io读写需求向ssd 10发起io读写请求。可选地,如图1b所示,ssd 10还包括:第二队列14。该第二队列14可被控制器11和主机端20读写。其中,主机端20可将io读写请求写入第二队列14中,以向ssd 10提交io读写请求。控制器11可从第二队列14中读取主机端20下发的io读写请求;进而,根据io读写请求针对存储介质12执行io读写操作。其中,io读写请求包括io读请求和io写请求。当然,io读请求和io写请求可以是同时存在,也可以仅存在其中之一。
47.进一步,如图1b所示,第二队列14包括:第二提交队列141和第二完成队列142。第二提交队列141可由主机端20进行更新,即主机端20可向第二提交队列141写入数据。对控制器11来说,可从第二提交队列141中读取数据,但不能向第二提交队列141中写入数据。第二完成队列142可由控制器11进行更新,即控制器11可以向第二完成队列142中写入数据。对主机端20来说,可从第二完成队列142中读取数据,但不能向第二完成队列142中写入数据。
48.基于上述,主机端20可以将io读写请求写入第二提交队列141中,以向ssd 10提交
io读写请求。对控制器11来说,可从第二提交队列141中读取io读写请求,并根据io读写请求针对存储介质执行io读写操作。进一步,控制器11还可以将io读写操作的执行结果写入第二完成队列142中,以汇报给主机端20。主机端20还可以从第二完成队列142中读取io读写操作的执行结果。
49.进一步,为了保证或提升io读操作的服务质量,控制器11可以采用读优先的调度策略,该调度策略会保证io读请求优先被调度,保证io读请求的服务质量。基于此,在第二提交队列141中同时存在io读请求和io写请求的情况下,控制器11可优先从第二提交队列141中读取io读请求,根据io读请求针对存储介质12执行io读操作。
50.在本技术实施例中,并不限定第一队列13和第二队列14的位置。可选地,如图1b所示,第一队列13和第二队列14均位于主机端20一侧。进一步可选地,第一队列13和第二队列14可占据主机端20中的内存。除此之外,第一队列13和第二队列14也可以位于ssd 10一侧。例如,第一队列13和第二队列14可以位于ssd 10的存储介质12中。进一步,在ssd 10包括缓存芯片的情况下,第一队列13和第二队列14还可以占据缓存芯片的空间,位于缓存芯片内。需要说明的是,对ssd 10来说,缓存芯片是一可选芯片。
51.在一可选实施例中,ssd 10采用nvme协议,且存储介质12采用nand flash实现。其中,采用nand flash实现的ssd 10,其内部结构及io操作与gc操作之间的调度关系如图1c所示。如图1c所示,可以将ssd 10内部简单划分为以下几部分:控制路径(control path)部分、数据路径(data path)部分、gc执行单元以及多个数据资源块;其中,gc执行单元和数据路径部分通过后端(backend)的nand flash总线(bus)对数据资源块进行访问。其中,control path部分主要实现本技术实施例的gc控制接口的功能。
52.其中,nand flash采用分页管理方式,管理其物理存储空间。nand flash的物理存储空间被划分为多个物理页。读写操作以物理页为单位进行,擦除操作以物理块为单位进行,一个物理块包含多个物理页。在图1c中,将存储有数据的物理块称为数据资源块。主机端有可能需要向这些数据资源块中写入新数据,也有可能针对这些数据资源块发起gc操作。另外,本实施例提供的ssd,其空间包括ssd逻辑空间、逻辑写入空间、nand flash空间和nand flash写入空间。ssd逻辑空间是用户可见的逻辑空间,逻辑写入空间是用户已经写入的空间。nand flash空间是ssd实际提供的物理空间,nand flash写入空间是实际耗尽的物理空间。nand flash空间是用户感知不到的,用户只能感知到逻辑空间。对gc操作的调度是针对nand flash空间的,因此,gc控制接口需要将nand flash空闲空间(free space)的信息提供给主机端(即ssd 10的上层应用端),从而在上层应用层面实现gc调度。
53.在上述实施例中,ssd 10采用nvme协议,在nvme协议下,ssd 10包含管理提交队列(admin submission queue,简称为admin sq)、管理完成队列(admin completion queue,简称admin cq)、io提交队列(io submission queue,简称为io sq)以及io完成队列(io completion queue,简称为io cq)。其中,admin sq、admin cq、io sq和io cq可分别作为本技术前述实施例中的第一提交队列、第一完成队列、第二提交队列和第二完成队列实现。admin sq和admin cq可统称管理队列(admin queue);io sq和io cq可统称为io队列(io queue)。
54.其中,admin sq用于存放主机端要下发给ssd 10的各种管理类命令;admin cq用于存放ssd 10中执行主机端下发的管理类命令所产生的完成响应,例如可以是各种管理类
命令的执行结果。gc控制接口可以将nand flash空闲空间(free space)的信息作为gc调度参数写入admin cq中;主机端从admin cq中读取nand flash空闲空间(free space)的信息等gc调度参数,根据gc调度参数生成gc命令;将gc命令写入admin sq中;gc控制接口从admin sq中读取gc命令;根据gc命令控制gc执行单元112通过nand flash bus对nand flash执行gc操作。在图1c中,未对admin cq和admin sq进行区分,而是统一图示为命令队列(admin queue)。也就是说,ssd 10可以通过admin queue将nand flash空闲空间(free space)的信息提供给主机端;主机端可以通过ssd 10提供的admin queue来访问ssd 10内部的gc控制接口,从而可以在软件层面灵活的控制ssd 10内部的gc执行单元,如图1c所示。
55.其中,io sq用于存放主机端要下发给ssd 10的io类命令,例如io读写请求;io cq用于存储ssd 10执行io类命令所产生的完成响应,例如io读写操作的结果。主机端可将io读写请求写入io sq中,在数据路径(data path)部分根据io读写请求通过backend nand flash bus对数据资源块进行io读写。在图1c中,未对io cq和io sq进行区分,而是统一图示为io队列(io queue)。
56.在本实施例中,通过面向主机端提供gc控制接口,主机端可以对gc操作和io操作在时间上进行分时调度,即在一个时隙内部,只会存在io操作或者是gc操作,而且在io操作执行过程中,可以将ssd 10内部的nand flash bus全部给到io操作,gc操作不会对io操作造成干扰,可以极大地提升io操作的吞吐带宽达,提升用户可见的单gb带宽。这点不同于图1d所示现有ssd内部的io操作与gc操作之间的调度关系。如图1d所示,在现有ssd内部,io操作与gc操作共享后端的nand flash bus,gc操作会与io操作竞争nand flash bus,虽然可按照读优先的io调度方式进行调度,一定程度上可保证读操作的io服务质量,但是在ssd处于稳态情况下,后台gc单元会一直处于工作的状态,会一直和io读写请求争抢后端的nand flash bus带宽,导致io读写请求无法获得足够的带宽,从而影响ssd对外体现的单gb性能。
57.进一步,如图1c所示,为了提升读请求的io服务质量,在data path上,可采用读优先的io调度方式(read priority based io scheduler)处理io读写请求之间的竞争,即优先对io读请求进行调度,在提升io读写带宽的同时,可以保证读io请求的服务质量。
58.在本技术各实施例中,并不限定主机端根据gc调度参数,生成gc命令的实施方式。在一可选实施例中,主机端可以单独根据gc调度参数,生成gc命令。例如,主机端可以根据gc调度参数中nand flash空闲空间的信息,判断空闲空间是否充足(例如是否大于设定空间阈值);若否,确定需要进行gc调度以生成新的可用空间,则可以生成gc命令。在另一可选实施例中,主机端也可以同时根据gc调度参数和io读写需求,生成gc命令。在该可选实施方式中,主机端可以分时调度gc操作和io读写操作,即gc命令指示的gc操作与io读写操作在不同的时间期间内执行。其中,不同ssd所支持的时间期间,会有所不同。一个时间期间可以是ssd所支持的一个时隙,但不限于此。
59.进一步,同时根据gc调度参数和io读写需求,生成gc命令的一种实施方式,包括:根据gc调度参数,确定ssd是否需要执行gc操作;如果确定ssd需要执行gc操作,则根据io读写操作的执行时间,确定gc操作的执行时间;其中,gc操作的执行时间与io读写操作的执行时间位于不同时间期间(例如时隙);然后,根据gc操作的执行时间,生成gc命令;将gc命令写入admin sq(即第一队列)中,以控制ssd执行gc操作。
60.在本实施例中,ssd通过向主机端提供gc控制接口,使得主机端有机会控制ssd内
部的gc操作。以此为基础,在ssd与主机端的配合下,在需要保证io读写操作的性能的情况下,可对gc操作和io读写操作进行分时调度,降低gc背景流量对ssd的io读写操作的影响,保证ssd内部的总线给io读写操作独享,提高ssd的单gb性能。
61.除上述ssd之外,本技术实施例还提供一种计算机设备21,如图2所示,该计算机设备21挂载有ssd 22,该ssd 22面向计算机设备21提供有gc控制接口,该计算机设备21还包括:非ssd型的存储介质23和处理器24。
62.在本实施例中,ssd 22挂载于计算机设备21,但并不限定ssd 22与计算机设备21之间的挂载方式。可选地,ssd 22可以固定安装于计算机设备21上的硬盘位中,或者可以以插拔方式安插于计算机设备21中,或者也可以外接于计算机设备21。其中,ssd 22可以作为计算机设备21上低速存储介质的缓存使用,也可以作为计算机设备21的最终存储空间使用。
63.关于非ssd型的存储介质23可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,磁盘或光盘。
64.非ssd型的存储介质23可被配置成存储计算机程序,例如gc控制程序,并可被配置为存储其它各种数据以支持在计算机设备上的操作。这些数据的示例包括用于在计算机设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。其中,gc控制程序可以是应用程序、程序代码、插件或sdk等。
65.处理器24与非ssd型的存储介质23耦合,执行非ssd型的存储介质23中的gc控制程序,可通过ssd 22面向计算机设备21提供的gc控制接口向ssd 22下发gc命令,以控制ssd 22执行gc操作。对ssd 22来说,可接收处理器24下发的gc命令,对ssd 22的存储介质进行gc操作。关于ssd 22的实现结构、相关功能和操作可参见前述实施例中对ssd 10的描述,本实施例重点介绍计算机设备21的相关功能和操作。
66.在一可选实施例中,ssd 22还包括第一队列,第一队列可供处理器24和ssd 22读写。可选地,ssd 22的第一队列位于非ssd型的存储介质23中。进一步,非ssd型的存储介质23包括计算机设备21的内存,ssd 22的第一队列可位于计算机设备21的内存中。在该情况下,处理器24具体可将gc命令写入第一队列,供ssd 22的控制器从第一队列中读取gc命令。
67.进一步可选地,ssd 22还可以通过gc控制接口将ssd 22内部的gc调度参数提供给处理器24,例如可将gc调度参数写入第一队列,供处理器24读取。基于此,处理器24还用于:从第一队列中,读取ssd 22内部的gc调度参数;进而,可根据gc调度参数,生成gc命令;根据gc控制接口,将gc命令写入第一队列中,以控制ssd 22执行gc操作。
68.进一步可选地,第一队列包括:第一提交队列和第一完成队列。第一完成队列可供ssd 22写入gc调度参数。处理器24具体用于:从第一完成队列中读取gc调度参数,以及在生成gc命令之后,具体将gc命令写入第一提交队列中。
69.进一步可选地,处理器24在生成gc命令时,具体可根据gc调度参数和io读写需求,生成gc命令;其中,gc命令指示的gc操作的执行时间与io读写操作的执行时间不同,即两种操作分时执行。
70.更进一步,处理器24具体用于:根据gc调度参数,确定ssd 22是否需要执行gc操
作;在确定ssd 22需要执行gc操作的情况下,根据io读写操作的执行时间,确定gc操作的执行时间;根据gc操作的执行时间,生成gc命令;将gc命令写入第一队列(具体可以写入第一提交队列)中。
71.可选地,gc命令写入第一队列的时间,可以反应gc操作的执行时间,或者,也可以将gc操作的执行时间携带在gc命令中。
72.进一步可选地,ssd 22的控制器还可以将gc操作的执行结果写入第一完成队列中。处理器24还用于:从第一完成队列中读取gc操作的执行结果。
73.在一可选实施例中,ssd 22还包括:第二队列。第二队列可供ssd22和处理器24读写。可选地,ssd 22的第二队列位于非ssd型的存储介质中。进一步,非ssd型的存储介质23包括计算机设备21的内存,ssd 22的第二队列可位于计算机设备21的内存中。基于此,处理器24可根据io读写需求,向第二队列中写入io读写请求,以控制ssd执行io读写操作;进一步,还可以从第二队列中读取ssd写入的io读写操作的执行结果。
74.进一步可选地,第二队列包括:第二提交队列和第二完成队列。第二完成队列可供ssd写入io读写操作的执行结果。基于此,处理器24具体用于:将io读写请求写入第二提交队列中,并从第二完成队列中读取io操作执行结果。
75.在一可选实施例中,ssd 22采用nvme协议,在该情况下,第一提交队列、第一完成队列、第二提交队列和第二完成队列可以是admin sq、admin cq、io sq和io cq,但并不限于此。
76.除上述计算机设备之外,本技术实施例还提供一种基于ssd的存储系统30。如图3所示,该存储系统30包括:主机31和挂载于主机31上的ssd 32;该ssd 32面向主机31提供有gc控制接口。主机31可基于该gc控制接口,向ssd 32下发gc命令。本实施例的ssd 32包括:控制器和由控制器所控制的存储介质。其中,控制器,用于获取主机基于gc控制接口下发的gc命令,根据gc命令针对ssd 32的存储介质执行gc操作。其中,存储介质中存储有各种数据。其中,主机31可看作是ssd 32的上层应用端。
77.关于主机31的功能以及工作原理,可参见前述实施例中主机端20以及计算机设备21的相关描述;同理,ssd 32的功能以及工作原理也可参见前述实施例中ssd 10的相关描述,在此不再赘述。
78.本实施例提供的存储系统可应用于各种应用场景中,例如数据中心场景。以数据中心场景为例,本实施例的存储系统可实现为一种云存储系统。该云存储系统作为云计算的核心组件,可为各种上层应用端提供高性能、高可靠的数据存储能力。该云存储系统包括:分布式部署的多个ssd,多个ssd可面向使用云存储系统的上层应用端提供数据存储服务。在云存储系统设计中,ssd的随机写入带宽是一个重要的考量指标,随着ssd容量的进一步增大,单gb性能越来越低,如果不能扩展ssd的随机写入带宽,单gb性能将无法满足云存储业务的设计需求。
79.基于上述考虑,在本实施例的云存储系统中,每个ssd面向可对其进行访问的上层应用端提供gc控制接口;上层应用端可基于gc控制接口,向其需要访问的ssd下发gc命令;每个ssd包括:控制器和由该控制器所控制的存储介质;其中,控制器,用于获取上层应用端基于gc控制接口下发的gc命令,根据gc命令针对存储介质执行gc操作。其中,上层应用端是指具有权限使用ssd且可针对ssd进行gc控制的使用方,例如可以是各种应用(如用户应用、
系统应用)、设备、芯片或模组等。其中,上述实施例中可挂载ssd的主机端即为ssd的一种上层应用端。
80.关于上层应用端通过gc控制接口对其需要访问的ssd进行gc控制的过程可参见前述实施例中关于主机或计算机设备的相关描述,在此不再赘述。
81.其中,关于ssd的功能以及工作原理可参见前述实施例中的描述,在此不再赘述。
82.在本实施例的云存储系统中,通过ssd对外提供的gc控制接口以及gc调度参数,云存储系统可以控制ssd内部的gc执行时间,从而可以在上层应用层面对gc操作和io读写操作进行分时调度,使得io读写操作可以运行在ssd最佳随机写性能状态,达到针对上层应用端提升单gb性能的目的。例如,对于很多ssd而言,其稳态性能在500mb/s左右,通过调整ssd的op所能提高的性能上限是1gb/s左右,ssd的最佳性能可超过2gb/s,在本实施例中,可将ssd的随机写入性能逼近最佳性能。
83.除上述实施例之外,本技术实施例还提供一种针对ssd的gc方法。该ssd包括控制器和由控制器所控制的存储介质,其结构如图1a或1b所示。可选地,该存储介质可以是但不限于:nand flash,该ssd可挂载于主机端,负责为主机端提供存储服务。该gc方法主要由ssd中的控制器执行,如图4所示,该方法包括:
84.41、获取主机端基于ssd对外提供的gc控制接口下发的gc命令;
85.42、根据上述gc命令对ssd的存储介质执行gc操作。
86.在一可选实施例中,在获取主机端基于gc控制接口下发的gc命令之前,该方法还包括:将ssd内部的gc调度参数写入ssd的第一队列中,以向主机端提供gc调度参数。其中,gc调度参数是指一些对gc操作有影响的参数,例如包括ssd的存储介质中物理可用空间的信息。
87.在一可选实施例中,ssd的第一队列包括:第一提交队列和第一完成队列。第一提交队列由主机端进行更新,即主机端可以向第一提交队列写入数据,例如gc命令。对控制器来说,不能向第一提交队列写入数据,但是可以从第一提交队列中读数据。第一完成队列由控制器进行更新,即控制器可以向第一完成队列写入数据。对主机端来说,不能向第一完成队列写入数据,但是可以从第一完成队列中读数据。
88.基于上述,获取主机端基于gc控制接口下发的gc命令,包括:从第一提交队列中读取主机端写入的gc命令。相应地,将ssd内部的gc调度参数写入ssd的第一队列中,包括:将gc调度参数写入第一完成队列中,以向主机端提供gc调度参数。主机端还可以从第一完成队列中读取gc操作的执行结果。gc操作的执行结果包括:成功或失败,等。
89.进一步,在执行gc操作之后,该方法还包括:将gc操作的执行结果写入第一完成队列中,以汇报给主机端。
90.在一可选实施例中,主机端除了可以对ssd进行gc操作调度之外,还可以根据io读写需求向ssd发起io读写请求。ssd还包括:第二队列。该第二队列可被控制器和主机端读写。其中,主机端可将io读写请求写入第二队列中,以向ssd提交io读写请求。控制器可从第二队列中读取主机端下发的io读写请求;进而,根据io读写请求针对存储介质执行io读写操作。其中,io读写请求包括io读请求和io写请求。当然,io读请求和io写请求可以是同时存在,也可以仅存在其中之一。
91.进一步,第二队列包括:第二提交队列和第二完成队列。第二提交队列可由主机端
进行更新,即主机端可向第二提交队列写入数据。对控制器来说,可从第二提交队列中读取数据,但不能向第二提交队列中写入数据。第二完成队列可由控制器进行更新,即控制器可以向第二完成队列中写入数据。对主机端来说,可从第二完成队列中读取数据,但不能向第二完成队列中写入数据。
92.基于上述,主机端可以将io读写请求写入第二提交队列中,以向ssd提交io读写请求。该方法还包括以下步骤:
93.从ssd的第二提交队列中读取主机端下发的io读写请求;
94.根据io读写请求针对ssd的存储介质执行io读写操作;以及
95.将io读写操作的执行结果写入ssd的第二完成队列中,以汇报给主机端。
96.进一步可选地,从ssd的第二提交队列中读取主机端下发的io读写请求的一种实施方式,包括:在第二提交队列中同时存在io读请求和io写请求的情况下,优先从第二队列中读取io读请求。
97.在本实施例中,ssd面向主机端提供gc控制接口,基于该gc控制接口,使主机端有机会控制ssd内部的gc操作,为提高ssd的单gb性能提供了条件。如果主机端需要保证io读写操作的性能,可对gc操作和io读写操作进行分时调度,降低gc背景流量对ssd的io读写操作的影响,保证ssd内部的总线给io读写操作独享,提高ssd的单gb性能。
98.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述图4所示方法实施例中的各步骤。
99.图5为本技术示例性实施例提供的一种gc控制方法的流程示意图。该方法可由挂载有ssd的主机端或计算机设备执行,该ssd包括控制器和由控制器所控制的存储介质,其结构如图1a或1b所示。可选地,该存储介质可以是但不限于:nand flash,该ssd可挂载于主机端,负责为主机端提供存储服务。如图5所示,该gc控制方法包括:
100.51、确定ssd提供的gc控制接口;
101.52、基于gc控制接口,向ssd下发gc命令,以控制ssd执行gc操作。
102.在一可选实施例中,基于gc控制接口,向ssd下发gc命令,包括:从ssd的第一队列中读取ssd内部的gc调度参数;根据gc调度参数,生成gc命令;根据gc控制接口,将gc命令写入第一队列中,以控制ssd执行gc操作。
103.进一步可选地,上述根据gc调度参数,生成gc命令的一种实施方式,包括:根据gc调度参数和io读写需求,生成gc命令;其中,gc命令指示的gc操作与io读写操作在不同的时间期间内执行。
104.进一步可选地,上述根据gc调度参数和io读写需求,生成gc命令,包括:根据gc调度参数,确定ssd是否需要执行gc操作;在需要执行gc操作的情况下,根据io读写操作的执行时间,确定gc操作的执行时间;其中,gc操作的执行时间与io读写操作的执行时间位于不同时间期间;根据gc操作的执行时间,生成gc命令;将gc命令写入第一队列中,以控制ssd执行gc操作。
105.关于本实施例提供的各步骤的详细描述,可参见前述实施例中的描述,在此不再赘述。
106.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述图5所示方法实施例中的各步骤。
107.需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤41至步骤42的执行主体可以为设备a;又比如,步骤41的执行主体可以为设备a,步骤42的执行主体可以为设备b;等等。
108.另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如41、42等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
109.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
110.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
111.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
112.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
113.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
114.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
115.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备
或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
116.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
117.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!