一种全闪存储阵列的主机与固态盘协同垃圾回收方法转让专利

申请号 : CN201910587609.6

文献号 : CN110309078B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁书铭冯志华万星安东博罗重余仲余艺宋峙峰邓威吴飞李燕婷张勇

申请人 : 北京计算机技术及应用研究所

摘要 :

本发明涉及一种全闪存储阵列的主机与固态盘协同垃圾回收方法,包括:阵列主机通过扩展NVMe驱动发送命令;固态盘固件解析命令,将块状态NAND_Block_Table或固件状态Firmware_Stats打包发送给阵列主机;阵列主机接收固态盘发送块状态或固件状态,判断是否需要进行垃圾回收操作;如需执行垃圾回收,主机端发送Force_GC命令,强制固态盘进行垃圾回收;如需暂停垃圾回收,阵列主机发送Abort_GC命令,固态盘暂停内部垃圾回收操作;固态盘接收到垃圾回收相关命令并执行,并更新块状态及固件状态。本发明将地址映射、磨损均衡、垃圾回收等算法在固态盘内部实现,减轻了开放通道固态盘阵列的主机CPU负担。

权利要求 :

1.一种全闪存储阵列的主机与固态盘协同垃圾回收方法,其特征在于,包括:(1)阵列主机通过扩展NVMe驱动发送Get_block_stats或Get_firmware_stats命令;

(2)固态盘固件解析命令,将块状态NAND_Block_Table或固件状态Firmware_Stats打包发送给阵列主机;

(3)阵列主机接收固态盘发送块状态或固件状态,判断是否需要进行垃圾回收操作,包括:

判断NAND_Block_Table中无效块比例是否超过一阈值Nth;

超过限定阈值Nth,则强制触发垃圾回收操作;

未超过限定阈值Nth时,判断无效块比例是否超过触发阈值Mth;

超过触发阈值Mth,判断固态盘是否有I/O请求;无I/O请求时,将固态盘标记为空闲状态,触发垃圾回收机制;有I/O请求时,将固态盘标记为待回收状态,发送Abort_GC命令挂起垃圾回收,当处于空闲状态时继续触发垃圾回收操作;

(4)如需执行垃圾回收,主机端发送Force_GC命令,强制固态盘进行垃圾回收;如需暂停垃圾回收,阵列主机发送Abort_GC命令,固态盘暂停内部垃圾回收操作;

(5)固态盘接收到垃圾回收相关命令并执行,并更新块状态及固件状态。

2.如权利要求1所述的全闪存储阵列的主机与固态盘协同垃圾回收方法,其特征在于,通过扩展NVMe驱动发送Force_GC命令给固态盘固件,固态盘执行垃圾回收操作。

3.如权利要求1所述的全闪存储阵列的主机与固态盘协同垃圾回收方法,其特征在于,还包括:阵列主机利用获取的NAND_Block_Table及I/O请求调整垃圾回收触发机制。

4.如权利要求1所述的全闪存储阵列的主机与固态盘协同垃圾回收方法,其特征在于,设定无效页面阈值Hth,标记块内无效页面比例超出阈值的块为无效块,并维护无效块信息表NAND_Block_Table;反馈当前固态盘固件状态Firmware_Stats。

5.如权利要求2所述的全闪存储阵列的主机与固态盘协同垃圾回收方法,其特征在于,固态盘接收到主机端发送的强制垃圾回收命令,在固态盘内部进行无效页搬迁,完成垃圾回收操作;接收到主机端发送的禁止垃圾回收命令,挂起内部正在执行的垃圾回收操作。

说明书 :

一种全闪存储阵列的主机与固态盘协同垃圾回收方法

技术领域

[0001] 本发明涉及固态存储领域,特别涉及一种全闪存储阵列的主机与固态盘协同垃圾回收方法。

背景技术

[0002] 现有固态盘通常采用本地垃回收策略,即固态盘垃圾回收操作与应用分离。而由于固态盘垃圾回收操作会占用底层NAND控制器带宽,显著影响固态盘的性能,进而导致全
闪存储阵列系统的性能波动。为此,通常采用开放通道式固态盘构建存储系统,以解决垃圾
回收给整体系统带来的性能影响。开放通道式固态盘将FTL层放于阵列主机,固态盘直接将
底层NAND信息暴露给主机接口,阵列主机可根据FTL状态动态调整I/O负载,避免垃圾回收
操作对性能造成波动,提高阵列系统性能稳定性。
[0003] 开放通道式固态盘将FTL放于主机端,以根据固态盘内部FTL状态调整I/O操作。但开放通道式固态盘由于其大量算法及地址映射表均由主机端进行处理,增加了主机端CPU
负载,不适用于大量固态盘组成的全闪存储阵列系统。因此,本文提出了一种开放通道控制
器设计思想的协同垃圾回收机制,利用扩展NVMe协议将垃圾回收操作交由阵列主机处理,
同时将地址映射及其余算法保留在固态盘内,减轻CPU负担同时避免垃圾回收与I/O操作的
冲突。

