CN112148225B - 一种基于NVMe SSD的块存储缓存***及其方法 - Google Patents

一种基于NVMe SSD的块存储缓存***及其方法 Download PDF

Info

Publication number
CN112148225B
CN112148225B CN202011010192.6A CN202011010192A CN112148225B CN 112148225 B CN112148225 B CN 112148225B CN 202011010192 A CN202011010192 A CN 202011010192A CN 112148225 B CN112148225 B CN 112148225B
Authority
CN
China
Prior art keywords
ssd
data
block
module
blocks
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
CN202011010192.6A
Other languages
English (en)
Other versions
CN112148225A (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.)
Shanghai Eisoo Information Technology Co Ltd
Original Assignee
Shanghai Eisoo Information Technology Co Ltd
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 Shanghai Eisoo Information Technology Co Ltd filed Critical Shanghai Eisoo Information Technology Co Ltd
Priority to CN202011010192.6A priority Critical patent/CN112148225B/zh
Publication of CN112148225A publication Critical patent/CN112148225A/zh
Application granted granted Critical
Publication of CN112148225B publication Critical patent/CN112148225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种基于NVMe SSD的块存储缓存***及其方法,该***包括缓存池和块存储,缓存池包括控制模块、缓存池分配模块、SSD块管理模块、淘汰模块、读写模块和NVMe SSD缓存模块,NVMe SSD缓存模块包括多个容量大小一致的SSD块,块存储的底层物理空间由机械硬盘构成,块存储中多个块存储数据块被逻辑整合为对应的LUN,LUN对应有各自的SSD块管理模块以及各自的SSD块集合,缓存池分配模块用于分配SSD块给LUN;SSD块管理模块用于执行LUN申请SSD块的操作,以及调度LUN对应的SSD块集合;淘汰模块用于将LUN对应SSD块集合中读写热度低于预设阈值的SSD块淘汰筛选回收至NVMe SSD缓存模块。与现有技术相比,本发明能够在保证低成本和大容量的基础上,有效提升块存储的读写性能。

Description

