文章目录
- Ceph 单网卡模式特别说明(hanyw 环境)
- 1. 单网卡与双网卡的根本差异
- 2. 单网卡下的关键约束
- 2.1 不能做的事
- 2.2 必须做的事
- 3. 单网卡下的运维节奏建议
- 4. 性能基线(单网卡预期值)
- 5. 单网卡下必须改的 Ceph 配置
- 6. 单网卡模式何时必须升级到双网卡
- 7. 单网卡环境完整部署检查表
- 8. 一键脚本使用方式
Ceph 单网卡模式特别说明(hanyw 环境)
适用:hanyw200/201/202 单网卡 ens33 172.16.15.0/24
配套脚本:prepare-node-single-nic.sh(一键基线,幂等可重跑)
1. 单网卡与双网卡的根本差异
| 项 | 单网卡 | 双网卡(生产) |
|---|---|---|
| 网络 | public + cluster 共用一张 | public(msgr2/客户端)+ cluster(OSD 间复制/心跳)分开 |
| 流量隔离 | ❌ 无 | ✅ 完全隔离 |
| 客户端时延稳定性 | rebalance 时抖动明显 | 几乎不受 rebalance 影响 |
| 适用规模 | 教学 / ≤10 OSD / PoC | 生产 / ≥10 OSD |
| cephadm bootstrap | 不传--cluster-network | 加--cluster-network 10.10.10.0/24 |
核心结论:单网卡能跑、跑得通,但恢复和重平衡时,客户端流量的尾时延会上升 2~5 倍。这是物理带宽竞争,不是 Ceph bug。
2. 单网卡下的关键约束
2.1 不能做的事
- ❌ 不要尝试 MTU 9000:广播域一致性问题会直接断网
- ❌ 不要在生产 OS / 数据库 / K8s 数据卷场景使用单网卡
- ❌ 不要在 rebalance 期间(OSD down/up)做重要业务读写
2.2 必须做的事
- ✅
/etc/hosts已互通,避免 DNS 解析延迟(你的环境已配置) - ✅ 数据盘用
by-id而非by-name引用(防止盘符漂移) - ✅ 每次加 OSD 前确认设备
lsblk -d,绝不用--all-available-devices - ✅ 升级或新增 OSD 前做一次客户端停写窗口(哪怕 5 分钟)
3. 单网卡下的运维节奏建议
| 操作 | 单网卡窗口 | 双网卡窗口 |
|---|---|---|
| 加一台 OSD | 客户端停写 10 分钟 | 业务低峰期即可 |
| OSD 故障恢复 | 30 分钟内客户端停写 | 可继续业务 |
| 滚动升级(3 节点) | 2~3 小时 | 1~1.5 小时 |
| MON 故障演练 | 需停业务观察 | 业务可继续 |
| CRUSH 规则变更 | 需停业务 | 业务可继续 |
4. 性能基线(单网卡预期值)
172.16.15.0/24,千兆网络,单 OSD HDD(机械盘)
| 指标 | 期望 | 实测方法 |
|---|---|---|
| 单 OSD 顺序写 | 100~150 MB/s | rados bench 60 write -b 4M -p test-pool |
| 单 OSD 顺序读 | 120~180 MB/s | rados bench 60 seq -p test-pool |
| 3 副本写入 | 30~50 MB/s(受最慢 OSD 限制) | 同上,多副本自动验证 |
| 客户端 IOPS(4K 随机) | 500~1K | rbd bench test-pool/test |
| recovery 速度 | 50~100 MB/s | ceph -s | grep recovery |
做性能优化时:单网卡下"调 recovery 限流"是首要优化点(默认 OSD 恢复不限速,会瞬间打满 1GbE)。
5. 单网卡下必须改的 Ceph 配置
cephadm shell -- ceph configsetosd osd_recovery_sleep_hierarchy0.1cephadm shell -- ceph configsetosd osd_recovery_sleep0.05# 限流:恢复占用不超过 60% 带宽cephadm shell -- ceph configsetosd osd_recovery_max_active3cephadm shell -- ceph configsetosd osd_recovery_max_single_start1# 客户端限速(防止 OOM / 拖死节点)cephadm shell -- ceph configsetosd osd_client_message_cap256cephadm shell -- ceph configsetosd osd_client_message_old_cap128# 单网卡 MTU 1500,TCP 窗口建议cephadm shell -- ceph configsetglobal ms_bind_msgr2true6. 单网卡模式何时必须升级到双网卡
| 场景 | 单网卡是否够用 | 决策 |
|---|---|---|
| 学习/课程实验 | ✅ 完全够用 | 保持 |
| PoC(≤10 OSD,单业务) | ✅ 勉强够 | 业务低峰使用 |
| 数据库/虚拟化后端 | ❌ 不行 | 必须双网卡 |
| 多个 RGW 客户端并发 >100 | ❌ 不行 | 必须双网卡 + 10GbE |
| 备份/大数据吞吐 >100 MB/s | ❌ 不行 | 必须双网卡 + 10GbE |
| 生产业务关键 | ❌ 不行 | 必须双网卡 |
7. 单网卡环境完整部署检查表
[ ] 三个节点都已执行 prepare-node-single-nic.sh(成功,无 FAIL) [ ] dnf repolist -v 全部命中 mirrors.aliyun.com [ ] podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/ceph/ceph:v19.2.6 成功 [ ] chronyc tracking 显示 Last offset < 0.05s [ ] systemctl status firewalld 显示 6789/3300/6800-7300 已放行 [ ] getenforce 显示 Enforcing(SELinux 不要关) [ ] lsblk -d 看到数据盘(系统盘除外) [ ] 200 节点已成功 bootstrap(HEALTH_OK) [ ] 201/202 已加入集群(ceph orch host ls 三台齐全) [ ] 三节点 OSD 已部署(ceph -s 显示 osd 数量正确,全部 up+in)全勾选即可进入业务使用阶段。
8. 一键脚本使用方式
# 上传脚本到三台机器scpprepare-node-single-nic.sh root@172.16.15.200:/tmp/scpprepare-node-single-nic.sh root@172.16.15.201:/tmp/scpprepare-node-single-nic.sh root@172.16.15.202:/tmp/# 三台机器各跑一次sshroot@172.16.15.200'bash /tmp/prepare-node-single-nic.sh'sshroot@172.16.15.201'bash /tmp/prepare-node-single-nic.sh'sshroot@172.16.15.202'bash /tmp/prepare-node-single-nic.sh'# 验证(任一节点)sshroot@172.16.15.200'bash -lc " dnf repolist -v | grep aliyun podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/ceph/ceph:v19.2.6 chronyc tracking | grep Last "'最后更新:2026-09-07 · 配套:Ceph-部署实战手册-hanyw环境.md+ceph-curriculum-rocky9.html(已就地升级单网卡配置)