发明内容

[0004] 本发明的目的在于提供一种全闪存储阵列的主机与固态盘协同垃圾回收方法,用于解决上述现有技术的问题。
[0005] 本发明个一种全闪存储阵列的主机与固态盘协同垃圾回收方法,其中,包括:(1)阵列主机通过扩展NVMe驱动发送Get_block_stats或Get_firmware_stats命令;(2)固态盘
固件解析命令,将块状态NAND_Block_Table或固件状态Firmware_Stats打包发送给阵列主
机;(3)阵列主机接收固态盘发送块状态或固件状态,判断是否需要进行垃圾回收操作,包
括:判断NAND_Block_Table中无效块比例是否超过一阈值Nth;超过限定阈值Nth,则强制触
发垃圾回收操作;未超过限定阈值Nth时,判断无效块比例是否超过触发阈值Mth;超过触发
阈值Mth,判断固态盘是否有I/O请求;无I/O请求时,将固态盘标记为空闲状态,触发垃圾回
收机制;有I/O请求时,将固态盘标记为待回收状态,发送Abort_GC命令挂起垃圾回收,当处
于空闲状态时继续触发垃圾回收操作;(4)如需执行垃圾回收,主机端发送Force_GC命令,
强制固态盘进行垃圾回收;如需暂停垃圾回收,阵列主机发送Abort_GC命令,固态盘暂停内
部垃圾回收操作;(5)固态盘接收到垃圾回收相关命令并执行,并更新块状态及固件状态。
[0006] 根据本发明的全闪存储阵列的主机与固态盘协同垃圾回收方法的一实施例,其中,通过扩展NVMe驱动发送Force_GC收命令给固态盘固件,固态盘执行垃圾回收操作。
[0007] 根据本发明的全闪存储阵列的主机与固态盘协同垃圾回收方法的一实施例,其中,还包括:阵列主机利用获取的NAND_Block_Table及I/O请求调整垃圾回收触发机制。
[0008] 根据本发明的全闪存储阵列的主机与固态盘协同垃圾回收方法的一实施例,其中,判断垃圾回收包括:(1)NAND_Block_Table中无效块比例为P;(2)判断P是否超过限定阈
值Nth;(2)超过限定阈值Nth,阵列主机发送Force_GC命令;(3)未超过限定阈值Nth时,判断
P是否超过触发阈值Mth;(4)超过触发阈值Mth,判断固态盘是否有I/O请求;(5)无I/O请求
时,将固态盘标记为空闲状态,触发垃圾回收机制,主机软件通过扩展NVMe驱动发送Force_
GC收命令给固态盘固件,固态盘执行垃圾回收操作;有I/O请求时,将固态盘标记为待回收
状态,发送Abort_GC命令挂起垃圾回收,当处于空闲状态时继续触发垃圾回收操作。
[0009] 根据本发明的全闪存储阵列的主机与固态盘协同垃圾回收方法的一实施例,其中,设定无效页面阈值Hth,标记块内无效页面比例超出阈值的块为无效块,并维护无效块
信息表NAND_Block_Table;反馈当前固态盘固件状态Firmware_Stats。
[0010] 根据本发明的全闪存储阵列的主机与固态盘协同垃圾回收方法的一实施例,其中,固态盘接收到主机端发送的强制垃圾回收命令,在固态盘内部进行无效页搬迁,完成垃
圾回收操作;接收到主机端发送的禁止垃圾回收命令,挂起内部正在执行的垃圾回收操作。
[0011] 本发明在固态盘与阵列主机间引入开放通道控制器设计思想,固态盘通过扩展NVMe命令,将底层块状态及固件状态上报给阵列主机,由阵列主机实现垃圾回收触发机制;
相比于传统固态盘本地垃圾回收机制,本方案阵列主机参与固态盘内部垃圾回收操作,阵
列主机可根据I/O请求动态调整垃圾回收策略。与开放通道式固态盘相比,本发明将地址映
射、磨损均衡、垃圾回收等算法在固态盘内部实现,减轻了开放通道固态盘阵列的主机CPU
负担。

附图说明

[0012] 图1为协同垃圾回收流程的示意框图;
[0013] 图2为协同垃圾回收流程图。

具体实施方式

