-
高性能 a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高 b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等 c. 能够支持上千个存储节点的规模,支持TB到PB级的数据
-
高可扩展性 a. 去中心化 b. 扩展灵活 c. 随着节点增加而线性增长
-
特性丰富 a. 支持三种存储接口:块存储、文件存储、对象存储
全称Reliable Autonomic Distributed Object Store,即可靠的、自动化的、分布式对象存储系统。RADOS是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
Librados
Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
Crush
Crush算法是Ceph的两大创新之一,通过Crush算法的寻址操作,Ceph得以摒弃了传统的集中式存储元数据寻址方案。而Crush算法在一致性哈希基础上很好的考虑了容灾域的隔离,使得Ceph能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时,Crush算法有相当强大的扩展性,理论上可以支持数千个存储节点,这为Ceph在大规模云环境中的应用提供了先天的便利。
Pool
Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略,支持两种类型:副本(replicated)和 纠删码( Erasure Code);
PG
PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略,简单点说就是相同PG内的对象都会放到相同的硬盘上,PG是 ceph的逻辑概念,服务端数据均衡和恢复的最小粒度就是PG,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据;
Object
OSD是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等;
Pool、PG和OSD的关系:
-
一个Pool里有很多PG;
-
一个PG里包含一堆对象,一个对象只能属于一个PG;
-
PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型);
一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。负责坚实整个Ceph集群运行的Map视图(如OSD Map、Monitor Map、PG Map和CRUSH Map),维护集群的健康状态,维护展示集群状态的各种图表,管理集群客户端认证与授权;
MDS
MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;
Mgr
ceph 官方开发了 ceph-mgr,主要目标实现 ceph 集群的管理,为外界提供统一的入口。例如cephmetrics、zabbix、calamari、promethus
RGW
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
Admin
-
-
通过Raid与LVM等手段,对数据提供了保护;
-
多块廉价的硬盘组合起来,提高容量;
-
多块磁盘组合出来的逻辑盘,提升读写效率;
-
-
缺点:
-
采用SAN架构组网时,光纤交换机,造价成本高;
-
主机之间无法共享数据;
-
-
使用场景
-
docker容器、虚拟机磁盘存储分配;
-
日志存储;
-
文件存储;
-
2、文件存储(CephFS)
-
优点:
-
造价低,随便一台机器就可以了;
-
方便文件共享;
-
-
缺点:
-
读写速率低;
-
传输速率慢;
-
-
使用场景
-
日志存储;
-
FTP、NFS;
-
其它有目录结构的文件存储
-
3、对象存储(Object)(适合更新变动较少的数据)
-
优点:
-
具备块存储的读写高速;
-
具备文件存储的共享等特性;
-
-
使用场景
-
图片存储;
-
x.0.z - 开发版(给早期测试者和勇士们)
x.1.z - 候选版(用于测试集群、高手们)
x.2.z - 稳定、修正版(给用户们)
版本号 | 发布时间 | |
---|---|---|
Argonaut | 0.48版本(LTS) | 2012年6月3日 |
Bobtail | 0.56版本(LTS) | 2013年5月7日 |
Cuttlefish | 0.61版本 | 2013年1月1日 |
Dumpling | 0.67版本(LTS) | 2013年8月14日 |
Emperor | 0.72版本 | 2013年11月9 |
Firefly | 0.80版本(LTS) | 2014年5月 |
Giant | Giant | October 2014 - April 2015 |
Hammer | Hammer | April 2015 - November 2016 |
Infernalis | Infernalis | November 2015 - June 2016 |
Jewel | 10.2.9 | 2016年4月 |
Kraken | 11.2.1 | 2017年10月 |
Luminous | 12.2.12 | 2017年10月 |
mimic | 13.2.7 | 2018年5月 |
nautilus | 14.2.5 |
-
-
ceph-osd的新后端存储BlueStore已经稳定,是新创建的OSD的默认设置。 BlueStore通过直接管理物理HDD或SSD而不使用诸如XFS的中间文件系统,来管理每个OSD存储的数据,这提供了更大的性能和功能。
-
BlueStore支持Ceph存储的所有的完整的数据和元数据校验。
-
BlueStore内嵌支持使用zlib,snappy或LZ4进行压缩。(Ceph还支持zstd进行RGW压缩,但由于性能原因,不为BlueStore推荐使用zstd)
-
-
集群的总体可扩展性有所提高。我们已经成功测试了多达10,000个OSD的集群。
-
ceph-mgr
-
ceph-mgr是一个新的后台进程,这是任何Ceph部署的必须部分。虽然当ceph-mgr停止时,IO可以继续,但是度量不会刷新,并且某些与度量相关的请求(例如,ceph df)可能会被阻止。我们建议您多部署ceph-mgr的几个实例来实现可靠性。
-
ceph-mgr守护进程daemon包括基于REST的API管理。注:API仍然是实验性质的,目前有一些限制,但未来会成为API管理的基础。
-
ceph-mgr还包括一个Prometheus插件。
-
-
最少三台Centos7系统虚拟机用于部署Ceph集群。硬件配置:2C4G,另外每台机器最少挂载三块硬盘(每块盘5G)
(1)关闭防火墙: systemctl stop firewalld systemctl disable firewalld (2)关闭selinux: sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 (3)关闭NetworkManager systemctl disable NetworkManager && systemctl stop NetworkManager (4)添加主机名与IP对应关系: vim /etc/hosts 192.168.0.201 cephnode01 192.168.0.202 cephnode02 192.168.0.203 cephnode03 (5)设置主机名: hostnamectl set-hostname cephnode01 hostnamectl set-hostname cephnode02 hostnamectl set-hostname cephnode03 (6)同步网络时间和修改时区 systemctl restart chronyd.service && systemctl enable chronyd.service cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (7)设置文件描述符 echo "ulimit -SHn 102400" >> /etc/rc.local cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF (8)内核参数优化 cat >> /etc/sysctl.conf << EOF kernel.pid_max = 4194303 vm.swappiness = 0 EOF sysctl -p (9)在cephnode01上配置免密登录到cephnode02、cephnode03 ssh-copy-id root@cephnode02 ssh-copy-id root@cephnode03 (10)read_ahead,通过数据预读并且记载到随机访问内存方式提高磁盘读操作 echo "8192" > /sys/block/sda/queue/read_ahead_kb (11) I/O Scheduler,SSD要用noop,SATA/SAS使用deadline echo "deadline" >/sys/block/sd[x]/queue/scheduler echo "noop" >/sys/block/sd[x]/queue/scheduler
# vim /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch gpgcheck=0 priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS gpgcheck=0 priority=1
安装ceph-deploy,在node01执行(确认ceph-deploy版本是否为2.0.1,)
# yum install -y ceph-deploy # ceph-deploy --version Traceback (most recent call last): File "/usr/bin/ceph-deploy", line 18, in <module> from ceph_deploy.cli import main File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module> import pkg_resources ImportError: No module named pkg_resources 解决报错 # yum install ceph-deploy python-pip python-setuptools -y # ceph-deploy --version 2.0.1
创建一个my-cluster目录,所有命令在此目录下进行,在node01执行(文件位置和名字可以随意)
# mkdir /my-cluster # cd /my-cluster
创建一个Ceph集群,在node01执行
# ceph-deploy new cephnode01 cephnode02 cephnode03
安装Ceph软件(每个节点执行)
# yum -y install epel-release # yum install -y ceph
生成monitor检测集群所使用的的秘钥
# ceph-deploy mon create-initial
安装Ceph CLI,方便执行一些管理命令
# ceph-deploy admin cephnode01 cephnode02 cephnode03
配置mgr,用于管理集群
# ceph-deploy mgr create cephnode01 cephnode02 cephnode03
部署rgw
# yum install -y ceph-radosgw # ceph-deploy rgw create cephnode01
部署MDS(CephFS)
# ceph-deploy mds create cephnode01 cephnode02 cephnode03
添加osd
for dev in /dev/sdb /dev/sdc /dev/sdd do ceph-deploy osd create cephnode01 --data $dev ceph-deploy osd create cephnode02 --data $dev ceph-deploy osd create cephnode03 --data $dev done
[root@cephnode01 my-cluster]# ceph -s
cluster:
id: f23ede63-7119-47b2-8f3b-d52797d16a03
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03
mgr: cephnode01(active), standbys: cephnode02, cephnode03
osd: 9 osds: 9 up, 9 in
data:
pools: 5 pools, 96 pgs
objects: 187 objects, 1.1 KiB
usage: 9.1 GiB used, 171 GiB / 180 GiB avail
pgs: 96 active+clean
[root@cephnode01 my-cluster]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17537 root default
-3 0.05846 host cephnode01
0 hdd 0.01949 osd.0 up 1.00000 1.00000
3 hdd 0.01949 osd.3 up 1.00000 1.00000
6 hdd 0.01949 osd.6 up 1.00000 1.00000
-5 0.05846 host cephnode02
1 hdd 0.01949 osd.1 up 1.00000 1.00000
4 hdd 0.01949 osd.4 up 1.00000 1.00000
7 hdd 0.01949 osd.7 up 1.00000 1.00000
-7 0.05846 host cephnode03
2 hdd 0.01949 osd.2 up 1.00000 1.00000
5 hdd 0.01949 osd.5 up 1.00000 1.00000
8 hdd 0.01949 osd.8 up 1.00000 1.00000
global:全局配置。
osd:osd专用配置,可以使用osd.N,来表示某一个OSD专用配置,N为osd的编号,如0、2、1等。
mon:mon专用配置,也可以使用mon.A来为某一个monitor节点做专用配置,其中A为该节点的名称,ceph-monitor-2、ceph-monitor-1等。使用命令 ceph mon dump可以获取节点的名称。
client:客户端专用配置。
2、配置文件可以从多个地方进行顺序加载,如果冲突将使用最新加载的配置,其加载顺序为。
$CEPH_CONF环境变量
-c 指定的位置
/etc/ceph/ceph.conf
~/.ceph/ceph.conf
./ceph.conf
3、配置文件还可以使用一些元变量应用到配置文件,如。
$cluster:当前集群名。
$type:当前服务类型。
$id:进程的标识符。
$host:守护进程所在的主机名。
$name:值为$type.$id。
[global]#全局设置 fsid = xxxxxxxxxxxxxxx #集群标识ID mon host = 10.0.1.1,10.0.1.2,10.0.1.3 #monitor IP 地址 auth cluster required = cephx #集群认证 auth service required = cephx #服务认证 auth client required = cephx #客户端认证 osd pool default size = 3 #最小副本数 默认是3 osd pool default min size = 1 #PG 处于 degraded 状态不影响其 IO 能力,min_size是一个PG能接受IO的最小副本数 public network = 10.0.1.0/24 #公共网络(monitorIP段) cluster network = 10.0.2.0/24 #集群网络 max open files = 131072 #默认0#如果设置了该选项,Ceph会设置系统的max open fds mon initial members = node1, node2, node3 #初始monitor (由创建monitor命令而定) ############################################################## [mon] mon data = /var/lib/ceph/mon/ceph-$id mon clock drift allowed = 1 #默认值0.05#monitor间的clock drift mon osd min down reporters = 13 #默认值1#向monitor报告down的最小OSD数 mon osd down out interval = 600 #默认值300 #标记一个OSD状态为down和out之前ceph等待的秒数 ############################################################## [osd] osd data = /var/lib/ceph/osd/ceph-$id osd mkfs type = xfs #格式化系统类型 osd max write size = 512 #默认值90 #OSD一次可写入的最大值(MB) osd client message size cap = 2147483648 #默认值100 #客户端允许在内存中的最大数据(bytes) osd deep scrub stride = 131072 #默认值524288 #在Deep Scrub时候允许读取的字节数(bytes) osd op threads = 16 #默认值2 #并发文件系统操作数 osd disk threads = 4 #默认值1 #OSD密集型操作例如恢复和Scrubbing时的线程 osd map cache size = 1024 #默认值500 #保留OSD Map的缓存(MB) osd map cache bl size = 128 #默认值50 #OSD进程在内存中的OSD Map缓存(MB) osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默认值rw,noatime,inode64 #Ceph OSD xfs Mount选项 osd recovery op priority = 2 #默认值10 #恢复操作优先级,取值1-63,值越高占用资源越高 osd recovery max active = 10 #默认值15 #同一时间内活跃的恢复请求数 osd max backfills = 4 #默认值10 #一个OSD允许的最大backfills数 osd min pg log entries = 30000 #默认值3000 #修建PGLog是保留的最大PGLog数 osd max pg log entries = 100000 #默认值10000 #修建PGLog是保留的最大PGLog数 osd mon heartbeat interval = 40 #默认值30 #OSD ping一个monitor的时间间隔(默认30s) ms dispatch throttle bytes = 1048576000 #默认值 104857600 #等待派遣的最大消息数 objecter inflight ops = 819200 #默认值1024 #客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 osd op log threshold = 50 #默认值5 #一次显示多少操作的log osd crush chooseleaf type = 0 #默认值为1 #CRUSH规则用到chooseleaf时的bucket的类型 ############################################################## [client] rbd cache = true #默认值 true #RBD缓存 rbd cache size = 335544320 #默认值33554432 #RBD缓存大小(bytes) rbd cache max dirty = 134217728 #默认值25165824 #缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through rbd cache max dirty age = 30 #默认值1 #在被刷新到存储盘前dirty数据存在缓存的时间(seconds) rbd cache writethrough until flush = false #默认值true #该选项是为了兼容linux-2.6.32之前的virtio驱动,避免因为不发送flush请求,数据不回写 #设置该参数后,librbd会以writethrough的方式执行io,直到收到第一个flush请求,才切换为writeback方式。 rbd cache max dirty object = 2 #默认值0 #最大的Object对象数,默认为0,表示通过rbd cache size计算得到,librbd默认以4MB为单位对磁盘Image进行逻辑切分 #每个chunk对象抽象为一个Object;librbd中以Object为单位来管理缓存,增大该值可以提升性能 rbd cache target dirty = 235544320 #默认值16777216 #开始执行回写过程的脏数据大小,不能超过 rbd_cache_max_dirty
RBD
-
RBD 就是 Ceph 里的块设备,一个 4T 的块设备的功能和一个 4T 的 SATA 类似,挂载的 RBD 就可以当磁盘用;
-
resizable:这个块可大可小;
-
data striped:这个块在Ceph里面是被切割成若干小块来保存,不然 1PB 的块怎么存的下;
-
thin-provisioned:精简置备,1TB 的集群是能创建无数 1PB 的块的。其实就是块的大小和在 Ceph 中实际占用大小是没有关系的,刚创建出来的块是不占空间,今后用多大空间,才会在 Ceph 中占用多大空间。举例:你有一个 32G 的 U盘,存了一个2G的电影,那么 RBD 大小就类似于 32G,而 2G 就相当于在 Ceph 中占用的空间 ;
块存储本质就是将裸磁盘或类似裸磁盘(lvm)设备映射给主机使用,主机可以对其进行格式化并存储和读取数据,块设备读取速度快但是不支持共享。
ceph可以通过内核模块和librbd库提供块设备支持。客户端可以通过内核模块挂在rbd使用,客户端使用rbd块设备就像使用普通硬盘一样,可以对其就行格式化然后使用;客户应用也可以通过librbd使用ceph块,典型的是云平台的块存储服务,云平台可以使用rbd作为云的存储后端提供镜像存储、volume块或者客户的系统引导盘等。
使用场景:
-
云平台(OpenStack做为云的存储后端提供镜像存储)
-
K8s容器
-
map成块设备直接使用
-
RBD常用命令
命令 | 功能 |
---|---|
rbd create | 创建块设备映像 |
rbd ls | 列出 rbd 存储池中的块设备 |
rbd info | 查看块设备信息 |
rbd diff | 可以统计 rbd 使用量 |
rbd map | 映射块设备 |
rbd showmapped | 查看已映射块设备 |
rbd remove | 删除块设备 |
rbd resize | 更改块设备的大小 |
1、创建rbd使用的pool # ceph osd pool create rbd 32 32 # ceph osd pool application enable rbd rbd 2、创建一个块设备 # rbd create --size 10240 image01 3、查看块设备 # rbd ls # rbd info image01 4、将块设备映射到系统内核 # rbd map image01 5、禁用当前系统内核不支持的feature # rbd feature disable foo_image exclusive-lock, object-map, fast-diff, deep-flatten 6、再次映射 # rbd map image01 7、格式化块设备镜像 # mkfs.xfs /dev/rbd0 8、mount到本地 # mount /dev/rbd0 /mnt # umount /mnt 9、取消块设备和内核映射 # rbd unmap image01 10、删除RBD块设备 # rbd rm image01
创建快照 rbd create --size 10240 image02 rbd snap create image02@image02_snap01 列出创建的快照 # rbd snap list image02 # rbd ls -l 查看快照信息 # rbd info image02@image02_snap01 克隆快照(快照必须处于被保护状态才能被克隆) # rbd snap protect image02@image02_snap01 # rbd clone rbd/image02@image02_snap01 kube/image02_clone01 查看快照的children # rbd children image02 去掉快照的parent # rbd flatten kube/image02_clone01 恢复快照 # rbd snap rollback image02@image02_snap01 删除快照 # rbd snap unprotect image02@image02_snap01 # rbd snap remove image02@image02_snap01
导出rbd镜像 # rbd export image02 /tmp/image02 导入 # rbd import /tmp/image02 rbd/image02 --image-format 2
Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问. Jewel 版本 (10.2.0) 是第一个包含稳定 CephFS 的 Ceph 版本. CephFS 需要至少一个元数据服务器 (Metadata Server - MDS) daemon (ceph-mds) 运行, MDS daemon 管理着与存储在 CephFS 上的文件相关的元数据, 并且协调着对 Ceph 存储系统的访问。
二、CephFS 架构
底层是核心集群所依赖的, 包括:
-
OSDs (ceph-osd): CephFS 的数据和元数据就存储在 OSDs 上
-
MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元数据
-
Mons (ceph-mon): Monitors 管理着集群 Map 的主副本 Ceph 存储集群的协议层是 Ceph 原生的 librados 库, 与核心集群交互.
CephFS 库层包括 CephFS 库 libcephfs, 工作在 librados 的顶层, 代表着 Ceph 文件系统.最上层是能够访问 Ceph 文件系统的两类客户端.
三、配置 CephFS MDS
要使用 CephFS, 至少就需要一个 metadata server 进程。可以手动创建一个 MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 来部署 MDS。
登录到ceph-deploy工作目录执行
# ceph-deploy mds create $hostname
四、部署Ceph文件系统
部署一个 CephFS, 步骤如下:
-
在一个 Mon 节点上创建 Ceph 文件系统.
-
若使用 CephX 认证,需要创建一个访问 CephFS 的客户端
-
挂载 CephFS 到一个专用的节点.
-
以 kernel client 形式挂载 CephFS
-
以 FUSE client 形式挂载 CephFS
-
1、创建一个 Ceph 文件系统
1、CephFS 需要两个 Pools - cephfs-data 和 cephfs-metadata, 分别存储文件数据和文件元数据
# ceph osd pool create cephfs-data 16 16
# ceph osd pool create cephfs-metadata 16 16
注:一般 metadata pool 可以从相对较少的 PGs 启动, 之后可以根据需要增加 PGs. 因为 metadata pool 存储着 CephFS 文件的元数据, 为了保证安全, 最好有较多的副本数. 为了能有较低的延迟, 可以考虑将 metadata 存储在 SSDs 上.
2、创建一个 CephFS, 名字为 cephfs:
# ceph fs new cephfs cephfs-metadata cephfs-data
3、验证至少有一个 MDS 已经进入 Active 状态
ceph fs status cephfs
4、在 Monitor 上, 创建一个用户,用于访问CephFs
# ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'
5、验证key是否生效
ceph auth get client.cephfs
6、检查CephFs和mds状态
ceph mds stat
ceph fs ls
ceph fs status
以 kernel client 形式挂载 CephFS
# mkdir /cephfs
挂载目录
# mount -t ceph 192.168.0.132:6789,192.168.0.133:6789,192.168.0.134:6789:/ /cephfs/ -o name=cephfs,secret=AQDHjeddHlktJhAAxDClZh9mvBxRea5EI2xD9w==
自动挂载
# echo "mon1:6789,mon2:6789,mon3:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab
验证
# stat -f /cephfs
安装ceph-common yum install -y ceph-common 安装ceph-fuse yum install -y ceph-fuse 将集群的ceph.conf拷贝到客户端 scp root@192.168.0.132:/etc/ceph/ceph.conf /etc/ceph/ chmod 644 /etc/ceph/ceph.conf 使用 ceph-fuse 挂载 CephFS ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.0.132:6789,192.168.0.133:6789,192.168.0.134:6789 /cephfs/ 验证 CephFS 已经成功挂载 stat -f /cephfs 自动挂载 echo "none /cephfs fuse.ceph ceph.id=cephfs[,ceph.conf=/etc/ceph/ceph.conf],_netdev,defaults 0 0"| sudo tee -a /etc/fstab 或 echo "id=cephfs,conf=/etc/ceph/ceph.conf /mnt/ceph2 fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab
卸载
fusermount -u /cephfs
-
当cephfs的性能出现在MDS上时,就应该配置多个活动的MDS。通常是多个客户机应用程序并行的执行大量元数据操作,并且它们分别有自己单独的工作目录。这种情况下很适合使用多主MDS模式。
-
配置MDS多主模式 每个cephfs文件系统都有一个max_mds设置,可以理解为它将控制创建多少个主MDS。注意只有当实际的MDS个数大于或等于max_mds设置的值时,mdx_mds设置才会生效。例如,如果只有一个MDS守护进程在运行,并且max_mds被设置为两个,则不会创建第二个主MDS。
# ceph fs set cephfs max_mds 2
配置备用MDS 即使有多个活动的MDS,如果其中一个MDS出现故障,仍然需要备用守护进程来接管。因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。
但如果你确信你的MDS不会出现故障,可以通过以下设置来通知ceph不需要备用MDS,否则会出现insufficient standby daemons available告警信息:
# ceph fs set <fs> standby_count_wanted 0
设置max_mds # ceph fs set max_mds 1 删除不需要的rank ceph mds deactivate cephfs:2
Ceph 的监控可视化界面方案很多----grafana、Kraken。但是从Luminous开始,Ceph 提供了原生的Dashboard功能,通过Dashboard可以获取Ceph集群的各种基本状态信息。 mimic版 (nautilus版) dashboard 安装。如果是 (nautilus版) 需要安装 ceph-mgr-dashboard
1、在每个mgr节点安装 # yum install ceph-mgr-dashboard 2、开启mgr功能 # ceph mgr module enable dashboard 3、生成并安装自签名的证书 # ceph dashboard create-self-signed-cert 4、创建一个dashboard登录用户名密码 # ceph dashboard set-login-credentials admin admin 5、查看服务访问方式 # ceph mgr services
指定集群dashboard的访问端口 # ceph config-key set mgr/dashboard/server_port 7000 指定集群 dashboard的访问IP # ceph config-key set mgr/dashboard/server_addr $IP
1、创建rgw用户 # radosgw-admin user create --uid=user01 --display-name=user01 --system 2、提供Dashboard证书 # ceph dashboard set-rgw-api-access-key $access_key # ceph dashboard set-rgw-api-secret-key $secret_key 3、配置rgw主机名和端口 # ceph dashboard set-rgw-api-host 192.168.0.132 # ceph dashboard set-rgw-api-port 7480 4、刷新web页面