CN107608626B - 一种基于ssd raid阵列的多级缓存及缓存方法 - Google Patents

一种基于ssd raid阵列的多级缓存及缓存方法 Download PDF

Info

Publication number
CN107608626B
CN107608626B CN201710702928.8A CN201710702928A CN107608626B CN 107608626 B CN107608626 B CN 107608626B CN 201710702928 A CN201710702928 A CN 201710702928A CN 107608626 B CN107608626 B CN 107608626B
Authority
CN
China
Prior art keywords
data
mapping table
new
cache
raid
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
Application number
CN201710702928.8A
Other languages
English (en)
Other versions
CN107608626A (zh
Inventor
万胜刚
叶蕊
孟文韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201710702928.8A priority Critical patent/CN107608626B/zh
Publication of CN107608626A publication Critical patent/CN107608626A/zh
Application granted granted Critical
Publication of CN107608626B publication Critical patent/CN107608626B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于SSD RAID阵列的多级缓存及缓存方法,属于固态硬盘存储技术领域。本发明设计了一种多级缓存,上层缓存由小容量NVRAM实现,负责压缩数据,并备份压缩数据到DRAM,接着把压缩后的数据及其元数据整合为页存储,然后以条带为单位调度数据到下层缓存;下层缓存从RAID中分出一部分空间实现,负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复。本发明还实现了一种基于SSD RAID阵列的多级缓存方法,本发明技术方案根据新旧数据之间冗余大的特点,在多级缓存中管理和存储压缩数据,减少对缓存容量需求,降低成本和出错率;多级缓存设计保障系统可靠性,无论DRAM、NVRAM还是RAID发生数据丢失或者出错,都能及时恢复。

Description

一种基于SSD RAID阵列的多级缓存及缓存方法
技术领域
本发明属于固态硬盘存储技术领域,更具体地,涉及一种基于SSD RAID阵列的多级缓存及缓存方法。
背景技术
基于闪存的固态磁盘(Solid State Drives,SSD)以其优异的性能、非异失和低功耗等特点,已经在企业级存储广泛应用。但闪存存在寿命有限的缺陷,当闪存应用到大规模存储系统时存在可靠性问题。利用磁盘阵列(Redundant Arrays of Independent Disks,RAID)技术构建大规模闪存阵列,既可以增大存储系统的容量,提高性能,又能保证可靠性。
但RAID的引入会进一步缩短SSD的寿命。每次数据更新都伴随一次校验更新,频繁的更新会触发SSD中垃圾回收和数据块擦除,而SSD中数据块擦除次数是有限的。
目前针对SSD RAID的延寿方法,要么只缓存数据页,不缓存校验页,因而存在数据丢失的风险;要么使用额外的log(日志)设备缓存数据页和校验页,因而存在映射表丢失的风险,同时使用额外大容量非易失性存储设备,而大容量伴随着更高的出错率。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于SSD RAID阵列的多级缓存及缓存方法,其目的在于构建多级缓存,上层缓存由小容量NVRAM实现,负责压缩数据,并备份压缩数据到DRAM,接着把压缩后的数据及其元数据整合为页存储,然后以条带为单位调度数据到下层缓存;下层缓存从RAID中分出一部分空间实现,负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复。由此解决现有SSD RAID的延寿技术存在的数据出错率增加的问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于SSD RAID阵列的多级缓存,所述多级缓存包括:
上层缓存,由小容量NVRAM实现,用于负责压缩数据,并备份压缩数据到内存,整合压缩后的数据及其元数据,以条带为单位调度数据到下层缓存;
下层缓存,由子RAID实现,用于负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复;
映射表,用于记录同一逻辑地址数据在RAID中原始版本位置和多级缓存中最新压缩版本位置;
压缩元数据,用于管理压缩数据的元数据,映射表掉电丢失时,根据压缩元数据重构映射表。
进一步地,所述映射表的一个表项由六元组表示,该六元组包括:
重定位标识,用于标识条带中是否有数据在缓存中;
新条带号,用于记录最新压缩数据在子RAID中的条带号;
新页号,用于记录最新压缩数据在条带中的数据页号;
新版本号,用于记录最新压缩数据的版本号;
页内偏移,用于记录压缩数据的页内起始位置;
数据长度,用于记录压缩数据的长度。
进一步地,所述压缩元数据由六元组表示,该六元组包括:
总长度,用于记录整个数据包的长度;
原条带号,用于记录RAID中原始数据的条带号;
原页号,用于记录条带中的原始数据页号;
压缩数据长度,用于记录压缩数据的长度;
版本号,用于记录当前压缩数据的版本号;
压缩数据,用于记录压缩后的数据。
按照本发明的另一方面,提供了一种缓存方法,所述方法包括以下步骤:
(1)根据写请求计算写请求数据对应的条带号和页号;
(2)判断当前写模式,若是满写,进入步骤(3);若是大写,进入步骤(4);若是小写,进入步骤(5);
(3)根据新数据计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后将新数据和新校验写入RAID,向上层响应写操作完成;
(4)获取同一条带中的非请求页,根据所有数据页计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后把新数据和新校验写入RAID,向上层响应写操作完成;
(5)获取请求数据在RAID中的原始数据和原条带校验;
(6)根据原条带号和原页号,查找映射表是否有对应表项,若没有,则新建映射表项,若有则重定位标识置为真;
(7)新数据和旧数据做异或运算,然后压缩异或值,判断压缩率是否大于压缩阈值th,若小于,则放弃压缩,直接将新数据与新校验写入RAID,并更新映射表中对应表项,置重定位标识为假,向上层响应写操作完成;若大于,则进入步骤(8);其中,0<th<1,优选th=0.5;
(8)在内存备份压缩数据,同时更新映射表缓存指针,向上层响应写操作完成。
进一步地,所述方法中将新数据和新校验写入RAID具体包括以下子步骤:
(11)在上层写缓存中,压缩数据及其元数据被整合成页存放;当数据调度到下层缓存时,进入步骤(12);当下层缓存垃圾回收时,进入步骤(13);当重建映射表时,进入步骤(15);
(12)以条带为单位,计算校验,把数据和校验一起写入下层缓存,同时上层缓存对应数据清空,更新映射表中新条带号、新页号、新版本号信息;
(13)选取有效数据最少的条带,依次读出每个页的压缩数据,对每个压缩数据,比较其版本号和映射表中的最新版本号,若不是最新版本号则丢弃;若是最新版本则执行步骤(14);
(14)获取数据页在RAID中原数据,解压压缩数据,两者异或得到最新数据,把最新数据和校验写入RAID,并更新映射表重定位标识为假;
(15)遍历多级缓存中每一个条带,根据压缩元数据查找是否有映射表表项,没有则新建;有则比较版本号,如果压缩数据的版本号更新,则更新映射表版本号为最新。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
本发明根据新旧数据之间冗余大的特点,设计多级缓存管理和存储压缩数据,减少对缓存容量的需求,同时通过减少数据更新和延迟校验延长SSD寿命;降低成本和出错率;多级缓存设计提高系统可靠性,无论DRAM、NVRAM还是RAID发生数据丢失或者出错,都能及时恢复。
附图说明
图1所示为本发明多级缓存的整体架构示意图;
图2所示为本发明多级缓存中映射表数据结构示意图;
图3所示为本发明多级缓存中压缩元数据结构示意图;
图4所示为本发明多级缓存方法的流程图;
图5所示为本发明中数据在多级缓存中执行流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例中将会用到一些定义,其中的名词解释如下:
页:是本发明中上层缓存的基本单位,压缩后的数据及其元数据被整合层页存储;
条带:是本发明中从上层缓存向下层写数据的单位,包括数据页和校验页;
子RAID:从SSD RAID中分出一部分空间做下层缓存;
压缩数据:本发明中根据新旧数据冗余,对新旧数据做异或运算,再把异或值压缩存入多级缓存;
满写:一个条带内所有数据页均为请求的SU数据页,且每个请求页中要写的数据都是整页;
大写:一个条带内请求页的数目大于所有数据页数量一半;
小写:一个条带内请求页的数目少于所有数据页数量一半;
如图1所示,本发明多级缓存包含一个可靠的存储系统架构和两个关键的数据结构,可靠存储系统架构主要由上层缓存和下层缓存构成:
上层缓存,由小容量NVRAM实现,用于负责压缩数据,并备份压缩数据到内存,整合压缩后的数据及其元数据,以条带为单位调度数据到下层缓存;
下层缓存,由子RAID实现,用于负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复;
两个关键的数据结构分别是映射表和压缩元数据:
映射表,用于记录同一逻辑地址数据在RAID中原始版本位置和多级缓存中最新压缩版本位置;
如图2所示,映射表的一个表项由六元组表示,该六元组包括:
重定位标识,用于标识条带中是否有数据在缓存中;
新条带号,用于记录最新压缩数据在子RAID中的条带号;
新页号,用于记录最新压缩数据在条带中的数据页号;
新版本号,用于记录最新压缩数据的版本号;
页内偏移,用于记录压缩数据的页内起始位置;
数据长度,用于记录压缩数据的长度。
压缩元数据,用于管理压缩数据的元数据,映射表掉电丢失时,根据压缩元数据重构映射表。
如图3所示,压缩元数据由六元组表示,该六元组包括:
总长度,用于记录整个数据包的长度;
原条带号,用于记录RAID中原始数据的条带号;
原页号,用于记录条带中的原始数据页号;
压缩数据长度,用于记录压缩数据的长度;
版本号,用于记录当前压缩数据的版本号;
压缩数据,用于记录压缩后的数据。
如图4所示,一种基于SSD RAID阵列的多级缓存方法包括以下步骤:
(1)根据写请求计算写请求数据对应的条带号和页号;
(2)判断当前写模式,若是满写,进入步骤(3);若是大写,进入步骤(4);若是小写,进入步骤(5);
(3)根据新数据计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后将新数据和新校验写入RAID,向上层响应写操作完成;
(4)获取同一条带中的非请求页,根据所有数据页计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后把新数据和新校验写入RAID,向上层响应写操作完成;
(5)获取请求数据在RAID中的原始数据和原条带校验;
(6)根据原条带号和原页号,查找映射表是否有对应表项,若没有,则新建映射表项,若有则重定位标识置为真;
(7)新数据和旧数据做异或运算,然后压缩异或值,判断压缩率是否大于压缩阈值,若小于,则放弃压缩,直接将新数据与新校验写入RAID,并更新映射表中对应表项,置重定位标识为假,向上层响应写操作完成;若大于,则进入步骤(8);
(8)在内存备份压缩数据,同时更新映射表缓存指针,向上层响应写操作完成。
如图5所示,所述缓存方法中将新数据和新校验写入RAID具体包括以下子步骤:
(11)在上层写缓存中,压缩数据及其元数据被整合成页存放;当数据调度到下层缓存时,进入步骤(12);当下层缓存垃圾回收时,进入步骤(13);当重建映射表时,进入步骤(15);
(12)以条带为单位,计算校验,把数据和校验一起写入下层缓存,同时上层缓存对应数据清空,更新映射表中新条带号、新页号、新版本号信息;
(13)选取有效数据最少的条带,依次读出每个页的压缩数据,对每个压缩数据,比较其版本号和映射表中的最新版本号,若不是最新版本号则丢弃;若是最新版本则执行步骤(14);
(14)获取数据页在RAID中原数据,解压压缩数据,两者异或得到最新数据,把最新数据和校验写入RAID,并更新映射表重定位标识为假;
(15)遍历多级缓存中每一个条带,根据压缩元数据查找是否有映射表表项,没有则新建;有则比较版本号,如果压缩数据的版本号更新,则更新映射表版本号为最新。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种多级缓存的缓存方法,其特征在于,所述缓存方法包括以下步骤:
(1)根据写请求计算写请求数据对应的条带号和页号;
(2)判断当前写模式,若是满写,进入步骤(3);若是大写,进入步骤(4);若是小写,进入步骤(5);
(3)根据新数据计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后将新数据和新校验写入RAID,向上层响应写操作完成;
(4)获取同一条带中的非请求页,根据所有数据页计算新校验,查看每个数据页的重定位标识是否在映射表中,是则将映射表中重定位标识更新为假;之后把新数据和新校验写入RAID,向上层响应写操作完成;
(5)获取请求数据在RAID中的原始数据和原条带校验;
(6)根据原条带号和原页号,查找映射表是否有对应表项,若没有,则新建映射表项,若有则重定位标识置为真;
(7)新数据和旧数据做异或运算,然后压缩异或值,判断压缩率是否大于压缩阈值,若小于,则放弃压缩,直接将新数据与新校验写入RAID,并更新映射表中对应表项,置重定位标识为假,向上层响应写操作完成;若大于,则进入步骤(8);
(8)在内存备份压缩数据,同时更新映射表缓存指针,向上层响应写操作完成。
2.根据权利要求1所述的缓存方法,其特征在于,所述缓存方法中将新数据和新校验写入RAID具体包括以下子步骤:
(11)在上层写缓存中,压缩数据及其元数据被整合成页存放;当数据调度到下层缓存时,进入步骤(12);当下层缓存垃圾回收时,进入步骤(13);当重建映射表时,进入步骤(15);
(12)以条带为单位,计算校验,把数据和校验一起写入下层缓存,同时上层缓存对应数据清空,更新映射表中新条带号、新页号、新版本号信息;
(13)选取有效数据最少的条带,依次读出每个页的压缩数据,对每个压缩数据,比较其版本号和映射表中的最新版本号,若不是最新版本号则丢弃;若是最新版本则执行步骤(14);
(14)获取数据页在RAID中原数据,解压压缩数据,两者异或得到最新数据,把最新数据和校验写入RAID,并更新映射表重定位标识为假;
(15)遍历多级缓存中每一个条带,根据压缩元数据查找是否有映射表表项,没有则新建;有则比较版本号,如果压缩数据的版本号更新,则更新映射表版本号为最新。
CN201710702928.8A 2017-08-16 2017-08-16 一种基于ssd raid阵列的多级缓存及缓存方法 Active CN107608626B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710702928.8A CN107608626B (zh) 2017-08-16 2017-08-16 一种基于ssd raid阵列的多级缓存及缓存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710702928.8A CN107608626B (zh) 2017-08-16 2017-08-16 一种基于ssd raid阵列的多级缓存及缓存方法

Publications (2)

Publication Number Publication Date
CN107608626A CN107608626A (zh) 2018-01-19
CN107608626B true CN107608626B (zh) 2020-05-19

Family

ID=61065114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710702928.8A Active CN107608626B (zh) 2017-08-16 2017-08-16 一种基于ssd raid阵列的多级缓存及缓存方法

Country Status (1)

Country Link
CN (1) CN107608626B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762664B (zh) * 2018-02-05 2021-03-16 杭州电子科技大学 一种固态硬盘页级缓存区管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
CN103392167A (zh) * 2012-12-28 2013-11-13 华为技术有限公司 分布式存储系统的缓存方法、节点和计算机可读介质
US9268641B2 (en) * 2009-11-25 2016-02-23 International Business Machines Corporation Large scale subscription based dispersed storage network
CN106534373A (zh) * 2016-12-27 2017-03-22 郑州云海信息技术有限公司 San存储设备的io性能测试方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914706B2 (en) * 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268641B2 (en) * 2009-11-25 2016-02-23 International Business Machines Corporation Large scale subscription based dispersed storage network
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
CN103392167A (zh) * 2012-12-28 2013-11-13 华为技术有限公司 分布式存储系统的缓存方法、节点和计算机可读介质
CN106534373A (zh) * 2016-12-27 2017-03-22 郑州云海信息技术有限公司 San存储设备的io性能测试方法及装置

Also Published As

Publication number Publication date
CN107608626A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
US11687445B1 (en) System, method and apparatus for accelerating fast block devices
US9547589B2 (en) Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
CN109791520B (zh) 物理介质感知的空间耦合的日志记录和重放
CN107787489B (zh) 包括层级的文件存储系统
US7856528B1 (en) Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
KR101562781B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US8135907B2 (en) Method and system for managing wear-level aware file systems
US8706989B2 (en) Data storage device with power-off recovery system and method thereof
US8738846B2 (en) File system-aware solid-state storage management system
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
US20040128470A1 (en) Log-structured write cache for data storage devices and systems
TW201403318A (zh) 具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器
CN108958656B (zh) 基于raid5固态硬盘阵列的动态条带系统设计方法
CN112596673B (zh) 具有双重raid数据保护的多活多控存储系统
WO2013123855A1 (zh) 存储器的读写控制方法及对应的存储器和服务器
US11449386B2 (en) Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US9514052B2 (en) Write-through-and-back-cache
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
CN107402890B (zh) 一种基于固态盘阵列和缓存的数据处理方法及系统
US20140047161A1 (en) System Employing MRAM and Physically Addressed Solid State Disk
CN107608626B (zh) 一种基于ssd raid阵列的多级缓存及缓存方法
US20090187719A1 (en) Data backup method for logical volume manager
KR101079367B1 (ko) 플래시 메모리를 사용하는 raid 저장 장치에서 패리티 데이터 관리 방법 및 그 장치
US20150199236A1 (en) Multi-level disk failure protection

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