一种基于NVMe SSD的块存储缓存***及其方法
技术领域
本发明涉及块存储缓存技术领域,尤其是涉及一种基于NVMe SSD的块存储缓存***及其方法。
背景技术
随着计算机技术的迅猛发展,如今绝大部分企业都使用计算机来运作核心业务,使得业务数据呈现***式增长。为保证业务数据的可追溯性,当前很多企业采用存储***来存放其业务数据,而块存储则是使用非常广泛的一种存储方式。
HDD机械硬盘由于具有容量大、价格低廉的特点,一直是最普遍的数据存储介质,很多块存储都使用机械硬盘作为其数据存储介质。但是由于机械硬盘的限制,其已经不能满足业务对读写性能的需求。现有技术采用全闪存存储***替代机械硬盘,以提高读写性能,但是全闪存***成本比较高、容量有限。因此有必要设计一套兼顾机械硬盘低成本、大容量和闪存高性能特性的缓存***,以较低的成本来提高传统块存储的读写性能。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于NVMe SSD的块存储缓存***及其方法,以在较低的成本下提高块存储的读写性能,并能保证块存储的容量。
本发明的目的可以通过以下技术方案来实现:一种基于NVMe SSD的块存储缓存***,包括缓存池和块存储,所述缓存池包括控制模块、缓存池分配模块、SSD块管理模块、淘汰模块、读写模块和NVMe SSD缓存模块,所述控制模块分别连接至缓存池分配模块、SSD块管理模块和淘汰模块,所述SSD块管理模块分别与缓存池分配模块、读写模块双向连接,所述缓存池分配模块与NVMe SSD缓存模块双向连接,所述NVMe SSD缓存模块与读写模块双向连接,所述NVMe SSD缓存模块包括多个容量大小一致的SSD块,所述块存储的底层物理空间由机械硬盘构成,所述块存储中多个块存储数据块被逻辑整合为对应的LUN(Logical UnitNumber,逻辑单元号),以对外提供虚拟磁盘功能,所述LUN与读写模块双向连接,所述LUN对应有各自的SSD块管理模块以及各自的SSD块集合,所述控制模块用于创建缓存池,并对NVMe SSD缓存模块进行初始化处理,以得到多个容量大小一致的SSD块;
所述缓存池分配模块用于将NVMe SSD缓存模块中的SSD块分配给LUN;
所述SSD块管理模块用于执行LUN申请SSD块的操作,以及调度LUN对应的SSD块集合;
所述淘汰模块用于执行淘汰算法,以将LUN对应SSD块集合中读写热度低于预设阈值的SSD块筛选回收至NVMe SSD缓存模块;
所述读写模块用于执行读取或写入IO数据的操作。
进一步地,所述淘汰算法具体为ARC(Adjustable Replacement Cache,自适应替换缓存)淘汰算法。
进一步地,所述NVMe SSD缓存模块具体为由主用NVMe SSD和备用NVMe SSD构成的Raid1磁盘阵列。
一种基于NVMe SSD的块存储缓存方法,包括以下步骤:
S1、基于主用NVMe SSD和备用NVMe SSD,构建Raid1磁盘阵列,以作为缓存池设备;
S2、初始化缓存池,并建立全局的缓存池分配模块;
S3、对块存储中多个块存储数据块进行逻辑整合,以创建得到对应的LUN,并建立该LUN对应的SSD块管理模块,每个LUN均被分配有多个SSD块,多个SSD块共同组成该LUN的SSD块集合,其中,LUN可以通过iSCSI或者FC映射出去作为块设备使用,每个LUN的数据读写是相互独立的;
S4、读写模块接收IO数据写入或IO数据读取的指令,若接收的为IO数据写入指令,则执行步骤S5,若接收的是IO数据读取指令,则执行步骤S6;
S5、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否存在对应的数据片段或者可以合并的数据片段,如果查找到了,则判断待写入的IO数据是否大于预设的穿透阈值,如果小于穿透阈值,则更新对应的数据片段,标记该数据片段的dirty位为1,等待后台刷写线程从缓存池中刷写数据到块存储中;如果大于穿透阈值,则对IO数据进行合并处理后再写入块存储中,并标记原本被合并数据片段的dirty位为0;
如果没有查找到,则判断待写入的IO数据长度是否大于预设的穿透阈值,如果大于穿透阈值,则直接写入块存储中,如果小于穿透阈值,则SSD块管理模块向缓存池分配模块申请一个新的SSD块,并将IO数据写入该新申请的SSD块中,成为其中的一个数据片段,同时标记该数据片段dirty位为1,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块;
S6、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否有对应的数据片段,如果查找到了,则从SSD块中读取相应的数据;
如果没有查找到,则从块存储中读取数据,同时SSD块管理模块向缓存池分配模块申请一个新的SSD块,将读取的数据缓存一份到该新申请的SSD块中,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块。
进一步地,所述步骤S2中初始化缓存池的具体过程为:
S21、将Raid1磁盘阵列从逻辑上按照预设容量大小切分为多个SSD块,并在第一个SSD块的第一个扇区写入标记信息和该SSD缓存设备的详细信息,包括:Raid1磁盘阵列的总大小、块大小以及块数目;
S22、从第一个SSD块的4096字节偏移开始,根据Raid1磁盘阵列设备的大小初始化位图,每个SSD块对应一个bit位,并设置位图空间占用的SSD块对应的bit位为1,其他未使用的SSD块的bit位为0。
进一步地,所述预设容量具体为1MB。
进一步地,所述步骤S5中后台刷写线程具体为多条用于同步缓存池数据到块存储的数据读写线程,所述后台刷写线程的具体工作过程为:
有数据写入时,标记对应数据片段的dirty位为1,然后根据每条数据同步线程当前的负载情况选择一条合适的数据同步线程,将包含该数据片段的SSD块相关信息加入到该条数据同步线程的数据同步队列中,后续这条数据同步线程处理到该SSD块时,会将其中所有需要同步的数据片段的数据都同步到块存储中;
当SSD块中所有数据片段中的数据都同步到块存储中后,将每个数据片段的dirty位标记为0。
进一步地,所述步骤S5具体包括以下步骤:
S51、根据待写入IO数据的偏移和长度,从对应LUN的SSD块集合中查询对应该IO数据的数据片段,若查询到,则执行步骤S52,若未查询到,则执行步骤S55;
S52、判断IO数据是否大于穿透阈值,若判断为是,则执行步骤S53,否则执行步骤S54;
S53、读取SSD块中缓存的数据片段,并与当前的IO数据合并,之后将合并后的IO数据写入块存储中,最后更新SSD块缓存的数据,将该SSD块中原先缓存的被合并数据片段的dirty位标记为0;
S54、直接更新SSD块缓存的数据,将SSD块中对应数据片段的dirty位标记为1,之后将该SSD块加入同步线程的数据同步队列中;
S55、判断IO数据是否大于穿透阈值,若判断为是,则直接将该IO数据写入块存储中,否则执行步骤S56;
S56、SSD块管理模块向缓存池分配模块申请新的SSD块,缓存池分配模块从NVMeSSD缓存模块中查找是否有可分配的SSD块,若未查找到,则执行步骤S57,若查找到有,则执行步骤S58;
S57、淘汰模块从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出读写热度低于预设阈值的SSD块,并由缓存池分配模块进行回收,以将淘汰筛选出的SSD块重新放入NVMe SSD缓存模块中,之后执行步骤S58;
S58、缓存池分配模块分配一个新的SSD块给LUN,将IO数据写入该新的SSD块中,并标记相应数据片段的dirty位为1,之后将该新的SSD块加入同步线程的数据同步队列中。
进一步地,所述步骤S6具体包括以下步骤:
S61、根据待读取IO数据的偏移和长度,从对应LUN的SSD块集合中查询对应该IO数据的数据片段,若查询到,则执行步骤S62,若未查询到,则执行步骤S65;
S62、判断SSD块中缓存的数据是否能够填满当前的IO请求,若判断为是,则直接从SSD块中读取数据,否则执行步骤S63;
S63、将SSD块中未缓存的数据从块存储中读取出来,之后更新SSD块,并将读取的数据填充到读IO的内存中;
S64、更新SSD块的读写热度;
S65、从块存储中读取数据,并将读取的数据填充到读IO的内存中,同时SSD块管理模块向缓存池分配模块申请一个新的SSD块,将读取的数据缓存一份到该新申请的SSD块,之后更新该LUN的SSD块集合,并调整SSD块的读写热度。
进一步地,所述步骤S65中SSD块管理模块向缓存池分配模块申请一个新的SSD块具体包括以下步骤:
S651、SSD块管理模块向缓存池分配模块申请新的SSD块,缓存池分配模块从NVMeSSD缓存模块中查找是否有可分配的SSD块,若未查找到,则执行步骤S652,若查找到有,则执行步骤S653;
S652、淘汰模块从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出读写热度低于预设阈值的SSD块,并由缓存池分配模块进行回收,以将淘汰筛选出的SSD块重新放入NVMe SSD缓存模块中,之后执行步骤S653;
S653、缓存池分配模块分配一个新的SSD块给LUN。
与现有技术相比,本发明具有以下优点:
一、本发明结合了机械硬盘低成本、大容量的特点以及NVMe SSD高性能的特性,采用机械硬盘作为块存储的底层物理空间,并基于NVMe SSD构建缓存池,采用LUN对块存储的数据库进行逻辑整合,使得块存储能够对外提供虚拟磁盘的功能,同时保证LUN之间数据读写的独立性,通过将不超过穿透阈值的IO数据写入NVMe SSD来提高IO的写入性能,同时利用NVMe SSD中已缓存写入的数据来提高读取IO的速度,以此能够有效地提升块存储的读写性能。
二、本发明采用后台刷写线程的方式,能够实时刷写NVMe SSD缓存池中的数据到块存储中,此外,本发明基于淘汰算法机制,以将读写热度较低的SSD块淘汰筛选出来,以便后续能够重新分配新的SSD块给有需要的LUN,保证缓存池能够不断更新调整缓存空间,以适应新数据的缓存需要,从而能够充分合理地利用***资源,保障整个块存储缓存***的性能持续优化提升。
三、本发明通过设置穿透阈值,以在写入IO数据的过程中预先过滤较大的IO数据,避免缓存池快速被大的IO数据填满,以此保证缓存池的正常可靠运行。
附图说明
图1为本发明的***结构示意图;
图2为本发明的方法流程示意图;
图3为实施例中数据写入的流程示意图;
图4为实施例中数据读取的流程示意图;
图中标记说明:1、缓存池,11、控制模块,12、缓存池分配模块,13、SSD块管理模块,14、淘汰模块,15、读写模块,16、NVMe SSD缓存模块,2、块存储,21、机械硬盘。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种基于NVMe SSD的块存储***,由缓存池1和块存储2两部分组成,缓存池1中包括控制模块11、缓存池分配模块12,SSD块管理模块13,淘汰模块14,读写模块15和NVMe SSD缓存模块16,NVMe SSD缓存模块16具体为由主用NVMe SSD和备用NVMe SSD构成的Raid1磁盘阵列。
缓存池1通过读写模块15与块存储2进行数据交互,块存储2的底层物理空间由机械硬盘21(图1中的HDD)构成,具体的,控制模块11分别连接至缓存池分配模块12、SSD块管理模块13和淘汰模块14,SSD块管理模块13分别与缓存池分配模块12、读写模块15双向连接,缓存池分配模块12与NVMe SSD缓存模块16双向连接,NVMe SSD缓存模块16与读写模块15双向连接,NVMe SSD缓存模块16包括多个容量大小一致的SSD块,块存储2中多个块存储数据块被逻辑整合为对应的LUN,以对外提供虚拟磁盘功能,LUN与读写模块15双向连接,LUN对应有各自的SSD块管理模块13以及各自的SSD块集合,控制模块11用于创建缓存池,并对NVMe SSD缓存模块16进行初始化处理,以得到多个容量大小一致的SSD块;
缓存池分配模块12用于将NVMe SSD缓存模块16中的SSD块分配给LUN;
SSD块管理模块13用于执行LUN申请SSD块的操作,以及调度LUN对应的SSD块集合;
淘汰模块14用于执行淘汰算法,以将LUN对应SSD块集合中读写热度低于预设阈值的SSD块筛选回收至NVMe SSD缓存模块16,本实施例中,淘汰模块14采用的淘汰算法为ARC(Adjustable Replacement Cache,自适应替换缓存)淘汰算法,ARC淘汰算法是一种常用的页面置换算法,既可以根据时间来管理缓存块(即本发明中的SSD块),也可以根据频率来管理缓存块,并能够在两者之间自动调整优化策略,本发明以SSD块的读写访问为热度,对SSD块进行淘汰筛选;
读写模块15则用于执行读取或写入IO数据的操作。
将上述***应用于实际,其具体工作过程如图2所示,包括:
S1、基于主用NVMe SSD和备用NVMe SSD,构建Raid1磁盘阵列,以作为缓存池设备;
S2、初始化缓存池,并建立全局的缓存池分配模块;
S3、对块存储中多个块存储数据块进行逻辑整合,以创建得到对应的LUN,并建立该LUN对应的SSD块管理模块,每个LUN均被分配有多个SSD块,多个SSD块共同组成该LUN的SSD块集合,其中,LUN可以通过iSCSI或者FC映射出去作为块设备使用,每个LUN的数据读写是相互独立的;
S4、读写模块接收IO数据写入或IO数据读取的指令,若接收的为IO数据写入指令,则执行步骤S5,若接收的是IO数据读取指令,则执行步骤S6;
S5、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否存在对应的数据片段或者可以合并的数据片段,如果查找到了,则判断待写入的IO数据是否大于预设的穿透阈值,如果小于穿透阈值,则更新对应的数据片段,标记该数据片段的dirty位为1,等待后台刷写线程从缓存池中刷写数据到块存储中;如果大于穿透阈值,则对IO数据进行合并处理后再写入块存储中,并标记原本被合并数据片段的dirty位为0;
如果没有查找到,则判断待写入的IO数据长度是否大于预设的穿透阈值,如果大于穿透阈值,则直接写入块存储中,如果小于穿透阈值,则SSD块管理模块向缓存池分配模块申请一个新的SSD块,并将IO数据写入该新申请的SSD块中,成为其中的一个数据片段,同时标记该数据片段dirty位为1,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块;
S6、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否有对应的数据片段,如果查找到了,则从SSD块中读取相应的数据;
如果没有查找到,则从块存储中读取数据,同时SSD块管理模块向缓存池分配模块申请一个新的SSD块,将读取的数据缓存一份到该新申请的SSD块中,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块。
本实施例在应用上述方法时,首先采用两块NVMe SSD分别作为主用和备用,以组成raid1设备/dev/dm0,之后将/dev/dm0从逻辑上按照1MB切分为多个块,并在第一个块的第一个扇区写入标记信息和该SSD缓存设备的详细信息,包括:/dev/dm0的总大小、块大小、块数目,最后从第一个块的4096字节偏移开始根据/dev/dm0设备的大小初始化位图,每个1MB的块对应一个bit位,并设置位图空间占用的块对应的bit位为1,其他未使用的块的bit位为0,以此完成缓存池的初始化工作。
本实施例在执行读写工作流程时,如图3和图4所示,主要包括以下步骤:
一、NVMe SSD缓存池创建阶段:配置两块NVMe SSD盘到存储节点上,组成raid1设备/dev/dm0。选定缓存设备后,会对/dev/dm0做初始化操作,填充相应信息到用于全局缓存块管理的SSDCacheManager(即缓存池分配模块12)中,初始化完成后,即可使用缓存池。
二、创建LUN阶段:块存储后端创建虚拟的LUN,LUN可以通过iSCSI或者FC映射出去作为块设备使用,每个LUN的数据读写是相互独立的。在块存储后端创建LUN的同时,创建对应的SSD块管理模块13。
三、写数据阶段(如图3所示):有IO数据写入时,先根据偏移和长度到该IO所属LUN的SSD块集合中查找是否存在对应的数据片段或者可以合并的数据片段,如果查找到了,则更新对应的数据片段,标记该数据片段dirty位为1,等待后台刷写线程从缓存池中刷写到块存储的存储池中;如果没有查找到,则判断长度是否大于设置的穿透阈值,如果大于穿透阈值,则直接写入块存储的存储池中,如果小于穿透阈值,则向SSDCacheManager申请一个新的SSD块,并将IO数据写入该SSD块中,成为其中的一个数据片段,同时标记该数据片段dirty位为1,并将对应的缓存块信息放入数据同步线程的同步队列中。
四、读数据阶段(如图4所示):从块存储***中读取数据时,先根据偏移和长度到该IO所属LUN的SSD块集合中查找是否有对应的数据片段,如果查找到了,则从SSD块中读取相应的数据;如果没有查找到,则从块存储的存储池中读取数据,同时向SSDCacheManager申请一个新的SSD块,将读取的数据缓存一份到该SSD块中。
上述步骤中,数据片段是指一个SSD块中的一段连续的数据区域,SSD块以1MB大小为单位,但是写IO的长度可能会小于1MB,这个时候就会产生数据片段。而数据片段的合并,则是指在同一个SSD块中,如果两个数据片段是连续的或者有重合的部分,则可以将两个片段合并为一个新的数据片段。
dirty位,即一个标记SSD块中数据片段是否有新数据写入的标记位。如果有新数据写入SSD块,则标记该数据片段的dirty位为1,表明该片段中的数据需要同步到块存储存储池中,同步完成后,需要将dirty位重置为0。
需要注意的是,1、在读写数据时,由于SSD缓存池远小于块存储的存储池,所以需要提供数据同步策略将SSD缓存池中的数据同步到块存储的存储池中,因此本发明的SSD缓存池采用实时同步的策略,将SSD缓存池中的数据实时同步到块存储存储池中,以便充分利用SSD缓存池和块存储池,具体的,在写数据时,后台刷写缓存池数据到块存储的存储池主要包括以下过程:
1)NVMe SSD缓存池工作后,开启多条数据同步线程等待同步数据。
2)有数据写入时,标记对应数据片段的dirty位为1,然后根据每条数据同步线程当前的负载情况选择一条合适的数据同步线程,将包含该数据片段的SSD块相关信息加入到该条数据同步线程的数据同步队列中,后续这条数据同步线程处理到该SSD块时,会将其中所有需要同步的数据片段的数据都同步到块存储的存储池中。
3)当SSD块中所有数据片段中的数据都同步到块存储的存储池中后,将每个数据片段的dirty位标记为0。
2、当申请新的SSD块失败时,需要提供相应的淘汰机制将SSD缓存池中不经常访问的SSD块淘汰到块存储的存储池中,以腾出空间来缓存新的数据,因此,本发明将每个LUN单独采用ARC淘汰算法管理其SSD块的调整和淘汰,根据SSD缓存池中每个SSD块的读写热度来淘汰不经常访问的SSD块,其中,ARC淘汰算法,即Adjustable Replacement Cache,是一种常用的页面置换算法,既可以根据时间来管理缓存块,也可以根据频率来管理缓存块,并能够在两者之间自动调整优化策略。本发明以SSD缓存池块的读写访问为热度,对SSD缓存池块进行淘汰,具体实现过程是由SSDCacheManager负责SSD缓存池中所有SSD块的分配和回收,每个LUN申请到SSD块后,会加入自己的SSD块集合中,后续的调整和淘汰由该LUN来调度。
3、由于HDD机械硬盘和NVMe SSD在写大IO时,性能差别不大,所以需要设置一个穿透阈值来过滤较大的IO,避免SSD缓存池快速被大IO写满。
综上所述,本发明结合HDD机械硬盘低成本、大容量的特点以及NVMe SSD高性能的特性,设计了一种适用于块存储的缓存***。通过将不超过穿透阈值的IO写入NVMe SSD来提高IO的写入性能,同时利用NVMe SSD中已写入的数据来提供读IO加速,以此有效地提升块存储的读写性能。同时通过实时刷写NVMe SSD缓存池中的数据到块存储的存储池,并结合ARC淘汰机制,能够充分合理地利用***资源,保障持续的性能提升。

