CEPH-5中,如何深入理解并管理集群的基本概念?
摘要:ceph集群基本概念与管理 ceph集群基本概念 ceph集群整体结构图 名称 作用 osd 全称Object Storage Device,主要功能是存储数据、复制数据、平衡数据、恢复数据等。每个OSD间会进行心跳检查,并将一些变化情况上
ceph集群基本概念与管理
ceph集群基本概念
ceph集群整体结构图
名称
作用
osd
全称Object Storage Device,主要功能是存储数据、复制数据、平衡数据、恢复数据等。每个OSD间会进行心跳检查,并将一些变化情况上报给Ceph Monitor。
mon
全称Monitor,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,根据Map图和object id等计算出数据最终存储的位置。
mgr
全称Manager,负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。
mds
全称是MetaData Server,主要保存的文件系统服务的元数据,如果使用cephfs功能才会启用它,对象存储和块存储设备是不需要使用该服务。
rgw
全称radosgw,是一套基于当前流行的RESTFUL协议的网关,ceph对象存储的入口,内嵌civetweb服务,不启用对象存储,则不需要安装。
ceph配置文件
标准位置:/etc/ceph/ceph.conf
组成部分:
## 全局配置,全局生效
[global]
fsid = 537175bb-51de-4cc4-9ee3-b5ba8842bff2
public_network = 10.0.0.0/8
cluster_network = 10.0.0.0/8
mon_initial_members = ceph-node1
mon_host = 10.153.204.xx:6789,10.130.22.xx:6789,10.153.204.xx:6789
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
## osd专用配置,可以使用osd.num 来表示具体的哪一个osd
[osd]
[osd.1]
## monitor专用配置,可以使用mon.A 来表示具体的哪一个monitor,其中A表示该节点的名称,使用ceph mon dump可以查看。
[mon]
[mon.a]
## 客户端专用配置
[client]
ceph配置文件的加载顺序:
$CEPH_CONF 环境变量
-c 指定的位置
/etc/ceph/ceph.conf
~/.ceph/ceph.conf
./ceph.conf
存储池类型
副本池:replicated
定义每个对象在集群中保存为多少个副本,默认为三个副本,一主两备
实现高可用,副本池是 ceph 默认的存储池类型。
纠删码池:erasure code
把各对象存储为 N=K+M 个块,其中 K 为数据块数量,M 为编码块数量,因此存储池的尺寸为 K+M。
即数据保存在 K 个数据块,并提供 M 个冗余块提供数据高可用,那么最多能故障的块就是 M 个,实际的磁盘占用就是 K+M 块,因此相比副本池机制比较节省存储资源,一般采用 8+4 机制,即 8 个数据块+4 个冗余块,那么也就是 12 个数据块有 8 个数据块保存数据,有 4 个 实现数据冗余,即 1/3 的磁盘空间用于数据冗余,比默认副本池的三倍冗余节省空间,但是不能出现大于一定数据块故障。
不是所有的应用都支持纠删码池,RBD 只支持副本池而 radosgw 则可以支持纠删码池。
对于文件系统及块存储,由于读写性能的问题 Ceph 不建议使用纠删码池。
如何查看某个存储池为什么类型:
$ ceph osd pool get test crush_rule
crush_rule: erasure-code
副本池IO
将一个数据对象存储为多个副本。
在客户端写入操作时,ceph 使用 CRUSH 算法计算出与对象相对应的 PG ID 和 primary OSD ,主 OSD 根据设置的副本数、对象名称、存储池名称和集群运行图(cluster map)计算出 PG 的 各辅助 OSD,然后由 OSD 将数据再同步给辅助 OSD。
读写数据:
## 读数据
1.客户端发送读请求,RADOS 将请求发送到主 OSD。
2.主 OSD 从本地磁盘读取数据并返回数据,最终完成读请求。
## 写数据
1.客户端APP请求写入数据,RADOS发送数据到主OSD。
2.主OSD写入完毕后将完成信号给客户端APP,并发送数据到各副本OSD。
