parted会启动你的ceph osd,意外不?
前言
如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意想不到的情况
定位
如果你看过我的博客,正好看过这篇 <<ceph在centos7下一个不容易发现的改变>> ,那么应该还记得这个讲的是centos 7 下面通过udev来实现了osd的自动挂载,这个自动挂载就是本篇需要了解的前提
[root@lab101 ~]# df -h|grep ceph
/dev/sdf1 233G 34M 233G 1% /var/lib/ceph/osd/ceph-1
[root@lab101 ~]# systemctl stop ceph-osd@1
[root@lab101 ~]# umount /dev/sdf1
[root@lab101 ~]# parted -l &>/dev/null
[root@lab101 ~]# df -h|grep ceph
/dev/sdf1 233G 34M 233G 1% /var/lib/ceph/osd/ceph-1
[root@lab101 ~]# ps -ef|grep osd
ceph 62701 1 1 23:25 ? 00:00:00 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
root 62843 35114 0 23:25 pts/0 00:00:00 grep --color=auto osd
看这个操作过程,是不是很神奇,是不是很意外,不管怎么说,parted -l的一个操作把我们的osd给自动mount 起来了,也自动给启动了
出现这个以后,我们先看下日志怎么出的,大概看起来的是这样的

可以看到确实是实时去触发的
服务器上面是有一个这个服务的
systemd-udevd.service
看到在做parted -l 后就会起一个这个子进程的
在尝试关闭这个服务后,再做parted -l操作就不会出现自动启动进程
原因
执行parted -l 对指定设备发起parted命令的时候,就会对内核做一个trigger,而我们的
/lib/udev/rules.d/95-ceph-osd.rules
这个文件一旦触发是会去调用
/usr/sbin/ceph-disk --log-stdout -v trigger /dev/$name
也就是自动挂载加上启动osd的的操作了
可能带来什么困扰
其实这个我也不知道算不算bug,至少在正常使用的时候是没有问题的,以至于这个功能已经有了这么久,而我并没有察觉到,也没有感觉到它给我带来的干扰,那么作为一名测试人员,现在来构思一种可能出现的破坏场景,只要按照正常操作去做的,还会出现的,就是有可能发生的事情
cd /var/lib/ceph/osd/
[root@lab101 osd]# df -h|grep osd
/dev/sdf1 233G 34M 233G 1% /var/lib/ceph/osd/ceph-1
[root@lab101 osd]# systemctl stop ceph-osd@1
[root@lab101 osd]# umount /dev/sdf1
[root@lab101 osd]# parted -l &>/dev/null
[root@lab101 osd]# rm -rf ceph-1/
rm: cannot remove ‘ceph-1/’: Device or resource busy
[root@lab101 osd]# ll ceph-1/
total 0
[root@lab101 osd]# df -h|grep ceph
/dev/sdf1 233G 33M 233G 1% /var/lib/ceph/osd/ceph-1
可以看到除了上面的parted -l以外,其他操作都是一个正常的操作,umount掉挂载点,然后清理掉这个目录,然后数据就被删了,当然正常情况下也许没人在正好那个点来了一个parted,但是不是完全没有可能
还有种情况就是我是要做维护,我想umount掉挂载点,不想进程起来,执行parted是很常规的操作了,结果自己给我拉起来了,这个操作应该比较常见的
如何解决这个情况
第一种方法
什么都不动,你知道这个事情就行,执行过parted后再加上个df多检查下
第二种方法
systemctl stop systemd-udevd
这个会带来其他什么影响,暂时不好判断,还没深入研究,影响应该也只会在硬件变动和一些udev触发的需求,不确定的情况可以不改,不推荐此方法
第三种方法
不用这个/lib/udev/rules.d/95-ceph-osd.rules做控制了,自己去写配置文件,或者写fstab,都可以,保证启动后能够自动mount,服务能够正常启动就可以了,个人从维护角度还是偏向于第三种方法,记录的信息越多,维护的时候越方便,这个是逼着记录了一些信息,虽然可以什么信息也不记
总结
其实这个问题梳理清楚了也还好,最可怕的也许就是不知道为什么,特别是觉得完全不搭边的东西相互起了关联,至少在我们的研发跟我描述这个问题的时候,我想的是,还有这种神操作,是不是哪里加入了钩子程序什么的,花了点时间查到了原因,也方便在日后碰到不那么惊讶了
ceph北京大会已经顺利开完了,等PPT出来以后再学习一下新的东西,内容应该还是很多的,其实干货不干货,都在于你发现了什么,如果有一个PPT里面你提取到了一个知识点,你都是赚到了,何况分享的人并没有告知的义务的,所以每次看到有分享都是很感谢分享者的
变更记录
| Why | Who | When |
|---|---|---|
| 创建 | 武汉-运维-磨渣 | 2018-03-23 |
parted会启动你的ceph osd,意外不?的更多相关文章
- Ceph osd启动报错osd init failed (36) File name too long
在Ceph的osd节点上,启动osd进程失败,查看其日志/var/log/ceph/ceph-osd.{osd-index}.log日志,报错如下: 2017-02-14 16:26:13.55853 ...
- 处理Ceph osd的journal的uuid问题
前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏 ...
- ceph osd 自动挂载的N种情况
直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...
- Ceph osd故障恢复
1 调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...
- 怎样禁止Ceph OSD的自动挂载
前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...
- Ceph OSD服务失效自动启动控制
前言 服务器上面的服务会因为各种各样的原因失败,磁盘故障,权限问题,或者是服务过载引起超时,这些都可能引起 这个在ceph里面systemctl unit 默认有个on-fail restart,默认 ...
- Ceph OSD从filestore 转换到 bluestore的方法
前言 前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考 实践步骤 获取代码并安装 git clone https://github.c ...
- 无法启动MYSQL服务”1067 进程意外终止”解决办法
原文:http://www.111cn.net/database/mysql/48888.htm 本文章主要是总结了各种导致mysql提示无法启动MYSQL服务"1067 进程意外终止& ...
- 分布式存储ceph——(5)ceph osd故障硬盘更换
正常状态:
随机推荐
- chrome(谷歌)登录失败解决方案
相信有很多小伙伴和我一样,同步chrome的收藏夹,这样也便于随时可以查看自己收藏的网址.但是同步文件,必须先要登录chrome账号,登录chrome账号时,总是会报黄页,或者一直加载不出来.接下来, ...
- Iobuffer的使用
写模式: 创建Iobuffer实例,使用Iobuffer的static方法-allocate,有一个参数的方法或者两个参数,第一个参数capacity是指定创建的Iobuffer的容量的最大值,需要注 ...
- 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞
大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...
- 简单的学生管理(C语言)
#include<stdio.h> #include<stdlib.h> #include<string.h> struct Student_type{ char ...
- 快来,我悄悄的给你说几个HashCode的破事。
这是why技术的第 72 篇原创文章 Hash冲突是怎么回事 在这个文章正式开始之前,先几句话把这个问题说清楚了:我们常说的 Hash 冲突到底是怎么回事? 直接上个图片: 你说你看到这个图片的时候想 ...
- java安全编码指南之:文件和共享目录的安全性
目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中在共 ...
- 【Java】类的结构
类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍. 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象:强调具备了功能的对象,以类/对象为 ...
- 我的第三次C语言作业
我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- Python如何快速复制序列?
1 基本用法 把序列乘以一个整数,就会产生一个新序列.这个新序列是原始序列复制了整数份,然后再拼接起来的结果. l=[1,2,3] l2=l * 3 logging.info('l2 -> %s ...
