在openEuler 20.03 aarch64上,用Podman搞定Ceph Reef离线部署的完整避坑指南
在openEuler 20.03 aarch64上实现Ceph Reef离线部署的全栈实践国产化ARM架构服务器在企业级存储领域的应用正逐步深入而Ceph作为开源的分布式存储解决方案其稳定性和扩展性备受青睐。本文将聚焦于openEuler 20.03 LTS操作系统与aarch64架构的深度适配通过Podman容器技术实现Ceph Reef版本v18.2.0的完整离线部署方案。1. 环境准备与基础配置在开始部署前需要确保所有节点满足基础环境要求。openEuler 20.03 LTS作为国产操作系统的代表其对ARM架构的优化程度直接影响后续部署的稳定性。1.1 系统要求检查执行以下命令验证系统架构和版本uname -m # 应显示aarch64 cat /etc/os-release # 确认openEuler 20.03版本关键组件版本要求Podman ≥ 3.0Python ≥ 3.6Chrony/NTP时间同步服务1.2 网络与存储规划典型生产环境建议配置节点类型数量网络要求存储要求Monitor310Gbps100GB系统盘OSD≥325Gbps每节点≥1块NVMe多块HDDManager1-210Gbps100GB系统盘2. Podman与私有Registry搭建在离线环境中容器镜像的本地化管理是核心挑战。我们采用Podman内置的registry解决方案构建私有仓库。2.1 配置Podman镜像源编辑/etc/containers/registries.conf文件[registries.search] registries [docker.io] [registries.insecure] registries [registry.local:5000]注意aarch64架构下部分镜像需要显式指定平台参数如--platformlinux/arm642.2 部署本地Registry服务创建持久化存储目录并启动服务mkdir -p /var/lib/registry podman run -d --name registry \ -p 5000:5000 \ -v /var/lib/registry:/var/lib/registry \ --restartalways \ registry:2验证服务状态curl -X GET http://localhost:5000/v2/_catalog3. Ceph Reef镜像离线准备ARM架构下的镜像获取需要特别注意平台兼容性问题。以下是关键操作步骤3.1 获取基础镜像在有网络的环境中拉取必要镜像podman pull --platformlinux/arm64 quay.io/ceph/ceph:v18.2.0 podman pull --platformlinux/arm64 registry:23.2 导出镜像归档创建镜像存储目录并导出mkdir -p /opt/ceph-images podman save -o /opt/ceph-images/ceph-v18.2.0.tar quay.io/ceph/ceph:v18.2.0 podman save -o /opt/ceph-images/registry-2.tar registry:23.3 完整依赖镜像列表Ceph Reef部署需要以下组件镜像quay.io/prometheus/prometheus:v2.43.0docker.io/grafana/loki:2.4.0quay.io/prometheus/node-exporter:v1.5.0quay.io/ceph/ceph-grafana:9.4.7quay.io/ceph/haproxy:2.3使用脚本批量导出#!/bin/bash IMAGES( quay.io/ceph/ceph:v18.2.0 quay.io/prometheus/prometheus:v2.43.0 # 其他镜像... ) for image in ${IMAGES[]}; do podman pull --platformlinux/arm64 $image podman save -o /opt/ceph-images/$(echo $image | tr / -).tar $image done4. 离线环境部署实战4.1 镜像导入私有仓库将预先准备的镜像导入本地registrypodman load -i /opt/ceph-images/ceph-v18.2.0.tar podman tag quay.io/ceph/ceph:v18.2.0 registry.local:5000/ceph:v18.2.0 podman push registry.local:5000/ceph:v18.2.04.2 cephadm工具准备从容器中提取cephadm工具podman run -it --rm registry.local:5000/ceph:v18.2.0 /bin/bash -c cp /usr/sbin/cephadm /tmp podman cp $(podman ps -lq):/tmp/cephadm /usr/local/bin/ chmod x /usr/local/bin/cephadm4.3 集群引导配置创建bootstrap配置文件/etc/ceph/ceph.conf[global] osd_pool_default_size 3 mon_host [v2:10.0.0.1:3300,v1:10.0.0.1:6789] [mon] mon_allow_pool_delete true初始化monitor节点cephadm bootstrap \ --mon-ip 10.0.0.1 \ --registry-url registry.local:5000 \ --registry-username admin \ --registry-password securepassword5. 集群扩展与优化5.1 添加OSD节点识别可用磁盘ceph orch device ls创建OSD服务ceph orch daemon add osd node1:/dev/nvme0n1 ceph orch daemon add osd node2:/dev/sdb5.2 监控组件部署启用监控栈ceph orch apply prometheus ceph orch apply grafana ceph orch apply alertmanager验证监控状态ceph mgr services6. 常见问题解决方案6.1 ARM架构特有问题问题现象镜像拉取失败报错no matching manifest解决方案显式指定平台参数podman pull --platformlinux/arm64 quay.io/ceph/ceph:v18.2.06.2 存储性能调优针对NVMe设备的推荐参数ceph config set osd bluestore_min_alloc_size 4096 ceph config set osd bluestore_prefer_deferred_size 0 ceph config set osd osd_op_num_threads_per_shard 46.3 网络配置建议优化集群网络参数[osd] osd_network 10.1.0.0/16 cluster_network 10.2.0.0/16 ms_bind_port_min 6800 ms_bind_port_max 7100