首页 > 关于部署osd过程中:Device is in use by a device-mapper mapping问题解决

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

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('partd+-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

更多相关:

  •   在config/index.js找到dev:{}里面的autoOpenBrowser: 设置为true,重新npm run dev一次就自动弹出浏览器页面啦!  ...

  • 工作中需要用到批量修改文件用户和组的情况,特记录以下便捷用法。 1.批量修改多个文件的user和group chown ats:ats /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk /dev/sdl /dev/sdm...

  • 环境: ceph L版本12.2.1升级到12.2.12 这个问题是由于升级后进行12.2.12环境中的使用ceph-disk 进行osd部署时出现如下问题,执行命令 ceph-disk -v prepare /dev/sdb;ceph-disk -v activate /dev/sdb1 出现如下问题,出现这个问题之前我的磁盘用作...

  • 划分磁盘分区 sgdisk -n 1:+2G:+50G /dev/sda 划分磁盘分区,一号分区划分为50G,同时预留2G的空间 磁盘格式化 sgdisk -z -og /dev/sda 查看分区详情 sgdisk -i 1 /dev/hda查看hda第一分区的详情信息 [root@node3 ~]# sgdisk...

  • 主要是在bluestore的实例上执行低级管理操作的使用程序,是ceph bluestore的管理工具 命令 help显示帮助信息fsck [--deep]对bluestore元数据进行一致性检查。如果指定了–deep,还要读取所有对象数据并验证校验和repair运行一致性检查 并修复我们可以发生的任何错误bluefs-ex...

  • iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?iOS获取设备ID总结IDFA解释 关于UUID的理解 : 英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提...

  • Running Your Application 原文演示了怎样在真机和模拟器上运行你的App。 原文链接:http://developer.android.com/training/basics/firstapp/running-app.html 译文链接:http://android.toolib.net/training/bas...

  • 转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877   目录 MTD总概述MTD数据结构 MTD相关层实现 MTD,Memory Technology Device即内存技术设备 字符设备和块设备的区别在于前者只能被顺序读写,后者可以随机访问;同时,两者读写数...

  • 设备管理器架构 ----Windows Embedded CE 6.0 R3   原文:http://msdn.microsoft.com/en-us/library/ee484004(v=WinEmbedded.60).aspx   设备管理器运行在Windows Embedded CE操作系统下,跟踪加载的驱动及其接口。它从内核中...