一种分布式存储系统的读写控制方法和系统技术方案

技术编号:29671909 阅读:20 留言:0更新日期:2021-08-13 21:53
本发明专利技术公开一种分布式存储系统的读写控制方法和系统,其中,分布式存储系统的读写控制方法包括:根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,SST文件包括key值;当磁盘的空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;根据层写入顺序,将合并压缩后的SST文件写入磁盘的下一空余层;当需要读取SST文件时,根据key值与磁盘存储空间对应关系,读取磁盘中的SST文件。本发明专利技术的技术方案能解决现有技术现有磁盘读写方式会带来读放大和写放大的问题,严重降低SSD的使用寿命的的问题。

【技术实现步骤摘要】
一种分布式存储系统的读写控制方法和系统
本专利技术涉及分布式存储
,尤其涉及一种分布式存储系统的读写控制方法和系统。
技术介绍
现有的分布式存储系统,其底层架构多采用新型对象存储引擎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.一种分布式存储系统的读写控制方法,其特征在于,包括:/n根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,所述SST文件包括key值;/n当所述空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;/n根据所述层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层;/n当需要读取所述SST文件时,根据所述key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件。/n

【技术特征摘要】
1.一种分布式存储系统的读写控制方法,其特征在于,包括:
根据磁盘的层写入顺序,将SST文件写入磁盘的空余层,其中,所述SST文件包括key值;
当所述空余层写满时,根据key值与磁盘存储空间对应关系,按照预设压缩策略对同key值的SST文件进行合并压缩;
根据所述层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层;
当需要读取所述SST文件时,根据所述key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件。


2.根据权利要求1所述的读写控制方法,其特征在于,其特征在于,所述根据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对照表。


3.根据权利要求2所述的读写控制方法,其特征在于,所述根据key值与磁盘存储空间对应关系,读取所述磁盘中的SST文件的步骤,包括:
使用读请求的key值,计算得到所述读请求的hash值;
使用所述hash值查询所述level-hash对照表和所述block-hash对照表,获取所述读请求的SST文件所在磁盘的位置;
将所述读请求的key值与查找到的所述SST文件的key值进行匹配;
若所述key值匹配成功,则读取所述SST文件。


4.根据权利要求1所述的读写控制方法,其特征在于,在将SST文件写入磁盘的空余层的步骤之前,所述方法还包括:
将写请求的数据写入预写式日志WAL;
使用追加模式,将所述写请求的数据写入内存数据结构中;
当所述内存数据结构写满时,以所述SST文件的形式将所述写请求的数据下刷至所述磁盘中。


5.根据权利要求1所述的读写控制方法,其特征在于,所述根据层写入顺序,将合并压缩后的所述SST文件写入所述磁盘的下一空余层的步骤,包括:
根据所述合并压缩后的SST文件在所述下一空余层的位置,修改所述磁盘的level-hash对照表和block-hash对照表。


6.一种分布式存储系统的读写控制系统...

【专利技术属性】
技术研发人员:彭超峰侯斌
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1