首页/新闻资讯/正文详情

Ceph test_orchestrator 模块实战指南:用模拟数据驱动 ceph orch 编排器开发与集成测试

发布时间:2026/9/24 15:50:06 来源:云帆数科 栏目:资讯中心
Ceph test_orchestrator 模块实战指南:用模拟数据驱动 ceph orch 编排器开发与集成测试
存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载test_orchestrator 是 Ceph Managermgr内置的测试专用编排器Orchestrator实现专门服务于开发环境与集成测试场景。它本身不做任何实际工作而是通过加载 JSON 模拟数据dummy data来向ceph orch命令体系提供可预测的 inventory、service 与 daemon 视图从而在没有真实编排后端如 cephadm、Rook的情况下验证 CLI 解析、命令分发与状态展示逻辑。读完本文你将掌握 test_orchestrator 的启用、状态检查与模拟数据导入方法并能基于源码理解其内部数据模型与回退探测机制。一、test_orchestrator 是什么从源码注释看test_orchestrator 的定位非常明确module.pyThis is an orchestrator implementation used for internal testing. Its meant for development environments and integration testing. It does not actually do anything. The implementation is similar to the Rook orchestrator, but simpler.也就是说它不创建、不删除、不编排任何真实服务——几乎所有写操作都只做参数校验后返回空字符串或done用于内部测试——供开发者在不搭建真实集群编排环境的前提下测试ceph orch命令链路的正确性实现方式与 Rook 编排器类似但更简单——类名为TestOrchestrator同时继承MgrModule与orchestrator.Orchestrator接口基类。在 CMakeLists.txt 中它被明确归类为# tests (for testing purpose only)分组与selftest等模块并列安装时随其余 mgr 模块一起被复制到${CEPH_INSTALL_DATADIR}/mgr目录。二、激活 test_orchestrator 模块原文档给出的激活步骤只有两条命令但理解其背后机制有助于排查问题$ ceph mgr module enable test_orchestrator $ ceph orch set backend test_orchestrator第一条命令在 mgr 中启用该模块使TestOrchestrator实例被加载并开始serve()其内部仅是一个等待shutdown事件的空循环见 module.py。第二条命令把当前集群的编排后端切换为test_orchestrator。orch set backend命令在 orchestrator/module.py 中实现。切换后ceph orch *系列命令orch ls、orch ps、orch host ls、orch device ls等都会将请求转发到TestOrchestrator实例。需要注意若未设置任何后端ceph orch命令会报错No orchestrator configured (try ceph orch set backend)该行为在 test_orchestrator.py 的test_handle_command中有明确测试。因此ceph orch set backend test_orchestrator是让 CLI 链路跑通的必要条件。三、检查编排器状态启用并切换后端后可通过以下命令确认编排器工作正常ceph orch statusceph orch status对应OrchestratorCli._status见 orchestrator/module.py它会调用后端编排器的available()方法。TestOrchestrator.available()恒返回(True, , {})module.py表示始终可用因此该命令应当输出正常的可用状态。这一恒真返回也是刻意为之test_orchestrator 的存在意义就是让上层 CLI 永远可以走通而把关注点放在命令本身的正确性上。四、导入模拟数据核心操作test_orchestrator 最核心的用法是从 JSON 文件加载模拟数据$ ceph test_orchestrator load_data -i ./dummy_data.json该命令在源码中的实现是TestOrchestrator._load_datamodule.py注册名为test_orchestrator load_data权限为w命令通过-iinbuf读取文件内容json.loads(inbuf)解析 JSON失败时返回retval-errno.EINVAL并附带错误信息Invalid JSON file: ...解析成功后调用_init_data(data)将数据填充进模块内部状态。_init_datamodule.py把 JSON 中的三类数据分别反序列化为对应的编排器资源对象JSON 键反序列化目标类对应orch命令inventoryorchestrator.InventoryHostceph orch host ls/ceph orch device lsservicesorchestrator.ServiceDescriptionceph orch lsdaemonsorchestrator.DaemonDescriptionceph orch ps例如导入后执行ceph orch ls会展示 services 中定义的 mds/mgr/nfs/iscsi 服务执行ceph orch ps会展示 daemons 中定义的守护进程ceph orch host ls与ceph orch device ls则分别展示 inventory 中的主机与磁盘设备。五、dummy_data.json 数据格式详解仓库自带的 dummy_data.json 是编写自定义模拟数据的最佳模板。它包含三个顶层键5.1 inventory主机与设备清单每台主机包含name、addr、labels与devices数组典型结构{ name: mgr0, addr: mgr0, labels: [], devices: [ { available: true, human_readable_type: ssd, path: /dev/vdb, rejected_reasons: [], sys_api: { human_readable_size: 10.00 GB, rotational: 0, size: 10737418240, scheduler_mode: mq-deadline, vendor: 0x1af4 } } ] }其中available表示设备是否可用于创建 OSDrejected_reasons记录不可用原因如示例中的locked。示例数据模拟了两台主机mgr0与osd0每台各带 4 块磁盘1 块 SSD 2 块 HDD 可用1 块系统盘被标记为 locked 不可用。5.2 services服务描述每个服务包含service_type、service_name、service_id、placement与status字段{ placement: { hosts: [ {hostname: mgr0, name: , network: }, {hostname: osd0, name: , network: } ] }, service_id: xx, service_name: mds.xx, service_type: mds, status: { container_image_name: quay.io/ceph-ci/ceph:main, created: 2020-04-16T03:39:39.512721, last_refresh: 2020-04-16T06:51:42.412980, running: 2, size: 2 } }示例数据覆盖了mds、mgr、nfs、iscsi四种服务类型其中 iscsi 服务还带有api_user、api_password、pool等附加字段可用于测试不同服务类型的展示差异。5.3 daemons守护进程描述每个守护进程包含daemon_type、daemon_id、hostname、status、status_desc、container_id、version等字段{ container_id: 87d84858109d, daemon_id: xx.mgr0.nkchxn, daemon_type: mds, hostname: mgr0, status: 1, status_desc: running, version: 16.0.0-827-g61ad12e }示例数据覆盖了mds、mgr、nfs、iscsi守护进程daemon 名称采用类型.主机.随机后缀的命名规律如xx.mgr0.nkchxn、iscsi.osd0.abc123。这些字段与orchestrator.DaemonDescription、ServiceDescription、InventoryHost的 JSON 序列化格式一一对应其反序列化与校验逻辑在 orchestrator/_interface.py 的Orchestrator基类配套资源类中定义。六、未加载数据时的回退探测机制如果没有调用load_data导入数据test_orchestrator 会自动回退到对当前主机本地进程与磁盘的探测这也是它能在零配置下直接工作的原因inventory 回退get_inventorymodule.py在内部_inventory为空时会调用ceph-volume inventory --format json收集本机磁盘设备把本机作为名为localhost的主机返回。daemons 回退_get_ceph_daemonsmodule.py通过ps aux解析本机正在运行的 ceph 进程支持mds、osd、mon、rgw、mgr、nfs、iscsi等类型用正则提取 daemon 类型与 daemon ID兼容-i id、--idid、--id id三种写法构建DaemonDescription列表。services 回退describe_servicemodule.py在_services为空时根据回退得到的 daemons 按类型分组统计出各服务及其运行数量。hosts 回退get_hostsmodule.py在无模拟数据时返回[HostSpec(localhost)]。因此即使不导入任何数据ceph orch status、ceph orch ls、ceph orch ps等在开发机vstart 或 teuthology 环境上依然能返回有意义的结果。七、源码中的写操作语义与可测试性设计test_orchestrator 对所有编排写操作均不做真实动作只做参数校验或返回固定成功值这是其作为测试桩test stub的关键设计create_osds/apply_drivegroupsmodule.py仅调用drive_group.validate()并校验 placement 能否匹配主机匹配失败抛OrchestratorValidationError(failed to match)remove_daemons/remove_service/service_action/daemon_action统一返回doneapply_nfs/apply_iscsi/apply_mgr/apply_mon/apply_mds/add_daemon返回spec.one_line_str()即规格的单行摘要add_hostmodule.py内置了可注入异常的测试钩子——当主机名分别取raise_validation_error、raise_error、raise_bug、raise_not_implemented、raise_no_orchestrator、raise_import_error时会依次抛出OrchestratorValidationError、OrchestratorError、ZeroDivisionError、NotImplementedError、NoOrchestrator、ImportError。这使上层 CLI 的异常处理路径可以在不依赖真实后端的情况下被系统性地测试。与之配套orchestrator/tests/test_orchestrator.py 中通过_TestOrchestrator(, 0, 0)直接实例化本模块验证apply对 NFS 服务规格的返回结果test_apply见 test_orchestrator.py以及 inventory/daemon 资源的 JSON 往返序列化一致性test_inventory、test_daemon_description可作为理解其行为与二次开发的参考。八、典型使用流程小结综合以上内容在开发环境中最常用的完整流程为# 1. 启用模块并切换后端 ceph mgr module enable test_orchestrator ceph orch set backend test_orchestrator # 2. 确认编排器状态 ceph orch status # 3. 可选导入自定义模拟数据覆盖默认的本机探测结果 ceph test_orchestrator load_data -i ./dummy_data.json # 4. 使用 ceph orch 系列命令查看模拟的服务/守护进程/主机/设备 ceph orch ls ceph orch ps ceph orch host ls ceph orch device ls九、适用场景与限制test_orchestrator 适用于以下场景CI/集成测试在 teuthology 等测试框架中用固定的模拟数据验证ceph orch命令输出格式与 CLI 解析逻辑保证测试可复现mgr 模块开发开发与编排器交互的 mgr 功能如 dashboard、prometheus 模块时用 test_orchestrator 充当稳定的数据源CLI 行为验证验证orch set backend、orch status等控制面命令在无真实后端时的行为与错误处理。其限制同样明显它不执行任何真实的部署、调度或管理动作无法用于验证容器部署、网络配置、OSD 创建等真实编排能力此类验证必须使用 cephadm 或 Rook 等真实后端。此外未导入数据时的回退探测仅反映本机进程与磁盘不代表集群真实拓扑。赞分享存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载相关推荐Ceph Orchestrator CLI 完全指南用 ceph orch 统一管理 Rook 与 Cephadm 编排器Ceph Orchestrator CLI 完全指南用 ceph orch 统一管理 Rook 与 Cephadm 编排器 本指南基于 Ceph 仓库中的官方存储分布式文件系统对象存储后端高可用Ceph mgr rook 编排器模块在 Kubernetes 中借助 Rook 统一管理 Ceph 集群Ceph mgr rook 编排器模块在 Kubernetes 中借助 Rook 统一管理 Ceph 集群 本指南讲解 Ceph 的 rook mgr 模块存储分布式文件系统对象存储后端高可用Ceph MGR RGW 模块实战指南用 ceph rgw realm/zone 命令一键编排多站点部署Ceph MGR RGW 模块实战指南用 ceph rgw realm/zone 命令一键编排多站点部署 导读 本文围绕 Ceph Manager 守护进程内存储分布式文件系统对象存储后端高可用上一篇gdsdecompGodot游戏逆向工程的终极解决方案下一篇UnityExplorer自由视角相机实用指南突破游戏视角限制的高效方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

