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稳定性测试
模拟线上故障等