CN113253932B - 一种分布式存储系统的读写控制方法和系统 - Google Patents
一种分布式存储系统的读写控制方法和系统 Download PDFInfo
- Publication number
- CN113253932B CN113253932B CN202110588833.4A CN202110588833A CN113253932B CN 113253932 B CN113253932 B CN 113253932B CN 202110588833 A CN202110588833 A CN 202110588833A CN 113253932 B CN113253932 B CN 113253932B
- Authority
- CN
- China
- Prior art keywords
- disk
- sst
- file
- key value
- read
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0608—Saving storage space on storage systems
-
- 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/062—Securing storage systems
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种分布式存储系统的读写控制方法和系统,其中,分布式存储系统的读写控制方法包括:根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层;当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。本发明的技术方案能解决现有技术现有磁盘读写方式会带来读放大和写放大的问题,严重降低SSD的使用寿命的的问题。
Description
技术领域
本发明涉及分布式存储技术领域,尤其涉及一种分布式存储系统的读写控制方法和系统。
背景技术
现有的分布式存储系统,其底层架构多采用新型对象存储引擎Bluestore进行落盘管理。Bulestore会将所有元数据以kv(key-value,键值对)形式写入分布式存储系统的RocksDB中。
RocksDB是一个C++数据库,用于存储kv数据并且支持原子读写,在配置上具有较高灵活性,并且RockDB能够在各种生产环境中运行。RocksDB是基于LSM-Tree数据结构的,能够将离散的随机写请求都转换成批量的顺序写请求,从而提高写性能。但RocksDB也同时引入读放大和写放大等问题。读放大是因为RockDB基于LSM-Tree数据结构,因此Bluestore在对RockDB执行读请求时,需要一层一层对磁盘空间进行二分法查询,这过程可能会进行多次IO操作;另外,写放大是指Bluestore实际写入的数据要比写请求大。
在机械硬盘HDD作为主流存储介质时,写放大的问题并没有很明显,原因是HDD的顺序读写性能远远优于随机读写性能,足以抵消写放大带来的开销;HDD的写入量基本不影响其使用寿命。然而,现在固态硬盘SDD逐渐成为主流存储介质,其写放大的问题明显:因为SSD顺序读写性能与随机读写性能差距相对HDD不大,这就导致SSD必须先擦除(erase)再写入,现有的磁盘读写方式严重降低SSD的使用寿命。
发明内容
本发明提供了一种分布式存储的读写控制方法和系统,旨在解决现有技术中现有的磁盘读写方式会带来读放大和写放大的问题,严重降低SSD的使用寿命的问题。
为解决上述问题,根据本发明的第一方面,本发明提供了一种分布式存储系统的读写控制方法,包括:
根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;
当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层;
当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。
优选地,上述根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩的步骤,包括:
通过SST文件的key值从SST文件获取hash值;
使用磁盘的level-hash对照表,判断是否已有同key值的SST文件写入磁盘;
若判定已有同key值的SST文件写入磁盘,则根据level-hash对照表以及磁盘的block-hash对照表,查找并合并同key值的SST文件;
若判定未有同key值的SST文件写入磁盘,则根据SST文件需要写入的位置,修改磁盘的level-hash对照表和block-hash对照表。
优选地,上述根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件的步骤,包括:
使用读请求的key值,计算得到读请求的hash值;
使用hash值查询level-hash对照表和block-hash对照表,获取读请求的SST文件所在磁盘的位置;
将读请求的key值与查找到的SST文件的key值进行匹配;
若key值匹配成功,则读取SST文件。
优选地,上述将SST文件写入磁盘的空余层的步骤之前,方法还包括:
将写请求的数据写入预写式日志WAL;
使用追加模式,将写请求的数据写入内存数据结构中;
当内存数据结构写满时,以SST文件的形式将写请求的数据下刷至磁盘中。
优选地,上述根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层的步骤,包括:
根据合并压缩后的SST文件在下一空余层的位置,修改磁盘的level-hash对照表和block-hash对照表。
根据本发明的第二方面,本发明还提供了一种分布式存储系统的读写控制系统,包括:
第一文件写入模块,用于根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;
合并压缩模块,用于当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
第二文件写入模块,用于根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层;
文件读取模块,用于当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。
优选地,上述合并压缩模块,包括:
Hash值获取子模块,用于通过SST文件的key值从SST文件获取hash值;
写入判断子模块,用于使用磁盘的level-hash对照表,判断是否已有同key值的SST文件写入磁盘;
文件合并子模块,用于若写入判断子模块判定已有同key值的SST文件写入磁盘时,根据level-hash对照表以及磁盘的block-hash对照表,查找并合并同key值的SST文件;
对照表修改子模块,用于若写入判断子模块判定未有同key值的SST文件写入磁盘时,根据SST文件需要写入的位置,修改磁盘的level-hash对照表和block-hash对照表。
优选地,上述文件读取模块,包括:
Hash值计算子模块,用于使用读请求的key值,计算得到读请求的hash值;
文件位置获取子模块,用于使用hash值查询level-hash对照表和block-hash对照表,获取读请求的SST文件所在磁盘的位置;
Key值匹配子模块,用于将读请求的key值与查找到的SST文件的key值进行匹配;
文件读取子模块,用于若key值匹配成功时读取SST文件。
优选地,上述读写控制系统还包括:
日志写入模块,用于将写请求的数据写入预写式日志WAL;
内存写入模块,用于使用追加模式将写请求的数据写入内存数据结构中;
磁盘下刷模块,用于当内存数据结构写满时,以SST文件的形式将写请求的数据下刷至磁盘中。
优选地,上述第二文件写入模块,还用于根据合并压缩后的SST文件在下一空余层的位置,修改磁盘的level-hash对照表和block-hash对照表。
综上,本申请提供的分布式存储的读写控制方案,根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,然后在空余层写满时,通过key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩,就能够减小SST文件的占用空间,从而减小写放大的问题,并且在合并压缩后,将同key值的所述SST文件写入磁盘的下一空余层,这样就能够保证写入磁盘的SST文件的key值都是唯一的,也就是说写入磁盘数据与写请求的数据是一致的,从而减小了写放大的问题。另外,在需要读取SST文件时,根据key值与磁盘存储空间对应关系,就能够读取磁盘中的SST文件。这种读取方式相比于现有技术中从磁盘中一层一层通过二分法查找SST文件的低效方式,能够有效减小读放大的问题。综上,本申请技术方案提供的分布式存储系统的读写控制方案,能够解决现有的磁盘读写方式带来的读放大和写放大的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明实施例提供的一种分布式存储系统的读写控制系统的框架图;
图2是本发明实施例提供的第一种分布式存储系统的读写控制方法的流程示意图;
图3是图2所示实施例提供的一种文件压缩方法的流程示意图;
图4是图2所示实施例提供的一种文件读取方法的流程示意图;
图5是本发明实施例提供的第二种分布式存储系统的读写控制方法的流程示意图;
图6是本发明实施例提供的第一种分布式存储系统的读写控制系统的结构示意图;
图7是图6所示实施例提供的一种合并压缩模块的结构示意图;
图8是本发明实施例提供的一种文件读取模块的结构示意图;
图9是本发明实施例提供的第二种分布式存储系统的读写控制系统的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要技术问题如下:
现有分布式存储系统的数据读写方式,所有元数据是以kv(key-value,键值对)形式写入分布式存储系统的数据库的,这样就会引起读放大和写放大的问题,因为在对RockDB(一种可嵌入的,持久性的key-value存储数据库)执行读请求时,需要一层一层对磁盘空间进行二分法查询,会进行多次IO操作;另外,Bluestore实际写入的数据也会比写请求大。
为解决上述问题,参见图1,图1为本发明实施例提供的一种分布式存储系统的读写控制系统的框架图。如图1所示,该分布式存储系统的读写控制系统中,在执行写流程的过程中,
(1)首先,写请求先写入预写式日志WAL,以防止突然掉电,丢失数据;然后再写入Memory Table(即memtable,内存数据结构),此时采用的是追加模式,即同key的不同写操作类型(例如:修改写、覆盖写和删除)都保存,不涉及合并整理操作,提高性能;
(2)然后,当一个Memtable写满了之后,就会变成不可改的Memtable,触发下刷线程将这个memtable下刷到磁盘DISK中,生成SST文件,放在磁盘的Level 0层。
(3)当Level 0层的SST文件数量(或占用空间大小)超过阈值后,触发压缩策略,将生成的SST放到Level 1层。
(4)其中,上述压缩策略是指:压缩操作是指将同key的SST合并一个SST文件,具体以key得到hash值,然后通过查询磁盘中的level-hash表,判断是否已有同key数据写入磁盘。如果没有同key数据写入磁盘,则在level-hash表中记录key和level关系(另外,在将SST文件写入磁盘后,还需要根据key对应的hash值,记录block-hash表);如果有同key数据写入磁盘,则到相应的level层查询block-hash;在查询到block后,将对应于block的SST合并更新。
(5)当level 1层的SST文件数量超过阈值后,触发上述压缩策略,执行步骤4的操作,更新level-hash表,修改对应的层;清空level 1层的block-hash表;level 2层再有新SST文件写入后,更新block-hash。
(6)依次类推到其他层;这样可以保证写入磁盘的SST文件key都是唯一,也就是说写入磁盘数据跟写请求数据一致,从而减小了写放大问题。
执行读流程的过程如下:
(1)读请求先读内存中的数据,如果内存中没有读请求对应的数据,则到磁盘中读取。
(2)先通过读请求的key值经过hash计算得到对应的hash值,查询level-hash表,找到hash值对应的level层。
(3)读取对应level层的block-hash表,再通过key和SST文件中key匹对,确定相应SST文件。
这种读方式能够有效减小读放大问题;未修改之前读取方式是一层一层的通过二分法查找,效率低,读取SST文件多;
具体地,为实现上述目的,参见图2,图2为本发明实施例提供的一种分布式存储系统的读写控制方法的流程示意图。如图2所示,本发明实施例提供的分布式存储系统的读写控制方法,包括:
S110:根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;本申请实施例中,磁盘的层写入顺序是顺序写入,例如若level0层空间空余则首先写入level0层,然后level1层,……,level n层。SST文件包含key值,可以通过该key值计算得到hash值,然后通过hash值与磁盘存储空间的对应关系对SST进行磁盘存储。
S120:当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩。本申请实施例中,在磁盘的专门存储空间中维护两种hash表,这两种hash表组成矩形阵列:
横列,即level-hash对照表,是保存所有已写入存储介质的数据key所生成的hash值与数据所处的层关系;
纵列,即block-hash对照表,用于划分读写块单位,维护数据结构的key和块关系。
通过key值与磁盘存储空间对应关系,能够按照预设压缩策略对同key值的SST文件进行合并压缩,从而减小磁盘的空间占用大小,并方便读写,减小读放大和写放大的问题。
作为一种优选的实施例,如图3所示,该根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩的步骤,具体包括:
S121:通过SST文件的key值从SST文件获取hash值。
S122:使用磁盘的level-hash对照表,判断是否已有同key值的SST文件写入磁盘。
若判定已有同key值的SST文件写入磁盘,则执行步骤S123;若判定未有同key值的SST文件写入磁盘,则执行步骤S124。
S123:根据level-hash对照表以及磁盘的block-hash对照表,查找并合并同key值的SST文件。在合并同key值的SST文件后,若该SST文件的位置发生变化,也需要修改磁盘的level-hash对照表和block-hash对照表。
S124:根据SST文件需要写入的位置,修改磁盘的level-hash对照表和block-hash对照表。
通过SST文件的key值从SST文件获取hash值,然后使用磁盘的level-hash对照表判断是否已有同key值的SSt文件写入磁盘,然后在已有时根据level-hash对照表以及磁盘的block-hash对照表,能够查找到同key值的SST文件在磁盘的层与块单位,从而可以快速地找到该SST文件,然后对该SST文件进行合并,从而保证写入磁盘的SST文件的key都是唯一的,也就是说写入磁盘的数据与写请求的数据是一致的,减小了写放大的问题。若没有查找到同key值的SST文件写入磁盘,则根据SST文件需要写入的位置(本实施例中SST文件是顺序写入),修改磁盘的level-hash对照表和block-hash对照表。通过上述方式使得写入磁盘的SST文件key唯一,写入磁盘数据与写请求的数据一致,减小了写放大的问题。
S130:根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层。本申请实施例中,参见图1,磁盘是顺序写入的,即当level0层满后,将SST文件写入level 1层;当level 1层满后将SST文件写入level2层,以此类推。另外,作为一种优选的实施例,本申请实施例中,根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层的步骤包括:根据合并压缩后的SST文件在下一空余层的位置,修改磁盘的level-hash对照表和block-hash对照表。通过修改上述level-hash对照表和block-hash对照表,能够更新SST文件的位置信息,方便后续的合并压缩。
S140:当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。
作为一种优选的实施例,如图4所示,该根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件的步骤,具体包括:
S141:使用读请求的key值,计算得到读请求的hash值。
S142:使用hash值查询level-hash对照表和block-hash对照表,获取读请求的SST文件所在磁盘的位置。
S143:将读请求的key值与查找到的SST文件的key值进行匹配。
S144:若key值匹配成功,则读取SST文件。
本申请实施例提供的技术方案中,通过使用读请求的key值计算得到读请求的hash值,然后使用hash值查询level-hash对照表和block-hash对照表,获取读请求的SSt文件所在磁盘的位置,将该读请求的key值与查找到的SSt文件的key值进行匹配,当匹配成功时则说明读取到SST文件。这样相比于现有计算中按照磁盘的分层一层一层地查找,效率高,读取的SST文件更少,从而有效减少了读放大的问题。
综上,本申请实施例提供的分布式存储的读写控制方法,根据磁盘的层写入顺序将SST文件写入磁盘的空余层,然后在空余层写满时,通过key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩,就能够减小SST文件的占用空间,从而减小写放大的问题,并且在合并压缩后,将同key值的所述SST文件写入磁盘的下一空余层,这样就能够保证写入磁盘的SST文件的key值都是唯一的,也就是说写入磁盘数据与写请求的数据是一致的,从而减小了写放大的问题。另外,在需要读取SST文件时,根据key值与磁盘存储空间对应关系,就能够读取磁盘中的SST文件。这种读取方式相比于现有技术中从磁盘中一层一层通过二分法查找SST文件的低效方式,能够有效减小读放大的问题。综上,本申请技术方案提供的分布式存储系统的读写控制方案,能够解决现有的磁盘读写方式带来的读放大和写放大的问题。
另外,作为一种优选的实施例,参见图X,分布式存储系统可以包括除了磁盘外的其他各个结构,在本申请实施例中,为了便于数据的调用,可以在磁盘调用文件之前从其他能够快速调用数据的结构中读取文件。具体如图X所示,在上述步骤S110:将SST文件写入磁盘的空余层的步骤之前,本申请实施例提供的读写控制方法还包括:
S210:将写请求的数据写入预写式日志WAL。
S220:使用追加模式,将写请求的数据写入内存数据结构中。
S230:当内存数据结构写满时,以SST文件的形式将写请求的数据下刷至磁盘中。
本申请实施例提供的分布式存储系统的读写控制方法,通过将写请求的数据写入预写式日志WAL,能够防止突然掉电,丢失数据的情况;然后采用追加模式,即同key值的不同写操作(例如修改写、覆盖写和删除)等都保存,不涉及合并整理操作,能够提高内存数据读写的性能。当内存数据结构Memtable写满后,就变成了immutable的Memtable,触发下刷线程能够将这个memtable下刷到磁盘,生成SST文件,放在磁盘的level0层中。
另外,基于上述方法实施例的同一构思,本发明实施例还提供了分布式存储系统的读写控制系统,用于实现本发明的上述方法,由于该系统实施例解决问题的原理与上述方法相似,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
参见图6,图6为本发明实施例提供的一种分布式存储系统的读写控制系统的结构示意图。如图6所示,该分布式存储系统的读写控制系统包括:
第一文件写入模块110,用于根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;
合并压缩模块120,用于当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
第二文件写入模块130,用于根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层;
文件读取模块140,用于当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。
作为一种优选的实施例,如图7所示,上述合并压缩模块120,包括:
Hash值获取子模块121,用于通过SST文件的key值从SST文件获取hash值;
写入判断子模块122,用于使用磁盘的level-hash对照表,判断是否已有同key值的SST文件写入磁盘;
文件合并子模块123,用于若写入判断子模块判定已有同key值的SST文件写入磁盘时,根据level-hash对照表以及磁盘的block-hash对照表,查找并合并同key值的SST文件;
对照表修改子模块124,用于若写入判断子模块判定未有同key值的SST文件写入磁盘时,根据SST文件需要写入的位置,修改磁盘的level-hash对照表和block-hash对照表。
作为一种优选的实施例,如图8所示,上述文件读取模块140,包括:
Hash值计算子模块141,用于使用读请求的key值,计算得到读请求的hash值;
文件位置获取子模块142,用于使用hash值查询level-hash对照表和block-hash对照表,获取读请求的SST文件所在磁盘的位置;
Key值匹配子模块143,用于将读请求的key值与查找到的SST文件的key值进行匹配;
文件读取子模块144,用于若key值匹配成功时读取SST文件。
作为一种优选的实施例,如图9所示,上述读写控制系统还包括:
日志写入模块101,用于将写请求的数据写入预写式日志WAL;
内存写入模块102,用于使用追加模式将写请求的数据写入内存数据结构中;
磁盘下刷模块103,用于当内存数据结构写满时,以SST文件的形式将写请求的数据下刷至磁盘中。
另外,作为一种优选的实施例,上述第二文件写入模块130,还用于根据合并压缩后的SST文件在下一空余层的位置,修改磁盘的level-hash对照表和block-hash对照表。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种分布式存储系统的读写控制方法,其特征在于,包括:
根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,所述SST文件包括key值;
当所述空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
根据所述层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层;
当需要读取所述SST文件时,根据所述key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件;
所述根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩的步骤,包括:
通过所述SST文件的key值从所述SST文件获取hash值;
使用所述磁盘的level-hash对照表,判断是否已有同key值的SST文件写入所述磁盘;
若判定已有同key值的SST文件写入所述磁盘,则根据所述level-hash对照表以及所述磁盘的block-hash对照表,查找并合并所述同key值的SST文件;
若判定未有同key值的SST文件写入所述磁盘,则根据所述SST文件需要写入的位置,修改所述磁盘的level-hash对照表和block-hash对照表;
level-hash对照表,是保存所有已写入存储介质的数据key所生成的hash值与数据所处的层关系;
block-hash对照表,用于划分读写块单位,维护数据结构的key和块关系。
2.根据权利要求1所述的读写控制方法,其特征在于,所述根据key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件的步骤,包括:
使用读请求的key值,计算得到所述读请求的hash值;
使用所述hash值查询所述level-hash对照表和所述block-hash对照表,获取所述读请求的SST文件所在磁盘的位置;
将所述读请求的key值与查找到的所述SST文件的key值进行匹配;
若所述key值匹配成功,则读取所述SST文件。
3.根据权利要求1所述的读写控制方法,其特征在于,在将SST文件写入磁盘的空余层的步骤之前,所述方法还包括:
将写请求的数据写入预写式日志WAL;
使用追加模式,将所述写请求的数据写入内存数据结构中;
当所述内存数据结构写满时,以所述SST文件的形式将所述写请求的数据下刷至所述磁盘中。
4.根据权利要求1所述的读写控制方法,其特征在于,所述根据层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层的步骤,包括:
根据所述合并压缩后的SST文件在所述下一空余层的位置,修改所述磁盘的level-hash对照表和block-hash对照表。
5.一种分布式存储系统的读写控制系统,其特征在于,包括:
第一文件写入模块,用于根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,所述SST文件包括key值;
合并压缩模块,用于当所述空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
第二文件写入模块,用于根据所述层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层;
文件读取模块,用于当需要读取所述SST文件时,根据所述key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件;
所述合并压缩模块,包括:
Hash值获取子模块,用于通过所述SST文件的key值从所述SST文件获取hash值;
写入判断子模块,用于使用所述磁盘的level-hash对照表,判断是否已有同key值的SST文件写入所述磁盘;
文件合并子模块,用于若所述写入判断子模块判定已有同key值的SST文件写入所述磁盘时,根据所述level-hash对照表以及所述磁盘的block-hash对照表,查找并合并所述同key值的SST文件;
对照表修改子模块,用于若所述写入判断子模块判定未有同key值的SST文件写入所述磁盘时,根据所述SST文件需要写入的位置,修改所述磁盘的level-hash对照表和block-hash对照表;
level-hash对照表,是保存所有已写入存储介质的数据key所生成的hash值与数据所处的层关系;
block-hash对照表,用于划分读写块单位,维护数据结构的key和块关系。
6.根据权利要求5所述的读写控制系统,其特征在于,所述文件读取模块,包括:
Hash值计算子模块,用于使用读请求的key值,计算得到所述读请求的hash值;
文件位置获取子模块,用于使用所述hash值查询所述level-hash对照表和所述block-hash对照表,获取所述读请求的SST文件所在磁盘的位置;
Key值匹配子模块,用于将所述读请求的key值与查找到的所述SST文件的key值进行匹配;
文件读取子模块,用于若所述key值匹配成功时读取所述SST文件。
7.根据权利要求5所述的读写控制系统,其特征在于,还包括:
日志写入模块,用于将写请求的数据写入预写式日志WAL;
内存写入模块,用于使用追加模式将所述写请求的数据写入内存数据结构中;
磁盘下刷模块,用于当所述内存数据结构写满时,以所述SST文件的形式将所述写请求的数据下刷至所述磁盘中。
8.根据权利要求6所述的读写控制系统,其特征在于,所述第二文件写入模块,还用于根据所述合并压缩后的SST文件在所述下一空余层的位置,修改所述磁盘的level-hash对照表和block-hash对照表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588833.4A CN113253932B (zh) | 2021-05-28 | 2021-05-28 | 一种分布式存储系统的读写控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588833.4A CN113253932B (zh) | 2021-05-28 | 2021-05-28 | 一种分布式存储系统的读写控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113253932A CN113253932A (zh) | 2021-08-13 |
CN113253932B true CN113253932B (zh) | 2023-02-28 |
Family
ID=77184982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110588833.4A Active CN113253932B (zh) | 2021-05-28 | 2021-05-28 | 一种分布式存储系统的读写控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113253932B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200B (zh) * | 2021-12-01 | 2023-10-13 | 上海沄熹科技有限公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114416752B (zh) * | 2022-03-31 | 2022-07-15 | 南京得瑞芯存科技有限公司 | Kv ssd的数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968269A (zh) * | 2019-11-18 | 2020-04-07 | 华中科技大学 | 基于scm与ssd的键值存储系统及读写请求处理方法 |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN111352908A (zh) * | 2020-02-28 | 2020-06-30 | 北京奇艺世纪科技有限公司 | 基于lsm的数据存储方法、装置、存储介质及计算机设备 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
-
2021
- 2021-05-28 CN CN202110588833.4A patent/CN113253932B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968269A (zh) * | 2019-11-18 | 2020-04-07 | 华中科技大学 | 基于scm与ssd的键值存储系统及读写请求处理方法 |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN111352908A (zh) * | 2020-02-28 | 2020-06-30 | 北京奇艺世纪科技有限公司 | 基于lsm的数据存储方法、装置、存储介质及计算机设备 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
Non-Patent Citations (1)
Title |
---|
固态盘存储系统的性能优化和测试技术研究;喻芳.;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20200715(第07期);第I137-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113253932A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853549B2 (en) | Index storage in shingled magnetic recording (SMR) storage system with non-shingled region | |
US7873683B2 (en) | File system having transaction record coalescing | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
US8856469B2 (en) | Apparatus and method for logging optimization using non-volatile memory | |
US6691136B2 (en) | Fast data retrieval based upon contiguous consolidation of records according to frequency of access | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN111177143B (zh) | 键值数据存储方法、装置、存储介质与电子设备 | |
CN111708755A (zh) | 数据迁移方法、装置、系统、电子设备以及可读存储介质 | |
CN113515501B (zh) | 非易失性内存数据库管理系统恢复方法、装置和电子设备 | |
CN113906406A (zh) | 数据库管理系统 | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
US7949632B2 (en) | Database-rearranging program, database-rearranging method, and database-rearranging apparatus | |
US20090187719A1 (en) | Data backup method for logical volume manager | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
CN113703671B (zh) | 一种数据块擦除方法及相关装置 | |
US20240037078A1 (en) | Matching operation for a deduplication storage system | |
CN107066624B (zh) | 数据离线存储方法 | |
CN117099093A (zh) | 管理装置、数据库系统、管理方法及程序 |
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 |