• 怎样禁止Ceph OSD的自动挂载


    前言

    本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个我之前也写过两篇文章《ceph在centos7下一个不容易发现的改变》和《Ceph数据盘怎样实现自动挂载》,来讲述这个自动挂载的

    这里讲下流程:

    开机后 udev 匹配 95-ceph-osd.rules 规则,触发 ceph-disk trigger,遍历磁盘,匹配到磁盘的标记后就触发了自动挂载

    为什么要取消挂载?
    也许一般都会想:不就是停掉osd,然后umount掉,检查磁盘吗
    这个想法如果放在一般情况下都没有问题,但是为什么有这个需求就是有不一般的情况,这个我在很久前遇到过,所以对这个需求的场景比较清楚

    在很久以前碰到过一次,机器启动都是正常的,但是只要某个磁盘一挂载,机器就直接挂掉了,所以这个是不能让它重启机器自动挂载的,也许还有其他的情况,这里总结成一个简单的需求就是不想它自动挂载

    解决方法

    从上面的自启动后的自动挂载流程里面,我们可以知道这里可以有两个方案去解决这个问题,第一种是改变磁盘的标记,第二种就是改变udev的rule的规则匹配,这里两个方法都行,一个是完全不动磁盘,一个是动了磁盘的标记

    修改udev规则的方式

    这个因为曾经有一段时间看过udev相关的一些东西,所以处理起来还是比较简单的,这里顺便把调试过程也记录下来
    /lib/udev/rules.d/95-ceph-osd.rules这个文件里面就是集群自动挂载的触发规则,所以在这里我们在最开始匹配上我们需要屏蔽的盘,然后绕过内部的所有匹配规则,具体办法就是
    在这个文件里面第一行加上

    KERNEL=="sdb1|sdb2", GOTO="not_auto_mount"

    在最后一行加上

    LABEL="not_auto_mount"

    验证规则是否正确

    udevadm test /sys/block/sdb/sdb1
    

    我们先看下正常的可以挂载的盘符的触发测试显示
    image.png-17.2kB
    再看下屏蔽了后的规则是怎样的
    image.png-16kB
    可以看到在加入屏蔽条件以后,就没有触发挂载了,这里要注意,做屏蔽规则的时候需要把这个osd相关的盘都屏蔽,不然在触发相关分区的时候可能顺带挂载起来了,上面的sdb1就是数据盘,sdb2就是bluestore的block盘

    测试没问题后就执行下

    udevadm control --reload-rules
    

    重启后验证是否自动挂载了

    修改磁盘标记的方式

    查询磁盘的标记typecode,也就是ID_PART_ENTRY_TYPE这个属性

    [root@lab8106 ~]# blkid -o udev -p /dev/sdb1
    ID_FS_UUID=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
    ID_FS_UUID_ENC=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
    ID_FS_TYPE=xfs
    ID_FS_USAGE=filesystem
    ID_PART_ENTRY_SCHEME=gpt
    ID_PART_ENTRY_NAME=cephx20data
    ID_PART_ENTRY_UUID=7b321ca3-402c-4557-b121-887266a1e1b8
    ID_PART_ENTRY_TYPE=4fbd7e29-9d25-41b8-afd0-062c0ceff05d
    ID_PART_ENTRY_NUMBER=1
    ID_PART_ENTRY_OFFSET=2048
    ID_PART_ENTRY_SIZE=204800
    ID_PART_ENTRY_DISK=8:16
    

    匹配到这个属性就认为是集群的节点,可以挂载的,那么我们先改变这个

    [root@lab8106 ~]# /usr/sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff0f9 -- /dev/sdb
    [root@lab8106 ~]# blkid -o udev -p /dev/sdb1
    ID_FS_UUID=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
    ID_FS_UUID_ENC=7a852eec-b32d-4c0a-8b8e-1e056a67ee35
    ID_FS_TYPE=xfs
    ID_FS_USAGE=filesystem
    ID_PART_ENTRY_SCHEME=gpt
    ID_PART_ENTRY_NAME=cephx20data
    ID_PART_ENTRY_UUID=7b321ca3-402c-4557-b121-887266a1e1b8
    ID_PART_ENTRY_TYPE=4fbd7e29-9d25-41b8-afd0-062c0ceff0f9
    ID_PART_ENTRY_NUMBER=1
    ID_PART_ENTRY_OFFSET=2048
    ID_PART_ENTRY_SIZE=204800
    ID_PART_ENTRY_DISK=8:16
    

    可以看到type的属性已经被修改了
    再次测试,可以看到已经不匹配了
    image.png-14.1kB

    如果需要恢复就执行

    [root@lab8106 ~]# /usr/sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sdb
    

    这里同样需要改掉相关的block盘的标记,否则一样被关联的挂载起来了

    总结

    本篇用两种方法来实现了ceph osd的盘符的不自动挂载,这个一般情况下都不会用到,比较特殊的情况遇到了再这么处理就可以了,或者比较暴力的方法就是直接把挂载的匹配的规则全部取消掉,使用手动触发挂载的方式也行,这个方法很多,能够快速,简单的满足需求即可

    此mount非彼mount,题图无关

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2017-09-07
  • 相关阅读:
    观察者模式(Observer)
    外观模式(三层解耦)
    建造者模式(Builder)
    简单工厂
    单例模式(Winform窗体的实现)
    20180213 字符串spilt方法,字符串打包zip方法
    20180212第一发:Python与Json编码解码举例
    Eclipse插件Fat Jar
    java学习之浅谈多线程4SwingWorker
    Android SDK manager 闪退
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575441.html
Copyright © 2020-2023  润新知