Ceph 运维记录
一、ceph运维
• Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
• Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch ),是整个ceph集群的入口
• MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。
#检查ceph存储的使用情况
ceph df
#检查集群的状态
ceph -s
#查看osd的状态
ceph osd stat
#查看监视器的状态
ceph mon stat
#查看监视器法定人数的状态
ceph quorum_status
#查看mds的状态
ceph mds stat
#推送ceph配置文件
ceph-deploy --overwrite-conf config push mon osd01 osd02 osd03
#查看ceph pools
ceph osd pool ls
#查看ceph的mds的内存限制,达到限制后会自己释放
ceph daemon mds.dppvmnginc00 config get mds_cache_memory_limit
ceph daemon mds.dppvmnginc00 config show | less
ceph daemon mds.dppvmnginc00 config set mds_cache_memory_limit 1073741824
ceph daemon mds.dppvmnginc00 config set mds_cache_memory_limit 4294967296
ceph mds fail 0
#修改debug日志
ceph tell mds.dpsvdoccep02 injectargs '--debug-mds 10/10'
#查看debug日志是否开启
ceph daemon mds.dpsvdoccep02 config show|grep debug_mds
ceph daemon mon.dppvmngdnc00 config show|grep debug_mon
ceph daemon osd.0 config show|grep debug_osd
#查看osd权重
ceph osd tree |grep osd.137
#调整osd权重
ceph osd crush reweight osd.137 1.5
ceph osd crush reweight osd.8 0.23268
#更改ceph osd数据分布链接:
https://www.jianshu.com/p/afb6277dbfd6
#设置ceph mds数量
ceph fs set cephfs max_mds 2
#踢出mds
ceph mds deactivate cephfs_01:0
#计算pgnum数量 最佳实践参考:http://ceph.com/pgcalc/
ceph osd pool set fs_data pg_num 256
ceph osd pool set fs_data pgp_num 256
#查看ceph的mds的内存限制,达到限制后会自己释放
ceph daemon mds.dppvmnginc00 config get mds_cache_memory_limit
ceph daemon mds.dppvmnginc00 config show | less
ceph daemon mds.dppvmnginc00 config set mds_cache_memory_limit 1073741824
ceph daemon mds.dppvmnginc00 config set mds_cache_memory_limit 4294967296
# 查看ceph balancer状态
ceph balancer status
# 启用balancer模块(默认)
ceph mgr module enable balancer
# 启用balancer平衡
ceph balancer on
# 设置balancer模式(修改PG mapping)
ceph balancer mode upmap
ceph balancer mode crush-compat
# 设置兼容版本(upmap模式需要此设置)
ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
# 查看调整日志
less /var/log/ceph/ceph.audit.log
# 查看调整结果
ceph osd df
#删除存储池pool
(1)查看是否有删除pools权限
~]# ceph --show-config |grep mon_allow
mon_allow_pool_delete = false
(2)三个节点修改配置文件
~]# vi /etc/ceph/ceph.conf
[global]
mon_allow_pool_delete = true
~]# reboot
~]# ceph fs ls
~]# ceph fs rm cephfs_02 --yes-i-really-mean-it #报错
~]# systemctl stop ceph-mds@ceph_test1
~]# systemctl stop ceph-mds@ceph_test2
~]# systemctl stop ceph-mds@ceph_test3
~]# ceph fs rm cephfs_02 --yes-i-really-mean-it
~]# ceph osd lspools
~]# ceph osd pool delete fs_datatest fs_datatest --yes-i-really-really-mean-it
~]# ceph osd pool delete fs_metadatatest fs_metadatatest --yes-i-really-really-mean-it
~]# ceph fs set cephfs max_mds 2
~]# systemctl start ceph-mds@ceph_test1
~]# systemctl start ceph-mds@ceph_test2
~]# systemctl start ceph-mds@ceph_test3
二、ceph压测
ceph测试工具fio
windows:https://ci.appveyor.com/project/axboe/fio/build/job/xje490v82ei5cl57/artifacts
linux:https://github.com/axboe/fio/releases/tag/fio-3.17 redhat默认最新3.7
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
yum install libaio-devel
yum install zlib-devel
tar -zxvf fio-2.0.7.tar.gz
cd fio-2.0.7
make
make install
#生成测试用的文件
dd if=/dev/zero of=/data/test bs=4k count=524288
#ceph性能测试命令
(1)4k随机读
fio -filename=/data/test -direct=1 -iodepth 64 -thread -rw=randread -ioengine=libaio -bs=4k -size=50G -numjobs=10 -runtime=300 -group_reporting -name=mytest
(2)4k顺序读
fio -filename=/data/test -direct=1 -iodepth 64 -thread -rw=read -ioengine=libaio -bs=4k -size=50G -numjobs=30 -runtime=300 -group_reporting -name=mytest
(3)4k随机写
fio -filename=/data/test -direct=1 -iodepth 64 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=50G -numjobs=30 -runtime=300 -group_reporting -name=mytest_4k_10G_randwrite
(4)4k顺序写
fio -filename=/data/test -direct=1 -iodepth 64 -thread -rw=write -ioengine=libaio -bs=4k -size=50G -numjobs=30 -runtime=300 -group_reporting -name=mytest
(5)4k混合读写
fio -filename=/data/test -direct=1 -iodepth 64 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=50G -numjobs=30 -runtime=300 -group_reporting -name=mytest -ioscheduler=noop
三、ceph故障记录
背景:ceph集群一个osd使用量达到95%,造成集群只读状态
解决方案:把95%的osd踢出集群
后续操作:把ceph集群大小不一的磁盘踢出集群
#踢盘步骤如下
1、将osd 0 踢出集群
ceph osd out 0
2、登录节点,停掉osd进程
systemctl stop ceph-osd@0
3、把OSD 移出集群 CRUSH 图
ceph osd crush remove osd.0
4、删除 OSD 认证密钥
ceph auth del osd.0
5、删除 OSD
ceph osd rm 0
6、osd已经删除,但是数据还在
]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot
├─sda3 8:3 0 2G 0 part
│ └─vgswap-lvswap 253:1 0 2G 0 lvm [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 27.5G 0 part
└─vgroot-lvroot 253:0 0 27.5G 0 lvm /
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 100M 0 part /var/lib/ceph/osd/ceph-0
└─sdb2 8:18 0 49.9G 0 part
sdc 8:32 0 50G 0 disk
├─sdc1 8:33 0 100M 0 part /var/lib/ceph/osd/ceph-3
└─sdc2 8:34 0 49.9G 0 part
sdd 8:48 0 100G 0 disk
├─sdd1 8:49 0 100M 0 part /var/lib/ceph/osd/ceph-6
└─sdd2 8:50 0 99.9G 0 part
sde 8:64 0 100G 0 disk
├─sde1 8:65 0 100M 0 part /var/lib/ceph/osd/ceph-9
└─sde2 8:66 0 99.9G 0 part
sr0 11:0 1 1024M 0 rom
6、卸载挂载的ceph osd 0
umount /dev/sdb1
7、擦除数据
ceph-disk zap /dev/sdb
ceph-disk zap /dev/sdc
8、从vmware删除磁盘
-----------------
为了解决osd数量为题,可如下修改
osd count many
ceph osd pool set rbd pg_num 128
ceph osd pool set fs_data pg_num 256
ceph osd pool set fs_data pgp_num 256