Ceph项目中的cephadm开发指南

Ceph项目中的cephadm开发指南

ceph Ceph is a distributed object, block, and file storage platform ceph 项目地址: https://gitcode.com/gh_mirrors/ce/ceph

概述

cephadm是Ceph集群的官方部署和管理工具,采用Python编写,使用容器化技术部署Ceph服务。本文将为开发者详细介绍cephadm的多种开发环境搭建方式,帮助开发者高效地进行cephadm相关功能的开发和测试。

开发环境搭建方式

1. 使用vstart方式

vstart是Ceph开发者常用的本地测试工具,结合cephadm使用时具有以下特点:

  • 启动命令示例:

    MON=1 MGR=1 OSD=0 MDS=0 ../src/vstart.sh -d -n -x --cephadm
    
  • 关键特性:

    • 使用~/.ssh/id_dsa作为集群SSH密钥
    • 默认使用quay.io/ceph-ci/ceph:main容器镜像
    • 通过vstart启动的守护进程不受cephadm管理
    • 修改mgr/cephadm代码后,可通过ceph mgr fail x命令重新加载
  • 适用场景:cephadm本身的开发测试

2. 使用cstart和cpatch工具

这套工具提供了更接近生产环境的测试集群:

  • 启动集群:

    sudo ../src/cstart.sh
    
  • 更新容器镜像:

    sudo ../src/script/cpatch -t quay.io/ceph-ci/ceph:8f509f4e
    
  • 优势特点:

    • 使用随机但稳定的fsid
    • 使用随机mon端口
    • 自动构建容器镜像
    • 支持部分更新(仅更新Python模块或核心二进制文件)
  • 管理命令:

    • 重启守护进程:sudo systemctl restart ceph-cat fsid.target
    • 销毁集群:sudo ../src/ckill.sh

3. 使用cephadm bootstrap方式

无需编译Ceph二进制文件即可使用cephadm:

sudo ./cephadm bootstrap --mon-ip 127.0.0.1 \
  --ssh-private-key /home/<user>/.ssh/id_rsa \
  --skip-mon-network \
  --skip-monitoring-stack --single-host-defaults \
  --skip-dashboard \
  --shared_ceph_folder /home/<user>/path/to/ceph/
  • 修改pybind/mgr/目录代码后需要重启守护进程生效

高级开发环境

1. Kcli虚拟化环境

Kcli是一个虚拟化管理工具,可快速搭建接近生产环境的Ceph集群:

  • 安装方式(推荐容器方式):

    podman pull quay.io/karmab/kcli
    alias kcli='podman run --net host -it --rm --security-opt label=disable -v $HOME/.ssh:/root/.ssh -v $HOME/.kcli:/root/.kcli -v /var/lib/libvirt/images:/var/lib/libvirt/images -v /var/run/libvirt:/var/run/libvirt -v $PWD:/workdir -v /var/tmp:/ignitiondir quay.io/karmab/kcli'
    
  • 创建Ceph开发集群:

    kcli create plan -u https://github.com/karmab/kcli-plans/blob/master/ceph/ceph_cluster.yml -P ceph_dev_folder=/home/mycodefolder/ceph
    
  • Dashboard前端开发:

    cd src/pybind/mgr/dashboard/frontend
    NG_CLI_ANALYTICS=false npm ci
    npm run build -- --deleteOutputPath=false --watch &
    

2. Cephadm Box容器环境

基于Podman的轻量级开发环境:

  • 设置步骤:

    cd src/cephadm/box
    ./box.py -v cluster setup
    ./box.py -v cluster start --extended --osds 5 --hosts 5
    
  • 进入环境:

    ./box.py -v cluster bash
    
  • 注意事项:

    • 目前OSD支持仍在开发中
    • 需要禁用SELinux以获得最佳体验
    • 每个OSD需要5GiB空间

开发注意事项

1. CLI处理线程阻塞问题

执行cephadm CLI命令会阻塞MGR中的mon命令处理线程,导致:

  • 无法并发处理CLI调用
  • Ctrl+C仅中止客户端,服务端仍继续执行
  • 设计时应尽量减少同步远程调用

2. 术语定义

  • service_type: 服务类型(如mon、mgr等)
  • service_id: 服务名称(部分服务无名称)
  • service_name: <service_type>.<service_id>
  • daemon_type: 通常与service_type相同
  • daemon_id: 通常为<service_id>.<hostname>.<random-string>
  • daemon_name: <daemon_type>.<daemon_id>

cephadm编译指南

现代cephadm基于Python Zip Application支持,编译方法:

./src/cephadm/build.py [output]
  • 版本元数据设置:

    ./src/cephadm/build.py -SCEPH_GIT_VER=$(git rev-parse HEAD) -SCEPH_GIT_NICE_VER=$(git describe) /tmp/cephadm
    
  • 依赖管理选项:

    • -B pip: 使用pip管理依赖
    • -B rpm: 使用RPM管理依赖
    • -B none: 不打包依赖
  • 版本信息查询:

    ./cephadm version --verbose
    

通过本文介绍的各种开发环境搭建方式和注意事项,开发者可以根据自己的需求选择最适合的开发方式,高效地进行cephadm相关功能的开发和测试。

ceph Ceph is a distributed object, block, and file storage platform ceph 项目地址: https://gitcode.com/gh_mirrors/ce/ceph

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈书苹Peter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值