OSD扩容方案使用ceph_deploy进行,扩容后默认一个磁盘设置两个分区,一个分区为data,另一个为journal,其中journal默认分区为2G。
1. 检查ceph状态
ceph -s
ceph osd tree
ceph df
2. 检查硬盘
各节点扩容osd前需要关机插入新磁盘,并最好raid划分工作,raid完成后开机通过lsblk命令查看是否可正常看到要扩容的磁盘
本例中,每台服务器添加两块600G硬盘
3. 设置ceph参数
ceph osd set noout
osd down 超过一定时间,会自动out,数据就平衡走了,noout就是不让它自动out出去,避免不必要的数据平衡
ceph osd set nobackfill
ceph osd set norecover
4. Ceph扩容
各节点内可正常查看到扩容磁盘后,通过ceph_deploy命令开始扩容;
Ceph-deploy osd create
云主机备份完毕后,开始备份LVM云硬盘,云硬盘在备份时要先进行卸载;
添加OSD
ceph-deploy osd create
5. 设置ceph 数据均衡参数
修改pg_num和pgp_num
因osd的增加,ceph集群中每个pool的pg_num和pgp_num就需要进行修改,pg的修改可以参照公式进行:
pg数=( Target PGs per OSD ) x ( OSD # ) x ( %Data ) /( Size )
Target PGs per OSD : 表示预计osd个数,
1,假如osd数,以后不会增加,那这个值是100
2,假如osd数,以后会增长为2倍,那这个值是200
3,假如osd数,以后会增长为2~3倍,那这个值是300
OSD # : 当前pool的pg所在的osd数量
%Data : 存储到这个pool中的数据在pool所在的osd集合中的大概百分比
Size : 要创建pool的副本数
修改pg和pgp通过命令进行修改;
ceph osd pool set
Pg修改完成后等待一会,然后修改pgp:
ceph osd pool set
如果不知道需要修改的pool name可通过命令查看:
ceph osd dump |grep pool
本例中:volumes和compute都是512,其它都是256
pg backfill调整
现在默认应该只有一个pg backfill
可以加快下速度
查看当前recovery速度
ceph daemon osd.132 config show | egrep “backfill|recovery”
调整recovery速度
ceph tell osd.* injectargs ‘–osd_max_backfills 2’
ceph tell osd.* injectargs ‘–osd_max_backfills 2’ 平衡完之后,把这个再改回1
6. 恢复ceph 参数
ceph osd unset noout
ceph osd unset nobackfill
ceph osd unset norecover