当前位置: 首页 > news >正文

为什么ceph新添加的硬盘会自动变为osd

您好!这是一个非常好的问题,也是 Ceph 运维中一个关键的特性。

根据您图片中的信息和您描述的现象(新硬盘会自动变为 OSD),​​根本原因在于 Ceph 集群(特别是 cephadm)的“自动化运维(Orchestrator)”功能默认是开启的,并且它有一个默认策略:自动识别和利用所有“可用(Available)”的存储设备。​

下面我为您详细解释为什么会发生这种情况以及如何管理它。

核心原因:Ceph 的自动化设备部署策略

  1. ​默认的自动化行为​​:现代 Ceph(尤其是使用 cephadm 部署的集群)的设计理念是自动化。一旦您将一块新的、​​干净的​​(即没有文件系统、分区表等元数据)硬盘接入集群中的主机,并被 cephadm 扫描到(ceph orch device ls), Orchestrator 模块就会认为这是一块“可用”的存储资源。

  2. ​服务规格(Service Specification)​​:Ceph 通过“服务规格”文件(或命令)来定义需要部署什么服务(如 OSD、MDS、MON等)以及如何部署。如果您在部署集群时​​没有明确指定只能在哪些具体设备上创建 OSD​​,Ceph 就会采用默认行为。

  3. ​“all-available-devices”策略​​:最常见的默认策略就是使用所有可用设备。当您执行了像 ceph orch apply osd --all-available-devices 这样的命令后,就等于给 Ceph 下了一条持续的指令:“​​请确保我集群中所有标记为 ‘Available: Yes’ 的设备都被创建为 OSD,现在和将来发现的都一样​​”。

结合您的图片分析

在您的图片中,所有设备的 AVAILABLE 列都是 No,并且拒绝原因(图中未完全显示,通常是 ceph orch device ls -f json-pretty 查看)是“已有文件系统”或“空间不足”。这说明这些磁盘​​已经被占用​​了,所以 Ceph 不会自动使用它们。

但是,当您插入一块​​全新的、没有任何内容​​的硬盘时:

  1. cephadm 守护进程会定期扫描或通过您的 --refresh 命令触发扫描,发现这块新硬盘。
  2. 扫描后,这块新硬盘的 AVAILABLE 列会显示为 Yes
  3. Ceph Orchestrator 检测到有新的“可用”设备出现,​​并且​​它记得您之前下过的“apply osd”指令(即使用所有可用设备)。
  4. 于是,它就会自动地在后台执行流程,擦除(zap)这块新硬盘并将其部署为一个新的 OSD,完全无需您手动干预。

​简单比喻​​:这就像是您告诉一个机器人:“把我家所有空着的花盆都种上花。” 之后,每当您放一个新的空花盆到院子里,这个机器人就会自动过来把它种上花,而不需要您再下一次命令。


如何管理和控制这种行为?

如果您不希望 Ceph 自动使用每一块新硬盘,您有以下几种选择:

1. 【推荐】使用明确的设备列表部署 OSD

这是最精确的控制方法。您可以明确指定使用哪些设备。

  • ​步骤一:列出设备,确认设备路径和ID​

    ceph orch device ls

    (确认新硬盘的状态是 Available: Yes

  • ​步骤二:使用特定命令将​​特定设备​**​部署为 OSD

    • ​方法A:使用设备路径(如 /dev/sdx)​
      ceph orch daemon add osd <hostname>:/dev/sdx
      # 例如:ceph orch daemon add osd ceph01:/dev/sdf
    • ​方法B:使用设备ID(更可靠,设备路径可能会变,但ID通常不会)​
      ceph orch device ls 输出中找到新硬盘的 DEVICE ID(例如 QEMU_HARDDISK_DRIVE-scsi8)。
      ceph orch daemon add osd <hostname>:/dev/disk/by-id/<device_id>
      # 例如:ceph orch daemon add osd ceph01:/dev/disk/by-id/QEMU_HARDDISK_DRIVE-scsi8

2. 更改默认的 OSD 部署方法

如果您之前应用了 --all-available-devices 策略,可以将其移除,转而采用更精确的方法。

  • ​检查当前的 OSD 部署规则​​:

    ceph orch ls --service-type osd

    这个命令会显示出当前已应用的 OSD 部署规格,您很可能会看到一条规则使用了 all-available-devices: true

  • ​移除旧的自动化规则​​(如果存在):
    您需要先停止这条规则,然后再用新的精确指令来添加 OSD。

    ceph orch rm osd.all-available-devices --force
    # 或者使用其具体的服务名,根据上一条命令的输出而定

    ​注意:​​ 此操作​​不会​​删除已存在的 OSD,只会阻止 Ceph 未来自动部署新磁盘。

3. 【临时禁用】暂停整个集群的自动化操作

如果您正在进行维护,不希望 Ceph 自动做任何操作,可以暂停 Orchestrator。

  • ​暂停自动化​​:
    ceph orch pause
  • ​恢复自动化​​:
    ceph orch resume
    在暂停状态下,您可以安全地添加硬盘,而 Ceph 不会自动部署它们。等您准备好后,再恢复自动化并手动部署。

总结

  • ​为什么会自动部署?​​ 因为您或部署脚本很可能在早期执行过 ceph orch apply osd --all-available-devices,这是一个“一劳永逸”的自动化指令。
  • ​如何解决?​​ 您不需要关闭这个功能,而是应该​​改变使用习惯​​:在添加新硬盘前,​​先通过明确的命令​ceph orch daemon add osd <hostname>:<device>​来告诉 Ceph 您的精确意图​​。或者,彻底移除全自动策略,完全采用手动管理。

希望这能解答您的疑惑!

http://www.wxhsa.cn/company.asp?id=6412

相关文章:

  • Zabbix Proxy 技术实践与运维思考
  • OF SF CF ZF 的判断方式以及例子
  • 2025年30个CRM系统盘点:哪款CRM系统适合你的企业? - SaaS软件
  • TSN Qav测试实践
  • adobe illustrator中生成连续直角线段
  • 多重分形去趋势交叉相关性分析
  • 智启燃气新未来丨众智鸿图精彩亮相2025燃气运营与安全研讨会 - 教程
  • 燕千云ITR平台引领服务流管理革命,构建企业客户服务智慧生态
  • WPF 容器尺寸行为总结
  • 在adobe illustrator中如何插入大于、小于号
  • 三分钟了解流量卡的选择
  • SARIMA算法
  • 【IEEE出版|EI检索稳定】第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)
  • Gitee推出革命性MCP Server:AI深度参与开发全流程 开启智能协作新时代
  • 用机器语言实现循环
  • 取证 - voasem
  • django对接drf-spectacular替代swagger
  • 可画
  • Symbol VBRK: Invalid data type u SAP 事务成功新号码获取到 但是提交后提示失败如何处理
  • Oracle 19c asm单机OPatch补丁报错checkSystemCommandAvailable failed.
  • three.js中怎么加载 .gltf/glb格式 文件
  • ollama如何安装使用
  • 【SPIE独立出版|连续多年EI稳定检索】第七届地球科学与遥感测绘国际学术会议(GRSM 2025)
  • 手把手教你实现C++高性能内存池,相比 malloc 性能提升7倍!
  • LDPC 码 BP 算法性能研究
  • 内外网文件传输方式有哪些:从传统方案到专业系统的全面解析!
  • 实用指南:DeerFlow 实践:华为IPD流程的评审智能体设计
  • py之补环境代理脚本
  • Python psutil模块
  • 跨网文件传输工具选择要点是什么?