CN115576489A - 一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 - Google Patents
一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 Download PDFInfo
- Publication number
- CN115576489A CN115576489A CN202211284538.0A CN202211284538A CN115576489A CN 115576489 A CN115576489 A CN 115576489A CN 202211284538 A CN202211284538 A CN 202211284538A CN 115576489 A CN115576489 A CN 115576489A
- Authority
- CN
- China
- Prior art keywords
- data
- nvme
- read
- metadata
- hard disk
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering arrangements
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于数据缓冲机制的NVMe全闪存存储方法及其系统,其特点是该方法采用通过哈希线性扩展链表查找数据信息,如数据在缓冲层中,直接通过缓存读取或改写,反之则通过CPU向内存申请虚拟块设备硬件,使用DMA与NVMe硬盘直接进行数据交互,如是写入或改写数据请求,将元数据信息写入或改写到元数据库,定期将缓冲层中的数据通过虚拟块设备使用DMA直接写入NVMe硬盘,使用RDB将元数据固化并清理内存,系统包括:NVMe硬盘读写、元数据管理、读写数据缓存和内存清除等模块。本发明与现有技术相比具有高可扩展性、低读写延迟、高并发写入吞吐的优点,使CPU的性能得到相当程度的解放,能适应大数据的应用需求。
Description
技术领域
本发明涉及计算机存储技术领域,尤其是一种基于数据缓冲机制的NVMe全闪存存储方法及其系统。
背景技术
随着物联网的发展,时空数据呈指数级增长,为了应对数据增加带来的挑战,需要一个可扩展且高效存储架构,可以存储、查询、分析和可视化时空大数据。由于固态硬盘(SSD)和非易失性快速存储器主机控制器接口规范(NVMe)等新兴技术的出现,基于NVMe的固态存储器在延迟和峰值带宽方面提供了前所未有的性能。结合物联网业务的特征,数据存储方法要满足极高的可扩展性、低延迟的数据访问、高并发的写入吞吐、高效的时空数据查询等,但是现有存储系统与物联网大数据的存储需求之间还存在着巨大的差距。
目前主流的数据存储系统,如Ceph、HDFS在面对海量小文件的快速存取压力时,往往会产生严重的读写吞吐瓶颈。在处理海量小文件数据时,随着数据量的急剧增加,元数据的大小也急剧增加,传统的元数据架构、元数据备份管理、元数据动态负载均衡等越来越难适应大数据应用需求,这将产生一系列的性能瓶颈。
发明内容
本发明的目的是针对现有技术的不足而设计的一种基于数据缓冲机制的NVMe全闪存存储方法及其系统,采用SPDK实现的添加虚拟块的NVMe硬盘写入模块和Redis实现元数据管理模块、数据缓冲模块、内存清除策略选择模块构建的全闪存存储系统,实现了时空大数据背景下高可扩展性、低读写延迟、高并发写入吞吐的特点,大大提高了数据存储的增删改查的效率,较好地缓解了NVMe固态硬盘在高并发写入情况下的I/O压力,使CPU的性能得到相当程度的解放,能很好的适应大数据的应用需求,具有很好的应用前景和推广价值。
实现本发明目的具体技术方案是:一种基于数据缓冲机制的NVMe全闪存存储方法,其特点是该方法包括如下步骤:
步骤一:接收到来自用户的读写请求时,从元数据库中通过哈希线性扩展链表查找数据信息。
步骤二:如果数据在缓冲层中,直接通过缓存读取或改写;如果数据不在缓冲层中,则通过CPU向内存申请虚拟块设备硬件,并对应到NVMe硬盘上的特定实体块设备,使用DMA与NVMe硬盘直接进行数据交互。
步骤三:在DMA传输完成后,针对数据请求的类型,判断是否要将此数据读取到缓冲层中(读请求)或更新NVMe硬盘中的对应数据(写请求)。
步骤四:如果是写入或改写数据请求,将元数据信息写入或改写到元数据库,并使用AOF将操作写入日志文件。
步骤五:定期将缓冲层中的数据通过虚拟块设备使用DMA直接写入NVMe硬盘,使用RDB将元数据固化,使用删除策略(随机删除、LRU算法删除或读取频次删除)来清理内存。
一种基于数据缓冲机制的NVMe全闪存存储方法架构的全闪存存储系统,其特点是该系统具体包括:添加虚拟块的NVMe硬盘读写模块、元数据管理模块、读写数据缓存模块和内存清除策略选择模块;所述添加虚拟块的NVMe硬盘读写模块用于接收读写请求后,根据请求将数据写入固态硬盘或从固态硬盘中读取;所述元数据管理模块用于存放和管理元数据,包括存储路径、存储量、变更、新增、删除、SSD信息、数据布局和UUID等信息;所述读写数据缓存模块用于将NVMe固态硬盘中的数据存入缓存,在接收到读写请求时直接在缓存中进行处理;所述内存清除策略选择模块用于根据上一个时间段的读写请求分布选择合适的策略对缓存区进行清理。
所述添加虚拟块的NVMe硬盘读写模块,在I/O栈中通过CPU申请添加一个更大的虚拟块来作为读写单元,用户可以自定义虚拟块的大小来满足用户程序的写入需求。虚拟块被系统视为硬件设备,因此可以不用CPU中断操作直接经过DMA写入NVMe硬盘对应的块设备中,以实现比设备更大的页面和数据的高速写入。
所述元数据管理模块中使用缓存数据库对元数据进行管理,使用内存来加速元数据的读写速度,使用哈希线性扩展链表来对元数据进行增、删、改、查的操作,使用主从同步功能对各节点的元数据库进行同步。
所述读写数据缓存模块中使用缓存数据库的空闲部分构建一个数据缓冲层,将高频读写的数据从NVMe固态硬盘中读取出来。当读写请求中的数据在缓冲层中存在时,直接从缓冲层进行读写,每隔一定时间段再将缓冲层中的数据通过添加虚拟块的NVMe硬盘读写模块写回NVMe硬盘。
所述内存清除策略选择模块根据上一个时间段读写请求的分布和命中缓冲层的次数,选择LRU算法删除、随机删除、按读取频次删除三种删除方法中的一种定期对缓冲层中的数据进行删除,保证缓冲层拥有足够的空间。
本发明与现有技术相比在读写方面提升了NVMe固态硬盘的读写I/O速度,充分发挥了NVMe固态硬盘的功能,同时不依赖CPU中断来进行读写,释放了CPU的性能,在元数据库方面,使用缓冲层减少了NVMe硬盘的读写负载,大大加快了在缓冲层中处理读写请求的速度,有效解决了硬盘小写问题,同时提供了三种删除策略(随机删除、LRU算法删除和读取频次删除)以保证缓冲层的可用空间,方法简便、有效,实现了时空大数据背景下高可扩展性、低读写延迟、高并发写入吞吐的特点,大大提高了数据存储的增删改查的效率,较好地缓解了NVMe固态硬盘在高并发写入情况下的I/O压力,使CPU的性能得到相当程度的释放,能很好的适应大数据的应用需求,具有很好的应用前景和推广价值。
附图说明
图1为本发明架构的NVMe全闪存存储系统结构示意图;
图2为本发明架构的NVMe全闪存存储系统流程图;
图3为添加虚拟块的NVMe固态硬盘的读写模块图;
图4为使用哈希线性扩展链管理元数据的模块图;
图5为添加缓存层的读模块;
图6为添加缓存层的写模块。
具体实施方式
本发明采用数据缓冲机制的NVMe全闪存存储方法,具体包括下述步骤:
步骤一:通过向CPU内存申请虚拟块设备硬件,对应到NVMe硬盘上的特定实体块设备;
步骤二:若为读取或改写请求,从Redis元数据库中通过哈希线性扩展链表查找数据信息;
步骤三:根据读写数据请求,若数据在缓冲区中,则直接通过缓存读取或改写向指定虚拟块设备传输数据。若数据不在缓冲区中,通过虚拟块设备使用DMA与NVMe硬盘直接进行数据交互,并判断是否要将此数据读取到缓存中;
步骤四:若为写入或改写请求,将元数据信息写入或改写进Redis元数据库,并使用AOF将操作写入日志文件;
步骤五:定期将缓冲区中的数据通过虚拟块设备使用DMA直接写入NVMe硬盘,使用RDB将元数据固化,使用读取频次删除进行内存清理。
下面结合附图及具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
参阅图1,本发明采用数据缓冲机制的NVMe全闪存存储系统包括:添加虚拟块的NVMe硬盘读写模块、元数据管理模块、读写数据缓存模块和内存清除策略选择模块,所述添加虚拟块的NVMe硬盘读写模块用于接收读写请求后,根据请求将数据写入固态硬盘或从固态硬盘中读取;所述元数据管理模块用于存放和管理元数据,包括存储路径、存储量、变更、新增、删除、SSD信息、数据布局和UUID等信息;所述读写数据缓存模块用于将NVMe硬盘中的数据存入缓冲层,在接收到读写请求时直接在缓冲层中处理;所述内存清除策略选择模块用于根据上一个时间段的读写请求分布选择合适的策略对缓冲层进行清理。
参阅图2,本发明采用数据缓冲机制的NVMe全闪存存储系统工作流程为:用户发出读写请求进入Reids数据库,若数据不在该Redis数据库中,则通过分布式确定数据所在的服务器并分发到该服务器的Redis数据库中。在Redis数据库中查询数据是否在缓存层中存在,若是则直接在数据缓存层修改,若不存在则根据元数据信息,通过SPDK进入NVMe SSD硬盘进行读写,并判断是否需要将数据读取回数据缓存层。定期将数据缓存层中的数据通过SPDK写回硬盘,定期将元数据持久化到硬盘。
参阅图3,所述 SPDK实现的添加虚拟块的NVMe硬盘读写(写入)模块流程为:用户程序将读写请求传入到虚拟文件系统,虚拟文件系统分配到ext2,ext3,NFS等索引节点,并根据读写请求大小分配相应大小的虚拟块(vBdev),然后向CPU申请内存并将它认做硬件设备。之后读写操作就可以绕过CPU中断,由vBdev直接通过DMA向对应的NVMe硬盘中的块设备进行读写。
参阅图4,所述Redis实现元数据管理模块将元数据的信息存入Redis中,使用哈希线性链表进行查找,能大大提高增删改查的速度。哈希性链表的每个哈希桶里保存了键值对数据。键(key)指向要查询的元数据描述符所在的地址,值(value)指向元数据结构体所在的地址,该地址中的元数据信息包括存储路径、存储量、SSD信息、数据布局和UUID等。
参阅图5,所述读写数据缓存模块在读取时流程为:构建数据缓冲层,根据上一个时间段内访问较为频繁的数据,将其存入缓冲层。之后读取请求首先检查元数据库缓存层是否有该数据。若有,则直接从缓存层中读取;若没有,则使用SPDK从硬盘中读取,并判断是否需要将读出的数据存入缓存层中。
参阅图6,所述读写数据缓存模块在写入时流程为:构建数据缓冲层,根据上一个时间段内访问较为频繁的数据,将其存入缓冲层。之后写请求首先检查元数据库缓存层是否有该数据。若有,则直接在缓存层中修改,并判断是否需要通过SPDK向硬盘中写入;若没有,则通过SPDK向硬盘中写入,并判断是否需要将写入后的数据存入缓存层中。
最后,每隔一定时间将缓存中的数据通过NVMe固态硬盘写入模块写进硬盘中,将元数据也一并固化到硬盘上,根据上一时间段的访问情况,若高频访问十分集中,则使用LRU算法进行删除,并且删除的数据量较小;若高频访问不集中,则使用读取频次删除,删除的数据量可以稍大。
上述实施例仅是本发明的一个优选方案,并非用以限制本发明的实质技术内容范围。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,凡在权利要求书所限定的本发明的精神和原则内,对本发明做出修改、等同替换、改进等,均应包含在本发明的保护范围内。
Claims (6)
1.一种基于数据缓冲机制的NVMe全闪存存储方法,其特征在于,该方法包括如下步骤:
步骤一:接收到来自用户的读写请求时,从元数据库中通过哈希线性扩展链表查找数据信息;
步骤二:如果数据在缓冲层中,直接通过缓存读取或改写;如果数据不在缓冲层中,则通过CPU向内存申请虚拟块设备硬件,并对应到NVMe硬盘上的特定实体块设备,使用DMA与NVMe硬盘直接进行数据交互;
步骤三:在DMA传输完成后,针对数据请求的类型,判断是否要将此数据读取到缓冲层中或更新NVMe硬盘中的对应数据;
步骤四:如果是写入或改写数据请求,将元数据信息写入或改写到元数据库,并使用AOF将操作写入日志文件;
步骤五:定期将缓冲层中的数据通过虚拟块设备使用DMA直接写入NVMe硬盘,使用RDB将元数据固化,使用随机删除、LRU算法删除或读取频次删除来清理内存。
2.一种权利要求1所述的基于数据缓冲机制的NVMe全闪存存储方法构建的NVMe全闪存存储系统,其特征在于,该NVMe全闪存存储系统包括:添加虚拟块的NVMe硬盘读写模块、元数据管理模块、读写数据缓存模块和内存清除策略选择模块,所述添加虚拟块的NVMe硬盘读写模块用于接收读写请求后,根据请求将数据写入固态硬盘或从固态硬盘中读取;所述元数据管理模块用于存放和管理元数据,包括存储路径、存储量、变更、新增、删除、SSD信息、数据布局和UUID等信息;所述读写数据缓存模块用于将NVMe硬盘中的数据存入缓冲层,在接收到读写请求时直接在缓冲层中处理;所述内存清除策略选择模块用于根据上一个时间段的读写请求分布选择合适的策略对缓冲层进行清理。
3.根据权利要求2所述的NVMe全闪存存储系统,其特征在于,所述添加虚拟块的NVMe硬盘读写模块新建一个虚拟块设备层,位于物理块设备层的上方,通过DMA绕过CPU向NVMe硬盘直接读写数据。
4.根据权利要求2所述的的NVMe全闪存存储系统,其特征在于,所述元数据管理模块使用分布式缓存数据库进行管理,通过哈希线性扩展链表实现元数据的快速增删改查,并使用RDB和AOF操作对元数据进行持久化。
5.根据权利要求2所述的NVMe全闪存存储系统,其特征在于,所述读写数据缓存模块使用内存构建一个缓冲区,将部分数据从NVMe硬盘读取到缓冲区中,当对这部分数据进行读写请求时可以直接在内存中处理。
6.根据权利要求2所述的NVMe全闪存存储系统,其特征在于,所述内存清除策略选择模块通过上个时间单位内的读写请求分布选择不同的删除策略对内存进行清理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211284538.0A CN115576489A (zh) | 2022-10-17 | 2022-10-17 | 一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211284538.0A CN115576489A (zh) | 2022-10-17 | 2022-10-17 | 一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115576489A true CN115576489A (zh) | 2023-01-06 |
Family
ID=84587028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211284538.0A Pending CN115576489A (zh) | 2022-10-17 | 2022-10-17 | 一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576489A (zh) |
-
2022
- 2022-10-17 CN CN202211284538.0A patent/CN115576489A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213772B (zh) | 数据存储方法及NVMe存储系统 | |
EP2735978B1 (en) | Storage system and management method used for metadata of cluster file system | |
US9582421B1 (en) | Distributed multi-level caching for storage appliances | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
Nam et al. | Assuring demanded read performance of data deduplication storage with backup datasets | |
US9772949B2 (en) | Apparatus, system and method for providing a persistent level-two cache | |
US7330938B2 (en) | Hybrid-cache having static and dynamic portions | |
WO2019085769A1 (zh) | 一种数据分层存储、分层查询方法及装置 | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
WO2009033419A1 (fr) | Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données | |
US10740187B1 (en) | Systems and methods of managing and creating snapshots in a cache-based storage system | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US20130290636A1 (en) | Managing memory | |
US10678788B2 (en) | Columnar caching in tiered storage | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
CN111324305B (zh) | 一种分布式存储系统中数据写入/读取方法 | |
CN116194900A (zh) | 高速缓存技术 | |
CN116204130A (zh) | 一种键值存储系统和键值存储系统的管理方法 | |
CN109002400B (zh) | 一种内容感知型计算机缓存管理系统及方法 | |
Lee et al. | An efficient index buffer management scheme for implementing a B-tree on NAND flash memory | |
Tao et al. | Adaptive index structures | |
CN115576489A (zh) | 一种基于数据缓冲机制的NVMe全闪存存储方法及其系统 | |
Lee et al. | Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds | |
JP7323801B2 (ja) | 情報処理装置および情報処理プログラム | |
Zhao et al. | Autumn: A scalable read optimized LSM-tree based Key-Value stores with fast point and range read speed |
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 |