前言

如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意想不到的情况

定位

如果你看过我的博客,正好看过这篇 <<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,意外不?的更多相关文章

  1. 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 ...

  2. 处理Ceph osd的journal的uuid问题

    前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏 ...

  3. ceph osd 自动挂载的N种情况

    直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...

  4. Ceph osd故障恢复

    1  调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...

  5. 怎样禁止Ceph OSD的自动挂载

    前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...

  6. Ceph OSD服务失效自动启动控制

    前言 服务器上面的服务会因为各种各样的原因失败,磁盘故障,权限问题,或者是服务过载引起超时,这些都可能引起 这个在ceph里面systemctl unit 默认有个on-fail restart,默认 ...

  7. Ceph OSD从filestore 转换到 bluestore的方法

    前言 前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考 实践步骤 获取代码并安装 git clone https://github.c ...

  8. 无法启动MYSQL服务”1067 进程意外终止”解决办法

    原文:http://www.111cn.net/database/mysql/48888.htm   本文章主要是总结了各种导致mysql提示无法启动MYSQL服务"1067 进程意外终止& ...

  9. 分布式存储ceph——(5)ceph osd故障硬盘更换

    正常状态:

随机推荐

  1. chrome(谷歌)登录失败解决方案

    相信有很多小伙伴和我一样,同步chrome的收藏夹,这样也便于随时可以查看自己收藏的网址.但是同步文件,必须先要登录chrome账号,登录chrome账号时,总是会报黄页,或者一直加载不出来.接下来, ...

  2. Iobuffer的使用

    写模式: 创建Iobuffer实例,使用Iobuffer的static方法-allocate,有一个参数的方法或者两个参数,第一个参数capacity是指定创建的Iobuffer的容量的最大值,需要注 ...

  3. 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞

    大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...

  4. 简单的学生管理(C语言)

    #include<stdio.h> #include<stdlib.h> #include<string.h> struct Student_type{ char ...

  5. 快来,我悄悄的给你说几个HashCode的破事。

    这是why技术的第 72 篇原创文章 Hash冲突是怎么回事 在这个文章正式开始之前,先几句话把这个问题说清楚了:我们常说的 Hash 冲突到底是怎么回事? 直接上个图片: 你说你看到这个图片的时候想 ...

  6. java安全编码指南之:文件和共享目录的安全性

    目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中在共 ...

  7. 【Java】类的结构

    类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍. 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象:强调具备了功能的对象,以类/对象为 ...

  8. 我的第三次C语言作业

    我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...

  9. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  10. Python如何快速复制序列?

    1 基本用法 把序列乘以一个整数,就会产生一个新序列.这个新序列是原始序列复制了整数份,然后再拼接起来的结果. l=[1,2,3] l2=l * 3 logging.info('l2 -> %s ...