转载请联系:郭晋兵 guojb@cloudbin.cn
本文中的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 <host-ID>:/dev/sdx
云主机备份完毕后,开始备份LVM云硬盘,云硬盘在备份时要先进行卸载;
- 添加OSD
ceph-deploy osd create <hostID>:/dev/sdx



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 <pool name> pg_num ***
Pg修改完成后等待一会,然后修改pgp:
Ceph osd pool set <pool name> pgp_num ***
如果不知道需要修改的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

参考:
- http://www.strugglesquirrel.com/2018/03/28/%E8%A7%A3%E5%86%B3%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%88%A0%E9%99%A4lvm%E7%9A%84%E9%97%AE%E9%A2%98/
感谢suo guang yu和zhao jie的支持。
2018.12.10