ceph

ceph添加&删除mon&osd

2018-05-22  本文已影响60人  Joncc

本次主要是使用ceph-deploy工具和使用ceph的相关命令实现集群Monitor&osd的增加和删除。

添加monitor
修改配置文件
添加新的mon,逗号分隔不要有空格:

cat /root/cluster/ceph.conf |grep mon

mon_initial_members = test3, test4, test5
mon_host = 10.0.0.3,10.0.0.4,10.0.0.5

推送配置

ceph-deploy --overwrite-conf config push  test3 test4 test5

……
若干log
……
添加MON

ceph-deploy mon create test4 test5

……
若干log
……

查看
ceph -s可以看到新的MON已经添加进来了。

[root@test3 ~]# ceph -s
cluster e40207d9-d9a8-43ba-8d3c-45fb79bfa0f4
 health HEALTH_OK
 monmap e1: 3 mons at {test3=10.0.0.3:6789/0,test4=10.0.0.4:6789/0,test5=10.0.0.5:6789/0}
        election epoch 14, quorum 0,1,2 test3,test4,test5
        ……

需要注意的是,如果新增节点ceph-3上之前部署过MON,必须清理干净之前的MON数据库,否则会有异常发生,因为ceph会在创建MON之前检测/var/lib/ceph/mon/$CLUSTER-$HOSTNAME目录下是否有done文件,如果有的话,就不会新建而沿用原来的

ps aux|grep ceph-mon |awk '{print $2}'|xargs kill -9