Claims (9)

1.一种基于NVMe SSD的块存储缓存方法,应用于块存储缓存***,其特征在于,所述块存储缓存***包括缓存池(1)和块存储(2),所述缓存池(1)包括控制模块(11)、缓存池分配模块(12)、SSD块管理模块(13)、淘汰模块(14)、读写模块(15)和NVMe SSD缓存模块(16),所述控制模块(11)分别连接至缓存池分配模块(12)、SSD块管理模块(13)和淘汰模块(14),所述SSD块管理模块(13)分别与缓存池分配模块(12)、读写模块(15)双向连接,所述缓存池分配模块(12)与NVMe SSD缓存模块(16)双向连接,所述NVMe SSD缓存模块(16)与读写模块(15)双向连接,所述NVMe SSD缓存模块(16)包括多个容量大小一致的SSD块,所述块存储(2)的底层物理空间由机械硬盘(21)构成,所述块存储(2)中多个块存储(2)数据块被逻辑整合为对应的LUN,以对外提供虚拟磁盘功能,所述LUN与读写模块(15)双向连接,所述LUN对应有各自的SSD块管理模块(13)以及各自的SSD块集合,所述控制模块(11)用于创建缓存池(1),并对NVMe SSD缓存模块(16)进行初始化处理,以得到多个容量大小一致的SSD块;
所述缓存池分配模块(12)用于将NVMe SSD缓存模块(16)中的SSD块分配给LUN;
所述SSD块管理模块(13)用于执行LUN申请SSD块的操作,以及调度LUN对应的SSD块集合;
所述淘汰模块(14)用于执行淘汰算法,以将LUN对应SSD块集合中读写热度低于预设阈值的SSD块筛选回收至NVMe SSD缓存模块(16);
所述读写模块(15)用于执行读取或写入IO数据的操作;
所述块存储缓存方法包括以下步骤:
S1、基于主用NVMe SSD和备用NVMe SSD,构建Raid1磁盘阵列,以作为缓存池设备;
S2、初始化缓存池,并建立全局的缓存池分配模块;
S3、对块存储中多个块存储数据块进行逻辑整合,以创建得到对应的LUN,并建立该LUN对应的SSD块管理模块,每个LUN均被分配有多个SSD块,多个SSD块共同组成该LUN的SSD块集合,其中,LUN可以通过iSCSI或者FC映射出去作为块设备使用,每个LUN的数据读写是相互独立的;
S4、读写模块接收IO数据写入或IO数据读取的指令,若接收的为IO数据写入指令,则执行步骤S5,若接收的是IO数据读取指令,则执行步骤S6;
S5、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否存在对应的数据片段或者可以合并的数据片段,如果查找到了,则判断待写入的IO数据是否大于预设的穿透阈值,如果小于穿透阈值,则更新对应的数据片段,标记该数据片段的dirty位为1,等待后台刷写线程从缓存池中刷写数据到块存储中;如果大于穿透阈值,则对IO数据进行合并处理后再写入块存储中,并标记原本被合并数据片段的dirty位为0;
如果没有查找到,则判断待写入的IO数据长度是否大于预设的穿透阈值,如果大于穿透阈值,则直接写入块存储中,如果小于穿透阈值,则SSD块管理模块向缓存池分配模块申请一个新的SSD块,并将IO数据写入该新申请的SSD块中,成为其中的一个数据片段,同时标记该数据片段dirty位为1,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块;
S6、先根据偏移和长度到该IO数据所属LUN的SSD块集合中查找是否有对应的数据片段,如果查找到了,则从SSD块中读取相应的数据;
如果没有查找到,则从块存储中读取数据,同时SSD块管理模块向缓存池分配模块申请一个新的SSD块,将读取的数据缓存一份到该新申请的SSD块中,其中,若当前NVMe SSD缓存模块中已经没有可分配的SSD块,则淘汰模块将从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出可被重新分配的SSD块。
2.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述淘汰算法具体为ARC淘汰算法。
3.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述NVMeSSD缓存模块(16)具体为由主用NVMe SSD和备用NVMe SSD构成的Raid1磁盘阵列。
4.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述步骤S2中初始化缓存池的具体过程为:
S21、将Raid1磁盘阵列从逻辑上按照预设容量大小切分为多个SSD块,并在第一个SSD块的第一个扇区写入标记信息和该SSD缓存设备的详细信息,包括:Raid1磁盘阵列的总大小、块大小以及块数目;
S22、从第一个SSD块的4096字节偏移开始,根据Raid1磁盘阵列设备的大小初始化位图,每个SSD块对应一个bit位,并设置位图空间占用的SSD块对应的bit位为1,其他未使用的SSD块的bit位为0。
5.根据权利要求4所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述预设容量具体为1MB。
6.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述步骤S5中后台刷写线程具体为多条用于同步缓存池数据到块存储的数据读写线程,所述后台刷写线程的具体工作过程为:
有数据写入时,标记对应数据片段的dirty位为1,然后根据每条数据同步线程当前的负载情况选择一条合适的数据同步线程,将包含该数据片段的SSD块相关信息加入到该条数据同步线程的数据同步队列中,后续这条数据同步线程处理到该SSD块时,会将其中所有需要同步的数据片段的数据都同步到块存储中;
当SSD块中所有数据片段中的数据都同步到块存储中后,将每个数据片段的dirty位标记为0。
7.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述步骤S5具体包括以下步骤:
S51、根据待写入IO数据的偏移和长度,从对应LUN的SSD块集合中查询对应该IO数据的数据片段,若查询到,则执行步骤S52,若未查询到,则执行步骤S55;
S52、判断IO数据是否大于穿透阈值,若判断为是,则执行步骤S53,否则执行步骤S54;
S53、读取SSD块中缓存的数据片段,并与当前的IO数据合并,之后将合并后的IO数据写入块存储中,最后更新SSD块缓存的数据,将该SSD块中原先缓存的被合并数据片段的dirty位标记为0;
S54、直接更新SSD块缓存的数据,将SSD块中对应数据片段的dirty位标记为1,之后将该SSD块加入同步线程的数据同步队列中;
S55、判断IO数据是否大于穿透阈值,若判断为是,则直接将该IO数据写入块存储中,否则执行步骤S56;
S56、SSD块管理模块向缓存池分配模块申请新的SSD块,缓存池分配模块从NVMe SSD缓存模块中查找是否有可分配的SSD块,若未查找到,则执行步骤S57,若查找到有,则执行步骤S58;
S57、淘汰模块从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出读写热度低于预设阈值的SSD块,并由缓存池分配模块进行回收,以将淘汰筛选出的SSD块重新放入NVMe SSD缓存模块中,之后执行步骤S58;
S58、缓存池分配模块分配一个新的SSD块给LUN,将IO数据写入该新的SSD块中,并标记相应数据片段的dirty位为1,之后将该新的SSD块加入同步线程的数据同步队列中。
8.根据权利要求1所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述步骤S6具体包括以下步骤:
S61、根据待读取IO数据的偏移和长度,从对应LUN的SSD块集合中查询对应该IO数据的数据片段,若查询到,则执行步骤S62,若未查询到,则执行步骤S65;
S62、判断SSD块中缓存的数据是否能够填满当前的IO请求,若判断为是,则直接从SSD块中读取数据,否则执行步骤S63;
S63、将SSD块中未缓存的数据从块存储中读取出来,之后更新SSD块,并将读取的数据填充到读IO的内存中;
S64、更新SSD块的读写热度;
S65、从块存储中读取数据,并将读取的数据填充到读IO的内存中,同时SSD块管理模块向缓存池分配模块申请一个新的SSD块,将读取的数据缓存一份到该新申请的SSD块,之后更新该LUN的SSD块集合,并调整SSD块的读写热度。
9.根据权利要求8所述的一种基于NVMe SSD的块存储缓存方法,其特征在于,所述步骤S65中SSD块管理模块向缓存池分配模块申请一个新的SSD块具体包括以下步骤:
S651、SSD块管理模块向缓存池分配模块申请新的SSD块,缓存池分配模块从NVMe SSD缓存模块中查找是否有可分配的SSD块,若未查找到,则执行步骤S652,若查找到有,则执行步骤S653;
S652、淘汰模块从当前占用SSD块数量最多的LUN的SSD块集合中淘汰筛选出读写热度低于预设阈值的SSD块,并由缓存池分配模块进行回收,以将淘汰筛选出的SSD块重新放入NVMe SSD缓存模块中,之后执行步骤S653;
S653、缓存池分配模块分配一个新的SSD块给LUN。
CN202011010192.6A 2020-09-23 2020-09-23 一种基于NVMe SSD的块存储缓存***及其方法 Active CN112148225B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011010192.6A CN112148225B (zh) 2020-09-23 2020-09-23 一种基于NVMe SSD的块存储缓存***及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011010192.6A CN112148225B (zh) 2020-09-23 2020-09-23 一种基于NVMe SSD的块存储缓存***及其方法

