前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >System|分布式|Ceph & BlueStore

System|分布式|Ceph & BlueStore

作者头像
朝闻君
发布2021-11-22 10:43:42
3850
发布2021-11-22 10:43:42
举报
文章被收录于专栏:用户9199536的专栏

Ceph放弃了使用传统的文件系统作为分布式存储后端,因为它们有以下弊端:

  • 难以零开销事务机制
  • metadata的性能显著影响分布式性能
  • 新型硬件支持不佳

转而使用BlueStore。BlueStore是Ceph最新的存储引擎,运行在用户态并且完全控制IO,取得了极大性能提升。

File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution SOSP 2019

Ceph

分布式文件系统需求

  • 高效率的事务
  • 快速的Metadata操作
  • 支持新型异构的硬件

然而对于那些支持POSIX标准的底层文件系统而言,他们却往往缺少事务支持(因为overhead太大),DFS必须在顶层加上WAL或者放大底层文件系统内部的事务机制。而如果它们支持的话,顶层就能简化事务设计。

而对于Metadata,大如在分布式文件系统上做目录枚举,小如在本地文件系统上查找,无论是中心化还是分布式设计都无法在两种情况下性能高效。

新型的存储设备,例如SMR(瓦式磁盘,通过磁道重叠提高存储密度,只能顺序写,一种解决方案是Ext4+LFS缓存metadata),ZNS 固态硬盘等都是传统的基于block的文件系统无法处理的。

Ceph 架构

Reliable Autonomic Distributed Object Store(RADOS)是Ceph的核心,里面有多个Object Storage Devices(OSD),提供自我修复、自我管理、自我备份等机制。

在上层则通过librados库提供抽象,支持事务和各种原语。

object存在池子里,通过备份或者纠删码获得冗余,被划分到placement groups(PG)里。PG通过CRUSH伪随机数据分配算法分配给不同OSD,从而不需要metadata服务。通过这个间接层,Object能够进行迁移。

BlueStore

设计目标

  • Fast metadata operations
  • No consistency overhead for object writes
  • Copy-on-write clone operation
  • No journaling double-writes
  • Optimized I/O patterns for HDD and SSD

BlueFS 和 RocksDB

Metadata

通过将metadata存在RocksDB里,提供了快速的metadata操作。

这点很有趣,因为这里的metadata同时是本地的,也是分布式的。

这点可以和GFS做个对比,GFS的metadata在本地是inode,在master则是trie

例如,以O开头的key代表object的metadata,B代表block,C代表collection

C12.e4-6表示pool12中hash值以e4的高6位开头的object集合。(111001)

O12e532(111001)属于此集合,O12.e832 则不属于(111010)

这样通过改变位数,很容易使得集合分裂,非常高效。

无一致性Overhead

RocksDB运行于BlueFS之上,作出两个改变

  • 直接刷新缓存写入data
  • 复用BlueFS的WAL,直接刷新缓存写入metadata

COW

BlueStore使用COW机制,也就是先在其他地方写,写完之后让metadata指向new data。COW的好处在于没有double-writes (journal data)。

  • 对于大于最小分配size的写,当Data持久化后再把对应的MetaData插入RocksDB。
  • 对于小于最小分配size的写,把Data和MetaData同时插入RocksDB,Data之后异步地写入磁盘。这样不仅可以Batch利用带宽,同时优化IO模式,例如<64kb的HDD overwrite是异步的,<16kb的SDD overwrite是inplace的。

空间分配

Freelist manager 基于bitmap,bit per block(那你叫freelist干嘛啊),利用merge原子性反转多个位。

Allocator则是内存中的freelist拷贝,当分配完成后通知Freelist进行修改。为了节约空间,采用层次化的索引,1TB数据只需35MB

Cache

Blue Store与磁盘直接IO,因此无法利用page cache。

scan resistant 2Q 算法在内存中建立了write-through cache

cache通过OSD相同的CRUSH伪随机数据分配算法分配到指定核,因此核能准确找到2Q

Feature

checksum

每次写生成checksum,每次读验证checksum。

由于分布式系统大部分数据只读,可以通过IO hint控制checksum size。

例如只读的部分size可以更大,压缩的部分可以计算压缩后的checksum。

纠删码的覆写

仅支持RGW,因为纠删码只有在append/delete的情况下才能保证性能(不然修改的范围太大)

这里利用COW机制完成2PC,仅当所有备份OSD均正确overwrite时才会commit。

Transparent Compression

当压缩数据部分被修改时,新的数据只会COW在别的地方而不会覆写压缩数据本身。

只有当overwrite太多导致碎片化时,才会读取这些数据再进行覆写,一般来说通过hint仅压缩那些不容易被覆写的数据。

举个例子 1234 -> 1234|2' -> 1234|2'|3' ->12'3'4'

探索新接口

因为BlueFS自己控制IO,所以开源社区正在对新硬件提供支持

总结

Problem: 传统单机文件系统不支持分布式文件系统场景

Related work: 事务支持overhead大,性能不佳

Observation: 利用RocksDB存储Metadata,COW

Solution: COW提供事务支持,分布式的metadata就是本地的metadata

Evaluation: 性能提高,支持新硬件

Comments:需要特殊定制的数据库, 而且天生为Ceph服务,定制化程度高

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ceph
  • BlueStore
  • Feature
  • 总结
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档