1.ceph
rados: 可靠地 自动的 分布式 对象存储(复制模式)crash算法
特性:高效性,统一性(文件存储,块存储,对象存储),可扩展性
通过cluster map(no db)
nova>>libvirtd>>qemu(vm)>>librbd>>librados>>rados(ceph)<<volume backend(存储驱动)<<cinder
ceph(rados)需要Librados库 伪平衡 需hash相对平衡
图一
monitor (paxos 选举) map pgmonitor process 检测 pool's pg
not new >> creating crush算法 是哪三个pg then create link (peering) conductor pg
cluster map pg map
osd daemon map(crush算法与pg的映射)
crush map
三类集群 disk osd nonitor
块存储 kernal librbd(划分object(二进制min4m))
六台服务器 三台monnitor 三台 osd 节点(高性能处理pg) (有多个isd demon)连在一个交换机上
网络
(集群)北向网络 (与客户端通信) 万兆网络
osd daemon 负责存储 后端数据的复制 监控自己和其他人(被动)定期汇报(2s后stable) 200后踢出集群
pg对应的osd可跨节点
东西网络(ceph内部 osd 拷贝东西) 万兆网络
lvm中的vg等于包了许多pg == ceph’s pool(手动建立volumes ceph osd pool create volumes 128) 一个pg不能属于多个pool
vm 客户端</dev/vdb> 的块设备 进入pool 里划分 一个块(image)可动态扩容
客户端需知道两个要素 》》》pool id &object id
往ceph里存 找到pg存(object id hash 取模& pool id hash 取模)==pg
pg>>osd daemon(提前crush算法保存到crush map里)
客户端连接到 librbd到monitor节点上要(tcp三次握手) cluster map
要用先搭建 ceph
用户硬盘》》image(pool's's pg)
转换
文件 librdb>>>二进制(object id &pool id)>>
object>>>image>>pg
pg保存状态 以变量来存储
客户端直接与osd daemon交流 尽量多节点
pg仅是寻找osd daemon
客户端的vdb=pool's image(just a limit num)>>>>>>pgsjg
pool
1.pg
2.副本数
3.crush规则 怎样找到osd daemon 列表(acting set)
4.用户及权限
pooltype
1.copy
2.correct(速度慢 不能清理垃圾 不能自我检测)
ceph 垃圾回收
1.classic 全部锁掉
2.trunk 一部分锁掉 用size 检测 一天一清理
pg:
epoach:单调递增的版本号
acting set:osd列表,primary osd,replicated osd 列表
up set:acting set 过去的版本
pg tmp:临时产生的pg (新加的pg 同步数据)
pg状态:
ceph -s
zabeikes 监控 只需一个monitor ceph -s(creating peering(link) active(working) clean(ok) stable backfilling recoverry)
osd daemon 状态:default 2s respond
up(可io) down in(1) out(0)
mon 节点 安装了 monitor daemon
osd 节点 osd daemon
集群(北向)网络功能 连接客户端 拿到classic map 算出osd then 链接 万兆网络 更新维护classic map
复制(东西)网络 复制 监控
ceph 缓存
1.客户端 :rbd缓存
2. ceph缓存: cache tiering
libvit>>>qemu>>librbd(librados)-->rbd cache(write back(异步,不安全,速度快)& write through(同步存,适用读写混合型,))
client》》》sshd pool>>volumes pool 可提升性能 成本高 提高并不明显
二者对比 :
一个是内存级别
一个是基于sshd
服务端不存在数据不一致
ceph 部署(auto )