当前位置: 首页 > 编程日记 > 正文

关于部署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('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

相关文章:

spyder一打开就卡了_欧姆龙plc 用 SD 卡上传/下载程序

以Nx102为例,NJ类似。使用 SD 卡将 Sysmac Studio 编写的程序传入 NX1P2 内; 使用 SD 卡对NX1P2 的程序进行备份, 查看备份的程序, 并把备份的程序传入另一台对应型号的 NX1P2 内。一、 使用 SD 卡将 Sysmac Studio 写的程序传入 …

Unity3D 中 2D_Toolkit插件下载 和 导入方法

Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面。 2.然后按ctrl9,进入asset store,等页面加载。 3.页面加载成功后,如果有账号,就登录,没有账号先…

Emacs 使用YASnippet

<?xml version"1.0" encoding"utf-8"?> Emacs 使用YASnippetUP | HOME Emacs 使用YASnippet Table of Contents 1 安装YASnippent2 安装 org-mode字典3 org-mode中使用教程4 YASnippet增加模板1 安装YASnippent $ cd ~/.emacs.d/plugins $ git c…

ruoyi后台管理系统分析(三)---admin包

三、admin包 --web包 -----controller包 -----------common包 CommonController.java------通用请求处理 package com.ruoyi.web.controller.common;import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest;…

ceph-objectstore-tool工具使用详解

文章目录简介使用OSD相关操作PG相关操作对象相关操作总结简介 ceph-objectstore-tool工具&#xff0c;能够操作到ceph最底层的数据&#xff0c;包括pg,对象层级。它能够对底层pg以及对象相关数据进行获取、修改。并能够对一些问题pg和对象进行简单修复。所以使用该工具进行操作…

slf4j导入那个依赖_学习SPRINGBOOT结合日志门面SLF4J和日志实现LOGBACK的混合使用

一、此处主要介绍在springboot工程下如何使用 logback slf4j 进行日志记录。logback主要包含三个组成部分&#xff1a;Loggers(日志记录器)、Appenders(输出目的在)、Layouts(日志输出格式) slf4j &#xff1a;如jdbc一样&#xff0c;定义了一套接口&#xff0c;是一个日志门面…

linux下发布的执行文件崩溃的问题定位 心得一则

C Release版本发布到客户处执行时&#xff0c;如果程序崩溃&#xff0c;有什么办法能够快速的确认程序的问题呢&#xff1f; 如果能gdb调试的话&#xff0c;比较简单了&#xff0c;可以使用gdb命令&#xff0c;类似如下&#xff1a;gdb ##set args ****b mainr#eipx/10i 0xb736…

7 个漂亮的 JavaScript 的时间轴组件 [转]

时间轴&#xff1a;通过互联网技术&#xff0c;依据时间顺序&#xff0c;把一方面或多方面的 时间足迹事件串联起来&#xff0c;形成相对完整的记录体系&#xff0c;再运用图文的形式呈现给用户&#xff1b;时间轴可以运用于不同领域&#xff0c;最大的作用就是把过去的事物系统…

Python 学习笔记: 反射

Python 反射应用 例子1&#xff1a; class Person:def __init__(self, name, age):self.name nameself.age agedef show(self):print(%s \s age is %s%(self.name, self.age))alex Person(alex, 18) # alex.show() if hasattr(alex, show):getattr(alex, show)() 转载于:ht…

C++多线程:互斥变量 std::mutex

文章目录描述成员函数总结描述 头文件 <mutex>使用 std::mutex <variable>简介 mutex是一种多线程变成中的同步原语&#xff0c;它能够让共享数据不被多个线程同时访问&#xff0c;它不支持递归得对互斥对象上锁特点 用方线程从它成功调用 lock 或 try_lock 开始&…

vim替换字符串带斜杠_Vim、gvim操作替换

~ 回复 以下关键词 查看更多IC设计教程 ~目前支持的关键词有&#xff1a;Innovus ICC or IC CompilerDC or Design Compiler PT or PrimeTimeUser Guide or UG LedaVCS Formality工艺节点 …

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...

转&#xff1a;http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据&#xff08;树形导航&#xff09;的webpart开发及问题 1、实现效果如下&#xff1a; 点击各个节点进入相应的链接 2、测试…

智能医疗?轻松实现!

每个中国人都及其关注养老和住房问题&#xff0c;在中国每个人都十分有存钱的意识。就目前来看&#xff0c;现在的医疗和住房保障还没有能够满足我们现在的需求&#xff0c;因而&#xff0c;存钱显得尤为重要。我们关注医疗&#xff0c;是因为每个人都会面临年老&#xff0c;每…

TokuDB vs Innodb 基准测试对比

随着业务的发展以及mysql存储数据量的越来越大&#xff0c;很多超大表不仅仅存储变的不易&#xff0c;维护也变得越来越困难&#xff0c;特别是频繁的ddl操作让运维变得痛苦不堪。当然表拆分可以解决类似的问题&#xff0c;但是对一个稳定的系统来说&#xff0c;表拆分对业务的…

C++ 多线程:互斥对象 lock_gurad

描述 头文件:<mutex>声明方式: template< class Mutex > class lock_guard;简介 lock_guard是一种互斥包装器&#xff0c;它提供了非常便捷的raii资源管控技术用来在对象生存周期内提供互斥锁。 lock_gurad很好得解决了互斥变量mutex的锁成员在函数异常期间无法正…

太TM难看了,我自己都看不下去了

继续研究文件IO。 作用是用System.in输入一个文件路径&#xff0c;然后打印文件里的所有行。 而且虽然没仔细检查过&#xff0c;哦不就是因为没检查过&#xff0c;所以肯定不够健壮。 1 import java.io.*;2 import java.util.Scanner;3 4 public class test {5 public stat…

儿童吹泡泡水简单配方_自制泡泡水最简单配方的做法教程

泡泡吸引着各个年龄段的人&#xff0c;就像是反射彩虹的表面&#xff0c;在微风中漂浮。无论您是出于什么原因&#xff0c;都很容易在其中找到快乐。吹泡泡可以让小孩玩上几个小时&#xff0c;而大一点的孩子可以尝试制作最佳泡泡液。对于年轻的萌芽科学家来说&#xff0c;制备…

Linux系统下统计目录及其子目录文件个数

改变脚本权限&#xff1a;(这里假设你的脚本叫FileCount.sh) chmod ax FileCount.sh 脚本&#xff1a; 1 #!/bin/sh 2 echo 查看某目录下文件的个数 3 ls -l |grep "^-"|wc -l 4 5 echo 查看某目录下文件的个数&#xff0c;包括子目录里的。 6 ls -lR|grep "^-…

【Rsync项目实战一】备份全网服务器数据

目录 【Rsync项目实战】备份全网服务器数据 【企业案例】1.1 环境部署1.2 开始部署backup服务器&#xff1a;Rsync服务端过程&#xff1a;1.3 开始部署nfs01服务器&#xff1a;Rsync客户端过程&#xff1a;【Rsync项目实战】备份全网服务器数据 标签&#xff08;空格分隔&#…

C++ 多线程:条件变量 std::condition_variable

文章目录描述使用描述 头文件<condition_variable> 定义 class condition_variable; 简介 之前我们也已经介绍过了C多线程中互斥变量存在&#xff0c;已经足够支持多线程中对共享普通系统数据的合理访问。但是因为多线程中同一时刻必然会有一个线程持有锁&#xff0c;一…

小晶粒zsm分子筛合成表征实验报告_Nat. Mater.:区域选择性合成亚纳米金属-分子筛材料...

本文来自微信公众号&#xff1a;X-MOLNews亚纳米尺度的负载型催化剂是近些年多相催化领域以及相关材料科学领域的热门方向。围绕着单原子催化剂、团簇催化剂的论文如井喷一般出现在各大期刊上。关于亚纳米尺度金属催化剂的制备方法、表征方法、催化性能或是相关的理论研究都在如…

【翻译】使用新的Sencha Cmd 4命令app watch

原文&#xff1a;http://www.sencha.com/blog/using-the-new-app-watch-command-in-sencha-cmd-4/作者&#xff1a;Don Griffin Don Griffin is a member of the Ext JS core team. He was an Ext JS user for 2 years before joining Sencha and has over 20 years of softwar…

《设计模式解析(第2版)》

2019独角兽企业重金招聘Python工程师标准>>> 1. 软件开过程中的视角 视角 描述 概念 “软件要负责什么&#xff1f;” 规约 “怎么使用软件&#xff1f;” 实现 ”软件怎样履行自己的责任&#xff1f;“ 可能使用的另外一组视角&#xff1a;使用视角和创建/…

Nmap帮助文档解释

目标指定&#xff08;target specifiction&#xff09; 1、用法:Nmap[扫描类型][设置]{设备列表} 注&#xff1a;[]{} -> 中的内容必须有 <> -> 中的内容可以有可以没有 2、地址类型&#xff1a;主机名、ip地址、网段 3、-iL<文件名> 通过文件输入地址 4、-i…

C++ 多线程:future 异步访问类(线程之间安全便捷的数据共享)

文章目录future前言future描述future类成员使用总结future前言 首先查看如下代码 #include <iostream> #include <thread> #include <future> #include <mutex>using namespace std;void fun1(int n,int &x) {int res 1;for (int i n; i>1;…

bldc不同载波频率_广播百科 频率调制

∧ 请关注为星标&#xff0c;在知识的海洋每天进步1%第 463期频率调制&#xff0c;简称“调频”&#xff0c;它是一种使载波的瞬时频率随调制信号的变化规律而变化的调制方法。实现这种调制方法的电路称调频器,广泛用于调频广播、电视伴音、微波通信、锁相电路和扫频仪等方面。…

基于visual Studio2013解决面试题之0403串联字符串

&#xfeff;&#xfeff;&#xfeff;题目解决代码及点评/*有 n个长为 m1的字符串&#xff0c;如果某个字符串的最后m个字符与某个字符串的前m个字符匹配&#xff0c;则两个字符串可以联接&#xff0c;问这n个字符串最多可以连成一个多长的字符串&#xff0c;如果出现循环&…

MIT开放式课程“自然语言处理”介绍

MIT开放式课程“自然语言处理”介绍 发表于 2009年01月2号 由 52nlp从订阅的Google快讯上知道这个“麻省理工学院“开放式课程网页” | 电机工程与计算机科学 | 6.881 2004秋季课程&#xff1a;自然语言处理 | 课堂讲稿”网站&#xff0c;看介绍是MIT开放课程的中文翻译计划&am…

怎么将对象里面部分的属性放到一个空的对象里面去

var obj{name:jack,age:18,sex:male}var {name,age}objvar obj2{name,age}console.log(obj2) //{name: "jack", age: 18} 这是es6的用法 还有其他的3种方法,关于对象复制的 es6 var obj {name: jack,age: 18}var data Object.assign(obj)console.log(data) //{nam…

C++多线程:thread类创建线程的多种方式

文章目录描述函数成员简介总结描述 头文件 <thread> 声明方式&#xff1a;std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行&#xff0c;从提供给作为构造函数参数的顶层函数开始。如果顶层函数抛出异常&#xff0c;则调用 std::terminate。正如我…