1. Cephadm 17.2.5部署环境准备
1.1 硬件需求评估
在开始部署Ceph集群前,我们需要对硬件环境进行系统评估。根据生产环境经验,建议采用以下配置方案:
-
存储节点:每节点至少配备12块硬盘(建议SSD+HDD混合配置)
- 系统盘:2块480GB SSD(RAID1)
- OSD磁盘:8块4TB HDD(建议7200转企业级)
- 日志盘:2块800GB SSD(建议Intel Optane或同等级低延迟SSD)
-
网络配置:
- 管理网络:10Gbps双网卡绑定(bond模式4)
- 集群网络:25Gbps独立网络(建议使用RoCEv2 RDMA)
- 公共网络:10Gbps(与业务网络隔离)
重要提示:生产环境务必避免使用消费级硬件,特别是SMR硬盘会导致性能断崖式下降。我们曾在一个客户案例中,因使用SMR硬盘导致集群IOPS从2000骤降到150。
1.2 操作系统配置优化
推荐使用CentOS Stream 8或Ubuntu 20.04 LTS作为基础系统。以下是必须完成的系统调优步骤:
bash复制# 禁用NUMA平衡(Ceph对NUMA敏感)
echo 0 > /proc/sys/kernel/numa_balancing
# 调整vm参数
cat >> /etc/sysctl.conf <<EOF
vm.swappiness = 1
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
EOF
# 优化IO调度器
echo deadline > /sys/block/sdX/queue/scheduler
echo 1024 > /sys/block/sdX/queue/nr_requests
1.3 软件依赖安装
Cephadm对Python环境有严格要求,以下是标准安装流程:
bash复制# 安装基础依赖
yum install -y python3 podman lvm2 chrony
# 配置Python虚拟环境
python3 -m venv /opt/cephadm
source /opt/cephadm/bin/activate
pip install --upgrade pip wheel
# 安装特定版本的cephadm
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm
./cephadm add-repo --release quincy
./cephadm install
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Ceph集群初始化实战
2.1 引导新集群
使用cephadm工具初始化集群时,有几个关键参数需要特别注意:
bash复制cephadm bootstrap --mon-ip 192.168.1.100 \
--initial-dashboard-user admin \
--initial-dashboard-password YourSecurePassword \
--allow-fqdn-hostname \
--registry-url registry.redhat.io \
--registry-username your-rh-account \
--registry-password your-rh-password
参数说明:
--allow-fqdn-hostname:解决DNS解析问题--registry-*:当使用RedHat官方镜像时必须指定--mon-ip:建议使用管理网络IP而非公网IP
2.2 节点加入管理
添加新节点到集群的正确姿势:
bash复制# 在主控节点生成加入密钥
ceph cephadm generate-key
ceph cephadm get-pub-key > ~/ceph.pub
# 在待加入节点执行
ssh-copy-id -f -i ~/ceph.pub root@new-node
cephadm prep-host --expect-hostname new-node.domain.com
常见问题处理:
- 若遇到"Host already exists"错误,执行:
bash复制ceph orch host rm new-node.domain.com --force - 时钟不同步问题会导致OSD无法加入,必须确保chrony服务正常运行
3. OSD部署深度优化
3.1 磁盘准备最佳实践
创建OSD前必须完成的磁盘预处理:
bash复制# 查看可用磁盘
ceph orch device ls
# 擦除磁盘(新磁盘可跳过)
ceph-volume lvm zap /dev/sdX --destroy
# 创建OSD(生产环境推荐手动指定db/wal设备)
ceph orch daemon add osd host01:/dev/sdb:/dev/nvme0n1p1
性能调优参数(添加到ceph.conf):
ini复制[osd]
osd_op_num_threads_per_shard = 2
osd_op_num_shards = 8
osd_recovery_sleep = 0.1
bluestore_min_alloc_size = 4096
3.2 混合存储层配置
针对SSD+HDD混合环境,建议采用自动分层策略:
bash复制# 创建存储桶
ceph osd crush add-bucket ssd root
ceph osd crush add-bucket hdd root
# 设置设备类别
ceph osd crush set-device-class ssd osd.0 osd.1 osd.2
ceph osd crush set-device-class hdd osd.3 osd.4 osd.5
# 创建规则
ceph osd crush rule create-replicated rule_ssd default host ssd
ceph osd crush rule create-replicated rule_hdd default host hdd
4. 运维监控体系搭建
4.1 Dashboard高级配置
启用Prometheus和Alertmanager集成:
bash复制ceph mgr module enable prometheus
ceph dashboard set-prometheus-api-host http://localhost:9090
ceph dashboard set-alertmanager-api-host http://localhost:9093
关键监控指标配置示例:
yaml复制# /etc/ceph/ceph.conf
[mon]
mon_warn_on_slow_ping = true
mon_warn_on_slow_ping_time = 1.0
[osd]
osd_heartbeat_grace = 30
osd_heartbeat_interval = 10
4.2 日志收集方案
建议采用Loki+Granfana方案:
bash复制ceph orch apply loki --placement=3
ceph orch apply promtail --placement=count:3
ceph orch apply grafana --placement=1
日志查询技巧:
code复制{job="ceph"} |= "slow request"
| json
| latency > 5s
| line_format "{{.message}}"
5. 故障排查手册
5.1 常见错误代码速查
| 错误码 | 含义 | 解决方案 |
|---|---|---|
| ENOSPC | 存储空间不足 | 检查ceph df,调整full ratio |
| EAGAIN | 资源暂时不可用 | 增加OSD op线程数 |
| ETIMEDOUT | 操作超时 | 检查网络延迟和MTU设置 |
| EIO | IO错误 | 检查磁盘smart状态 |
5.2 OSD恢复实战案例
当多个OSD同时宕机时的恢复流程:
-
首先确认故障范围:
bash复制
ceph osd tree ceph health detail -
临时降低恢复速度限制:
bash复制ceph tell osd.* injectargs '--osd-recovery-max-active 1' -
逐个重启OSD:
bash复制systemctl restart ceph-osd@<id> -
监控恢复进度:
bash复制watch -n 1 'ceph -s | grep recovery'
我在实际运维中发现,当超过30%的OSD同时故障时,建议先停止客户端IO再执行恢复,否则极易导致二次故障。
