CN106201916B - 一种面向ssd的非易失缓存方法 - Google Patents
一种面向ssd的非易失缓存方法 Download PDFInfo
- Publication number
- CN106201916B CN106201916B CN201610588569.3A CN201610588569A CN106201916B CN 106201916 B CN106201916 B CN 106201916B CN 201610588569 A CN201610588569 A CN 201610588569A CN 106201916 B CN106201916 B CN 106201916B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer area
- ssd
- write
- buffer
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种面向SSD的非易失缓存机制。通过将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区,然后后台将缓冲区的数据写回到数据区,这样能有效提高SSD的随机写入性能,缓存机制同样会对读干扰问题进行优化,这其中的缓存机制包括:I/O检测算法,过滤掉顺序和大块的I/O;一种面向数据区的垃圾回收策略,使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;同时为了解决SSD读干扰问题,发明了一种读缓存策略;最终实现一个基于device mapper的日志结构的SSD缓存SSD系统。
Description
技术领域
本发明适用于SSD非易失缓存技术领域,提供了一种新的面向SSD的非易失缓存机制,提高SSD的随机写入性能,以及有效缓解SSD的读干扰问题。
背景技术
存储系统作为计算机系统的重要组成部分,一直以来都是影响计算机系统整体性能的重要因素。进入二十一世纪以来,随着信息技术的迅猛发展,尤其是互联网技术的发展和广泛应用,社会的生产和人们的生活产生了越来越多的数据,也越来越依赖于数据,大数据时代已经到来。大数据对存储领域带来了新的挑战。
由于应用的数据量不断的增大,这就使用户对存储系统的容量要求越来越高。根据IDC估算,2005年全球数据量仅为130EB,2011年达到1.8ZB,2014年将增长到7ZB,全球信息总量每两年就会增长一倍。2010年IDC预计2020年全球数据总量将为35ZB,但是在2012年末又将值修订为40ZB,这也就是说,从2010年到2020年数据量将会有50倍的增长。
另一方面,存储容量并不是大数据对存储系统的唯一需求,大数据同时还对存储系统的性能提出了更高更加苛刻的要求。信息时代,信息(即数据)就是资源,掌握信息就掌握了主动,就有机会获得大的发展。而掌握信息不等同于存储信息,信息的存储不是目的,信息的处理,即从信息中获取价值才是大数据研究的最终目标。大数据不同于传统意义上的大规模数据,大数据具有体量巨大、种类繁多、价值密度低和处理速度快的特点。这些特点就决定了大数据处理的特点,即从大量的不同的数据中快速找到有价值的数据,也就对存储系统的性能(包括了数据的读写速度和查找效率)提出了更高的要求。
随着基于NAND Flash的SSD 进入外存储市场,其完全不同于磁盘的新颖特性为优化存储结构创造了新契机。因为SSD 是半导体设备不需要寻道延时,其随机访问性能高出磁盘两个数量级。不仅如此,SSD 还有能耗小、存储密度高、恶劣环境适应性强等特点。
然而由于SSD本身的缺点:价格高,寿命有限,即有限的擦除次数,读干扰,随机写性能差等的问题,限制了SSD的使用和发展。如何能降低这些缺点对SSD的影响就显得尤为重要和有意义。
发明内容
本发明所要解决的技术问题是面向SSD的非易失缓存方法,通过将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区,然后后台将缓冲区的数据写回到数据区,这样能有效提高SSD的随机写入性能,缓存机制同样会对读干扰问题进行优化,这其中的缓存机制包括:I/O检测算法,过滤掉顺序和大块的I/O;一种面向数据区的垃圾回收策略,使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;同时为了解决SSD读干扰问题,发明了一种读缓存策略;最终实现一个基于devicemapper的日志结构的SSD缓存SSD系统。
本发明的技术方案是:由于SSD本身的缺点:价格高,寿命有限,即有限的擦除次数,读干扰,随机写性能差等的问题,限制了SSD的使用和发展。所以本发明提出将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区 ,然后后台将缓冲区的数据写回到数据区,这样能有效提高SSD的随机写入性能,缓存机制同样会对读干扰问题进行优化。
所以,本发明中缓存机制包括:I/O检测算法,过滤掉顺序和大块的I/O;一种面向数据区的垃圾回收策略,使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;同时为了解决SSD读干扰问题,发明了一种读缓存策略;最终实现一个基于device mapper的日志结构的SSD缓存SSD系统。
本发明涉及的缓存机制的原理和流程见附图说明。
使用本发明能达到以下有益效果:
1:保证系统原有的读性能和顺序写性能:本发明主要是针对于随机写性能以及读干扰问题提出了一种面向SSD的缓存机制,并没有对SSD原有的读性能和顺序写性能造成影响。
2:提升SSD系统随机写性能:由于对SSD的写都是以顺序的形式进行,所以对于SSD的随机写性能会有很大的提升。
3:降低SSD 读干扰问题的影响:本发明中的读缓存机制会有效减少SSD读干扰对SSD性能的影响。
4:延长SSD的寿命:由于所有的写都是顺序的,所以SSD的垃圾回收和随机更新问题会减少,从而延长SSD的寿命。
附图说明
图1是缓存机制的整体结构图;
图2是I/O检测算法图;
图3是面向数据区的垃圾回收策略图;
图4是读缓存策略图。
具体实施方式
1:基于device mapper机制的实现
图1是缓存机制的整体结构图。
Target type是一种模块化的插件接口,允许自定义。SCS(SSD缓存SSD)的机制,就是利用这个接口定义了一种新的target type,将缓存区和数据区定义为两种新的targetdevice,设计了缓存的映射规则,逻辑组合成一种新的块设备。从而通过映射表,来自上层的数据可以根据规则发送到不同的设备中去,从而实现数据的重定向。具体的步骤为:
1、上层的写请求首先经过I/O顺序检测,缓存随机的I/O到内存中小块的RAMbuffer中;
2、RAM buffer写满之后,将这些写一起顺序日志的形式顺序写入到SSD缓冲区;
3、缓冲区在空闲的时候或者缓存的数据达到一定的阈值的时候,通过工作队列按照面向数据区的垃圾回收策略写回到数据区。
4、如果上层是读请求,则根据读缓存策略对读请求进行处理。
2:I/O检测算法
图2是I/O检测算法图。
切割bio:接收上层系统的bio,如果bio大于阈值大小,表明这是个大块的I/O,将它直接写到原始的数据区,否则将当前bio切割为4KB大小的bio
初始化数组,接收上层系统的bio;
当数组的bio数量达到数组阈值,检测数组中bio的连续性,如果是连续的,表明当前是连续I/O,将当前的数据直接写入到原始的数据区,否则先写到缓冲区;
3:面向数据区的垃圾回收策略
图3是面向数据区的垃圾回收策略图。
该机制与传统方法的一个重要区别是:采用面向数据区域的垃圾回收策略。该策略先根据数据区的更新情况作一次垃圾回收,再根据缓冲区的有效数据残留情况作一次垃圾回收。具体做法如下:
考虑数据区数据更新情况的垃圾回收
将缓冲区的数据迁移到数据区时,要避免任何的随机写操作。具体做法是,将数据区划分成段(Slab,一个段包含多个Block),将缓冲区一个日志块(segment)的数据迁移到数据区的某个段中时,先将该段中所有的有效数据块读出来,然后与缓冲区中即将迁移的块合并,最终将合并成的整个段写到数据区中。这种做法能够保证数据区没有任何随机写,都是整段顺序写,SSD内部的垃圾回收开销很低。为了做到这一点,需要维护一个位数组,记录数据区中所有数据块的更新情况,以便在缓冲区作垃圾回收时,能够在数据区选择一个包含更新数据最多的段,这样能够使缓冲区释放更多的空间。
考虑缓冲区有效数据残留情况的垃圾回收
经过步骤的垃圾回收,缓冲区还会残留一些有效数据,它们在数据区的对应段中只有很少数据被更新。本步骤将这些数据收集起来,再次顺序写到缓冲区中。
以上做法导致对SSD的所有写操作都是顺序的大块写,而传统方法只保证用户数据写到缓冲区中是顺序写,将缓冲区中的数据迁移到数据区中是随机写。以上做法会导致垃圾回收时的随机读,但随机读对SSD不是问题。
4:读缓存策略
图3是面向数据区的垃圾回收策略图。
通过将散落在数据区的频繁被读取的数据以日志的方式顺序写入到相对较小的缓存区之中,这样首先就会对原来的数据起到了保护作用;与此同时,缓存在小区域的读数据,由此而触发的随机更新也会减少。因为频繁读取的数据都在一个小的范围内,发生因为读干扰而产生的迁移和更新会减少,因为多个更新会组合成一个大的更新,从而减少更新次数。具体流程为:
检查缓存映射表:当前读请求到来的时候,首先检查内存中的映射表,检测该读请求是否命中;
如果读请求命中,从相应的缓冲区读取数据并返回;
如果读请求没命中,从数据区读取数据并返回,同时将该读请求写入到缓冲区,其写入方式和正常的写入一样。
实验效果
基于本发明的实验测试表明,对于一个写满的单盘SSD性能来说,SSD系统的随机写性能和原来相比提高了将近4倍。
由此可以看出,本发明提出的面向SSD的非易失缓存机制,达到了提升性能的效果。
Claims (3)
1.一种面向SSD的非易失缓存方法,首先将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区,然后后台将缓冲区的数据写回到数据区,其特征在于,具体的步骤为:
(1)、上层的写请求首先经过I/O顺序检测,缓存随机的I/O到内存中小块的RAM buffer中;
(2)、RAM buffer写满之后,将这些写一起顺序日志的形式顺序写入到SSD缓冲区;
(3)、缓冲区在空闲的时候或者缓存的数据达到一定的阈值的时候,通过工作队列按照面向数据区的垃圾回收策略写回到数据区;
(4)、如果上层是读请求,则根据读缓存策略对读请求进行处理;
非易失缓存机制包括I/O检测算法、面向数据区的垃圾回收策略及读缓存策略,
所述I/O检测算法过滤掉顺序和大块的I/O;
所述面向数据区的垃圾回收策略使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;
所述读缓存策略解决SSD读干扰问题,
所述读缓存策略具体为:
通过将散落在数据区频繁被读取的数据以日志的方式顺序写入到相对较小的缓存区之中,这样对原来的数据起到保护作用;与此同时,缓存在小区域的读数据,由此而触发的随机更新也会减少,从而减少更新次数,具体流程为:
(4.1)检查缓存映射表:当前读请求到来的时候,首先检查内存中的映射表,检测该读请求是否命中;
(4.2)如果读请求命中,从相应的缓冲区读取数据并返回;
(4.3)如果读请求没命中,从数据区读取数据并返回,同时将该读请求写入到缓冲区。
2.根据权利要求1所述的一种面向SSD的非易失缓存方法,其特征在于,所述I/O检测算法具体为:
(2.1)切割bio:接收上层系统的bio,如果bio大于阈值大小,表明这是个大块的I/O,将它直接写到原始的数据区,否则将当前bio切割为4KB大小的bio;
(2.2)初始化数组,接收上层系统的bio;
(2.3)当数组的bio数量达到数组阈值,检测数组中bio的连续性,如果是连续的,表明当前是连续I/O,将当前的数据直接写入到原始的数据区,否则先写到缓冲区。
3.根据权利要求1所述的一种面向SSD的非易失缓存方法,其特征在于,所述面向数据区的垃圾回收策略具体为:
先根据数据区的更新情况作一次垃圾回收,再根据缓冲区的有效数据残留情况作一次垃圾回收,具体做法如下:
(3.1)考虑数据区数据更新情况的垃圾回收
将缓冲区的数据迁移到数据区时,要避免任何的随机写操作,具体做法是,将数据区划分成段Slab,一个段包含多个Block,将缓冲区一个日志块segment的数据迁移到数据区的某个段中时,先将该段中所有的有效数据块读出来,然后与缓冲区中即将迁移的块合并,最终将合并成的整个段写到数据区中,为做到这一点,需要维护一个位数组,记录数据区中所有数据块的更新情况,以便在缓冲区作垃圾回收时,能够在数据区选择一个包含更新数据最多的段,这样能够使缓冲区释放更多的空间;
(3.2)考虑缓冲区有效数据残留情况的垃圾回收
经过步骤(3.1)的垃圾回收,缓冲区还会残留一些有效数据,它们在数据区的对应段中只有很少数据被更新,本步骤将这些数据收集起来,再次顺序写到缓冲区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610588569.3A CN106201916B (zh) | 2016-07-25 | 2016-07-25 | 一种面向ssd的非易失缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610588569.3A CN106201916B (zh) | 2016-07-25 | 2016-07-25 | 一种面向ssd的非易失缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201916A CN106201916A (zh) | 2016-12-07 |
CN106201916B true CN106201916B (zh) | 2019-03-29 |
Family
ID=57492680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610588569.3A Active CN106201916B (zh) | 2016-07-25 | 2016-07-25 | 一种面向ssd的非易失缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201916B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681663A (zh) * | 2016-12-29 | 2017-05-17 | 记忆科技(深圳)有限公司 | 一种固态硬盘多流写入的方法 |
CN108733312B (zh) * | 2017-04-17 | 2021-05-28 | 伊姆西Ip控股有限责任公司 | 存储管理方法和设备 |
CN107861685A (zh) * | 2017-06-20 | 2018-03-30 | 平安科技(深圳)有限公司 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
CN107346216B (zh) * | 2017-06-30 | 2021-05-18 | 联想(北京)有限公司 | 一种存储设备及其数据处理方法 |
CN108108125A (zh) * | 2017-12-06 | 2018-06-01 | 北京中体骏彩信息技术有限公司 | 一种彩票兑奖方法 |
KR20200016075A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 |
CN110134337B (zh) * | 2019-05-17 | 2022-12-30 | 苏州大学 | 基于Open-Channel SSD结构严格顺序写方法 |
CN111309645B (zh) * | 2020-03-12 | 2023-06-27 | 上海交通大学 | 基于非易失性内存的新型混合内存垃圾回收方法及系统 |
CN112783802B (zh) * | 2021-01-29 | 2022-11-01 | 山东华芯半导体有限公司 | 一种ssd中优化读干扰处理的方法 |
CN113138719B (zh) * | 2021-04-29 | 2022-11-01 | 山东华芯半导体有限公司 | 一种实现ssd快速随机写并避免写重复的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
US8769196B1 (en) * | 2011-09-30 | 2014-07-01 | Lenovo (Singapore) Pte. Ltd. | Configuring I/O cache |
CN104503707A (zh) * | 2014-12-24 | 2015-04-08 | 华为技术有限公司 | 读取数据的方法以及装置 |
US9146686B2 (en) * | 2013-12-12 | 2015-09-29 | Moxa Inc. | External storage device and data storing method for the external storage device |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026579A1 (en) * | 2014-07-22 | 2016-01-28 | Lsi Corporation | Storage Controller and Method for Managing Metadata Operations in a Cache |
-
2016
- 2016-07-25 CN CN201610588569.3A patent/CN106201916B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769196B1 (en) * | 2011-09-30 | 2014-07-01 | Lenovo (Singapore) Pte. Ltd. | Configuring I/O cache |
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
US9146686B2 (en) * | 2013-12-12 | 2015-09-29 | Moxa Inc. | External storage device and data storing method for the external storage device |
CN104503707A (zh) * | 2014-12-24 | 2015-04-08 | 华为技术有限公司 | 读取数据的方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106201916A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201916B (zh) | 一种面向ssd的非易失缓存方法 | |
CN104298610B (zh) | 资料储存系统及其管理方法 | |
CN105242871B (zh) | 一种数据写入方法及装置 | |
CN107391774B (zh) | 基于重复数据删除的日志文件系统的垃圾回收方法 | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
CN110188108B (zh) | 数据存储方法、装置、系统、计算机设备及存储介质 | |
CN102646069A (zh) | 一种延长固态盘使用寿命的方法 | |
CN111026329B (zh) | 基于主机管理瓦记录磁盘的键值存储系统及数据处理方法 | |
CN103186350A (zh) | 混合存储系统及热点数据块的迁移方法 | |
CN109582593A (zh) | 一种基于计算的ftl地址映射方法及数据读、写方法 | |
CN107209714A (zh) | 分布式存储系统及分布式存储系统的控制方法 | |
CN105980992B (zh) | 一种存储系统、识别数据块稳定性的方法以及装置 | |
CN109799950A (zh) | 中间存储的适应性管理 | |
CN102999428A (zh) | 一种瓦记录磁盘的四级编址方法 | |
CN104050057B (zh) | 一种历史感知的数据去重碎片消除方法与系统 | |
KR101438667B1 (ko) | 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
CN113253926A (zh) | 提升新型存储器的查询和存储性能的存储内索引构建方法 | |
Fisher et al. | A hybrid filesystem for hard disk drives in tandem with flash memory | |
Fevgas et al. | A study of R-Tree performance in hybrid flash/3DXPoint storage | |
Lv et al. | Zonedstore: A concurrent zns-aware cache system for cloud data storage | |
Doekemeijer et al. | Key-Value Stores on Flash Storage Devices: A Survey | |
CN103473179B (zh) | 后台系统及其删除固态硬盘重复数据的方法 | |
CN107870875A (zh) | 一种基于分布式内存可定制智能数据缓存方法 | |
Fevgas et al. | HyR-tree: a spatial index for hybrid flash/3D XPoint storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |