怎样禁止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
我们先看下正常的可以挂载的盘符的触发测试显示

再看下屏蔽了后的规则是怎样的

可以看到在加入屏蔽条件以后,就没有触发挂载了,这里要注意,做屏蔽规则的时候需要把这个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=ceph\x20data
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=ceph\x20data
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的属性已经被修改了
再次测试,可以看到已经不匹配了

如果需要恢复就执行
[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 |
怎样禁止Ceph OSD的自动挂载的更多相关文章
- parted会启动你的ceph osd,意外不?
前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...
- ceph osd 自动挂载的N种情况
直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...
- Ceph数据盘怎样实现自动挂载
前言 在Centos7 下,现在采用了 systemctl来控制服务,这个刚开始用起来可能不太习惯,不过这个服务比之前的服务控制要强大的多,可以做更多的控制,本节将来介绍下关于 Ceph的 osd 磁 ...
- 处理Ceph osd的journal的uuid问题
前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏 ...
- 使用udev实现显示器的热插拔和usb的自动挂载
udev:用来监听硬件设备是否发生改变,并可以给硬件设备命名 ,也可以在硬件发生改变之后执行脚本 使用udev检测显示器是否发生变化,然后执行脚本,解决linux显示器热插拔问题 先补充一点: [ro ...
- ubuntu12.04 U盘自动挂载配置
Ubuntu12.04禁止U盘等设备的自动挂载方法如下: 在图形界面(字符界面无效)内进入系统终端,ctrl+alt+T或者gnome-terminal 禁止自动挂载:$ gsettings seto ...
- 分布式存储ceph——(5)ceph osd故障硬盘更换
正常状态:
- k8s使用ceph作为后端存储挂载
一.在ceph集群上操作: 1.创建池(主要使用存储类来进行持久卷的挂载,其他的挂载方式不好使也太麻烦):ceph osd pool create k8s 64 二.在k8s上操作: 1.安装客户端( ...
- Ceph osd故障恢复
1 调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...
随机推荐
- 【原创】xenomai内核解析--实时内存管理--xnheap
目录 一. xenomai内存池管理 1.xnheap 2. xnpagemap 3. xnbucket 4. xnheap初始化 5. 内存块分配 5.1 小内存分配流程(<= 2*PAGE_ ...
- doker基本使用
Docker与虚拟机的区别 docker和虚拟机最大的不同,docker共用宿主机的内核,虚拟机中每个虚拟机中有单独的内核虚拟出来,如上图所示: docker不能做后端兼容性测试,因为其没有独立的虚拟 ...
- Python基础数据类型方法补充
str 补充的方法: capitalize():首字母大写,其余变小写 s = 'liBAI' s1 = s.capitalize() print(s1) # Libai swapcase():大小写 ...
- 通过两行代码即可调整苹果电脑 Launchpad 图标大小
之前用 13 寸 Mac 的时候我还没觉得,后来换了 16 寸就发现有点不对劲了.因为 Mac 的高分辨率,当你进入 Launchpad 界面,应用图标的大小可能会让你怀疑:这特么是苹果的设计吗?有点 ...
- ActiveMQ第一个示例
首先先安装ActiveMQ:https://www.cnblogs.com/hejianliang/p/9149590.html 创建Java项目,把 activemq-all-5.15.4.jar ...
- Java 复制到剪贴板
public void copy(String str) { StringSelection stsel = new StringSelection(str); Toolkit.getDefaultT ...
- 【转载】HPL与HPCG测试(一)
来源:HPL与HPCG测试 (一) 一.HPL与HPCG 简介 1.HPL HPL 即 High Performance Linpack,它是针对现代并行计算集群的测试工具.用户不修改测试程序,通过调 ...
- 串口服务器和modbus网关有什么不同
串口服务器是什么? 串口服务器一般也会被称之为串口设备服务器,它是一种小型电子设备,可以将以太网IP/TCP数据包转换为RS232,RS485或RS422串口数据信号,反之亦然. Modbus网关是什 ...
- socket编程:recvmsg 和 sendmsg 函数
背景 复习 socket 编程的时候发现了以前没有留意到的 2个函数:recvmsg 和 sendmsg ref : Linux编程之recvmsg和sendmsg函数 知识 先来看看函数原型: #i ...
- POJ2432 Around the world
题意描述 Around the world 在一个圆上有 \(n\) 点,其中有 \(m\) 条双向边连接它们,每条双向边连接两点总是沿着圆的最小弧连接. 求从 \(1\) 号点出发并回到 \(1\) ...