没有合适的资源?快使用搜索试试~ 我知道了~
Ceph源码分析:librbd
资源推荐
资源详情
资源评论
Ceph源码分析:librbd
Client Demo
Librados
Librbd
回顾:关于ceph&rados
Ceph 是一个基于RADOS构建的,提供块存储、对象存
储和文件存储的统一存储系统;其高可靠性和高扩展性
可支撑PB至EB级别的数据;使用CRUSH算法使得客户
端请求不必访问元数据服务,通过计算直接访问目的端。
核心组件
• MON 管理ceph集群,mon状态影响集群状态
• MGR 提供集群的监控信息,及插件支持(如crash)
• OSD 对象存储服务,映射到实际的块设备
扩展组件
• MDS 元数据服务,为cephFS服务
• RGW gateway服务,为对象存储服务
核心特点:
• 高可扩展性:去中心化、扩展灵活
• 高可用性:副本数灵活控制、故障域隔离、故障自
愈
• 高可靠性:没有单点故障,自动管理,自动修复
• 高性能:数据分布均衡,并行化度高
块存储:通过
librados
中的
rados client
访问
rados
rgw
librados
librbd fuse
osdc
osdc
os
network
回顾:关于ceph&rados
各类读写操作(数据&元数据):
librados 为对外 pool api 支撑,向下执行则交给 osdc,osdc封装操
作,计算对象地址,发送请求,处理超时。
osdc
librados
Rados Client
IoctxImpl
Objecter
回顾:关于Object
1. RBD客户端生成形如” rbd_data.10a06b8
b4567.0000000000001200”的对象名;
2. 根据object name计算出一个hash值;
3. 按pg数取模,即得到pgid
Hash & Mod
0x4979FB12 mod 256 = 18
0x4979FC12 mod 256 = 18
0x4979FD12 mod 256 = 18
…
2^8=256,后八位相同,则落在同一个pg
0x00(0000) mod 12 = 0
0x0c(1100) mod 12 = 0
0x18(11000) mod 12 = 0
…
2^4=16,后两位相同,则落在同一个pg
rbd_data.xxx.xxx:
Object 实体数据
rbd_directory:
记录当前pool中的rbd name及id
rbd_header.xxx:
元数据,例如支持的feature,orde
r,format版本等,对应rbd info命令
rbd_id.xxx
记录rbd的id
rbd_info:
overwrite validated
1. H 版本及以前,使用format 1
2. rbd_directory 实际get后为空
每一个结构实际都是
object
剩余31页未读,继续阅读
资源评论
cigarL
- 粉丝: 8
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功