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顺序写