ceph运维

osd的扩容和换盘

横向扩容(扩容节点)

扩展mds:
需要将扩容的节点上安装ceph所需要的包,然后将节点加入到集群中,在新节点安装ceph,ceph版本必须与原集群版本一致

yum -y install ceph 
rpm -qa | egrep -i “ceph|rados|rbd”
ceph -v

管理节点复制配置文件和密钥到新增节点

[root@node143 ceph]# ls
ceph.client.admin.keyring   ceph.conf
[root@ceph1 ceph]#ceph-deploy mds create client

扩展RGW对象网关:
需要将扩容的节点上安装ceph所需要的包,然后将节点加入到集群中,在新节点安装ceph,ceph版本必须与原集群版本一致

yum -y install ceph ceph-radosgw
rpm -qa | egrep -i “ceph|rados|rbd”
ceph -v

管理节点复制配置文件和密钥到新增节点

[root@node143 ceph]# ls
ceph.client.admin.keyring   ceph.conf
[root@ceph1 ceph]#ceph-deploy rgw create client
[root@ceph1 client]#vi /etc/ceph/ceph.conf
[client]
rgw frontends = civetweb port=80

扩展mon:
需要将扩容的节点上安装ceph所需要的包,然后将节点加入到集群中,在新节点安装ceph,ceph版本必须与原集群版本一致

yum -y install ceph 
rpm -qa | egrep -i “ceph|rados|rbd”
ceph -v

管理节点复制配置文件和密钥到新增节点

[root@node143 ceph]# ls
ceph.client.admin.keyring   ceph.conf
[root@ceph1 client]#vi /etc/ceph/ceph.conf
public_network=172.16.1.0/24
[root@ceph1 client]# ceph-deploy --overwrite-conf config push client ceph2
[root@ceph1 client]# ceph-deploy --overwrite-conf mon add client
[root@ceph1 client]# ceph-deploy --overwrite-conf mon add ceph2

扩展osd节点:
需要将扩容的节点上安装ceph所需要的包,然后将节点加入到集群中,最后添加 osd
关闭数据平衡

Ceph osd set noin
Ceph osd set nobackfill 
Ceph osd set noreblance

在新节点安装ceph,ceph版本必须与原集群版本一致

yum -y install ceph 
rpm -qa | egrep -i “ceph|rados|rbd”
ceph -v

管理节点复制配置文件和密钥到新增节点

[root@node143 ceph]# ls
ceph.client.admin.keyring   ceph.conf

后面与osd纵向扩容相同

Osd纵向扩容

准备好磁盘
将作为osd磁盘标记为GPT格式

parted /dev/sdc mklabel GPT
mkfs.xfs -f /dev/sdc

创建osd
ceph-volume lvm create --data /dev/sdb
查看创建osd

ceph-volume lvm list
lsblk

OSD会自动启动

ceph osd tree
systemctl enable ceph-osd@7
ceph -s

记得低峰时段打开数据平衡

ceph osd unset noin
Ceph osd unset noreblance
ceph osd unset nobackfill

Osd坏盘更换

Ceph osd perf  //查看磁盘的性能
Ceph osd out osd.5 //停掉osd.5
Ceph osd crush dump  //查看详细信息
Ceph osd crush rm osd.5 //删除crush信息
Ceph auth list   //列出认证信息
Ceph auth rm osd.5 //删除认证信息
Ceph osd rm osd.5    //删除osd,此时ceph osd tree已经没有对应的osd

数据一致性检查

Ceph pg scrub 1.1f    //简单检查
Ceph pg deep-scrub 1.1f  //深度检查

ceph集群运维

ls /usr/lib/systemd/system |grep ceph //所有的ceph服务
ceph osd stat   //查看osd的状态
ceph osd dump   //查看osd的详细信息
ceph osd df     //查看osd的空间使用情况
ceph mon stat/ceph mon dump //查看mon状态/详细信息
ceph quorum_status //查看仲裁情况
ceph fs dump    //查看文件系统
ceph --admin-daemon /var/run/ceph/cepn-mon.node-1.asok config show //通过socket文件查看信息
ceph --admin-daemon /var/run/ceph/ceph-mon.node-1.asok config set mon_clock_drift_allowed 1.0 //通过socket文件修改参数
ceph osd pool application enable pool-demo rbd //对pool进行分类
ceph osd pool application get pool-demo //查看pool的类型
ceph osd pool set-quota pool-demo max_objects 100 //设置pool的配额
ceph osd pool get-quota pool-demo  //查看pool的配额
ceph --admin-daemon /var/run/ceph/cepn-mon.node-1.asok config show |grep mon_allow_pool_delete //查看决定pool是否可删的参数
ceph --admin-daemon /var/run/ceph/ceph-mon.node-1.asok config set mon_allow_pool_delete true  //临时设置pool可删
将需要的永久修改的参数写到ceph.conf配置文件中,可永久生效
rados df/ceph df   //查看ceph存储情况
total pgs=(osds*100)/pool size   //计算pg数量