rm -rf /var/run/ceph/*
rm -rf /var/lib/ceph/mon/*
rm -rf /var/lib/ceph/bootstrap-mon/*
rm -rf /etc/ceph/*

删除monitor
修改配置文件
去除需要删除的节点host

cat /root/cluster/ceph.conf |grep mon

mon_initial_members = test3
mon_host = 10.0.0.3

推送配置

ceph-deploy --overwrite-conf config push test3 test4 test5

……
若干log
……

删除MON
通过ceph-deploy移除test4\test5

ceph-deploy mon create test4 test5

……
若干log
……

从集群中删除 monitor。

ceph mon remove {mon-id}

查看
ceph -s可以发现test4\test5这两个个MON已经被删除了

ceph-deploy删除MON的时候调用的指令是ceph mon remove ceph-3同时需要keyring,如果某个时候把cephx设置成了none这个MON的keyring是不会生成的。
删除的MON的文件夹被移到了/var/lib/ceph/mon-removed,并不是真的删除了,有时候这个文件夹能救ceph一命

添加osd
添加TEST5节点上SDB\SDC\SDD

ceph-deploy osd create test5:/dev/sda test5:/dev/sdb test5:/dev/sdc --zap-disk

……
若干log
……
检查
ceph -s检查集群状态

查看磁盘分区和挂载情况

[root@test5 ~]# lsblk
NAME                                                                                              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                                                                                 8:0    0 447.1G  0 disk
├─sda1                                                                                              8:1    0 437.1G  0 part /var/lib/ceph/osd/ceph-6
└─sda2                                                                                              8:2    0    10G  0 part
sdb                                                                                                 8:16   0 447.1G  0 disk
├─sdb1                                                                                              8:17   0 437.1G  0 part /var/lib/ceph/osd/ceph-7
└─sdb2                                                                                              8:18   0    10G  0 part
sdc                                                                                                 8:32   0 447.1G  0 disk
├─sdc1                                                                                              8:33   0 437.1G  0 part /var/lib/ceph/osd/ceph-8
└─sdc2                                                                                              8:34   0    10G  0 part

查看journal分区是否链接好了

[root@test5 ~]# ll /var/lib/ceph/osd/*
/var/lib/ceph/osd/ceph-6:
total 60
-rw-r--r--   1 root root  481 Jun 16 14:17 activate.monmap
-rw-r--r--   1 ceph ceph    3 Jun 16 14:17 active
-rw-r--r--   1 ceph ceph   37 Jun 16 14:17 ceph_fsid
drwxr-xr-x 292 ceph ceph 8192 Jun 17 19:20 current
-rw-r--r--   1 ceph ceph   37 Jun 16 14:17 fsid
lrwxrwxrwx   1 ceph ceph   58 Jun 16 14:17 journal -> /dev/disk/by-partuuid/ac8846a1-e867-40d7-9bba-fa610160277a
-rw-r--r--   1 ceph ceph   37 Jun 16 14:17 journal_uuid
-rw-------   1 ceph ceph   56 Jun 16 14:17 keyring
-rw-r--r--   1 ceph ceph   21 Jun 16 14:17 magic
-rw-r--r--   1 ceph ceph    6 Jun 16 14:17 ready
-rw-r--r--   1 ceph ceph    4 Jun 16 14:17 store_version
-rw-r--r--   1 ceph ceph   53 Jun 16 14:17 superblock
-rw-r--r--   1 root root    0 Jun 16 15:16 sysvinit
-rw-r--r--   1 ceph ceph   10 Jun 16 14:17 type
-rw-r--r--   1 ceph ceph    2 Jun 16 14:17 whoami

异常处理
本次添加后新添加的osd并没有被拉起来,手动重启test5上的新增OSD,启动后weight(权重)为0

[root@test5 ~]# systemctl restart ceph-osd@6
[root@test5 ~]# systemctl restart ceph-osd@7
[root@test5 ~]# systemctl restart ceph-osd@8
[root@test5 ~]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 2.58955 root default                                     
-2 1.29477     host test3                                   
 1 0.43159         osd.1       up  1.00000          1.00000
 2 0.43159         osd.2       up  1.00000          1.00000
 0 0.43158         osd.0       up  1.00000          1.00000
-3 1.29478     host test4                                   
 3 0.43159         osd.3       up  1.00000          1.00000
 4 0.43159         osd.4       up  1.00000          1.00000
 5 0.43159         osd.5       up  1.00000          1.00000
 6       0 osd.6               up  1.00000          1.00000
 7       0 osd.7               up  1.00000          1.00000
 8       0 osd.8               up  1.00000          1.00000

添加Bucket test5

 [root@test5 ~]# ceph osd crush add-bucket test5 host
added bucket test5 type host to crush map
[root@test5 ~]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-4       0 host test5                                       
-1 2.58955 root default                                     
-2 1.29477     host test3                                   
 1 0.43159         osd.1       up  1.00000          1.00000
 2 0.43159         osd.2       up  1.00000          1.00000
 0 0.43158         osd.0       up  1.00000          1.00000
-3 1.29478     host test4                                   
 3 0.43159         osd.3       up  1.00000          1.00000
 4 0.43159         osd.4       up  1.00000          1.00000
 5 0.43159         osd.5       up  1.00000          1.00000
 6       0 osd.6               up  1.00000          1.00000
 7       0 osd.7               up  1.00000          1.00000
 8       0 osd.8               up  1.00000          1.00000

将OSD移到test5的host下面
注意添加OSD时的weight是该OSD的实际大小(2T为2 ,800G为0.8),切勿随意填写!!!

[root@test5 ~]# ceph osd crush add osd.6 0.43159 host=test5
add item id 6 name 'osd.6' weight 0.43159 at location {host=test5} to crush map
[root@test5 ~]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-4 0.43158 host test5                                       
 6 0.43158     osd.6           up  1.00000          1.00000
-1 2.58955 root default                                     
-2 1.29477     host test3                                   
 1 0.43159         osd.1       up  1.00000          1.00000
 2 0.43159         osd.2       up  1.00000          1.00000
 0 0.43158         osd.0       up  1.00000          1.00000
-3 1.29478     host test4                                   
 3 0.43159         osd.3       up  1.00000          1.00000
 4 0.43159         osd.4       up  1.00000          1.00000
 5 0.43159         osd.5       up  1.00000          1.00000
 7       0 osd.7               up  1.00000          1.00000
 8       0 osd.8               up  1.00000          1.00000
[root@test5 ~]# ceph osd crush add osd.7 0.43159 host=test5
add item id 7 name 'osd.7' weight 0.43159 at location {host=test5} to crush map
[root@test5 ~]# ceph osd crush add osd.8 0.43159 host=test5
add item id 8 name 'osd.8' weight 0.43159 at location {host=test5} to crush map
[root@test5 ~]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-4 1.29474 host test5                                       
 6 0.43158     osd.6           up  1.00000          1.00000
 7 0.43158     osd.7           up  1.00000          1.00000
 8 0.43158     osd.8           up  1.00000          1.00000
-1 2.58955 root default                                     
-2 1.29477     host test3                                   
 1 0.43159         osd.1       up  1.00000          1.00000
 2 0.43159         osd.2       up  1.00000          1.00000
 0 0.43158         osd.0       up  1.00000          1.00000
-3 1.29478     host test4                                   
 3 0.43159         osd.3       up  1.00000          1.00000
 4 0.43159         osd.4       up  1.00000          1.00000
 5 0.43159         osd.5       up  1.00000          1.00000

这个时候看起来就顺眼多了,但是存储还是不会调用的,需要将对应的host(test5)移到root下

[root@test5 ~]# ceph osd crush move test5 root=default
moved item id -4 name 'test5' to location {root=default} in crush map
[root@test5 ~]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 3.88429 root default                                     
-2 1.29477     host test3                                   
 1 0.43159         osd.1       up  1.00000          1.00000
 2 0.43159         osd.2       up  1.00000          1.00000
 0 0.43158         osd.0       up  1.00000          1.00000
-3 1.29478     host test4                                   
 3 0.43159         osd.3       up  1.00000          1.00000
 4 0.43159         osd.4       up  1.00000          1.00000
 5 0.43159         osd.5       up  1.00000          1.00000
-4 1.29474     host test5                                   
 6 0.43158         osd.6       up  1.00000          1.00000
 7 0.43158         osd.7       up  1.00000          1.00000
 8 0.43158         osd.8       up  1.00000          1.00000

查看存储状态,由于新添加了三块OSD所以集群会做backfilling等pg迁移操作,等待集群OK即可。

[root@test5 ~]# ceph -s
    cluster 12741d27-7fbb-4a15-90a8-a73d78f0172d
     health HEALTH_WARN
            clock skew detected on mon.test5
            127 pgs backfill_wait
            2 pgs backfilling
            2 pgs degraded
            1 pgs peering
            1 pgs recovery_wait
            57 pgs stuck unclean
            recovery 4/670906 objects degraded (0.001%)
            recovery 379815/670906 objects misplaced (56.612%)
            crush map has legacy tunables (require argonaut, min is firefly)
            crush map has straw_calc_version=0
            Monitor clock skew detected
     monmap e3: 3 mons at {test3=10.0.0.3:6789/0,test4=10.0.0.4:6789/0,test5=10.0.0.5:6789/0}
            election epoch 36, quorum 0,1,2 test3,test4,test5
     osdmap e2477: 9 osds: 9 up, 9 in; 360 remapped pgs
            flags sortbitwise
      pgmap v3791033: 1088 pgs, 3 pools, 932 GB data, 234 kobjects
            1891 GB used, 2085 GB / 3977 GB avail
            4/670906 objects degraded (0.001%)
            379815/670906 objects misplaced (56.612%)
                 724 active+clean
                 232 active+remapped
                 127 active+remapped+wait_backfill
                   2 active+remapped+backfilling
                   1 peering
                   1 active+degraded
                   1 active+recovery_wait+degraded
recovery io 330 MB/s, 82 objects/s

删除osd
正常处理流程:
停止osd进程——将节点状态标记为out——从crush中移除节点——删除节点——删除节点认证
根据这个方法会触发两次迁移,一次是在节点osd out以后,一次是在crush remove以后。参考磨渣-删除OSD的正确方式,调整处理步骤能够减少一次数据迁移。

在ceph的集群当中关于节点的替换的问题,一直按照以前的方式进行的处理,处理的步骤如下:

调整OSD的CRUSH WEIGHT

ceph osd crush reweight osd.0 0.1

说明:这个地方如果想慢慢的调整就分几次将crush 的weight 减低到0 ,这个过程实际上是让数据不分布在这个节点上,让数据慢慢的分布到其他节点上,直到最终为没有分布在这个osd,并且迁移完成
这个地方不光调整了osd 的crush weight ,实际上同时调整了host 的 weight ,这样会调整集群的整体的crush 分布,在osd 的crush 为0 后, 再对这个osd的任何删除相关操作都不会影响到集群的数据的分布

停止OSD进程

systemctl stop ceph-osd@0

停止到osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

将节点状态标记为out

ceph osd out osd.0

停止到osd的进程,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

从CRUSH中移除节点

ceph osd crush remove osd.0

这个是从crush中删除,因为已经是0了 所以没影响主机的权重,也就没有迁移了

删除节点

ceph osd rm osd.0

这个是从集群里面删除这个节点的记录

删除节点认证(不删除编号会占住)

ceph auth del osd.0

删除HOST节点
将OSD全部删除后,如果还需要在集群中删除该osd的host节点,可以使用该命令。

ceph osd crush rm test5
上一篇 下一篇

猜你喜欢

热点阅读