ceph环境:12.2.1
使用古老的ceph-disk工具部署osd,仅仅prepare过程中就出现如上所示问题
Device is in use by a device-mapper mapping md127

解决方法如下:

  1. 由于device-mapper为系统自己的磁盘映射器,此时检查系统是否有逻辑卷
    pvs
    lvs
    vgs
    如为出现逻辑卷设备,则表明当前磁盘并未创建逻辑卷
    此时针对设备上的磁盘做如下操作
    sgdisk -z -og /dev/sdb,可以格式化成功,即磁盘内部扇区结构没有问题
    sgdisk -n 1:+2G:+100G /dev/sdb,可以创建gpt分区成功,磁盘支持分区操作
    按道理磁盘是可以进行osd部署的,只要能够正常格式化,保证gpt分区创建成功,ceph-disk部署osd对磁盘也就这么多要求了

    没办法,还得继续解决啊

  2. 根据问题查看ceph-disk工具的源码main.py
    该处逻辑处理如下

    def verify_not_in_use(dev, check_partitions=False): #检查是否存在device_mapper设备
    """
    Verify if a given device (path) is in use (e.g. mounted or
    in use by device-mapper).:raises: Error if device is in use.
    """
    assert os.path.exists(dev)
    if is_mounted(dev): #在该处进行检测,大发现该磁盘被某个设备持有,则认为它被占用raise Error('Device is mounted', dev)
    holders = is_held(dev)
    if holders:raise Error('Device %s is in use by a device-mapper ''mapping (dm-crypt?)' % dev, ','.join(holders))
    ...def is_held(dev): #检查是否有其他设备持有当前设备
    """
    Check if a device is held by another device (e.g., a dm-crypt mapping)
    """
    assert os.path.exists(dev)
    if is_mpath(dev): #检查是否为dm设备return []dev = os.path.realpath(dev)
    base = get_dev_name(dev)
    ...def is_mpath(dev):
    """
    True if the path is managed by multipath
    """
    if FREEBSD:return False
    uuid = get_dm_uuid(dev) #去指定路径下尝试获取dm设备的uuid
    return (uuid and(re.match('part\d+-mpath-', uuid) orre.match('mpath-', uuid)))
    ...
    def get_dm_uuid(dev):
    uuid_path = os.path.join(block_path(dev), 'dm', 'uuid')
    LOG.debug("get_dm_uuid " + dev + " uuid path is " + uuid_path)
    if not os.path.exists(uuid_path):return False
    uuid = open(uuid_path, 'r').read()
    LOG.debug("get_dm_uuid " + dev + " uuid is " + uuid)
    return uuiddef block_path(dev):
    if FREEBSD:return dev
    path = os.path.realpath(dev)
    rdev = os.stat(path).st_rdev
    (M, m) = (os.major(rdev), os.minor(rdev))
    return "{sysfs}/dev/block/{M}:{m}".format(sysfs=SYSFS, M=M, m=m) #即在 /sys/dev/block 路径下存在对应的dm 设备,uuid号为md127
    

    根据以上调用逻辑,最终ceph-disk是通过/sys/dev/block检查是否有对应的dm设备

  3. cd /sys/dev/block 并执行ls -l
    果然看到了对应的dm设备
    ../../devices/virtual/block/md127
    ../../devices/virtual/block/md126

    此时根据dm设备存储的文件,打开cat /proc/mdstat文件,查看果然存在md127和md126设备,查阅发现这两个设备为raid分区。

  4. 再次检查系统是否存在raid的配置文件
    ls /etc/mdadm.conf不存在
    综上,大概可知情况如下:
    我们部署osd用到的磁盘之前在某个服务器上被绑定过raid,则拿到当前设备直接使用,系统能够监测到该磁盘被使用做raid,所以仍然会创建对应的raid分区,但是并未有相关的配置文件生成

  5. 知道了问题点,即需要进行解决
    这里也是借鉴前人经验mdadm命令出手

    • mdadm -S md127或者mdamd --stop md127先停止raid设备
    • 由于没有对应的raid配置,此时不需要删除了,删除raid并直接清除磁盘的超级块
      mdadm --remove md127
      mdamd --zero-superblobk /dev/sdb

