美文网首页
ceph osd节点删除/添加

ceph osd节点删除/添加

作者: 羽煊 | 来源:发表于2017-10-16 17:19 被阅读0次

    在ceph中,数据是以PG为单位保存在osd中的,一般情况下一个osd会对应一块磁盘,在osd节点挂掉的情况下,如果osd数据盘没有损坏,可以利用osd数据盘对数据进行恢复
    现在的情况如下所示,将osd2节点的osd.8和osd.9都停掉了,相当于osd2节点已经挂掉



    集群的健康状况如下:

    1 将osd.8,osd.9从crush中删除,并删除对应的osd,和auth,host
    ceph osd crush rm osd.8
    ceph osd crush rm osd.9
    ceph osd rm 8
    ceph osd rm 9
    ceph auth del osd.8
    ceph auth del osd.9
    ceph osd crush rm osd2
    将故障节点和osd从集群中删除后,新的集群如下图所示



    2 新建osd2节点
    并将数据盘挂载到新的osd2节点,并重建osd
    2.1 挂载数据盘到临时目录
    将数据盘挂载到/var/lib/ceph/osd/tmp/mnt目录下,目录不存在就新建一个
    mkdir /var/lib/ceph/tmp/mnt
    mount /dev/sdb1 /var/lib/ceph/tmp/mnt
    读取/var/lib/ceph/tmp/mnt目录下的fsid,whoami文件,即该磁盘对应的osd的uuid和osd-num
    cat fsid whoami
    f187533d-d3cd-4e40-8416-a93c9080876c
    8
    2.2 重建osd
    读取到fsid,和osd-num后,可以利用这些信息重建osd,需要读取/etc/ceph.conf文件,保证这个文件存在并且和集群中的该文件保持一致
    ceph osd create f187533d-d3cd-4e40-8416-a93c9080876c 8
    如果出现如图所示的错误提示,说明没有找到keyring文件,这是集群之间的认证文件

    2017-10-16 16:47:15.681089 7f84f1a80700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory
    2017-10-16 16:47:15.681315 7f84f1a80700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
    2017-10-16 16:47:15.681404 7f84f1a80700 0 librados: client.admin initialization error (2) No such file or directory
    Error connecting to cluster: ObjectNotFound

    可以从集群的其他节点(主节点的/etc/ceph目录下)上将该文件复制一份过来,放到/etc/ceph目录下
    scp ceph.client.admin.keyring osd2:/etc/ceph
    再次创建osd
    ceph osd create f187533d-d3cd-4e40-8416-a93c9080876c 8
    返回8说明创建成功
    新建osd挂载点
    mkdir /var/lib/ceph/osd/ceph-8
    卸载临时挂载目录
    umount /var/lib/ceph/tmp/mnt
    挂载数据盘到osd目录
    mount /dev/sdb1 /var/lib/ceph/osd/ceph-8
    注册此 OSD 的密钥
    ceph auth add osd.8 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-8/keyring
    added key for osd.8
    3 加入集群
    将新的节点加入crushmap
    ceph osd crush add-bucket osd2 host
    将该接点放到default根下
    ceph osd crush move osd2 root=default
    osd加入crushmap
    ceph osd crush add osd.8 0.00980 host=osd2
    这里给osd.8 的权重是0.00980,该值和集群中其他osd保持已知,权重不一致可能会导致pg的状态一直处于unclean
    现在osd已经在集群中了,加入集群的osd就可以接收数据了

    root@mon1:/etc/ceph# ceph osd tree
    ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -1 0.05878 root default
    -2 0.01959 host osd1
    1 0.00980 osd.1 up 1.00000 1.00000
    3 0.00980 osd.3 up 1.00000 1.00000
    -5 0.01959 host osd3
    4 0.00980 osd.4 up 1.00000 1.00000
    5 0.00980 osd.5 up 1.00000 1.00000
    -3 0.01959 host osd2
    9 0.00980 osd.9 up 1.00000 1.00000
    8 0.00980 osd.8 down 0 1.00000

    现在osd.8还处于down状态,因为osd.8的进程还没有启动
    启动进程
    systemctl start ceph-osd@8
    现在集群的健康状况和osd分布状况,如下图

    [Z9WZT]GI`%)YQ}YLJL)FWO.png

    上图所示,说明osd节点恢复成功。

    相关文章

      网友评论

          本文标题:ceph osd节点删除/添加

          本文链接:https://www.haomeiwen.com/subject/cfwkuxtx.html