• bluestore的osd自启动


    前言

    自启动相关的文章很多,有分析的很详细的文章,这里就不做赘述,本篇讲述的是什么情况下用,怎么用的问题

    使用场景

    一台机器的系统盘坏了,需要重装系统,相关的一些信息没有了,但是上面的数据盘还是在的,所以需要保留

    某个磁盘需要换台机器进行启动,但是那台机器上没有相关的信息

    处理过程

    自启动的相关处理

    先扫描下lvm

    vgscan
    pvscan
    lvscan
    

    本篇的场景是lvm没有损坏的情况,如果lvm本身损坏了,那么就是去恢复lvm的问题,本篇的基础是有一个完整的osd的数据盘,也就是磁盘本身是没问题的

    查询osd相关的磁盘信息

    lvdisplay |grep "LV Path"|grep ceph
        LV Path                /dev/ceph-b748833c-b646-4b1c-a2ef-f50576b0a165/osd-block-38657557-5ce3-43a1-861a-e690c880ddf6
        LV Path                /dev/ceph-aa2304f1-a098-4990-8f3a-46f176d4cece/osd-block-f8a30c38-48fd-465c-9982-14cd22d00d21
        LV Path                /dev/ceph-8b987af1-f10a-4c9a-a096-352e63c7ef83/osd-block-07d1c423-8777-4eea-8a1d-34dc06f840ae
        LV Path                /dev/ceph-f39ac1da-2811-4486-8690-4ccfb1e45e18/osd-block-0cb9186e-6512-4582-a30d-9fb4cf03c964
        LV Path                /dev/ceph-6167d452-a121-4602-836a-ab378cf6eccc/osd-block-2e77e3b5-9d5c-4d5f-bf18-c33ddf0bbc0a
    

    注意osd-block后面的字段,这个信息是会记录在osd dump输出信息的,我们查询下osd-block-38657557-5ce3-43a1-861a-e690c880ddf6这个的信息

    [root@node1 ~]# ceph osd dump|grep 38657557-5ce3-43a1-861a-e690c880ddf6
    osd.31 down in  weight 1 up_from 395 up_thru 395 down_at 399 last_clean_interval [391,392) 66.66.66.60:6830/10392 66.66.66.60:6847/10392 66.66.66.60:6875
    /10392 66.66.66.60:6882/10392 exists 38657557-5ce3-43a1-861a-e690c880ddf6
    

    做自动挂载

    可以得到如下信息,osd.31的lvm标记为38657557-5ce3-43a1-861a-e690c880ddf6

    systemctl start ceph-volume@lvm-31-38657557-5ce3-43a1-861a-e690c880ddf6
    systemctl enable ceph-volume@lvm-31-38657557-5ce3-43a1-861a-e690c880ddf6
    

    检查下挂载

    [root@node1 ~]# df -h|grep osd|grep 31
    tmpfs                     48G   24K   48G   1% /var/lib/ceph/osd/ceph-31
    

    可以看到挂载的操作是通过下面这个命令进行挂载的,然后enable下就是自启动了

    systemctl start ceph-volume@lvm-osdid-osdfsid
    

    做自启动osd

    启动osd

    [root@node1 ~]# systemctl start ceph-osd@31
    [root@node1 ~]# systemctl enable ceph-osd@31
    Created symlink from /etc/systemd/system/ceph-osd.target.wants/ceph-osd@31.service to /usr/lib/systemd/system/ceph-osd@.service.
    

    检查启动情况

    [root@node1 ~]# ps -ef|grep osd|grep 31
    ceph       31177       1  1 10:42 ?        00:00:02 /usr/bin/ceph-osd -f --cluster ceph --id 31 --setuser ceph --setgroup ceph
    

    那么自挂载,自启动的过程就是上面的操作

    脚本处理整机的osd

    如果觉得一个个去查询太麻烦了,那就准备脚本就好了
    创建startosd.sh脚本写入下面的内容

    #! /usr/bin/bash
    # @Author:momo
    # @Time: 2019/9/4 11:05
    vgscan
    pvscan
    lvscan
    osddump=`ceph osd dump`
    
    for osdfsid in `lvdisplay |grep "LV Path"|grep ceph|awk '{print $3}'|cut -d "/" -f 4|cut -d - -f 3-7`
    do
        osdid=`echo "${osddump}"|grep $osdfsid|awk '{print $1}'|cut -d . -f 2`
        echo "start $osdid  with fsid $osdfsid"
        # auto mount
        systemctl start ceph-volume@lvm-$osdid-$osdfsid
        systemctl enable ceph-volume@lvm-$osdid-$osdfsid
        # auto start 
        systemctl start ceph-osd@$osdid
        systemctl enable ceph-osd@$osdid
    done
    

    总结

    本篇是因为做对比测试,不想重搭集群,把36盘位的磁盘全部换一个平台测试,想直接启动起来测试,然后就有了这篇文章记录,在filestore下面的处理逻辑比较简单,可以用fstab,可以用trigger,可以用mount tmp检查后手动挂载,方式很多,从Jewel版本开始启动相关的都慢慢集成到数据本身,用服务去控制了

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2018-09-04
  • 相关阅读:
    celery 使用(一)
    RabbitMQ(一 初识)
    python 生成器与迭代器(yield 用法)
    python与consul 实现gRPC服务注册-发现
    python 使用gRPC
    IDEA 破解图文教程
    ArrayList 源码分析 -- 扩容问题及序列化问题
    面向对象来理解链表
    Winrar去广告图文教程
    Spring Boot 整合JDBC 实现后端项目开发
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575479.html
Copyright © 2020-2023  润新知