转载请联系:郭晋兵 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云硬盘,云硬盘在备份时要先进行卸载;

  1. 添加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

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据