存储分布式文件系统对象存储后端高可用【免费下载链接】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),仅供参考
