searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ceph后端存储引擎简介

2023-06-29 03:24:03
110
0

一、后端存储引擎在ceph中的作用

先附上一张ceph IO的流程图:

可以看到,IO流程是对象/块/文件请求经过librados,一路走到OSDs。而OSD集群接收到对应的IO请求之后,回根据后端存储类型,执行对应后端存储引擎的IO操作,比如选择了文件系统作为后端存储引擎的话,则会将IO请求转换成文件的读写,最终写入到磁盘/块设备上。

由此可见,后端存储引擎所做的工作就是,OSD将IO请求最终落入到实际磁盘/块设备的流程控制。

 

二、常用的ceph后端存储引擎

 

目前ceph常用的后端存储引擎有两个:filestore和bluestore

1、filestore:

filestore的模式下,数据从OSD到DISK的流程如下:

可以看到,在filestore的模式下,数据会经过FS,也就是FileSystem文件系统,最终到达disk。而目前filestore中,常用的文件系统有XFS, EXT4, BTRFS等,关于这几个文件系统的详细介绍,可参考https://zhuanlan.zhihu.com/p/571235218。

filestore的核心是object,改object是作为OSD进程与文件系统的桥梁,负责实际读写数据的交互逻辑。

上面说的是一个整体的数据流程,filestore具体对数据的操作流程可以由下图来描述:

 

 

数据都会先写入到journal 也就是日志区。这个操作是同步的,写入到journal成功后会直接返回结果。然后再异步写入到文件。

filestore的这种设计会带来写放大的问题(写放大即是实际写入的数据比要写入的数据更多,从而导致内存空间的浪费等问题)。再加上文件系统本身带来的一些后端引擎性能限制,因此后续架构演化出了bluestore模式。

 

2、bluestore:

bluestore的流程如下:

bluestore不再使用XFS等本地文件系统,直接实现了一个用户态的文件系统来直接操作块设备(BlockDevice),将对象数据存储在该设备中。提升了ceph集群整体的性能。

 

bluestore由三个部分构成:

RocksDB、BlueFS以及BlockDevice。

RocksDB:  是一个基于leveldb优化的kv存储系统。

BlueFS: 小型的文件系统(是一个用户态的逻辑,不是在VFS下面的通用文件系统),文件和目录的元数据都缓存再内存中,而数据和日志文件都直接保存在BlockDevice中。

BlockStore: 底层块设备,主要实现了异步写操作。

 

bluestore通过实现这个用户态的文件系统BlueFS,通过aio方式将数据直接写入磁盘,将整块数据写入,避免了filestore里的写放大问题。

 

 

 

 

0条评论
0 / 1000
l****n
1文章数
0粉丝数
l****n
1 文章 | 0 粉丝
l****n
1文章数
0粉丝数
l****n
1 文章 | 0 粉丝
原创

ceph后端存储引擎简介

2023-06-29 03:24:03
110
0

一、后端存储引擎在ceph中的作用

先附上一张ceph IO的流程图:

可以看到,IO流程是对象/块/文件请求经过librados,一路走到OSDs。而OSD集群接收到对应的IO请求之后,回根据后端存储类型,执行对应后端存储引擎的IO操作,比如选择了文件系统作为后端存储引擎的话,则会将IO请求转换成文件的读写,最终写入到磁盘/块设备上。

由此可见,后端存储引擎所做的工作就是,OSD将IO请求最终落入到实际磁盘/块设备的流程控制。

 

二、常用的ceph后端存储引擎

 

目前ceph常用的后端存储引擎有两个:filestore和bluestore

1、filestore:

filestore的模式下,数据从OSD到DISK的流程如下:

可以看到,在filestore的模式下,数据会经过FS,也就是FileSystem文件系统,最终到达disk。而目前filestore中,常用的文件系统有XFS, EXT4, BTRFS等,关于这几个文件系统的详细介绍,可参考https://zhuanlan.zhihu.com/p/571235218。

filestore的核心是object,改object是作为OSD进程与文件系统的桥梁,负责实际读写数据的交互逻辑。

上面说的是一个整体的数据流程,filestore具体对数据的操作流程可以由下图来描述:

 

 

数据都会先写入到journal 也就是日志区。这个操作是同步的,写入到journal成功后会直接返回结果。然后再异步写入到文件。

filestore的这种设计会带来写放大的问题(写放大即是实际写入的数据比要写入的数据更多,从而导致内存空间的浪费等问题)。再加上文件系统本身带来的一些后端引擎性能限制,因此后续架构演化出了bluestore模式。

 

2、bluestore:

bluestore的流程如下:

bluestore不再使用XFS等本地文件系统,直接实现了一个用户态的文件系统来直接操作块设备(BlockDevice),将对象数据存储在该设备中。提升了ceph集群整体的性能。

 

bluestore由三个部分构成:

RocksDB、BlueFS以及BlockDevice。

RocksDB:  是一个基于leveldb优化的kv存储系统。

BlueFS: 小型的文件系统(是一个用户态的逻辑,不是在VFS下面的通用文件系统),文件和目录的元数据都缓存再内存中,而数据和日志文件都直接保存在BlockDevice中。

BlockStore: 底层块设备,主要实现了异步写操作。

 

bluestore通过实现这个用户态的文件系统BlueFS,通过aio方式将数据直接写入磁盘,将整块数据写入,避免了filestore里的写放大问题。

 

 

 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
0