ceph 简介以日常运维问题
Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性
架构
自下向上,可以将Ceph系统分为四个层次:
- 基础存储系统RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储)ceph一切都以对象形式存储,是ceph的基础
- 基础库LIBRADOS
- 高层应用接口:包括了三个部分:RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System)
- 应用层
组件介绍
- OSD ( Object Storage Device)
1 | 实际存储数据的进程。通常一个OSD daemon绑定一个物理磁盘。Client write/read 数据最终都会走到OSD去执行write/read操作。 |
- Monitor
1 | 负责监控整个集群健康状态 |
- Object
1 | Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。 |
- PG
1 | PG全称Placement Grouops,是一个逻辑的概念,引入PG这一层其实是为了更好的分配数据和定位数据。 |
- Libradio
1 | Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的 |
- CRUSH
1 | CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。 |
- RBD
1 | RBD全称RADOS block device,是Ceph对外提供的块设备服务。 |
- RGW
1 | RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。 |
- MDS
1 | MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。 |
io流程
- client 创建cluster handler。
- client 读取配置文件。 client 连接上monitor,获取集群map信息。
- client 读写io 根据crshmap 算法请求对应的主osd数据节点。
- 主osd数据节点同时写入另外两个副本节点数据。
- 主节点及副本节点写入状态都成功后,返回给client,io写入完成。
io算法流程
- File用户需要读写的文件。File->Object映射:
a. ino (File的元数据,File的唯一id ,rbd即为block_name_prefix)。
b. ono(File切分产生的某个object的累加的序号,默认以4M切分一个块大小)。
c. oid(object id: ino + ono)。
- Ceph指定一个静态hash函数计算oid的值,得到pgid。Object->PG映射:
a. hash(oid) & mask-> pgid 。
b. mask = PG总数m(m为2的整数幂)-1 。
- PG(Placement Group),用途是对object的存储进行组织和位置映射, 采用CRUSH算法,将pgid代入其中,然后得到一组OSD。PG->OSD映射:
a. CRUSH(pgid)->(osd1,osd2,osd3) 。
rbd io类似
日常运维问题
磁盘损坏(osd下线)
osd 自动摘掉
参考下线流程
osd下线
1 | # 备份crush map |
monitor 节点迁移
集群扩容缩容
日常割接
手动更改集群故障域
新集群上线
测试流程
性能测试
集群:
顺序读写
- 带宽
- iops
- latency
随机读写
- 带宽
- iops
- latency
混合读写
- 带宽
- iops
- latency
单盘:
顺序读写
- 带宽
- iops
- latency
随机读写
- 带宽
- iops
- latency
混合读写
- 带宽
- iops
- latency
稳定性测试
模拟线上故障等