crush map规则

ceph osd crush dump //查看crush rule
ceph osd crush rule ls //查看osd的crush rule
ceph osd pool get ceph-demo crush_rule //查看pool的crush rule

定制crush规则

Ceph osd crush add-bucket node-1-ssd host //添加bucket
Ceph osd crush add-bucket node-2-ssd host
Ceph osd crush add-bucket node-3-ssd host
Ceph osd crush move node-1-ssd root=ssd  //将bucket添加到ssd中
Ceph osd crush move node-2-ssd root=ssd
Ceph osd crush move node-3-ssd root=ssd
Ceph osd crush move osd.3 host=node-1-ssd root=ssd //将osd移动到bucket下
Ceph osd crush move osd.4 host=node-2-ssd root=ssd
Ceph osd crush move osd.5 host=node-3-ssd root=ssd
Ceph osd crush rule create-replicated ssd-demo ssd host ssd //创建规则
Ceph osd pool set ceph-demo crush_rule ssd-demo //应用规则
Ceph osd map ceph-demo crush-demo.img //查看映射状态

此时重启了osd的服务,对应的osd会移动到原来的bucket下面,需要修改socket中的osd_crush_update_on_start为false。

Ceph管理和监控

Yum -y install ceph-mgr-dashboard
Ceph mgr module enable dashboard –force  //启用dashboard模块
Ceph mgr module ls  //查看模块
Ceph dashboard creat-self-signed-cert //使用内置生成的证书
Ceph config set mgr mgr/dashboard/server_addr 10.211.55.201
Ceph config set mgr mgr/dashboard/server_port 8080
Ceph config set mgr mgr/dashboard/ssl_server_port 8443
Ceph mgr services  //查看访问地址
Ceph dashboard ac-user-create cephadmin cephpassword administrator //授予一个角色

问题排查

时钟偏移

Ceph -s //查看健康状况时,有clock skew
Ceph health detail //查看健康详情
Ceph –admin-daemon /var/run/ceph/ceph-mon.node-1.asok config show|grep clock //查看允许时间偏移的范围
Ntpq -pn //查看时间同步状态
Systemctl stop ntpd 
Ntpdate ntp服务器地址 //同步时间
Hwclock -w  //写入到硬件时钟
Systemctl start ntpd

其他节点做相同操作

服务crash归档问题

Ceph -s //能够看见daemon have recently crashed的报错
查看ceph-client.rgw.node-1.log日志,提示端口被占用
Ceph crash ls //列出crash
Ceph crash info crash信息 //查看crash详细信息
Ceph crash archive-all //对所有的crash归档

Mon空间不足问题

Ceph -s //提示 mons node-1,node-2 are low on available space
Ceph daemon mon.node-1 config show |grep mon |grep data //查看预设值

处理办法是调大mon的空间

ceph测试

Mon高可用测试,只允许半数的mon出现异常
Mds主从切换,当主mds宕掉时,会发生降级,从升级为主
Rgw高可用测试,做了高可用的rgw,宕掉一部分,不影响业务
Osd测试,当部分osd宕掉或部分主机宕掉的时候,业务不受影响
性能测试

fio -filename=/mnt/rbd-test/fio-1.img -direct=1 -iodepth 64 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest  //4k随机写
fio -filename=/mnt/rbd-test/fio-1.img -direct=1 -iodepth 64 -thread -rw=randread -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest  //4k随机读
fio -filename=/mnt/rbd-test/fio-1.img -direct=1 -iodepth 64 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest  //4k随机读写
fio -filename=/mnt/rbd-test/fio-1.img -direct=1 -iodepth 64 -thread -rw=write -ioengine=libaio -bs=1M -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest  //1M吞吐量
rbd bench ceph-demo/test.img –io-size 4k –io-threads 16 –io-total 200M –io-pattern bench –io-type write //4k随机写
rbd bench ceph-demo/test.img –io-size 4k –io-threads 16 –io-total 200M –io-pattern bench –io-type read //4k随机读
rbd bench ceph-demo/test.img –io-size 4k –io-threads 16 –io-total 200M –io-pattern bench –io-type write –rw-mix-read 70 //4k随机读写
rbd bench ceph-demo/test.img –io-size 1M –io-threads 16 –io-total 1G –io-pattern seq –io-type write //1M顺序写
上一篇:如何将下线的OSD磁盘,重新初始化上线使用


下一篇:分布式存储之ceph