Publications (2)

Publication Number Publication Date
CN112148225A CN112148225A (zh) 2020-12-29
CN112148225B true CN112148225B (zh) 2023-04-25

Family

ID=73896166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011010192.6A Active CN112148225B (zh) 2020-09-23 2020-09-23 一种基于NVMe SSD的块存储缓存***及其方法

Country Status (1)

Country Link
CN (1) CN112148225B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559138A (zh) * 2013-10-09 2014-02-05 华为技术有限公司 固态硬盘及其空间管理方法
CN103631536A (zh) * 2013-11-26 2014-03-12 华中科技大学 一种利用ssd的无效数据优化raid5/6写性能的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009391B2 (en) * 2010-10-25 2015-04-14 Fastor Systems, Inc. Solid state drive architecture
CN103038755B (zh) * 2011-08-04 2015-11-25 华为技术有限公司 多节点***中数据缓存的方法、装置及***
US20150095555A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Method of thin provisioning in a solid state disk array

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559138A (zh) * 2013-10-09 2014-02-05 华为技术有限公司 固态硬盘及其空间管理方法
CN103631536A (zh) * 2013-11-26 2014-03-12 华中科技大学 一种利用ssd的无效数据优化raid5/6写性能的方法

Also Published As

Publication number Publication date
CN112148225A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
US20230066084A1 (en) Distributed storage system
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
TWI710900B (zh) 儲存裝置及方法
US10203876B2 (en) Storage medium apparatus, method, and program for storing non-contiguous regions
US6988165B2 (en) System and method for intelligent write management of disk pages in cache checkpoint operations
JP2783748B2 (ja) 動的マップド・データ蓄積システムにおける補助記憶装置へのデータ転送のための方法および装置
US10884630B2 (en) Storage system
WO2017000658A1 (zh) 存储***、存储管理装置、存储器、混合存储装置及存储管理方法
EP2685384B1 (en) Elastic cache of redundant cache data
US8615640B2 (en) System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
JP5583227B1 (ja) 物理ブロック間でデータをコピーするディスクアレイ装置、ディスクアレイコントローラ及び方法
US20060010290A1 (en) Logical disk management method and apparatus
US20160253123A1 (en) NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
US20020144076A1 (en) Information processing system
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP2007041904A (ja) ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法
US7085907B2 (en) Dynamic reconfiguration of memory in a multi-cluster storage control unit
CN105988727B (zh) 一种基于raid的存储方法和存储装置
WO2014142337A1 (ja) ストレージ装置と方法及びプログラム
CN114600074A (zh) 块装置的构造
CN117453152B (zh) 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法
CN112148225B (zh) 一种基于NVMe SSD的块存储缓存***及其方法
US20210117320A1 (en) Construction of a block device
US10713163B2 (en) Set aware system data and mapping tables
JP2015052853A (ja) ストレージ制御装置、制御方法及びプログラム

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