[0014] 为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
[0015] 图1为协同垃圾回收流程的示意框图,图2为协同垃圾回收流程图,如图1以及图2所示,本发明实现与主机协同的固态盘垃圾回收操作,全闪存储阵列的主机与固态盘协同
垃圾回收方法包括:
[0016] (1)全闪存储阵列主机软件通过扩展NVMe驱动发送Get_block_stats或Get_firmware_stats命令;
[0017] (2)固态盘固件通过扩展NVMe命令解析模块解析命令,将块状态NAND_Block_Table或固件状态Firmware_Stats打包发送给阵列主机;
[0018] (3)阵列主机接收固态盘发送块状态或固件状态,利用GC机制判断模块判断是否需要进行垃圾回收操作;
[0019] (4)如需执行垃圾回收,主机端通过扩展NVMe驱动发送Force_GC命令,强制固态盘进行垃圾回收;如需暂停垃圾回收,阵列主机通过扩展NVMe驱动发送Abort_GC命令,固态盘
暂停内部垃圾回收操作。
[0020] (5)固态盘接收到垃圾回收相关命令并执行,并更新块状态及固件状态。
[0021] 其中,阵列主机进行垃圾回收判断流程如下:
[0022] (1)判断NAND_Block_Table中无效块比例是否超过限定阈值Nth;
[0023] (2)超过限定阈值Nth,则强制触发垃圾回收操作;
[0024] (3)未超过限定阈值Nth时,判断无效块比例是否超过触发阈值Mth;
[0025] (4)超过触发阈值Mth,判断固态盘是否有I/O请求;无I/O请求时,将固态盘标记为空闲状态,触发垃圾回收机制,主机软件通过扩展NVMe驱动发送Force_GC收命令给固态盘
固件,固态盘执行垃圾回收操作;有I/O请求时,将固态盘标记为待回收状态,发送Abort_GC
命令挂起垃圾回收,当处于空闲状态时继续触发垃圾回收操作。固态盘固件在NVMe协议1.3
标准的基础上,扩展命令包括:(1)Get_block_stats:获取块状态信息;(2)Get_firmware_
stats:获取固件状态信息;(3)Force_GC:强制垃圾回收;(4)Abort_GC:挂起垃圾回收。
[0026] 如图1以及图2所示,固态盘固件利用开放通道控制器设计方法,扩展NVMe协议解析,可接收阵列主机发送Get_block_stats命令,利用块状态监测模块获取块状态信息表
NAND_Block_Table,并通过NVMe协议发送给阵列主机;扩展NVMe命令解析模块也可以接收
阵列主机发送的Force_GC或Abort_GC命令,并通过GC执行模块执行垃圾回收操作或挂起。
扩展NVMe命令解析模块可接收阵列主机发送Get_firmware_stats反馈固件执行状态。阵列
主机利用获取的NAND_Block_Table及I/O请求调整垃圾回收触发机制。
[0027] 如图1以及图2所示,固态盘块状态监测模块可利用固态盘GC执行模块,通过设定无效页面阈值Hth,标记块内无效页面比例超出阈值的块为无效块,并维护无效块信息表
NAND_Block_Table;固态盘固件状态监测模块可反馈当前固态盘固件状态Firmware_
Stats,该变量标记垃圾回收运行状态。
[0028] 如图2所示,全闪存储阵列主机进行垃圾回收判断流程如下:
[0029] (1)NAND_Block_Table中无效块比例为P;
[0030] (2)判断P是否超过限定阈值Nth;
[0031] (2)超过限定阈值Nth,阵列主机通过扩展NVMe驱动发送Force_GC命令;
[0032] (3)未超过限定阈值Nth时,判断P是否超过触发阈值Mth;
[0033] (4)超过触发阈值Mth,判断固态盘是否有I/O请求;
[0034] (5)无I/O请求时,将固态盘标记为空闲状态,触发垃圾回收机制,主机软件通过扩展NVMe驱动发送Force_GC收命令给固态盘固件,固态盘执行垃圾回收操作;有I/O请求时,
将固态盘标记为待回收状态,发送Abort_GC命令挂起垃圾回收,当处于空闲状态时继续触
发垃圾回收操作。
[0035] 在固态盘与阵列主机间引入开放通道控制器设计思想,固态盘通过扩展NVMe命令,将底层块状态及固件状态上报给阵列主机,由阵列主机实现垃圾回收触发机制;相比于
传统固态盘本地垃圾回收机制,本方案阵列主机参与固态盘内部垃圾回收操作,阵列主机
可根据I/O请求动态调整垃圾回收策略。与开放通道式固态盘构建全闪存储阵列相比,本发
明将地址映射、磨损均衡、垃圾回收等算法在固态盘内部实现,减轻主机CPU负载,增强全闪
存储阵列系统性能稳定性。
[0036] 本发明在固态盘与阵列主机间引入开放通道控制器设计思想,固态盘通过扩展NVMe命令,将底层块状态及固件状态上报给阵列主机,由阵列主机实现垃圾回收触发机制;
相比于传统固态盘本地垃圾回收机制,本方案阵列主机参与固态盘内部垃圾回收操作,阵
列主机可根据I/O请求动态调整垃圾回收策略。与开放通道式固态盘相比,本发明将地址映
射、磨损均衡、垃圾回收等算法在固态盘内部实现,减轻了开放通道固态盘阵列的主机CPU
负担。
[0037] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形
也应视为本发明的保护范围。