最终我们即可清除掉磁盘的device-mapper告警问题,成功部署osd

关于部署osd过程中:Device is in use by a device-mapper mapping问题解决相关推荐

  1. windows10用c++部署libtorch过程中遇到的一些问题

    windows10用c++部署libtorch过程中遇到的一些问题 libtorch1.0 vs2017 CMake3.14 windows10 无cuda 用c++调用pytorch模型官网上面有详 ...

  2. 关于windows10用c++部署libtorch过程中遇到的一些问题

    libtorch1.0 vs2017 CMake3.14 windows10 无cuda 用c++调用pytorch模型官网上面有详细教程,也有很多博客,可以参考以下链接:pytorch怎么使用c++ ...

  3. 网站搭建系列:云虚拟主机建站部署的过程中如何上传FTP?

    在用云虚拟主机搭建网站的过程中,最常见的,就是用FTP上传我们的建站程序(WordPress. 米拓.织梦.帝国等)或者是网站的源代码,对于前期刚接触建站的我来说,用虚拟主机上传建站程序搭建网站是一个 ...

  4. Weblogic部署项目过程中的一些问题

    weblogic启动,最后一段出现的警告: <Warning> <Log Management> <BEA-170011> <The Lo gBroadcas ...

  5. DELL服务器安装过程中出现的ERROR及解决方案

    1.问题:服务器在安装过程中出现如下异常: NO boot device availabel                                               current ...

  6. 热部署在项目中的应用

    前言 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本.对于一个后端开发者来说,重启过程确实很难受.目前的java虚拟机只能实现方法体的热部 ...

  7. 在线升级,下载升级包过程中提示网络异常导致升级失败。

    问题描述: 连接wifi,选择在线升级,在现在升级包过程中,提示网络异常,导致升级失败. 问题解决: 首先分析mainlog中对应时间点上下文的log.通过搜索rssi,查看当前wifi连接状态,如下 ...

  8. 使用ATX-server部署过程中遇到的问题-遇到就更,作为记录

    最近开始做自动化测试相关工作,部署atx-server 安卓集群管理,记录下部署过程中遇到的问题 一:atxserver不显示设备,使用命令:python main.py --server local ...

  9. [项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer...

    前一篇文章说了些有关IIS的,这篇则是说SQLServer的,相比IIS来说,SQLServer的配置过程中问题就少了许多,而且都比较有针对性,下面开始记录: 注:由于实际项目的开发都是基于SQL20 ...

最新文章

  1. 使用页面元素属性做状态判断的隐患
  2. html5-FileReader接口
  3. 仿即刻的点赞滚动放大波纹图标
  4. Iptables 表和链之间的关系【未完成】
  5. C#编程利器系列文章
  6. LeetCode 312. Burst Balloons
  7. 作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植(二)
  8. Boost:boost::asio模块的allocation service分配服务测试程序
  9. php如何判断提交内容为空,php禁止提交空表单(php空值判断)的方法
  10. 1.常用字符对象方法
  11. ai如何做倒角和圆角_石材路沿石是如何倒角的?倒角费用是多少?路沿石质量标准?...
  12. [Redux/Mobx] Redux怎么添加新的中间件?
  13. [SHOI2012]魔法树 链剖
  14. 一步步实现SDDC-Edge与动态路由实现
  15. java学习(五)包
  16. python输出名字和字数_Python字数和排名
  17. python中class什么意思_python class是什么
  18. 聊聊UI的扁平化设计趋势与拟物化设计
  19. 优酷 DSP 广告投放系统架构实践
  20. 数字化技术成为门店的重要推手?

热门文章

  1. JS动态改变文本中光标位置
  2. appium 控件定位
  3. 测试与封装5.1.5.2
  4. WebApi2官网学习记录---异常处理
  5. (原创)c++primer(第五版)--1.3 注释简介
  6. sql查询返回xml数据之应用【转载】
  7. html web上传文件原理,Web上传文件的原理及实现
  8. 机械键盘连击怎么处理_怎么选择机械键盘?各种平价机械键盘推荐
  9. mysql 定时器不能持续循环执行_定时器,不循环执行指定方法?如何解决?
  10. 小型职工工作量c语言,计算机c语言职工工作量统计系统.doc