Ceph Jewel 发布 : 带来了新存储BlueStore

Ceph Jewel 发布 : 带来了新存储BlueStore

云开源 欧美女星 2016-03-29 17:40:21 476
概要
当前,Ceph的技术正在突飞猛进的发展,尤其是有关存储优化的技术更是如此。早在今年初,一个代号为NewStore首创项目被启动。那么它究竟是什么呢?

NewStore项目是一种存储实现。它使用RocksDB存储Ceph日志,同时Ceph的真正数据对象存储在文件系统中。如今有了BlueStore技术,数据对象可以无需任何文件系统的接口而直接存储在物理块设备上。


随着Ceph Jewel的发布,我们就可以使用Ceph中的BlueStore,实现高效的存储。

背景阐述
首先来看原本的Ceph中的FileStore有什么问题呢?

安全事务
Ceph是一种软件定义存储解决方案,因此Ceph的主要目标是保障存储数据的安全。为了达到数据安全的目的,需要原子特性,然而很不幸,鉴于O_ATOMIC从来没有集成到操作系统的内核当中,目前也就没有一种文件存储系统能够提供写和更新操作的原子特性。Btrfs拥有原子特性的事务, 这是人们为了解决上述问题作出的尝试,但事实上并不成功,Ceph开发者不得不探索其他的解决方案,这个解决方案就是你们非常熟悉的Ceph日志,但是写前记录日志这种技术有一个主要缺陷就是它把你的硬盘性能降低到原来的二分之一(当日志和OSD数据共享同一个硬盘时)。

对象枚举
对于Ceph本身来说,在POSIX文件系统上存储数据对象效果并不理想。Ceph使用哈希技术存储数据对象,因此数据对象的名字就会非常奇特,比如:
对于数据清洗、数据回填和数据恢复这样的操作,Ceph就需要检索枚举数据对象。但是POSIX对读取目录内容并有序排序没有好的处理方法。正因如此,Ceph开发者最后使用一些小技巧比如数据目录分片到子目录,之后他们才能够列出目录内容,排序并使用。但是这样做的最后结果是又引入了新的消耗。

BlueStore原理剖析
下图是BlueStore的整体架构图:
从抽象分层角度看,BlueStore的基本组成是非常简洁的,下图是BlueStore的深层透视:
正如我们从图中看到的,BlueStore有一些内部组件,从总体上看,Ceph数据对象是直接被写入块物理设备的,因此我们不再需要任何文件系统,BlueStoe直接使用一个原始分区,OSD附带的数据对象元数据被存储到键值数据库RocksDB中,各个分层描述如下:

RocksDB:存储预写式日志和元数据(Ceph的omap数据信息)

BlueRocksEnv是与RocksDB交互的接口

BlueFS 是使用C++语言开发的小的文件系统,并实现了rocksdb::Env 接口,因为rocksdb常规来说是运行在文件系统的顶层,下面是BlueFS,它是数据存储后端层,RocksDB的数据和BlueStore中的真正数据被存储在同一个块物理设备。


那么我们使用RocksDB存储什么呢?

数据对象元数据

预写式日志

Ceph的omap数据信息

分配器的元数据,分配器负责决定真正的数据应在什么地方存储

现在让我们看一下BlueStore在物理硬盘上的存储模型:
总体上看,我们是把一个硬盘分了两个分区:

第一个迷你小分区使用了XFS或ext4文件系统。它存储了Ceph文件(像初始系统描述符,状态,id,fsid,钥匙串等),和RocksDB文件(RocksDB元数据和预写式日志)。

第二个分区是没有文件系统的原始分区。

BlueStore更深层次的存储模型为:
BlueStore最令人惊叹的是它的灵活性,每一个组件都可以存储在一个不同的物理设备上,在上图中,RocksDB的预写式日志和数据可以被存储在不同的物理设备也可以存储在迷你小分区上。

总结
Ceph Jewel版本中BlueStore的几个最棒的特性:

消除双倍写入的消耗:因为它首先在块物理上写入数据,然后更新RocksDB的数据对象的元数据,元数据详细说明了驱动设备中的数据对象的位置。

配置灵活:BlueStore最多可以同时使用3个驱动设备,一个存储数据,一个存储RocksDB的元数据,一个存储RocksDB的预写式日志。因此你可以把HDD配置为存储数据,SSD配置为存储RocksDB元数据和一个非易失内存存储RocksDB的预写式日志。

元块物理设备的使用:由于我们数据写入到块物理设备中,没有了写入传统文件系统的额外消耗。同时我们也避免了日志元数据的冗余存储占用,因为传统文件系统有他们自己内部的日志和元数据管理机制。

本文转载自:Ceph中国社区。
取消

感谢您的支持鼓励,我会继续努力的!

文章地址:

用户邮箱:

打赏金额:USDT

点击”去打赏“,即可进行打赏支持本文章哦

发表评论