RT-Thread 移植小华 HC32F4A0 EV_F4A0_LQ176 开发板 BSP 快速上手与进阶配置指南
RT-Thread 移植小华 HC32F4A0 EV_F4A0_LQ176 开发板 BSP 快速上手与进阶配置指南

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 本文是基… · 2026/9/24 15:50:00

2026四款智能锁横评实测:防撬时间、解锁速度、续航表现量化对比
2026四款智能锁横评实测:防撬时间、解锁速度、续航表现量化对比

2026年上半年,智能门锁行业三强合计拿下线上销额55.7%的份额。千元档与高端旗舰之间,德施曼、凯迪仕、小米、格行四个品牌各据一方。本文从暴力拆解、解锁体验、猫眼抓拍、续航与售后四个维度横向实测。一、四款机型速览:3D人脸、锁芯、续航&… · 2026/9/24 15:50:00

ESP32-C5-WROOM-1U双频Wi-Fi 6模组:硬件设计、软件配置与量产避坑指南
ESP32-C5-WROOM-1U双频Wi-Fi 6模组:硬件设计、软件配置与量产避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:50:00

C语言01:初识C程序的结构
C语言01:初识C程序的结构

文章目录前言1.第一个C程序1.1 #include <stdio.h>1.2 int main()1.3 printf("Hello,C Language!");1.4 return 0;前言 本文的目标是&#xff1a;看懂一个 C 程序的每一行是干什么的 如果你也是刚学 C 语言的新手&#xff0c;跟着我一行一行拆解&#xff0c;保… · 2026/9/24 16:27:16

