CN113688099B - 基于spdk的数据库存储引擎加速方法及系统 - Google Patents
基于spdk的数据库存储引擎加速方法及系统 Download PDFInfo
- Publication number
- CN113688099B CN113688099B CN202110907700.9A CN202110907700A CN113688099B CN 113688099 B CN113688099 B CN 113688099B CN 202110907700 A CN202110907700 A CN 202110907700A CN 113688099 B CN113688099 B CN 113688099B
- Authority
- CN
- China
- Prior art keywords
- nvme ssd
- file
- space
- storage engine
- logic
- 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
- 230000001133 acceleration Effects 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000007246 mechanism Effects 0.000 claims abstract description 20
- 238000004806 packaging method and process Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 21
- 238000005192 partition Methods 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 230000007717 exclusion Effects 0.000 abstract description 10
- 230000008901 benefit Effects 0.000 abstract description 9
- 238000005538 encapsulation Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 57
- 238000013461 design Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
-
- 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/0643—Management of files
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于SPDK的数据库存储引擎加速方法及系统,属于数据库及存储技术领域,本发明要解决的技术问题为如何充分发挥存储引擎原有支持高吞吐的写优势,同时优化读业务调度机制减少不必要的互斥且提高读并发,并减少数据的随机访问,实现数据库存储引擎整体性能加速,采用的技术方案为:该方法如下:将NVMe SSD设备与SPDK的用户态驱动绑定;使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问。该系统包括绑定单元、格式化单元及封装单元。
Description
技术领域
本发明涉及数据库及存储技术领域,具体地说是一种基于SPDK的数据库存储引擎加速方法及系统。
背景技术
随着固态硬盘(SSD)技术的不断进步以及SSD盘价格的持续走低,因SSD在性能、可靠性、能耗等方面都具备明显优势,越来越多的企业在选择存储设备的时候将目光转向混闪或全闪存储,固态硬盘替代机械硬盘已成为大势所趋。在 NVMe SSD 介质上由于其多队列的并行设计,单线程模型已经无法发挥磁盘性能优势,系统中断、网卡中断等成为 CPU新的瓶颈点,原有的存储应用不能充分发挥出NVMe SSD多队列的并行处理能力;同时,NVMeSSD带来的低延迟读写访问使得应用处理任务调度、锁互斥等开销凸显。因此,工业界和学术界都在积极地探索针对NVMeSSD作后端存储场景优化存储软件应用系统的方案。
传统文件系统:文件系统是访问存储的一种常用方式,目前常用的文件系统都是针对磁盘的特性进行设计的。传统文件系统设计优化时虽然考虑SSD技术在后续存储中的应用,但更多要兼容适配现有的机械盘,使得传统文件系统无法充分发挥NVMe SSD性能。主要原因有两点:
①传统存储软件栈采用堆叠式模块化设计,面向机械盘时可体现出存储软件栈设计与实现的灵活性;但是面向高性能存储介质时,有些特定的优化策略如PageCache无法发挥优势,同时低延迟IO使得存储软件栈的长数据路径成为严重的性能瓶颈点;
②传统文件系统基于“存储是IO密集型应用”思想设计,且机械盘受限于结构本身无须考虑CPU多核处理,然而NVMe多队列IO处理技术恰恰需要多处理器的支持,因而锁竞争、跨核访问、CPU调度不及时等成为新的瓶颈点。
当然,不少系统考虑成本、兼容性及稳定性等因素,仍选择采用传统文件系统来使用NVMe SSD设备。
SPDK助力存储加速:SPDK ( Storage performance development kit ) 是由Intel 发起,用于使用 NVMe SSD 作为后端存储的应用软件加速库。该软件库的核心是实现了用户态、异步、无锁、轮询方式的 NVMe 驱动,是目前NVMe SSD特性化开发领域认可度比较高的组件之一。SPDK目前的的应用场景主要是针对块存储,不少企业及个人也在探索将SPDK用于文件存储、数据库等。分析现有文献发现,目前已知的SPDK在数据库存储引擎及相关方向上的应用,多采用直接将SPDK的用户态文件系统及用户态NVMe SSD驱动嵌入到系统中的方式。如此设计,虽然可以利用SPDK的用户态、无锁、轮询等特点,一定程度解决内核上下文切换、中断处理开销的性能瓶颈问题,带来性能的提升。
然而,SPDK的用户态文件系统也是面向通用文件系统设计,对复杂读写场景下的处理调度作了权衡。因此,针对LSM-Tree结构类型的存储引擎,如果只是直接套用SPDK的用户态文件系统及用户态NVMe SSD驱动,无法达到预期的性能提升效果;某些特定的负载场景如随机读压力测试下反而表现不如内核态文件系统。
NVMe技术的成熟使得NVMe SSD设备成本大大降低,全闪存储已成发展趋势,存储引擎需要针对NVMe特性进行架构升级优化;多核CPU、硬件提速等技术的发展,使得锁竞争、内核上下文切换、线程跨核访问等开销的系统整体占比提高,软件瓶颈凸显;同时云数据仓库复杂场景对资源的极致利用提出更高要求。故如何充分发挥存储引擎原有支持高吞吐的写优势,同时优化读业务调度机制减少不必要的互斥且提高读并发,并减少数据的随机访问,实现数据库存储引擎整体性能加速是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种基于SPDK的数据库存储引擎加速方法及系统,来解决如何充分发挥存储引擎原有支持高吞吐的写优势,同时优化读业务调度机制减少不必要的互斥且提高读并发,并减少数据的随机访问,实现数据库存储引擎整体性能加速的问题。
本发明的技术任务是按以下方式实现的,一种基于SPDK的数据库存储引擎加速方法,该方法如下:
将NVMe SSD设备与SPDK的用户态驱动绑定;
使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问。
作为优选,所述用户态文件系统具体如下:
NVMe SSD设备空间逻辑区分管理:将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理;
增加文件预分配空间管理机制:根据存储引擎文件大小配置参数对逻辑NVMe SSD设备分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口,移除不必要的互斥锁,提高读并发。
作为优选,NVMe SSD设备空间逻辑区分管理具体如下:
将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMeSSD盘的与物理NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
逻辑NVMe SSD盘空间默认初始化创建512M(最小容量),支持自动扩缩容及重建;
物理NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;
将逻辑NVMe SSD盘空间管理增加文件空间预分配机制。
更优地,逻辑NVMe SSD盘创建时即划分为固定大小的多个文件空间进行管理,元数据管理区记录逻辑NVMe SSD盘空间使用信息,逻辑NVMe SSD盘空间使用信息包括文件空间占用与否;
逻辑NVMe SSD盘预分配机制设置开关,文件空间大小可配,开启预分配机制的逻辑NVMe SSDp盘内所有文件空间大小一致;
逻辑NVMe SSD设备还包括文件空间,文件空间固定大小为4M或32M。
作为优选,根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口具体如下:
用户态文件系统收到的读类型请求,不再需要路由给哨兵调度线程,而是采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
文件读取操作时的自旋锁可移除;
为了保证读取业务的有效性,在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
增加文件状态标记,及时捕捉文件异常,避免错误放大。
一种基于SPDK的数据库存储引擎加速系统,该系统包括,
绑定单元,用于将NVMe SSD设备与SPDK的用户态驱动绑定;
格式化单元,用于使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
封装单元,用于封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问。
作为优选,所述用户态文件系统包括,
划分单元,用于将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理;
预分配单元,用于根据存储引擎文件大小配置参数对逻辑NVMe SSD设备分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
一写多读单元,用于根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口,移除不必要的互斥锁,提高读并发。
更优地,所述划分单元包括,
划分模块,用于将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
记录模块,用于将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMe SSD盘的与物理NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
创建模块,用于逻辑NVMe SSD盘空间默认初始化创建512M(最小容量),支持自动扩缩容及重建;
修改模块,用于通过物理NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
管理模块,用于将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;其中,将逻辑NVMe SSD盘空间管理增加文件空间预分配机制。
更优地,所述一写多读单元包括,
访问模块,用于用户态文件系统收到的读类型请求,不再需要路由给哨兵调度线程,而是采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
移除模块,用于文件读取操作时的自旋锁可移除;
读取模块,用于保证读取业务的有效性,在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
计数模块,用于在文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
捕捉模块,用于增加文件状态标记,及时捕捉文件异常,避免错误放大。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的基于SPDK的数据库存储引擎加速方法。
本发明的基于SPDK的数据库存储引擎加速方法及系统具有以下优点:
(一)本发明基于SPDK的NVMe设备用户态驱动、结合LSM-Tree(Log-StructuredMerged-Tree,日志结构合并树)类型存储引擎特点对SPDK用户态文件系统进行优化改造,实现数据库存储引擎加速;
(二)本发明通过结合LSM-Tree结构特点对文件系统的多IO调度、分区管理等适配性改造进一步提升了SPDK的用户态文件系统与数据库存储引擎的契合度,缩短存储引擎的数据通路关键路径、减少中断和锁互斥等开销,充分发挥NVMe存储设备的高带宽优势,实现数据库存储引擎加速;
(三)本发明的目的在于适配存储引擎LSM-Tree结构特性对SPDK的用户态文件系统进行改造,不仅充分发挥存储引擎原有支持高吞吐的写优势,也优化读业务调度机制减少不必要的互斥且提高读并发、改进数据空间管理格式减少数据的随机访问,实现数据库存储引擎整体性能加速;
(四)本发明提出使用用户态文件系统及用户态NVMe设备驱动,缩短了数据IO关键路径,减少了上下文切换以及内存拷贝引起的性能损耗,降低读写请求延迟,且用户态方便系统应用的调试分析;
(五)本发明提出将SPDK用户态文件系统设备空间管理模块进行分区管理,划分多个逻辑NVMe SSD设备来管理不同特定的数据文件,更好地实现数据资源隔离,减少空间碎片化;逻辑NVMe SSD设备间文件管理互不干扰,提高文件事务类操作的并发度;分区管理将文件元数据分散存储,单个分区损坏不影响整个存储设备的正常使用,提高设备的稳定性保证数据安全;
(六)本发明提出将部分逻辑NVMe SSD设备执行文件空间预分配,增加文件数据空间的连续性从而提高读写访问速度;减少设备空间的碎片化;空间预分配也可以提高新文件创建并写入时的效率。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于SPDK的数据库存储引擎加速方法的流程框图;
附图2为虚拟NVMe设备空间管理结构示意图;
附图3为逻辑NVMe SSD盘文件空间预分配机制的示意图;
附图4为结合SST一写多读特性改造的IO并发调度架构实现示意图;
附图5为存储引擎测试多线程随机读性能对比图。
图4中:thread表示存储引擎投递数据业务的线程,投递业务类型包括文件的read(读)、write(写)、open(打开)、create(创建)、delete(删除)、rename(重命名)等;
Event表示环形队列缓存内记录的待处理事件,有调度器轮询处理;
io_channel表示设备IO处理通道,与线程绑定,不同线程不可处理同一个io_channel。
具体实施方式
参照说明书附图和具体实施例对本发明的基于SPDK的数据库存储引擎加速方法及系统作以下详细地说明。
实施例1:
如附图1所示,本发明的基于SPDK的数据库存储引擎加速方法,该方法如下:
S1、将NVMe SSD设备与SPDK的用户态驱动绑定;
S2、使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
S3、封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问。
用户态文件系统及用户态驱动访问NVMe SSD设备,可降低数据IO调度栈深度、避免系统调度带来的上下文切换及用户态内核态切换开销,节省约50%的IO调度延迟时间,数据IO的理论调度延迟仅10us。
本实施例中步骤S3的用户态文件系统具体如下:
S301、NVMe SSD设备空间逻辑区分管理:将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理,充分区分不同类型、不同层级文件的读写创删特点,提高热点数据在设备上的聚合度;同时不同逻辑NVMe SSD设备区间可并发处理文件创删,降低文件并发创建或删除时的互斥干扰;每个逻辑NVMe SSD设备空间独立管理,互不干扰,提高设备可靠性。
LSM-Tree结构类型的存储引擎所处理的文件类型主要为两种:WAL(WriteAheadLog)文件及SST文件。前者主要的功能是应用异常退出重启时,能够恢复出错前的内存中数据,该文件具有临时性,一般在内存数据固化落盘后会被删除,因此该类文件数量有限且非异常无读请求。后者是核心存储文件,以多层级管理实现冷热数据分离,数据写入类型仅一次写入而无随机写和追加写,读访问存在顺序读和随机读的场景,由于Compaction任务的执行,SST文件存在大量创删操作;
:S302、增加文件预分配空间管理机制:根据存储引擎文件大小配置参数对逻辑NVMe SSD设备分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
S303、根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口,移除不必要的互斥锁,提高读并发。
如附图2所示,本实施例中步骤S301的NVMe SSD设备空间逻辑区分管理具体如下:
①、将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
②、将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMe SSD盘的与物理NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
③、逻辑NVMe SSD盘空间默认初始化创建512M(最小容量),支持自动扩缩容及重建;
④、物理NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
⑤、将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;不同逻辑分区管理各自的文件元数据信息,可提高设备的可靠性,避免设备局部元数据失效导致设备文件系统整个不可用的情况;
⑥、尽管逻辑NVMe SSD设备对应的物理空间可能不连续,但考虑空间管理单元大小可配,将逻辑NVMe SSD盘空间管理增加文件空间预分配机制,在一定程度上保证了文件数据的局部性,比整个物理NVMe SSD设备空间上分配文件数据空间,数据聚合度理论上要更高一些。
本实施例中的逻辑NVMe SSD盘创建时即划分为固定大小的多个文件空间进行管理,元数据管理区记录逻辑NVMe SSD盘空间使用信息,逻辑NVMe SSD盘空间使用信息包括文件空间占用与否;
逻辑NVMe SSD盘预分配机制设置开关,文件空间大小可配,开启预分配机制的逻辑NVMe SSDp盘内所有文件空间大小一致。
如附图3所示,逻辑NVMe SSD设备还包括文件空间,文件空间固定大小为4M或32M。
本实施例中步骤S303的根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口具体如下:
SPDK提供的用户态文件系统为通用性文件系统,为保证数据的一致性访问,其数据IO调度仅由哨兵调度线程收集请求并轮询处理,收集到的请求根据类型交由两个数据通道(io_channel)下发给设备。该调度模式虽然有效的保证了线程安全,但是由于所有的IO请求都需要路由给哨兵调度线程处理,并且请求处理是通过单一环形队列缓存逐个处理以保证顺序性。如此一来,不仅哨兵调度线程压力超载且互斥多生产者,而且局部请求的长尾延迟将拖慢后续更多IO任务。
本发明结合SST文件一写多读的特性,对文件系统IO调度层进行改造,如附图4所示。充分考虑到LSM-Tree类型结构的存储引擎操作SST文件,SST文件全部为一次写入而无追加写、覆盖写和随机写,并且存储引擎端可通过文件引用计数控制文件的打开、关闭和删除。
S30301、用户态文件系统收到的读类型请求,不再需要路由给哨兵调度线程,而是采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
S30302、文件读取操作时的自旋锁可移除;
S30303、为了保证读取业务的有效性,在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
S30304、文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
S30305、增加文件状态标记,及时捕捉文件异常,避免错误放大。
本发明提出将用户态文件系统的IO调度层读操作执行无锁化多任务通路设计,提高读业务的并发,充分发挥LSM-Tree存储结构特性,基于改进版本的用户态文件系统的LSM-Tree结构的存储引擎读性能可提升近8倍,如附图5所示。
实施例2:
本发明的基于SPDK的数据库存储引擎加速系统,该系统包括,
绑定单元,用于将NVMe SSD设备与SPDK的用户态驱动绑定;
格式化单元,用于使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
封装单元,用于封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问。
本实施例中的户态文件系统包括,
划分单元,用于将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理;
预分配单元,用于根据存储引擎文件大小配置参数对逻辑NVMe SSD设备分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
一写多读单元,用于根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口,移除不必要的互斥锁,提高读并发。
本实施例中的划分单元包括,
划分模块,用于将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
记录模块,用于将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMe SSD盘的与物理NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
创建模块,用于逻辑NVMe SSD盘空间默认初始化创建512M(最小容量),支持自动扩缩容及重建;
修改模块,用于通过物理NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
管理模块,用于将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;其中,将逻辑NVMe SSD盘空间管理增加文件空间预分配机制。
本实施例中的一写多读单元包括,
访问模块,用于用户态文件系统收到的读类型请求,不再需要路由给哨兵调度线程,而是采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
移除模块,用于文件读取操作时的自旋锁可移除;
读取模块,用于保证读取业务的有效性,在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
计数模块,用于在文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
捕捉模块,用于增加文件状态标记,及时捕捉文件异常,避免错误放大。
实施例3:
本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的基于SPDK的数据库存储引擎加速方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种基于SPDK的数据库存储引擎加速方法,其特征在于,该方法如下:
将NVMe SSD设备与SPDK的用户态驱动绑定;其中,SPDK用于使用 NVMe SSD 设备作为后端存储的应用软件加速库;
使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问;
其中,用户态文件系统具体如下:
NVMe SSD设备空间逻辑区分管理:将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理;具体如下:
将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMe SSD盘的与NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
逻辑NVMe SSD盘空间默认初始化创建512M,支持自动扩缩容及重建;
NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的逻辑NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;
将逻辑NVMe SSD盘空间管理增加文件空间预分配机制;
增加文件预分配空间管理机制:根据存储引擎文件大小配置参数对NVMe SSD设备逻辑分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口。
2.根据权利要求1所述的基于SPDK的数据库存储引擎加速方法,其特征在于,逻辑NVMeSSD盘创建时即划分为固定大小的多个文件空间进行管理,元数据管理区记录逻辑NVMeSSD盘空间使用信息,逻辑NVMe SSD盘空间使用信息包括文件空间占用与否;
逻辑NVMe SSD盘预分配机制设置开关,文件空间大小可配,开启预分配机制的逻辑NVMe SSD盘内所有文件空间大小一致;
NVMe SSD设备还包括文件空间,文件空间固定大小为4M或32M。
3.根据权利要求1所述的基于SPDK的数据库存储引擎加速方法,其特征在于,根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口具体如下:
用户态文件系统收到的读类型请求,采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
文件读取操作时的自旋锁可移除;
在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
增加文件状态标记,及时捕捉文件异常。
4.一种基于SPDK的数据库存储引擎加速系统,其特征在于,该系统包括,
绑定单元,用于将NVMe SSD设备与SPDK的用户态驱动绑定;其中,SPDK用于使用 NVMeSSD 设备作为后端存储的应用软件加速库;
格式化单元,用于使用用户态文件系统格盘工具对NVMe SSD设备进行格式化;
封装单元,用于封装存储引擎操作用户态文件系统的接口,并进行正常的存储访问;
其中,用户态文件系统包括,
划分单元,用于将NVMe SSD设备的物理空间划分为多个逻辑空间,每个逻辑空间视作一个NVMe SSD设备进行管理;
预分配单元,用于根据存储引擎文件大小配置参数对NVMe SSD设备逻辑分区进行文件空间预分配,且不同逻辑分区设置不同预分配空间大小;
一写多读单元,用于根据LSM-Tree结构的存储引擎操作SST文件一写多读的特性,增加读并发访问数据通路且采用无锁化多任务读接口;
划分单元包括,
划分模块,用于将NVMe SSD设备划分为多个空间管理单元,空间管理单元沿用SPDK的管理结构;
记录模块,用于将NVMe SSD设备的元数据管理区增加逻辑NVMe SSD盘管理区域,记录逻辑NVMe SSD盘的与NVMe SSD设备的空间映射关系及统计信息;其中,每个逻辑NVMe SSD盘独立管理各自存放的文件数据,逻辑NVMe SSD盘间互不干扰彼此的文件创删和数据写入;
创建模块,用于逻辑NVMe SSD盘空间默认初始化创建512M,支持自动扩缩容及重建;
修改模块,用于通过NVMe SSD设备的空间管理控制逻辑NVMe SSD盘的创建、删除及扩缩容的修改类操作的事务性;文件数据操作的事务的原子性由其对应的逻辑NVMe SSD盘进行管理,提高用户态文件系统对文件事务类操作的并发度;
管理模块,用于将存储引擎管理的WAL文件和SST文件存放在不同的逻辑NVMe SSD盘中,同时对不同层级SST文件放入不同逻辑NVMe SSD盘进行管理;其中,将逻辑NVMe SSD盘空间管理增加文件空间预分配机制。
5.根据权利要求4所述的基于SPDK的数据库存储引擎加速系统,其特征在于,所述一写多读单元包括,
访问模块,用于用户态文件系统收到的读类型请求,采用自己独立的数据通道执行数据访问处理,实现多线程并发数据访问处理;
移除模块,用于文件读取操作时的自旋锁可移除;
读取模块,用于保证读取业务的有效性,在存储引擎端保证所有读取请求均发生在确认完成写操作之后;
计数模块,用于在文件系统端增加文件访问计数,仅无访问者时才可进行delete或close操作;
捕捉模块,用于增加文件状态标记,及时捕捉文件异常。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如权利要求1至3中任一所述的基于SPDK的数据库存储引擎加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110907700.9A CN113688099B (zh) | 2021-08-09 | 2021-08-09 | 基于spdk的数据库存储引擎加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110907700.9A CN113688099B (zh) | 2021-08-09 | 2021-08-09 | 基于spdk的数据库存储引擎加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113688099A CN113688099A (zh) | 2021-11-23 |
CN113688099B true CN113688099B (zh) | 2023-10-13 |
Family
ID=78579430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110907700.9A Active CN113688099B (zh) | 2021-08-09 | 2021-08-09 | 基于spdk的数据库存储引擎加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688099B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200B (zh) * | 2021-12-01 | 2023-10-13 | 上海沄熹科技有限公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114721750A (zh) * | 2022-05-05 | 2022-07-08 | 山东浪潮科学研究院有限公司 | Pebble集成io_uring机制的方法与系统 |
CN118210456B (zh) * | 2024-05-21 | 2024-08-09 | 浪潮云信息技术股份公司 | 一种实现信创操作系统存储性能提升的方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
CN104639658A (zh) * | 2015-03-12 | 2015-05-20 | 浪潮集团有限公司 | 一种以文件系统挂载访问对象存储的实现方法 |
CN105787093A (zh) * | 2016-03-17 | 2016-07-20 | 清华大学 | 一种基于LSM-Tree结构的日志文件系统的构建方法 |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN109086388A (zh) * | 2018-07-26 | 2018-12-25 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN109213432A (zh) * | 2017-07-04 | 2019-01-15 | 华为技术有限公司 | 利用日志结构合并树将数据写入的存储设备及其方法 |
CN109683813A (zh) * | 2018-12-03 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种nvme ssd自动格式化方法、装置、终端及存储介质 |
CN111190548A (zh) * | 2019-12-30 | 2020-05-22 | 创新科技术有限公司 | 一种基于SPDK的ceph分布式存储性能提升方法、装置及设备 |
CN112347044A (zh) * | 2020-11-10 | 2021-02-09 | 北京赛思信安技术股份有限公司 | 一种基于spdk的对象存储优化方法 |
CN112667644A (zh) * | 2021-01-20 | 2021-04-16 | 浪潮云信息技术股份公司 | 一种混合索引内存数据库存储引擎管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10678768B2 (en) * | 2017-06-30 | 2020-06-09 | Intel Corporation | Logical band-based key-value storage structure |
-
2021
- 2021-08-09 CN CN202110907700.9A patent/CN113688099B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
CN104639658A (zh) * | 2015-03-12 | 2015-05-20 | 浪潮集团有限公司 | 一种以文件系统挂载访问对象存储的实现方法 |
CN105787093A (zh) * | 2016-03-17 | 2016-07-20 | 清华大学 | 一种基于LSM-Tree结构的日志文件系统的构建方法 |
CN109213432A (zh) * | 2017-07-04 | 2019-01-15 | 华为技术有限公司 | 利用日志结构合并树将数据写入的存储设备及其方法 |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
CN109086388A (zh) * | 2018-07-26 | 2018-12-25 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN109683813A (zh) * | 2018-12-03 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种nvme ssd自动格式化方法、装置、终端及存储介质 |
CN111190548A (zh) * | 2019-12-30 | 2020-05-22 | 创新科技术有限公司 | 一种基于SPDK的ceph分布式存储性能提升方法、装置及设备 |
CN112347044A (zh) * | 2020-11-10 | 2021-02-09 | 北京赛思信安技术股份有限公司 | 一种基于spdk的对象存储优化方法 |
CN112667644A (zh) * | 2021-01-20 | 2021-04-16 | 浪潮云信息技术股份公司 | 一种混合索引内存数据库存储引擎管理方法 |
Non-Patent Citations (1)
Title |
---|
面向日志结构化数据存储的高效数据加载;丁国浩等;《华东师范大学学报(自然科学版)》(第5期);第[143]-[158]页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113688099A (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113688099B (zh) | 基于spdk的数据库存储引擎加速方法及系统 | |
US9342252B2 (en) | Virtual disk manipulation operations | |
US7350017B2 (en) | Magnetic disk unit, file management system, and file management method | |
US20060136779A1 (en) | Object-based storage device with low process load and control method thereof | |
WO2012026034A1 (ja) | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 | |
US20180107601A1 (en) | Cache architecture and algorithms for hybrid object storage devices | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
CN109558457A (zh) | 一种数据写入方法、装置、设备及存储介质 | |
CN106469123A (zh) | 一种基于nvdimm的写缓存分配、释放方法及其装置 | |
CN114116665A (zh) | 数据库中并行写入事务日志以提升处理效率的方法 | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
KR20080105390A (ko) | 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치 | |
CN108733585B (zh) | 缓存系统及相关方法 | |
CN114138200A (zh) | 一种基于RocksDB的预写日志方法及系统 | |
US20060242182A1 (en) | System and method for stranded file opens during disk compression utility requests | |
JP6680069B2 (ja) | ストレージ制御装置、ストレージシステム及びストレージ装置制御プログラム | |
CN106469119A (zh) | 一种基于nvdimm的数据写缓存方法及其装置 | |
CN107220069B (zh) | 一种针对非易失性内存的Shuffle方法 | |
EP3293625B1 (en) | Method and device for accessing file, and storage system | |
US11023493B2 (en) | Intelligently scheduling resynchronization jobs in a distributed object-based storage system | |
US20070061530A1 (en) | Method for storage of digital data in a mainframe data center and associated device | |
CN115756726A (zh) | 一种应用于云平台的容器本地存储智能调度与分配方法 | |
CN116820333B (zh) | 一种基于多线程的ssdraid-5持续写入方法 | |
CN114371815B (zh) | 一种数据存储方法、装置及系统 | |
KR102226538B1 (ko) | 파일 시스템 단편화 제거 방법, 이를 수행하기 위한 기록매체 및 장치 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221213 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park Applicant before: Inspur cloud Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |