CN114579529B - 一种基于重定向和日志混合的本地存储方法及系统 - Google Patents
一种基于重定向和日志混合的本地存储方法及系统 Download PDFInfo
- Publication number
- CN114579529B CN114579529B CN202210492517.1A CN202210492517A CN114579529B CN 114579529 B CN114579529 B CN 114579529B CN 202210492517 A CN202210492517 A CN 202210492517A CN 114579529 B CN114579529 B CN 114579529B
- Authority
- CN
- China
- Prior art keywords
- data
- local
- log
- writing
- write
- 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
Images
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/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
- 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/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (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)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种基于重定向和日志混合的本地存储方法及系统,该方法包括三个场景:1)初次写或数据块单元对齐覆盖写场景,数据异步写存储设备数据盘,写完返回后将元数据封装成本地日志的一个条目,然后分片异步写本地日志,日志落盘成功后同步到KV数据库的内存缓存,然后将写操作的响应返回给上层;2)非数据块单元对齐覆盖写场景,先将数据和元数据封装成本地日志的一个条目,然后分片写本地日志,写完本地日志后再写内存缓存,然后写操作即可返回;3)混合场景,先写数据块单元对齐部分的数据,然后写元数据和非数据块单元对齐部分的数据到本地日志,然后返回写操作的响应,再将非数据块单元对齐覆盖写部分的数据写入存储设备数据盘。
Description
技术领域
本发明涉及分布式存储领域,特别是一种基于重定向和日志混合的本地存储方法及系统。
背景技术
分布式存储写本地事务的时候,需要保证本地事务的原子性,本地事务的原子性表示一个事务要么完整执行,要么不执行,这意味着,事务的各项任务都必须正确执行,如果有一任务执行失败,则整个事务会被终止,且此前对事务所做的修改不生效,如果事务所有的修改都被执行成功,则整个事务完成,且该事务对数据所做的修改是永久性的,覆盖写一般通过重定向写或写前日志的方式来保证,目前主流做法主要有两种:
(1)Ceph(一种分布式存储架构)中FileStore(一种本地存储引擎)的做法,所有本地事务都先写本地日志,写完本地日志后即可给上层返回本地事务完成,然后再把数据写到数据盘上,当掉电后,FileStore会从本地日志中读取数据进行回放操作,从而还原掉电前的状态,如图1所示,主要包括以下步骤:1)FileStore引入本地日志,所有写事务在写本地数据盘之前,先写本地日志,且所有写事务在写完本地日志后都会返回;2)FileStore写本地事务完成后,该事务会被塞到FileStore的操作队列,然后多线程从该队列中取操作并写入数据盘;3)FileStore将写事务写到数据盘后,对应的本地日志可以删除这部分数据;4)当FileStore发生异常崩溃时,通过回放本地日志,可以恢复到崩溃前的状态,该方案将所有写事务都需要先写本地日志,会带来一倍的写放大,虽然保证了原子性,但在性能上会有负面影响。
(2)Ceph中BlueStore(一种本地存储引擎)的做法:采用直接管理裸盘,并使用重定向写的方式来解决写事务的原子性问题,写入的数据如果与最小分配单元大小对齐,则使用ROW(redirect on write,写时重定向)的方式,将数据写到新的地址空间,然后更改元数据索引,并回收原先占用的空间,元数据更新的原子性由KV数据库(一种数据库)的事务特性进行保障,对于非最小分配单元对齐的区域,则使用RMW(read modify write,读改写)的方式进行原地覆盖写,先读取非块大小对齐区域所在块,然后利用KV数据库来实现日志功能,将覆盖写的数据记到KV数据库中,完成以后再将数据覆盖写入到实际的数据区域,落盘成功以后再删除日志中的记录,如图2所示,具体包括以下步骤:1)BlueStore对于写事务如果是新写或最小分配单元对齐的覆盖写,则先新分配空间写本地事务数据,写完数据后再提交元数据kv(即键值)到KV数据库;2)BlueStore对于写事务如果是非最小分配单元对齐的覆盖写,则先将覆盖写的数据和元数据kv提交到KV数据库,然后io(即写操作)返回给上层,并将这部分覆盖写的事务放到defer队列(即小块写队列);3)Deferred_finisher线程(即小块写处理线程)从defer队列中取出覆盖写的事务,写到数据盘上,然后再去删除KV数据库中记录的覆盖写事务的数据;4)当BlueStore发生异常崩溃时,对于新写或最小分配单元对齐的覆盖写的数据,依赖于元数据kv写KV数据库是否成功来保证原子性,如果元数据kv写成功则通过元数据kv能索引到重定向写的数据,如果元数据kv写失败则通过之前的元数据kv能索引到之前这块数据所在的区域;5)当BlueStore发生异常崩溃时,对于非最小分配单元对齐的覆盖写的数据,依赖于这部分数据写KV数据库是否成功来保证原子性,如果这部分覆盖写的数据写KV数据库成功,则通过defer事务回放来恢复掉电前的状态;如果这部分数据写KV数据库失败,则通过之前的元数据kv能索引到之前这块数据所在的区域。该方案采用重定向和写KV数据库结合来保证原子性,但写KV数据库的过程中,KV数据库的Wal(Write Ahead Log,写前日志)只支持单线程追加写,对于有大量非最小分配单元对齐的覆盖写的场景,会在写Wal上存在明显的性能瓶颈。另外,该部分覆盖写的数据写到KV数据库,再将该部分数据写到数据盘上后,还要从KV数据库中去删除该数据,既增加了写DB的io次数,同时这样也给KV数据库后期压缩也带来了更大的压力。
现有技术中,专利文献(CN111966295A)公开了一种基于ceph的多journal(即日志)记录方法,其中预先为每个shard队列建立对应的journal队列和journal文件,每个journal文件有其对应的文件标识,当目标shard(即分片)队列中生成新的journal数据时,将journal数据插入到目标journal队列,根据目标journal队列所对应的文件标识确定出相对应的目标journal文件,将journal数据存储至目标journal文件中,通过对每个shard队列建立对应的journal队列和journal文件,无需额外调用写线程,减少了IO栈中的线程切换带来的性能损耗,同时实现了OSD(即分布式存储设备)中shard队列的joural数据的并行处理。该方案为每个shard队列建立对应的journal队列和journal文件,主要存在的缺点有:(1)该方案把journal的数据放到journal队列后,需要线程从journal队列中取出来写journal文件,这里在性能上会有一次入队出队的开销,还有线程切换的开销;(2)该方案依赖于journal文件,这就会依赖于不同的文件系统和文件格式;(3)该方案和cephfilestore一样将所有的写io都先写journal,会造成一倍的写放大。
发明内容
为了解决现有技术中为了保证本地事务的原子性,会对存储系统的性能造成很大影响的技术问题,本发明提出一种基于重定向和日志混合的本地存储方法及系统。
为此,本发明提出的基于重定向和日志混合的本地存储方法具体包括如下步骤:
S1、当收到一个数据写入请求后,通过元数据信息查找请求数据在存储设备数据盘对应的位置信息;
S2、根据位置信息判断是否为初次写或是数据块单元对齐的覆盖写,如果判断结果为是,进入步骤S3,否则进入步骤S4;
S3、数据部分采用重定向写:首先在存储设备数据盘上重新分配一块物理空间,然后把数据写入该物理空间,进入步骤S6;
S4、根据位置信息判断是否为非数据块单元对齐的覆盖写,如果判断结果为是,进入步骤S5,否则进入步骤S6;
S5、将覆盖写数据和元数据一起打包写入本地日志,进入步骤S7;
S6、把元数据打包写本地日志,进入步骤S7;
S7、写完本地日志后写KV数据库的内存缓存,然后将写操作的响应返回给上层,如果存在非数据块单元对齐的覆盖写,则提交这部分覆盖写数据到存储设备数据盘;
S8、当KV数据库的内存缓存持久化时,将元数据写到本地日志里面的条目进行删除标记。
进一步地,所述基于重定向和日志混合的本地存储方法除包括初次写或数据块单元对齐覆盖写场景和非数据块单元对齐覆盖写场景外,还包括混合场景。
进一步地,在所述初次写或数据块单元对齐覆盖写场景下,S3具体包括如下步骤:
S11、申请一个新的定长块空间,将数据通过重定向写操作落盘,如果是数据块单元对齐覆盖写,则在KV数据库中记录待回收的空间,用于后续将这部分空间进行回收;
S12、将元数据打包成本地日志的一个条目,异步提交本地日志;
S13、将元数据写内存缓存,然后将回调放入队列让写操作返回;
S14、当KV数据库的内存缓存持久化时,将元数据写到本地日志里面的条目进行删除标记。
进一步地,在所述非数据块单元对齐覆盖写场景下,S5具体包括如下步骤:
S21、将覆盖写的数据和元数据封装成本地日志的一个条目,通过异步写操作落盘;
S22、异步写操作成功后,将元数据同步到内存缓存,把回调放入队列让写操作返回,然后再将数据异步提交;
S23、然后再将覆盖写数据异步提交,后台线程读取内存中的覆盖写数据,并写入所述数据写入请求对应的存储设备数据盘磁盘区域。
本发明提出的本地存储系统具体包括数据存储介质和中央处理器,所述数据存储介质存储有计算机程序,所述数据存储介质包括存储设备加速盘和存储设备数据盘,所述存储设备加速盘存储有本地日志,所述存储设备数据盘存储有磁盘数据,所述中央处理器通过执行所述计算机程序能够实现上述基于重定向和日志混合的本地存储方法。
进一步地,所述本地日志包括多个分片结构,每个片分区空间独立管理,包括一个表头结构和多个条目结构,所述表头结构用于管理相应分片本地日志的空间,所述条目结构是本地日志的条目。
进一步地,在本地日志即将写满或本地存储进程正常退出的时候触发本地日志的主动删除。
进一步地,KV数据库刷新内存缓存时触发本地日志的被动删除。
进一步地,当所述本地存储系统掉电重启后,通过回放本地日志,来重做掉电前的事务,将事务中的元数据写入kv数据库,将数据写入磁盘,保证事务的原子性。
本发明提出的计算机可读存储介质存储有可被中央处理器运行的计算机程序,所述中央处理器通过运行所述计算机程序能够实现上述基于重定向和日志混合的本地存储方法。
相对于现有技术,本发明具有如下有益效果:
1)将磁盘空间分配重定向和日志结合来保证本地存储中事务的原子性;
2)数据块单元对齐的覆盖写数据采用磁盘重定向来保证事务的原子性,这样能减少写本地日志带来的写放大,同时本地日志空间采用循环覆盖写,这样的大块写数据不写本地日志,也能节省本地日志空间;
3)非数据块单元对齐的覆盖写数据写到本地日志,减小了频繁使用磁盘空间分配重定向带来的磁盘剩余空间碎片化问题;
4)对于覆盖写的数据,只记录到本地日志,不会像BlueStore先写入KV数据库中后面又删除,减小了KV数据库的元数据写入压力和后续压缩压力。
在本发明的一些实施例中,还具有如下有益效果:
1)数据块单元对齐的覆盖写数据采用磁盘重定向方式,将数据写到新的地址空间,然后更改元数据索引,并回收原先占用的空间,元数据更新的原子性由本地日志的事务特性进行保障;
2)非数据块单元对齐的覆盖写数据使用读改写的方式进行原地覆盖写,先读取非块大小对齐区域所在块,然后利用本地日志来实现日志功能,将覆盖写的数据记到本地日志中,完成以后再将数据覆盖写入到实际的数据区域;
3)本地日志支持分片进行多线程并发写,和BlueStore相比提高了元数据的并发写入性能;
4)当本地存储系统掉电重启后,通过本地日志的表头结构获取有效的日志条目信息,然后回放本地日志中的元数据和覆盖写数据来保证事务的原子性。
附图说明
图1是现有技术中FileStore的本地存储过程示意图;
图2是现有技术中BlueStore的本地存储过程示意图;
图3是本发明实施例本地存储方法的处理流程图;
图4是本发明实施例初次写或chunsize对齐覆盖写场景下的处理流程图;
图5是本发明实施例非chunksize对齐覆盖写场景下的处理流程图;
图6是本发明实施例混合场景下的处理流程图;
图7是本发明实施例本地日志的结构示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
如图3所示,本发明实施例提出的基于重定向和日志混合的本地存储方法具体包括如下步骤:
S1、当收到一个数据写入请求后,通过元数据信息查找该请求数据在存储设备数据盘对应的位置信息。
S2、根据位置信息判断是否为初次写或是数据块单元对齐的覆盖写,初次写指的是本次事务写的数据区域之前没写过,数据块单元对齐的覆盖写指的是本次事务写的区域之前写过但是这段区域是数据块单元对齐的,如果判断结果为是,进入步骤S3,否则进入步骤S4。
S3、数据部分采用重定向写,具体地,数据异步写块设备,如果是数据块单元对齐覆盖写,则在KV数据库中记录待回收的空间,用于后续将这部分空间进行回收,进入步骤S6。
S4、根据位置信息判断是否为非数据块单元对齐的覆盖写,非数据块单元对齐的覆盖写指的是本次事务写的区域之前写过,且这段区域是非数据块单元对齐的,如果判断结果为是,进入步骤S5,否则进入步骤S6。
S5、该部分覆盖写数据和元数据一起打包写入本地日志,本地日志支持配置分片并发写,具体地,先将数据和元数据封装成本地日志的一个条目,然后分片写本地日志,进入步骤S7。
S6、把元数据打包写本地日志,具体地,写完返回后将元数据封装成本地日志的一个条目,然后分片异步写本地日志,进入步骤S7。
S7、写完本地日志后写KV数据库内存缓存,然后将写操作的响应(io)返回给上层,如果存在非数据块单元对齐的覆盖写,则提交这部分覆盖写数据到存储设备数据盘。
S8、当KV数据库内存缓存持久化时,将元数据写到本地日志里面的条目进行删除标记。
基于重定向和日志混合的本地存储方法除包括初次写或数据块单元对齐覆盖写场景和非数据块单元对齐覆盖写场景外,还包括混合场景。
在初次写或数据块单元对齐覆盖写场景下,数据异步写存储设备数据盘,写完返回后将元数据封装成本地日志的一个条目,然后分片异步写本地日志到存储设备加速盘,日志落盘成功后同步到KV数据库内存缓存,然后将io返回给上层,如图4所示,S3具体包括:S11、OSD::osd_op_tp线程将数据异步提交aio落盘,OSD::osd_op_tp线程分片并发,在块设备上会申请一个新的定长块空间,将数据通过重定向写操作落盘,如果是数据块单元对齐覆盖写,则在KV数据库中记录待回收的空间 ,用于后续将这部分空间进行回收;S12、ASCache::as_finish线程回调回来,将元数据打包成本地日志的一个条目,异步提交本地日志;S13、KernelDevice::aio_thread线程回调回来,将元数据写入内存缓存,然后将回调放入队列让io返回;S14、当KV数据库内存缓存持久化时,KV数据库::bg0线程将元数据写到本地日志里面的条目进行删除标记,这样来删除日志。
在非数据块单元对齐覆盖写场景下,先将数据和元数据封装成本地日志的一个条目,然后分片写本地日志到存储设备加速盘,写完本地日志后再写内存缓存,然后提交数据异步落盘,如图5所示,S5具体包括:S21、OSD::osd_op_tp线程将覆盖写的数据和元数据封装成本地日志的一个条目, aio(即异步写操作)落盘;S22、KernelDevice::aio_thread线程回调回来,将元数据提交到内存缓存进行同步,把回调放入队列让io(即写操作)返回,然后再将覆盖写数据异步提交到存储设备数据盘;S23、ASCache::as_finish线程做整个io的收尾工作;S24、当KV数据库内存缓存持久化时,KV数据库::bg0线程将元数据写到本地日志里面的条目进行删除标记,这样来删除日志。
在混合场景下,先写数据块单元对齐部分的数据到存储设备数据盘,然后写元数据和非数据块单元对齐部分的数据到本地日志,然后io(写操作的响应)即可返回,再将非数据块单元对齐覆盖写部分的数据写入存储设备数据盘,如图6所示,具体包括:S31、OSD::osd_op_tp线程进行数据块单元对齐部分的数据aio(即异步写操作)提交,OSD::osd_op_tp线程分片并发;S32、ASCache::as_finish线程将元数据和非数据块单元对齐的覆盖写数据一起打包成本地日志的一个条目,异步提交到本地日志盘,元数据同步到数据库内存缓存后,写请求再返回(然后io即可返回);S33、然后KernelDevice::aio_thread线程再将非数据块单元对齐的覆盖写数据异步提交到存储设备数据盘;S34、当KV数据库内存缓存持久化时,KV数据库::bg0线程将元数据写到本地日志里面的条目进行删除标记,这样来删除日志。
本发明实施例提出一种本地存储系统,系统包括数据存储介质和中央处理器,数据存储介质存储有计算机程序,数据存储介质包括存储设备加速盘和存储设备数据盘,存储设备加速盘存储有本地日志,存储设备数据盘存储有磁盘数据和计算机程序,中央处理器通过执行计算机程序能够实现上述基于重定向和日志混合的本地存储方法。
对于本地日志进行详细说明。如图7所示,将一个osd的加速盘日志分区根据osd的片数量进行逻辑划分,每个片分区空间独立管理,包括一个header(即表头)结构和多个entry(即条目)结构,header结构用于管理相应分片本地日志的空间,比如日志的大小,有效日志项的起始偏移,entry结构是本地日志的条目,每个条目大小按block size对齐,包含日志项头部和日志数据两部分,其中日志项头部记录本地日志的seq、各项日志数据的长度以及crc信息,日志数据包含对象元数据,可能包含bkey元数据和覆盖写数据。
日志删除是指日志成功应用完成,相应的日志数据已经确保写入磁盘后,那么这部分日志就可以删除,释放相应的日志空间。本发明中本地日志采用追加写入的方式进行,在本地日志前面的entry里面数据已经安全持久化的情况下,要对该entry进行删除标记,将删除标记的信息记录到该本地日志的header中,这样在本地日志回放的时候就不会回放该entry,这样既能达到删除的效果,同时又能减少一次删除的io。本地日志的删除分为主动删除和被动删除两种机制,主动删除机制用作在本地日志即将写满或本地存储进程正常退出的时候触发,具体地,如果当前条目写入后本地日志的实际容量大于了本地日志设置的容量时,就需要主动触发删除本地日志来释放一部分空间,供后续本地日志条目写入,另外,当本地存储进程安全退出的情况下,也对本地日志进行主动触发删除,这样在后面本地存储进程拉起的时候,就不用回放本地日志,被动删除用作KV数据库这边刷新内存缓存的时候触发,具体地,在每次写本地日志和KV数据库内存缓存的时候,增加写入一个key来记录该事务写入本地日志条目的seq,key的value里面记录着该条目的分片id号,后面当KV数据库中内存缓存进行刷新时,当key为本地日志标记的类型key时,就根据value获得要被删除的本地日志条目seq,再根据本地日志条目seq去更新对应的本地日志 header信息,完成本地日志删除标记,这种本地日志类型标记的key在刷新内存缓存的时候,不添加到KV数据库的文件构建里面,这样下刷的时候过滤掉这种key,后续不用从数据库中去删除,不会影响压缩效率。
日志回放的过程主要是通过回放本地日志,来重做掉电前的事务,将事务中的元数据写入kv数据库,将数据写入磁盘,保证事务的原子性。当本地存储进程在掉电前写到本地日志的一些事务的元数据和覆盖写的数据,通过本地日志的header信息能获取到有效的条目信息,然后通过日志回放将日志里面的元数据kv写到KV数据库,将覆盖写的数据写到存储设备数据盘,这样在掉电起来后进一步完成这些事务。具体地,本地日志回放时采用两次回放的方案,各层初始化顺序如下:1)cache层(即缓存层)先初始化;2)若有cache,日志第一次回放,只回放bkey,使cache层将bkey插入到btree;3)初始化数据库,完成后数据库可以正常工作;4)日志里面除了bkey外的别的entry进行回放;5)在store层(即存储层)还原内存的cache和KV数据库元数据后,再初始化FreelistManager和Allocator,初始化agilestore的内存元数据。
本实施例还公开一种计算机可读存储介质,其存储有可被中央处理器运行的计算机程序,中央处理器通过运行所述计算机程序能够实现上述的基于重定向和日志混合的本地存储方法。
相对于现有技术,本发明具有如下有益效果:
1)将磁盘空间分配重定向和日志结合来保证本地存储中事务的原子性;
2)数据块单元对齐的覆盖写数据采用磁盘重定向方式,将数据写到新的地址空间,然后更改元数据索引,并回收原先占用的空间,元数据更新的原子性由本地日志的事务特性进行保障,这样能减少写本地日志带来的写放大,同时本地日志空间采用循环覆盖写,这样的大块写数据不写本地日志,也能节省本地日志空间;
3)非数据块单元对齐的覆盖写数据使用读改写的方式进行原地覆盖写,先读取非块大小对齐区域所在块,然后利用本地日志来实现日志功能,将覆盖写的数据记到本地日志中,完成以后再将数据覆盖写入到实际的数据区域,减小了频繁使用磁盘空间分配重定向带来的磁盘剩余空间碎片化问题;
4)本地日志支持分片进行多线程并发写,和BlueStore相比提高了元数据的并发写入性能;
5)对于覆盖写的数据,只记录到本地日志,不会像BlueStore先写入KV数据库中后面又删除,减小了KV数据库的元数据写入压力和后续压缩压力;
6)本地日志的删除结合KV数据库的刷新来做,当元数据kv(即键值)从内存缓存刷新到元数据盘持久化后,再将本地日志中记录的相关条目给删除掉;
7)当本地存储系统掉电重启后,通过本地日志的header结构获取有效的日志条目信息,然后回放本地日志中的元数据和覆盖写数据来保证事务的原子性。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围。应当指出,对于本技术领域的技术人员,在不脱离本发明设计结构及原理的前提下对本发明方案所作的等同变化都视作本发明的保护范围。
Claims (10)
1.一种基于重定向和日志混合的本地存储方法,其特征在于, 具体包括如下步骤:
S1、当收到一个数据写入请求后,通过元数据信息查找请求数据在存储设备数据盘对应的位置信息;
S2、根据位置信息判断是否为初次写或是数据块单元对齐的覆盖写,如果判断结果为是,进入步骤S3,否则进入步骤S4;
S3、数据部分采用重定向写:首先在存储设备数据盘上重新分配一块物理空间,然后把数据写入该物理空间,进入步骤S6;
S4、根据位置信息判断是否为非数据块单元对齐的覆盖写,如果判断结果为是,进入步骤S5,否则进入步骤S6;
S5、使用读改写的方式进行原地覆盖写,先读取非块大小对齐区域所在块,然后利用本地日志来实现日志功能,将覆盖写的数据记到本地日志中,完成以后再将数据覆盖写入到实际的数据区域,进入步骤S7;
S6、把元数据打包写本地日志,进入步骤S7;
S7、写完本地日志后写KV数据库的内存缓存,然后将写操作的响应返回给上层,如果存在非数据块单元对齐的覆盖写,则提交这部分覆盖写数据到存储设备数据盘;
S8、当KV数据库的内存缓存持久化时,将元数据写到本地日志里面的条目进行删除标记。
2.根据权利要求1所述的基于重定向和日志混合的本地存储方法,其特征在于,所述基于重定向和日志混合的本地存储方法除包括初次写或数据块单元对齐覆盖写场景和非数据块单元对齐覆盖写场景外,还包括混合场景。
3.根据权利要求2所述的基于重定向和日志混合的本地存储方法,其特征在于,在所述初次写或数据块单元对齐覆盖写场景下,S3具体包括如下步骤:
S11、申请一个新的定长块空间,将数据通过重定向写操作落盘,如果是数据块单元对齐覆盖写,则在KV数据库中记录待回收的空间,用于后续将这部分空间进行回收;
S12、将元数据打包成本地日志的一个条目,异步提交本地日志;
S13、将元数据写内存缓存,然后将回调放入队列让写操作返回;
S14、当KV数据库的内存缓存持久化时,将元数据写到本地日志里面的条目进行删除标记。
4.根据权利要求2所述的基于重定向和日志混合的本地存储方法,其特征在于,在所述非数据块单元对齐覆盖写场景下,S5具体包括如下步骤:
S21、将覆盖写的数据和元数据封装成本地日志的一个条目,通过异步写操作落盘;
S22、异步写操作成功后,将元数据同步到KV 数据库的内存缓存,把回调放入队列让写操作返回;
S23、然后再将覆盖写数据异步提交,后台线程读取内存中的覆盖写数据,并写入所述数据写入请求对应的存储设备数据盘磁盘区域。
5.一种本地存储系统,其特征在于, 具体包括数据存储介质和中央处理器,所述数据存储介质存储有计算机程序,所述数据存储介质包括存储设备加速盘和存储设备数据盘,所述存储设备加速盘存储有本地日志,所述存储设备数据盘存储有磁盘数据,所述中央处理器通过执行所述计算机程序能够实现权利要求1-4中任一项所述的基于重定向和日志混合的本地存储方法。
6.根据权利要求5所述的本地存储系统,其特征在于,所述本地日志包括多个分片结构,每个片分区空间独立管理,包括一个表头结构和多个条目结构,所述表头结构用于管理相应分片本地日志的空间,所述条目结构是本地日志的条目。
7.根据权利要求5所述的本地存储系统,其特征在于,在本地日志即将写满或本地存储进程正常退出的时候触发本地日志的主动删除。
8.根据权利要求5所述的本地存储系统,其特征在于,KV数据库下刷内存缓存时触发本地日志的被动删除。
9.根据权利要求6所述的本地存储系统,其特征在于,当所述本地存储系统掉电重启后,通过回放本地日志,来重做掉电前的事务,将事务中的元数据写入kv数据库,将数据写入磁盘,保证事务的原子性。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可被中央处理器运行的计算机程序,所述中央处理器通过运行所述计算机程序能够实现权利要求1-4中任一项所述的基于重定向和日志混合的本地存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210492517.1A CN114579529B (zh) | 2022-05-07 | 2022-05-07 | 一种基于重定向和日志混合的本地存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210492517.1A CN114579529B (zh) | 2022-05-07 | 2022-05-07 | 一种基于重定向和日志混合的本地存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114579529A CN114579529A (zh) | 2022-06-03 |
CN114579529B true CN114579529B (zh) | 2022-08-05 |
Family
ID=81767553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210492517.1A Active CN114579529B (zh) | 2022-05-07 | 2022-05-07 | 一种基于重定向和日志混合的本地存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579529B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335098A (zh) * | 2015-09-25 | 2016-02-17 | 华中科技大学 | 一种基于存储级内存的日志文件系统性能提高方法 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
CN108920303A (zh) * | 2018-06-08 | 2018-11-30 | 山东超越数控电子股份有限公司 | 一种安全增强型日志文件系统 |
US10235066B1 (en) * | 2017-04-27 | 2019-03-19 | EMC IP Holding Company LLC | Journal destage relay for online system checkpoint creation |
CN113868192A (zh) * | 2021-12-03 | 2021-12-31 | 深圳市杉岩数据技术有限公司 | 一种数据存储设备、方法与分布式数据存储系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862064B (zh) * | 2017-11-16 | 2021-09-10 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
WO2019228570A2 (en) * | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
CN113885809B (zh) * | 2021-12-07 | 2022-03-18 | 云和恩墨(北京)信息技术有限公司 | 数据管理系统及方法 |
-
2022
- 2022-05-07 CN CN202210492517.1A patent/CN114579529B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335098A (zh) * | 2015-09-25 | 2016-02-17 | 华中科技大学 | 一种基于存储级内存的日志文件系统性能提高方法 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
US10235066B1 (en) * | 2017-04-27 | 2019-03-19 | EMC IP Holding Company LLC | Journal destage relay for online system checkpoint creation |
CN108920303A (zh) * | 2018-06-08 | 2018-11-30 | 山东超越数控电子股份有限公司 | 一种安全增强型日志文件系统 |
CN113868192A (zh) * | 2021-12-03 | 2021-12-31 | 深圳市杉岩数据技术有限公司 | 一种数据存储设备、方法与分布式数据存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114579529A (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3806424A1 (en) | File system data access method and file system | |
US7136977B2 (en) | Backup acquisition method and disk array apparatus | |
US7139927B2 (en) | Journaling and recovery method of shared disk file system | |
US9563636B2 (en) | Allowing writes to complete without obtaining a write lock to a file | |
US7533298B2 (en) | Write journaling using battery backed cache | |
CN107870973B (zh) | 一种加快多路监控同时回放的文件存储系统 | |
US7325112B2 (en) | High-speed snapshot method | |
CN106815275B (zh) | 一种通过备用数据库实现主备数据库同步的方法与设备 | |
US8775479B2 (en) | Method and system for state maintenance of a large object | |
CN101996098A (zh) | 管理消息队列 | |
US7529902B2 (en) | Methods and systems for locking in storage controllers | |
CN109582686B (zh) | 分布式元数据管理一致性保证方法、装置、系统及应用 | |
CN104536699B (zh) | 一种基于嵌入式文件系统的流式数据写入方法 | |
CN102682012A (zh) | 一种文件系统内读写数据的方法及装置 | |
CN103516549B (zh) | 一种基于共享对象存储的文件系统元数据日志机制 | |
US20170277451A1 (en) | Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media | |
CN104636088B (zh) | 一种将数据写入数据服务器的方法及存储系统 | |
CN114579529B (zh) | 一种基于重定向和日志混合的本地存储方法及系统 | |
US11442663B2 (en) | Managing configuration data | |
CN116226232A (zh) | 面向分布式数据库的持久内存数据存储方法及系统 | |
WO2011098118A1 (en) | Data storage method | |
CN107422990B (zh) | 一种动态迁移方法及装置 | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN109032536A (zh) | 基于分布式集群系统的数据存储方法、装置、系统及设备 | |
US6711588B1 (en) | File management method for file system |
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 |