drawio-desktop 免费打开编辑 VSDX 文件的安装与使用指南
drawio-desktop 免费打开编辑 VSDX 文件的安装与使用指南

drawio-desktop 免费打开编辑 VSDX 文件的安装与使用指南 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 老 Visio 的 .vsdx 文件打不开、又用不上 Visio&#xff1f;drawio-de… · 2026/9/24 16:27:16

FEAT: A Multi-Agent Forensic AI System with Domain-Adapted Large Language Model for Automated Cau...
FEAT: A Multi-Agent Forensic AI System with Domain-Adapted Large Language Model for Automated Cau...

FEAT多智能体法医AI系统研究总结与核心内容翻译 一、文章主要内容总结 该研究针对法医死因判定面临的人员短缺、诊断差异大等系统性挑战(尤其在中国法医体系中),提出了名为FEAT(ForEnsic AgenT)的多智能体AI框架,旨在通过领域适配的大型语言模型(LLM)实现死亡调查的自… · 2026/9/24 16:27:16

LangChain 科普(一):从“和大模型说话“到拼出第一条链
LangChain 科普(一):从“和大模型说话“到拼出第一条链

前言 这篇写给刚接触大模型、想搞懂 LangChain 到底是什么的人。不预设你会任何框架知识&#xff0c;只需要会一点 Python。我们会从最笨的办法开始&#xff0c;一步步拆出 LangChain 的三个核心零件&#xff0c;最后把它们拼成一条流水线。1. 和大模型聊天&#xff0c;最笨的办… · 2026/9/24 16:27:10

万象生鲜系统三十秒极速排线算法助力行业排名第一
万象生鲜系统三十秒极速排线算法助力行业排名第一

万象生鲜系统借助三十秒极速排线算法、在生鲜行业内取得了显著的成就。该算法的实施配送服务。这一创新使企业能够在激烈的市场竞争中、凭借更加出色的服务质量等响应速度&#xff0c;稳居行业排名首位。万象生鲜系统通过优化运营成本&#xff0c;提升了用户体验&#xff0c;表… · 2026/9/24 16:26:57

1帧/秒温湿度监测:整流罩内无线传感器链路与安装设计
1帧/秒温湿度监测:整流罩内无线传感器链路与安装设计

整流罩内为什么要测温湿度 星罩组合体在转场、竖立和待发段&#xff0c;整流罩内的卫星及有效载荷对环境温湿度有严格要求&#xff1a;湿度过高可能在冷表面结露&#xff0c;温度越限影响载荷状态。传统方案沿箭体布设有线电缆&#xff0c;占用穿舱连接器通道、敷设工作量大&am… · 2026/9/24 16:26:57

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码