CN114780489B - 一种实现分布式块存储底层gc的方法及装置 - Google Patents
一种实现分布式块存储底层gc的方法及装置 Download PDFInfo
- Publication number
- CN114780489B CN114780489B CN202210684276.0A CN202210684276A CN114780489B CN 114780489 B CN114780489 B CN 114780489B CN 202210684276 A CN202210684276 A CN 202210684276A CN 114780489 B CN114780489 B CN 114780489B
- Authority
- CN
- China
- Prior art keywords
- data
- log
- index
- block
- index information
- 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/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
- 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/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- 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
-
- 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/182—Distributed file systems
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)
Abstract
本发明涉及云计算分布式存储技术领域,具体提供了一种实现分布式块存储底层GC的方法,GC流程涉及数据结构包括数据日志和日志索引,所述数据日志作为数据块在写IO数据时的存储格式持久化到数据文件,进行数据落盘;所述日志索引记录数据卷中所有最近数据块的索引信息。与现有技术相比,本发明每轮次只对一个数据日志进行GC,并不影响数据卷中其他数据块的读写IO。由于GC过程中每轮次只复制一个数据日志中失效的数据块,产生的写放大非常小,对磁盘IO性能影响较小。
Description
技术领域
本发明涉及云计算分布式存储技术领域,具体提供一种实现分布式块存储底层GC的方法及装置。
背景技术
在分布式块存储技术领域中,通过将写数据采用追加写数据日志的方式把随机写转换成顺序写,能较大提升数据写性能。对于底层实现这类技术的块存储系统,在数据块写入数据卷过程中,通过将数据块封装成数据日志,追加写入底层磁盘文件,然后再更新索引日志,以便为后续对该数据块读取时,提供数据索引。
当对于同一数据块进行多次写入或者对数据块进行删除时,由于底层采用追加写方式,因此,并不会直接支架覆盖或删除之前的数据块。可以看出,在数据卷的磁盘文件中将仍旧保留无效的旧数据块,尤其当对数据块写次数较多时,将会产生非常多的失效数据块,对底层磁盘造成较大的空间浪费。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的实现分布式块存储底层GC的方法。
本发明进一步的技术任务是提供一种设计合理,安全适用的实现分布式块存储底层GC的装置。
本发明解决其技术问题所采用的技术方案是:
一种实现分布式块存储底层GC的方法, GC流程涉及数据结构包括数据日志和日志索引,所述数据日志作为数据块在写IO数据时的存储格式持久化到数据文件,进行数据落盘;
所述日志索引记录数据卷中所有最新数据块的索引信息。
进一步的,所述数据日志包含数据结构为日志头部和日志数据,所述日志头部为写IO请求数据块的索引信息,包括写IO请求的具体操作,写入或者删除,数据块在数据卷中地址信息,数据块大小,数据块在数据文件地址信息。
进一步的,所述日志数据为写IO请求的实际数据块,当请求操作为删除时,日志数据为空。
进一步的,所述日志索引中每个索引条目对应一个数据块的索引信息,所述索引信息包括索引键值和索引值;
日志索引为写IO提供索引条目插入、更新和删除能力,为读IO提供索引条目范围搜索能力。
进一步的,所述GC流程如下:
S1、当数据卷中删除数据块或者改写数据块IO次数超过阈值时,触发GC流程;
S2、设置数据文件的GC开始位置;
S3、从GC开始位置,开始对当前轮次的数据日志进行GC;
S4、开始对下一个数据日志GC轮次过程,直至低于GC触发阈值后,本次GC流程结束为止。
进一步的,在步骤S2中,设置数据文件的GC开始位置,分为以下两种情况:
(1)、对于数据文件首次GC,则文件头部为GC开始位置;
(2)、对于数据文件非首次GC,则GC位置为上次GC结束时的开始位置。
进一步的,在步骤S3中,具体有如下步骤:
S301、通过读取日志头部获取当前数据块在数据卷中的起始位置offset和数据块大小size;
S302、在日志索引中查询从offset到offset + size之间的所有索引信息条目,若不存在符合条件的索引信息,则表示当前数据日志的数据块已经全部失效,结束本轮此GC,开始下轮次GC;
S303、判断索引值中的数据文件地址是否位于当前数据块地址范围内,过滤掉不满足条件的索引信息条目;
S304、对于过滤后满足条件的索引信息条目,将所述索引信息条目设置为只读权限,然后依次将索引值对应的数据块追加写到当前数据文件中,并更新索引值中数据块在数据文件中的地址信息,直至写完所有数据块,最后将所述索引信息条目设置为可读可写权限;
S305、完成当前数据日志的GC流程后,将GC位置设置为下一个数据日志位置,然后删除GC位置之前的所有数据日志。
一种实现分布式块存储底层GC的装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种实现分布式块存储底层GC的方法。
本发明的一种实现分布式块存储底层GC的方法及装置和现有技术相比,具有以下突出的有益效果:
本发明的优势在两方面,一方面在轻量级GC粒度上,每轮次只对一个数据日志进行GC,并不影响数据卷中其他数据块的读写IO。另一方面,由于GC过程中每轮次只复制一个数据日志中失效的数据块,产生的写放大非常小,对磁盘IO性能影响较小。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种实现分布式块存储底层GC的方法的流程示意图;
附图2是一种实现分布式块存储底层GC的方法中数据日志轮次GC流程图;
附图3是一种实现分布式块存储底层GC的方法中块存储数据块写入示意图;
附图4是一种实现分布式块存储底层GC的方法中无效数据块产生示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1-4所示,本实施例中的一种实现分布式块存储底层GC的方法,GC流程涉及数据结构包括数据日志和日志索引,数据日志作为数据块在写IO数据时的存储格式持久化到数据文件,实现数据落盘,日志索引则记录了数据卷中所有最新数据块的索引信息。
其中,数据日志包含如下数据结构:
日志头部:写IO请求数据块的索引信息,包括写IO请求的具体操作,写入或者删除,数据块在数据卷中地址信息,数据块大小,数据块在数据文件地址信息。
日志数据:写IO请求的实际数据块,当请求操作为删除时,日志数据为空。
日志索引中每个索引条目对应一个数据块的索引信息,包括索引键值和索引值。其中,索引键值为数据块在数据卷中的偏移量,索引值为数据块大小以及数据块在数据文件中的地址信息。日志索引为写IO提供索引条目插入、更新、删除能力,为读IO提供索引条目范围搜索能力。
详细叙述GC流程:
S1、当数据卷中删除数据块或者改写数据块IO次数超过一定的阈值(根据存储业务场景不同设定不同阈值,例如当写IO请求并发量较大时,IOPS较高时,可以设置较低阈值,避免产生过多无效数据块;当写IO并发量较小,IOPS较低时,可以设置较高的阈值,避免频繁启动GC流程而影响磁盘性能。),触发GC流程;
S2、设置数据文件的GC开始位置,分为以下两种情况;
(1)、对于数据文件首次GC,则文件头部为GC开始位置;
(2)、对于数据文件非首次GC,则GC位置为上次GC结束时的开始位置。
S3、从GC开始位置,开始对当前轮次的数据日志进行GC,具体步骤如下:
S301、通过读取日志头部获取当前数据块在数据卷中的起始位置offset和数据块大小size;
S302、在日志索引中查询从offset到offset + size之间的所有索引信息条目,若符合条件的索引信息,则表示当前数据日志的数据块已经全部失效,结束本轮此GC,开始下轮次GC;
S303、判断索引值中的数据文件地址是否位于当前数据块地址范围内,过滤掉不满足条件的索引信息条目;
S304、对于过滤后满足条件的索引信息条目,将所述索引信息条目设置为只读权限,然后依次将索引值对应的数据块追加写到当前数据文件中,并更新索引值中数据块在数据文件中的地址信息,直至写完所有数据块,最后将所述索引信息条目设置为可读可写权限;
S305、完成当前数据日志的GC流程后,将GC位置设置为下一个数据日志位置,然后删除GC位置之前的所有数据日志。
S4、开始对下一个数据日志GC轮次过程,直至低于GC触发阈值后,本次GC流程结束为止。
一种实现分布式块存储底层GC的装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种实现分布式块存储底层GC的方法。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (2)
1.一种实现分布式块存储底层 GC 的方法,其特征在于, GC 流程涉及数据 结构包括数据日志和日志索引,所述数据日志作为数据块在写 IO 数据时的存储 格式持久化到数据文件,进行数据落盘; 所述日志索引记录数据卷中所有最新数据块的索引信息; 所述数据日志包含数据结构为日志头部和日志数据,所述日志头部为写 IO 请求数据块的索引信息,包括写 IO 请求的具体操作,写入或者删除,数据块在 数据卷中地址信息,数据块大小,数据块在数据文件地址信息; 所述日志数据为写 IO 请求的实际数据块,当请求操作为删除时,日志数据 为空; 所述日志索引中每个索引条目对应一个数据块的索引信息,所述索引信息包 括索引键值和索引值; 日志索引为写 IO 提供索引条目插入、更新和删除能力,为读 IO 提供索引 条目范围搜索能力; 所述 GC 流程如下: S1、当数据卷中删除数据块或者改写数据块 IO 次数超过阈值时,触发 GC 流程; S2、设置数据文件的 GC 开始位置; 设置数据文件的 GC 开始位置,分为以下两种情况: (1)、对于数据文件首次 GC,则文件头部为 GC 开始位置; (2)、对于数据文件非首次 GC,则 GC 位置为上次 GC 结束时的开始位置; S3、从 GC 开始位置,开始对当前轮次的数据日志进行 GC; 具体有如下步骤: S301、通过读取日志头部获取当前数据块在数据卷中的起始位置 offset 和数 据块大小 size; S302、在日志索引中查询从 offset 到 offset + size 之间的所有索引信息条目, 若不存在符合条件的索引信息,则表示当前数据日志的数据块已经全部失效,结 束本轮此 GC,开始下轮次 GC; S303、判断索引值中的数据文件地址是否位于当前数据块地址范围内,过滤 掉不满足条件的索引信息条目; S304、对于过滤后满足条件的索引信息条目,将所述索引信息条目设置为只 读权限,然后依次将索引值对应的数据块追加写到当前数据文件中, 并更新索引 值中数据块在数据文件中的地址信息,直至写完所有数据块,最后将所述索引信 息条目设置为可读可写权限; S305、完成当前数据日志的 GC 流程后,将GC 位置设置为下一个数据日志 位置,然后删除 GC 位置之前的所有数据日志; S4、开始对下一个数据日志 GC 轮次过程,直至低于 GC 触发阈值后,本次 GC 流程结束为止。
2.一种实现分布式块存储底层 GC 的装置, 其特征在于,包括:至少一个 存储器和至少一个处理器; 所述至少一个存储器,用于存储机器可读程序; 所述至少一个处理器,用于调用所述机器可读程序,执行权利要求 1 所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210684276.0A CN114780489B (zh) | 2022-06-17 | 2022-06-17 | 一种实现分布式块存储底层gc的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210684276.0A CN114780489B (zh) | 2022-06-17 | 2022-06-17 | 一种实现分布式块存储底层gc的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114780489A CN114780489A (zh) | 2022-07-22 |
CN114780489B true CN114780489B (zh) | 2022-10-04 |
Family
ID=82421268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210684276.0A Active CN114780489B (zh) | 2022-06-17 | 2022-06-17 | 一种实现分布式块存储底层gc的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780489B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115473766B (zh) * | 2022-08-22 | 2024-01-26 | 苏州思萃工业互联网技术研究所有限公司 | 一种基于分布式网关的vip实现方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391774B (zh) * | 2017-09-15 | 2019-11-19 | 厦门大学 | 基于重复数据删除的日志文件系统的垃圾回收方法 |
CN110908589B (zh) * | 2018-09-14 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 数据文件的处理方法、装置、系统和存储介质 |
CN111177021A (zh) * | 2019-12-04 | 2020-05-19 | 东信和平科技股份有限公司 | Java卡碎片管理方法及其存储装置 |
US11789908B2 (en) * | 2020-11-11 | 2023-10-17 | Red Hat, Inc. | Offloading memory maintenance for a log-structured file system |
-
2022
- 2022-06-17 CN CN202210684276.0A patent/CN114780489B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114780489A (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
CN108319602B (zh) | 数据库管理方法及数据库系统 | |
US10949415B2 (en) | Logging system using persistent memory | |
US7325112B2 (en) | High-speed snapshot method | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN104750755B (zh) | 一种数据库主备切换后的数据回补方法及系统 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
US9411692B2 (en) | Applying write elision | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN109325005B (zh) | 一种数据处理方法和电子设备 | |
US9235349B2 (en) | Data duplication system, data duplication method, and program thereof | |
US20220083522A1 (en) | Data processing method, apparatus, electronic device, and computer storage medium | |
US7949632B2 (en) | Database-rearranging program, database-rearranging method, and database-rearranging apparatus | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
CN115033425A (zh) | 一种提高数据备份成功率的方法 | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
KR101715039B1 (ko) | 파일처리장치 및 그 동작 방법 | |
JP2822869B2 (ja) | ライブラリファイル管理装置 | |
CN113901276B (zh) | 一种数据管理、b+树加载方法、装置及电子设备 | |
CN111581241B (zh) | 一种无锁处理的读缓存方法 | |
US20240020277A1 (en) | Implementation for efficient log storage | |
KR101758792B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |