1. Cephadm部署实战全记录
作为一款现代化的Ceph集群部署工具,cephadm近年来逐渐成为运维团队的首选方案。我在最近一次生产环境部署中完整走通了整个流程,这里将详细记录从环境准备到集群上线的每个关键步骤,包含大量官方文档未提及的实战细节。
1.1 为什么选择cephadm
传统Ceph部署需要手动配置大量服务单元和监控项,而cephadm通过容器化和标准化操作彻底改变了这一局面。它用单个二进制文件封装了所有管理功能,底层基于systemd和容器技术实现服务托管。实测下来,新节点加入集群的时间从原来的30分钟缩短到5分钟以内。
重要提示:cephadm要求所有节点使用统一的操作系统版本,混合环境部署会出现兼容性问题。我们选择CentOS 8 Stream作为基础系统,其内核版本(5.14+)完美支持Ceph Quincy。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 硬件配置清单
本次部署采用5节点架构:
- 3个MON节点:16核/64GB内存/500GB SSD(系统盘)+ 1TB NVMe(Wal/DB)
- 2个OSD节点:32核/128GB内存/4×4TB HDD + 2×800GB SSD(BlueStore缓存)
网络方面采用双万兆bonding:
bash复制# 网络绑定配置示例
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
nmcli con add type ethernet con-name eth0-slave ifname eth0 master bond0
nmcli con add type ethernet con-name eth1-slave ifname eth1 master bond0
2.2 系统级调优
这些参数直接影响Ceph性能表现:
bash复制# 内核参数调整
echo "vm.swappiness = 1" >> /etc/sysctl.conf
echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
# 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
3. 部署过程详解
3.1 引导集群
首先在所有节点安装基础依赖:
bash复制dnf install -y podman lvm2 chrony
systemctl enable --now chronyd
通过引导节点初始化集群:
bash复制cephadm bootstrap --mon-ip 192.168.100.10 \
--initial-dashboard-user admin \
--initial-dashboard-password SafePass123! \
--allow-fqdn-hostname
这个步骤会:
- 在本地启动Mon服务
- 生成SSH密钥对
- 部署Ceph Manager和Dashboard
- 创建/etc/ceph目录结构
3.2 节点加入流程
其他节点加入需要先分发SSH密钥:
bash复制ssh-copy-id -f -i /etc/ceph/ceph.pub root@node2
然后通过cephadm加入集群:
bash复制ceph orch host add node2 --labels _admin
ceph orch apply osd --all-available-devices
4. 存储配置实战
4.1 OSD部署技巧
对于混合存储节点,建议采用手动部署方式:
bash复制ceph orch daemon add osd node1:/dev/sdb:/dev/nvme0n1p1
关键参数说明:
- 第一个设备是数据盘(HDD)
- 第二个设备是Wal/DB分区(SSD)
- 比例建议:每1TB HDD配5GB SSD空间
4.2 集群网络分离
生产环境务必分离公共网络和集群网络:
bash复制ceph config set global public_network 192.168.100.0/24
ceph config set global cluster_network 10.10.100.0/24
5. 运维监控体系
5.1 Dashboard集成
默认安装的Dashboard需要额外配置SSL:
bash复制ceph dashboard set-grafana-api-url https://grafana.example.com
ceph dashboard set-ssl-certificate /etc/ssl/certs/ceph-dashboard.crt
5.2 告警规则定制
修改默认告警阈值:
bash复制ceph config set mgr mgr/prometheus/rules \
'groups:
- name: ceph-alerts
rules:
- alert: OSDDown
expr: ceph_osd_up == 0
for: 5m'
6. 常见故障处理
6.1 容器启动失败
典型错误日志:
code复制Error: container create failed: container_linux.go:380
解决方案:
bash复制systemctl restart podman
rm -rf /var/lib/containers/storage/overlay/
6.2 OSD无法创建
当出现"insufficient space"错误时,需要检查:
- LVM卷组是否被残留数据占用
- 磁盘是否残留旧分区表
- 可用空间是否满足最小要求(至少5GB)
清理命令:
bash复制wipefs -a /dev/sdX
dd if=/dev/zero of=/dev/sdX bs=1M count=100
7. 性能调优建议
经过三个月生产运行,总结这些黄金法则:
- 每个OSD进程分配4-8GB内存
- 设置合理的pg_num(计算公式:总PG数 = (OSD数 × 100) / 副本数)
- 启用msgr V2协议提升网络效率
bash复制ceph mon enable-msgr2
Bluestore压缩建议采用lz4算法:
bash复制ceph config set osd bluestore_compression_algorithm lz4
ceph config set osd bluestore_compression_mode aggressive
最后分享一个监控脚本,用于实时跟踪集群状态:
bash复制#!/bin/bash
watch -n 5 'ceph -s ; echo ; ceph osd df ; echo ; ceph df'
