CN111209253B - 分布式存储设备性能提升方法、装置及分布式存储设备 - Google Patents
分布式存储设备性能提升方法、装置及分布式存储设备 Download PDFInfo
- Publication number
- CN111209253B CN111209253B CN201911394312.4A CN201911394312A CN111209253B CN 111209253 B CN111209253 B CN 111209253B CN 201911394312 A CN201911394312 A CN 201911394312A CN 111209253 B CN111209253 B CN 111209253B
- Authority
- CN
- China
- Prior art keywords
- hdd
- distributed storage
- cache
- data
- storage device
- 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
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/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/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/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及存储技术领域,具体涉及一种分布式存储设备性能提升方法、装置及分布式存储设备。本发明通过bluestore中使用Bcache磁盘,采用一棵相对标准的B+树作为索引,命中率有很大提高,在最大程度上发挥SSD性能的同时,也保护了SSD的寿命,也就是对SSD闪存介质的亲和性较好。可以在混合磁盘场景下提升bluestore存储引擎模式的整体性能。
Description
技术领域
本发明涉及存储技术领域,具体涉及一种分布式存储设备性能提升方法、装置及分布式存储设备。
背景技术
在分布式存储设备高速发展过程中诞生了filestore和bluestore存储引擎,filestore一开始只是对于机械盘进行设计的,没有专门针对ssd做优化考虑,因此诞生的bluestore初衷就是为了减少写放大,并针对ssd做优化,而且直接管理裸盘,从理论上进一步减少文件***如ext4/xfs等部分的开销。然而,使用bluestore存储引擎抛弃了原有的journal机制,但bluestore存储引擎在SSD和HDD混合模式场景下的性能不高。
发明内容
针对现有技术中bluestore存储引擎在SSD和HDD混合模式场景的性能不高的问题,本发明提供了一种分布式存储设备性能提升方法、装置及分布式存储设备。
一方面,本发明提供了一种分布式存储设备性能提升方法,应用于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述方法包括:
所述分布式存储设备将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;所述分布式存储设备在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;所述分布式存储设备在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志。
可选地,所述将所述SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区,包括:
所述分布式存储设备基于bcache将SSD中的大分区和小分区都分成多个bucket;所述SSD中存储缓存数据和元数据,所述缓存数据和元数据按bucket进行管理;所述bucket的大小与SSD本身擦除块大小一致,为512K。
可选地,所述在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘,包括:
所述分布式存储设备用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey。
可选地,所述用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,包括:
所述分布式存储设备将一个缓存池中的多块HDD地址空间编址为一个地址空间;所述分布式存储设备以HDD的id+IO请求的LBA为索引建立B+树;所述分布式存储设备每个B+树的节点对应一个btree bucket,所述btree bucket里存储的数据为bkey;所述分布式存储设备为每个btree bucket申请一块连续内存作为metadata缓存。
在上述方法中,利用Journal/WAL加速B+树的修改,写完journal以及内存中的B+tree节点缓存后写IO就可以返回了。
可选地,所述方法还包括:所述分布式存储设备对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket。
可选地,所述对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket,包括:
所述分布式存储设备遍历B+树,根据bkey信息标记出无效的缓存数据、有效的缓存数据和元数据,然后压缩清理元数据bucket;所述换成数据包括脏缓存数据与干净的缓存数据;所述分布式存储设备根据元数据遍历B+树后生成的数据bucket的标记信息,找出含有较多无效数据的多个bucket,将其中的有效数据搬移到一个新分配的bucket中去,以便及时回收更多的bucket。
可选地,所述方法还包括:
所述分布式存储设备中的bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘。
可选地,所述bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘,包括:
所述分布式存储设备遍历B+树,找出指向本HDD上的脏数据块的所有bkey,按照bkey中包含的HDD上的LBA信息进行排序,根据排序后的bkey依次读出SSD上的数据块,写入HDD中,实现了顺序刷盘。
另一方面,本发明提供了一种分布式存储设备性能提升装置,运行于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述装置包括:
分区模块,用于将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;附加绑定模块,用于在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;OSD创建模块,用于在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志。
第三方面,本发明提供了一种分布式存储设备,所述分布式存储设备包括多个SSD、多个HDD、输出端口、处理器和存储器,所述多个SSD、多个HDD、输出端口和存储器均通过总线连接于所述处理器;所述存储器中存储有程序代码;所述处理器,用于通过所述总线从所述存储器中读取并运行所述程序代码,执行上述的方法。
本发明具有以下有益效果:
本发明通过bluestore中使用Bcache磁盘,采用一棵相对标准的B+树作为索引,命中率有很大提高,在最大程度上发挥SSD性能的同时,也保护了SSD的寿命,也就是对SSD闪存介质的亲和性较好。可以在混合磁盘场景下提升bluestore存储引擎模式的整体性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中所述的分布式存储设备性能提升方法结构流程示意图;
图2是本发明实施例中所述的分布式存储设备性能提升***框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,本实施例提供了一种分布式存储设备性能提升方法,应用于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述方法包括步骤S10、步骤S20和步骤S30。
步骤S10:所述分布式存储设备将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;
步骤S20:所述分布式存储设备在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;
步骤S30:所述分布式存储设备在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志。
可选地,所述步骤S10中,还包括步骤S101。
步骤S101:所述分布式存储设备基于bcache将SSD中的大分区和小分区都分成多个bucket;所述SSD中存储缓存数据和元数据,所述缓存数据和元数据按bucket进行管理;所述bucket的大小与SSD本身擦除块大小一致,为512K。
COW式的空间分配,分配的单元是bucket,数据在bucket内部全部都是追加写入的,不会出现覆盖写,当有覆盖写时,会重定向到新的数据块。
元数据部分(B+树节点数据是最主要的元数据)也是COW式分配:对于B+树节点的修改,需要先分配新的节点,将新数据写入,再丢弃老的节点。
可选地,所述步骤S20中,还包括步骤S201。
步骤S201:所述分布式存储设备用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey。
可选地,所述步骤S201中,还包括子步骤S2011、子步骤S2012、子步骤S2013和子步骤S2014。
子步骤S2011:所述分布式存储设备将一个缓存池中的多块HDD地址空间编址为一个地址空间;
子步骤S2012:所述分布式存储设备以HDD的id+IO请求的LBA为索引建立B+树;
子步骤S2013:所述分布式存储设备每个B+树的节点对应一个 btreebucket,所述btree bucket里存储的数据为bkey;
子步骤S2014:所述分布式存储设备为每个btree bucket申请一块连续内存作为metadata缓存。
在步骤S201中,利用Journal/WAL加速B+树的修改,写完journal以及内存中的B+tree节点缓存后写IO就可以返回了。
可选地,所述分布式存储设备性能提升方法还可以包括步骤S40。
步骤S40:所述分布式存储设备对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket。
bcache的分配器是以bucket为单位的COW式的分配,对与已经在SSD中的数据以及元数据,覆盖写时是写到新的空间中的,这样无效的旧数据就会在其所在的bucket内形成“空洞”,但是由于bcache空间回收的单位是bucket,因此需要一个异步的垃圾回收线程来实现对这些数据的标记与清理,并将含有较多无效数据的多个bucket压缩成一个bucket。
可选地,所述步骤S40中,还可以包括子步骤S401和子步骤S402。
子步骤S401:所述分布式存储设备遍历B+树,根据bkey信息标记出无效的缓存数据、有效的缓存数据和元数据,然后压缩清理元数据bucket;所述缓存数据包括脏缓存数据与干净的缓存数据。
子步骤S402:所述分布式存储设备根据元数据遍历B+树后生成的数据bucket的标记信息,找出含有较多无效数据的多个bucket,将其中的有效数据搬移到一个新分配的bucket中去,以便及时回收更多的bucket。
可选地,所述分布式存储设备性能提升方法还可以包括步骤S50。
步骤S50:所述分布式存储设备中的bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘。
可选地,所述步骤S50中,还可以包括子步骤S501。
子步骤S501:所述分布式存储设备遍历B+树,找出指向本HDD上的脏数据块的所有bkey,按照bkey中包含的HDD上的LBA信息进行排序,根据排序后的bkey依次读出SSD上的数据块,写入HDD中,实现了顺序刷盘。
为了保证刷脏性能,同时尽量不影响业务IO的读写,bcache会根据脏数据的水位线来调节刷脏速率,具体是通过比例-微分控制器(PD-Controller)来实现的:当水位线越高,或者水位增高速度越快时,刷脏速度也越快。
Bluestore实现了直接管理裸设备的方式,抛弃了本地文件***,BlockDevice实现在用户态下使用linuxaio直接对裸设备进行I/O操作,去除了本地文件***的消耗,减少***复杂度,更有利于Flash介质盘发挥性能优势;
为了惯例裸设备就需要一个磁盘的空间管理***,Bluestore采用Allocator进行裸设备的空间管理,目前支持StupidAllocator和BitmapAllocator两种方式;
Bluestore的元数据是以KEY-VALUE的形式保存到RockDB里的,而RockDB又不能直接操作裸盘,为此,bluestore实现了一个BlueRocksEnv,继承自EnvWrapper,来为RocksDB提供底层文件***的抽象接口支持;
为了对接BlueRocksEnv,Bluestore自己实现了一个简洁的文件***BlueFS,只实现RocksDB Env所需要的接口,在***启动挂在这个文件***的时候将所有的元数据都加载到内存中,BluesFS的数据和日志文件都通过BlockDevice保存到底层的裸设备上;
BlueFS和BlueStore可以共享裸设备,也可以分别指定不同的设备,比如为了获得更好的性能Bluestore可以采用SATA SSD盘,BlueFS采用NVMe SSD盘。
BlueStore包括以下内部组件:
1)RocksDB:存储预写式日志、数据对象元数据、Ceph的omap数据信息、以及分配器的元数据(分配器负责决定真正的数据应在什么地方存储)。
2)BlueRocksEnv:与RocksDB交互的接口。
3)BlueFS:迷你的文件***(相对于xfs,ext2/3/4系列而言),解决元数据、文件空间及磁盘空间的分配和管理。因为rocksdb一般是直接存储在POSIX兼容的文件***(如ext3/xfs等)之上,但BlueStore引擎是直接面向裸盘管理,没有直接兼容POSIX的文件接口。但幸运的是,rocksdb的开发者充分考虑了适配性,只要实现了rocksdb::Env接口,就能持久化rocksdb的数据存储(包含RocksDB日志和sst文件)。BlueStore就是为此而设计开发的,它只包含了最小的功能,用来承接rocksdb。在osd启动的时候,它会被"mount"起来,并完全载入内存。
4)Allocator:用来从空闲空间分配block(block是可分配的最小单位)。
Bcache采用一棵相对标准的B+树作为索引,命中率会有很大提高,同时,它在架构设计上考虑了SSD本身的一些特性,在最大程度上发挥SSD性能的同时,也保护了SSD的寿命,也就是对SSD闪存介质的亲和性较好。
bluestore不使用本地文件***,直接接管裸设备,由于操作***支持的aio操作只支持directIO,所以对Block设备的写操作直接写入磁盘。相比filestore,跳过写日志的步骤,写两次变成写一次,理论上写入速度应该变大.所以设计bluestore的初衷是为高速磁盘使用,对于普通磁盘来说,它的IO瓶颈决定了性能的上限,为了提高这个上限,我们需要加一层缓存给它,这就是bcache的目的。
下面将基于Bcache完成对cephbluestore的支持。具体实施步骤如下
(1)内核实施步骤:
Step1.内核开启bcache的支持
Step2.加载bcache内核命令modprobe bcache
Step3.安装bcache-tools工具命令apt-get install bcache-tools
(2)bluestore实施步骤:
Step1.磁盘配置:
设sda、sdb是两个960G的ssd硬盘,sdc、sdd、sde、sdf是四个4T的hdd磁盘,是分布式存储ceph的BlueStore的hdd的osd磁盘,规划如下:
1、sda3分区规划为磁盘sdc的BlueStore元数据和日志盘用,大小是60G;
2、sdb3分区规划为磁盘sdd的BlueStore元数据和日志盘用,大小是60G;
3、sda4分区规划为磁盘sde的BlueStore元数据和日志盘用,大小是60G;
4、sdb4分区规划为磁盘sdf的BlueStore元数据和日志盘用,大小是60G;
5、sda5分区规划为磁盘sdc的bcache的ssd磁盘,大小是400G;
6、sdb5分区规划为磁盘sdd的bcache的ssd磁盘,大小是400G;
7、sda6分区规划为磁盘sde的bcache的ssd磁盘,大小是400G;
8、sdb6分区规划为磁盘sdf的bcache的ssd磁盘,大小是400G。
Step2.以正常形式部署Bcache的磁盘:
bcache有两种设备,一个是backing,一个是cache,backing指的就是存放数据的后端磁盘,cache就是高速缓存盘SSD,bcache可以支持将用来做缓存的ssd和做数据存放的hdd一次性注册,而不需要手动连接挂载ssd和hdd。
另一方面,如图2所示,本实施例提供了一种分布式存储设备性能提升装置,运行于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述装置包括:
分区模块601,用于将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;
附加绑定模块602,用于在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;
OSD创建模块603,用于在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志。
可选地,所述分区模块601还可以用于:基于bcache将SSD中的大分区和小分区都分成多个bucket;所述SSD中存储缓存数据和元数据,所述缓存数据和元数据按bucket进行管理;所述bucket的大小与SSD本身擦除块大小一致,为512K。
可选地,所述附加绑定模块602还可以用于:用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey。
可选地,所述附加绑定模块602在执行用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey任务时,具体包括以下操作:
将一个缓存池中的多块HDD地址空间编址为一个地址空间;以HDD的id+IO请求的LBA为索引建立B+树;每个B+树的节点对应一个btree bucket,所述btree bucket里存储的数据为bkey;为每个btree bucket申请一块连续内存作为metadata缓存。
可选地,所述分布式存储设备性能提升装置还可以包括垃圾回收模块604。
垃圾回收模块,用于对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket。
可选地,所述垃圾回收模块包括元数据清理模块6041和缓存数据清理模块6042。
元数据清理模块6041:用于遍历B+树,根据bkey信息标记出无效的缓存数据、有效的缓存数据和元数据,然后压缩清理元数据bucket;所述缓存数据包括脏缓存数据与干净的缓存数据。
缓存数据清理模块6042:用于根据元数据遍历B+树后生成的数据bucket的标记信息,找出含有较多无效数据的多个bucket,将其中的有效数据搬移到一个新分配的bucket中去,以便及时回收更多的bucket。
可选地,所述分布式存储设备性能提升装置还可以包括刷脏模块605。
刷脏模块605:用于所述分布式存储设备中的bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘。
可选地,所述刷脏模块605的具体工作方法为:遍历B+树,找出指向本HDD上的脏数据块的所有bkey,按照bkey中包含的HDD上的LBA信息进行排序,根据排序后的bkey依次读出SSD上的数据块,写入HDD中,实现了顺序刷盘。
以上各单元可以是由软件代码实现,此时,上述的各单元可存储于存储器内。以上各单元同样可以由硬件例如集成电路芯片实现。
本发明实施例提供的分布式存储设备性能提升装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
第三方面,本实施例公开了一种分布式存储设备,所述分布式存储设备包括多个SSD、多个HDD、输出端口、处理器和存储器,所述多个SSD、多个HDD、输出端口和存储器均通过总线连接于所述处理器;所述存储器中存储有程序代码;所述处理器,用于通过所述总线从所述存储器中读取并运行所述程序代码,执行上述的方法。
分布式存储设备还包括存储控制器,存储器、存储控制器、处理器、多个SSD、多个HDD、输出端口各元件之间直接或间接地电连接,以实现数据的传输或交互。例如,这些元件之间可以通过一条或多条通讯总线或信号总线实现电连接。分布式存储设备性能提升方法分别包括至少一个可以以软件或固件(firmware)的形式存储于存储器中的软件功能模块,例如所述分布式存储设备性能提升装置包括的软件功能模块或计算机程序。
存储器可以存储各种软件程序以及模块,如本申请实施例提供的分布式存储设备性能提升方法及装置对应的程序指令/模块。处理器通过运行存储在存储器中的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本申请实施例中的分布式存储设备性能提升方法。
存储器可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器可以是一种集成电路芯片,具有信号处理能力。上述处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种分布式存储设备性能提升方法,其特征在于,应用于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述方法包括:
所述分布式存储设备将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;
所述分布式存储设备在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;
所述分布式存储设备在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志;
所述在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘,包括:
所述分布式存储设备用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey;
所述用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,包括:
所述分布式存储设备将一个缓存池中的多块HDD地址空间编址为一个地址空间;
所述分布式存储设备以HDD的id+IO请求的LBA为索引建立B+树;
所述分布式存储设备每个B+树的节点对应一个btree bucket,所述btree bucket里存储的数据为bkey;
所述分布式存储设备为每个btree bucket申请一块连续内存作为metadata缓存;
所述分布式存储设备对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket。
2.根据权利要求1所述的分布式存储设备性能提升方法,其特征在于,所述将所述SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区,包括:
所述分布式存储设备基于bcache将SSD中的大分区和小分区都分成多个bucket;所述SSD中存储缓存数据和元数据,所述缓存数据和元数据按bucket进行管理。
3.根据权利要求1所述的分布式存储设备性能提升方法,其特征在于,所述对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket,包括:
所述分布式存储设备遍历B+树,根据bkey信息标记出无效的缓存数据、有效的缓存数据和元数据,然后压缩清理元数据bucket;
所述分布式存储设备根据元数据遍历B+树后生成的数据bucket的标记信息,找出含有较多无效数据的多个bucket,将其中的有效数据搬移到一个新分配的bucket中去,以便及时回收更多的bucket。
4.根据权利要求1所述的分布式存储设备性能提升方法,其特征在于,所述方法还包括:
所述分布式存储设备中的bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘。
5.根据权利要求4所述的分布式存储设备性能提升方法,其特征在于,所述bcache为缓存池中的每个HDD启动刷脏线程,将SSD中的脏数据刷到后端的HDD盘,包括:
所述分布式存储设备遍历B+树,找出指向本HDD上的脏数据块的所有bkey,按照bkey中包含的HDD上的LBA信息进行排序,根据排序后的bkey依次读出SSD上的数据块,写入HDD中,实现了顺序刷盘。
6.一种分布式存储设备性能提升装置,其特征在于,运行于分布式存储设备,所述分布式存储设备包括多个SSD和多个HDD,所述装置包括:
分区模块,用于将每个SSD分为多个磁盘分区,所述每个磁盘分区包括一个大分区和一个小分区;
附加绑定模块,用于在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘;
OSD创建模块,用于在所述小分区中创建一个OSD的DB空间和WAL空间,将所述小分区用于存放第一HDD的BlueStore元数据和日志;
所述在所述大分区中创建bcache缓存池,将一个HDD附加绑定到大分区中的缓存池,将所述附加绑定到缓存池的HDD记为第一HDD,将所述大分区作为第一HDD的bcache的前端缓存磁盘,包括:
所述分布式存储设备用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,B+树节点中记录的结构为bkey;
所述用B+树索引,记录缓存设备SSD上缓存数据和第一HDD上后端设备数据的映射对应关系,包括:
所述分布式存储设备将一个缓存池中的多块HDD地址空间编址为一个地址空间;
所述分布式存储设备以HDD的id+IO请求的LBA为索引建立B+树;
所述分布式存储设备每个B+树的节点对应一个btree bucket,所述btree bucket里存储的数据为bkey;
所述分布式存储设备为每个btree bucket申请一块连续内存作为metadata缓存;
所述分布式存储设备对无效的旧数据进行标记和清理,并将含有多无效数据的多个bucket压缩成一个bucket。
7.一种分布式存储设备,其特征在于,所述分布式存储设备包括多个SSD、多个HDD、输出端口、处理器和存储器,所述多个SSD、多个HDD、输出端口和存储器均通过总线连接于所述处理器;所述存储器中存储有程序代码;所述处理器,用于通过所述总线从所述存储器中读取并运行所述程序代码,执行如权利要求1-5任一权项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911394312.4A CN111209253B (zh) | 2019-12-30 | 2019-12-30 | 分布式存储设备性能提升方法、装置及分布式存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911394312.4A CN111209253B (zh) | 2019-12-30 | 2019-12-30 | 分布式存储设备性能提升方法、装置及分布式存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209253A CN111209253A (zh) | 2020-05-29 |
CN111209253B true CN111209253B (zh) | 2023-10-24 |
Family
ID=70788263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911394312.4A Active CN111209253B (zh) | 2019-12-30 | 2019-12-30 | 分布式存储设备性能提升方法、装置及分布式存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209253B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377291B (zh) * | 2021-06-09 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 一种缓存设备的数据处理方法、装置、设备及介质 |
CN113821377B (zh) * | 2021-08-27 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种分布式存储集群的数据恢复方法、***及存储介质 |
CN115878508A (zh) * | 2021-09-29 | 2023-03-31 | 中兴通讯股份有限公司 | 数据缓存方法、装置、合并存储设备及数据缓存*** |
CN113868192B (zh) * | 2021-12-03 | 2022-04-08 | 深圳市杉岩数据技术有限公司 | 一种数据存储设备、方法与分布式数据存储*** |
CN116795296B (zh) * | 2023-08-16 | 2023-11-21 | 中移(苏州)软件技术有限公司 | 一种数据存储方法、存储设备及计算机可读存储介质 |
CN117827699A (zh) * | 2023-12-27 | 2024-04-05 | 中电云计算技术有限公司 | 并行读cache持久化方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101896A1 (zh) * | 2012-12-31 | 2014-07-03 | 华为技术有限公司 | 一种共享存储资源的方法和*** |
CN107015763A (zh) * | 2017-03-03 | 2017-08-04 | 北京中存超为科技有限公司 | 混合存储***中ssd管理方法及装置 |
CN109947363A (zh) * | 2018-12-11 | 2019-06-28 | 深圳供电局有限公司 | 一种分布式存储***的数据缓存方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496283B2 (en) * | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
-
2019
- 2019-12-30 CN CN201911394312.4A patent/CN111209253B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101896A1 (zh) * | 2012-12-31 | 2014-07-03 | 华为技术有限公司 | 一种共享存储资源的方法和*** |
CN107015763A (zh) * | 2017-03-03 | 2017-08-04 | 北京中存超为科技有限公司 | 混合存储***中ssd管理方法及装置 |
CN109947363A (zh) * | 2018-12-11 | 2019-06-28 | 深圳供电局有限公司 | 一种分布式存储***的数据缓存方法 |
Non-Patent Citations (2)
Title |
---|
傅雨东 ; 李小勇 ; .基于固态盘与磁盘的混合存储***框架研究.信息技术.2018,(07),全文. * |
郭建楠 ; .SSD在分布式文件***中的应用场景及方案对比.通信世界.2017,(33),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111209253A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209253B (zh) | 分布式存储设备性能提升方法、装置及分布式存储设备 | |
JP7089830B2 (ja) | 不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 | |
US10275162B2 (en) | Methods and systems for managing data migration in solid state non-volatile memory | |
CN101484882B (zh) | 闪存管理方法 | |
US20210081116A1 (en) | Extending ssd longevity | |
KR101447188B1 (ko) | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 | |
CN111427855B (zh) | 一种存储***中重复数据删除方法、存储***及控制器 | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
KR101933766B1 (ko) | 플래시 메모리 플러싱을 개선하는 방법 및 시스템 | |
EP2356658A1 (en) | System and method for recovering solid state drive data | |
JP2011209973A (ja) | ディスクアレイ構成プログラム、計算機、計算機システム | |
CN103761053A (zh) | 一种数据处理方法和装置 | |
CN101763309A (zh) | 非易失性存储装置、信息记录***及信息记录方法 | |
US10282126B2 (en) | Information processing apparatus and method for deduplication | |
US9262339B2 (en) | Managing write operations in a computerized memory | |
CN107562367B (zh) | 基于软件化存储***读写数据的方法以及装置 | |
US20200104055A1 (en) | Storage device, management method, and program | |
CN109558333A (zh) | 具有可变额外存储空间(op)的固态存储设备命名空间 | |
CN113490922A (zh) | 固态硬盘写放大优化方法 | |
US20150039831A1 (en) | File load times with dynamic storage usage | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
KR102425470B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TWI792534B (zh) | 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統 | |
JP6805501B2 (ja) | ストレージ装置 | |
CN103038753B (zh) | 用基于日志的缓冲向基于nand存储块的文件***写入的方法 |
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 |