ceph总结复习
Posted renyz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph总结复习相关的知识,希望对你有一定的参考价值。
一、ceph概念
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。ceph 的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。
特点:
(1)高性能:
a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
(2)高可用性:
a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。
(3)高可扩展性:
a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。
(4)特性丰富:
a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。
二、ceph组件
(1)Monitors:监视器,维护集群状态的多种映射,同时提供认证和日志记录服务,包括有关monitor 节点端到端的信息,其中包括 Ceph 集群ID,监控主机名和IP以及端口。并且存储当前版本信息以及最新更改信息,通过 "ceph mon dump"查看 monitor map。
(2)MDS(Metadata Server):Ceph 元数据,主要保存的是Ceph文件系统的元数据。注意:ceph的块存储和ceph对象存储都不需要MDS。
(3)OSD:即对象存储守护程序,但是它并非针对对象存储。是物理磁盘驱动器,将数据以对象的形式存储到集群中的每个节点的物理磁盘上。OSD负责存储数据、处理数据复制、恢复、回(Backfilling)、再平衡。完成存储数据的工作绝大多数是由 OSD daemon 进程实现。在构建 Ceph OSD的时候,建议采用SSD 磁盘以及xfs文件系统来格式化分区。此外OSD还对其它OSD进行心跳检测,检测结果汇报给Monitor
(4)RADOS:Reliable Autonomic Distributed Object Store。RADOS是ceph存储集群的基础。在ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。
(5)librados:librados库,为应用程度提供访问接口。同时也为块存储、对象存储、文件系统提供原生的接口。
(6)RADOSGW:网关接口,提供对象存储服务。它使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接。并且提供S3 和 Swift(openstack) 兼容的RESTful API接口。
(7)RBD:块设备,它能够自动精简配置并可调整大小,而且将数据分散存储在多个OSD上。
(8)CephFS:Ceph文件系统,与POSIX兼容的文件系统,基于librados封装原生接口。
三、ceph数据存储过程
无论使用哪种存储方式(对象、块、文件系统),存储的数据都会被切分成Objects。Objects size大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的OID,由ino与ono生成。
ino:即是文件的File ID,用于在全局唯一标识每一个文件
ono:则是分片的编号
Ceph中的寻址至少要经历以下三次映射:
(1)File -> object映射
(2)Object -> PG映射,hash(oid) & mask -> pgid
(3)PG -> OSD映射,CRUSH算法
pool:是ceph存储数据时的逻辑分区,它起到namespace的作用。每个pool包含一定数量(可配置) 的PG。PG里的对象被映射到不同的Object上。pool是分布到整个集群的。 pool可以做故障隔离域,根据不同的用户场景不统一进行隔离。
四、ceph IO流程
1、正常IO流程
步骤:
1)client 创建cluster handler。
2)client 读取配置文件。
3)client 连接上monitor,获取集群map信息。
4)client 读写io 根据crshmap 算法请求对应的主osd数据节点。
5)主osd数据节点同时写入另外两个副本节点数据。
6)等待主节点以及另外两个副本节点写完数据状态。
7)主节点及副本节点写入状态都成功后,返回给client,io写入完成。
2、新主IO流程
新主IO流程步骤:
1)client连接monitor获取集群map信息。
2)同时新主osd1由于没有pg数据会主动上报monitor告知让osd2临时接替为主。
3)临时主osd2会把数据全量同步给新主osd1。
4)client IO读写直接连接临时主osd2进行读写。
5)osd2收到读写io,同时写入另外两副本节点。
6)等待osd2以及另外两副本写入成功。
7)osd2三份数据都写入成功返回给client, 此时client io读写完毕。
8)如果osd1数据同步完毕,临时主osd2会交出主角色。
9)osd1成为主节点,osd2变成副本。
五、ceph 命令
1、检测ceph集群状态:
ceph -s
2、查看osd状态:
ceph osd tree
3、列式pool列表
ceph osd lspools
4、创建pool
ceph osd pool create vms 1024
六、
七、
以上是关于ceph总结复习的主要内容,如果未能解决你的问题,请参考以下文章