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故障硬盘更换
正常状态:
随机推荐
- Verilog基础入门——简单的语句块编写(一)
[题干] [代码] module top_module ( input in, output out ); assign out = ~in; endmodule 简单的实现一个非门
- css变量复用 全局变量-局部变量
前言 简单使用场景:同一套后台系统有多套主题的情况下,主题色作为一个最常用到的可复用的颜色,非常有必要像js的全局变量一样存在全局变量中以作复用,之前我第一个想到的是sass的变量声明,未曾想到css ...
- FreeRTOS链表实现
直接上源码分析 void vListInitialise( List_t * const pxList ){ pxList->pxIndex = ( ListItem_t * ) &( ...
- 第12天 | 12天搞定Python,让excel飞起来
学了10多天Python基础知识了,是时候来点硬货了,看过<第1天 | 12天搞定Python,告诉你有什么用?>的老铁都知道,Python可用的领域挺多的.只是我长期待在企业,所以只能说 ...
- JS逻辑运算符之“短路”
逻辑与 && 如(表达式 1 && 表达式 2)参与运算时,程序只运行到对应的位置后,停止运行 二者都为 真(true) 时,返回表达式 2 二者有一个为 假 (fal ...
- log4j日志级别怎么搞
日志的级别之间的大小关系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF Log4j建 ...
- java中true不是关键字?
java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符. 其中const和goto是java的保留字.java中所 ...
- 【应用服务 App Service】App Service中上传文件/图片(> 2M)后就出现500错误(Maximum request length exceeded).
问题描述 在使用App Service (Windows)做文件/图片上传时候,时常遇见上传大文件时候出现错误,这是因为IIS对文件的大小由默认限制.当遇见(Maximum request lengt ...
- eclipse时一直卡在进程中
(1)今天遇到进入eclipse时一直卡在 进程中,无论是重启电脑,还是重启软件 删除 D:\workspace\.metadata\.lock 文件才有用,特此记录下. (2)还有一种情况就是打开e ...
- CodeForces 1426F Number of Subsequences
题意 给定一个长度为 \(n\) 的串,只包含 abc 和通配符.通配符可以替换 abc 的一个.求所有得到的字符串中子序列 abc 出现的次数,对 \(10^9+7\) 取模. \(\texttt{ ...