精读笔记(RHCA 英文教材)· CL260 Chapter 11 Managing a Red Hat Ceph Storage Cluster
精读笔记(RHCA 英文教材)· CL260 Chapter 11 Managing a Red Hat Ceph Storage Cluster
教材原文:RHCA 官方英文教材(PDF 第 375~418 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:Ch3(配置/MON/网络)、Ch5(CRUSH);本章=日常运维与换盘/停启机流程;
00-RHCA教材精读-导航与学习法.md
Chapter Goal / Objectives(原文+译)
- GOAL: Perform daily cluster administration, monitoring, and maintenance(日常管理、监控与维护).
- OBJECTIVES: ① 集群管理与监控(MGR 模块/Dashboard/健康/OSD 与 PG 状态/balancer);② 集群维护操作(换盘、加 MON、整体停/开机)。
- 结构:两个 Section + 各自 Guided Exercise + 章末 Lab(
lab grade cluster-review)。
11.1 Performing Cluster Administration and Monitoring
MGR 模块与监控栈
- Dashboard 依赖 Prometheus + Grafana(采集指标+图形);可基于指标与阈值做告警。
- 模块管理:
ceph mgr module ls(如 dashboard/insights/iostat…)、ceph mgr module enable/disable <mod>。 - 从 CLI 拿服务地址:
ceph mgr services→"dashboard": "https://IP:8443/"、"prometheus": "http://IP:9283/"。 - MON 状态:
ceph mon stat、ceph quorum_status -f json-pretty、Dashboard。
健康/维护标志(set/unset)
| 标志 | 含义 | 何时用 |
|---|---|---|
noout | OSD 不会被标记 out(不触发 PG 迁移) | 维护/重启节点前 |
norecover | 禁止 recovery | 维护/集群停机 |
nobackfill | 禁止 backfill | 维护/停机 |
norebalance | 禁止再平衡 | 维护/停机 |
noscrub / nodeep-scrub | 停普通/深度校验 | 换盘/压力期 |
nodown | OSD 不判 down | 计划内整集群停机 |
pause | 暂停 PG 处理读写 | 停机 |
ceph osd set noscrub; ceph osd set nodeep-scrub
ceph osd unset noscrub; ceph osd unset nodeep-scrub整集群断电/开机顺序(考试高频)
- Power down:① 停客户端访问 → ② 确认 HEALTH_OK 且所有 PG active+clean → ③ 下 CephFS → ④ set
noout,norecover,norebalance,nobackfill,nodown,pause→ ⑤ 停 RGW 与 iSCSI GW → ⑥ 逐台停 OSD → ⑦ 逐台停 MON/MGR → ⑧ 最后停 admin 节点。 - Power up:按 admin → MON/MGR → OSD → MDS 顺序开 → 清以上 6 个标志 → 起 RGW/iSCSI GW → 起 CephFS。
OSD 状态机(两对标志 → 四态)
up/down=daemon 是否在跑并与 MON 通信;in/out=是否参与数据放置。正常=up,in。- 故障时序:OSD 掉线→短暂
down,in(给自愈机会,避免无谓 recovery);超过mon_osd_down_out_interval(默认 5 分钟)→ 自动down,out,其上 PG 迁到别的 OSD;回来后up,in→ 集群按新 OSD 集合再平衡。 - 相关参数:
osd_heartbeat_interval(OSD 互检间隔,默认 6s)、osd_heartbeat_grace(判定 down 前宽限)、mon_osd_min_down_reporters/reports(几个 peer 报几次才判 down)、OSD 每 120s 向 MON 汇报一次状态。 ceph osd set noout与ceph osd out osd.N区别:前者全局不自动 out;后者手工把某 OSD 置 out(忽略它做数据放置)。in/out 与进程是否在跑无关。
守护进程与日志
ceph orch ls(服务)与ceph orch ps --daemon_type=osd(实例);- 启停单个 daemon:
ceph orch daemon start/stop/restart <daemon>; - 日志:
journalctl -u ceph-<fsid>@osd.N.service [-f](cephadm 容器 systemd 单元)。
PG 状态解读(监控重点)
- 正常终态 active+clean;迁移中常见
peering(新 OSD 入 PG 后先对齐)、degraded(主已写、副本未确认/未齐)、remapped(acting set 临时变化)、backfilling、scrubbing/deep-scrubbing(后台一致性校验,健康集群也会出现)、undersized(副本数不足)、inactive/down/splitting(拆分 PG 中)等。 ceph health detail看告警详情(如 PG_DEGRADED: 82/663 objects degraded);ceph -w实时事件流。- 恢复时长受池类型影响:副本池费网络带宽;EC 池费 CPU;副本/分块越多恢复越久;节点吞吐(10GbE/SSD vs 1GbE/SATA)差异显著。
版本与 Balancer
ceph versions:各 daemon 版本分布(mon/osd/mgr…);升级后用其确认全部一致。- Balancer(MGR 模块,优化 PG 在 OSD 间的分布):
ceph mgr module enable balancer
ceph balancer status
ceph balancer mode crush-compat # 模式:crush-compat / upmap(默认 crush-compat)
ceph balancer eval <plan> # 预演某方案的效果
ceph balancer execute <plan> # 批准后执行
ceph balancer reset / optimize <pool> …实验要点 · Guided Exercise(lab: cluster-admin)
启 mgr 模块看 ceph mgr services → 查看 daemon 日志(journalctl -u ceph-*@osd.2)→ 把某 OSD ceph osd out 观察 ceph -w 的 backfill → ceph osd safe-to-destroy 概念 → 恢复 → 看 ceph versions 与 balancer status → finish。
11.2 Performing Cluster Maintenance Operations
更换故障 OSD(标准流程)
# 1) 确认故障
ceph health detail
ceph osd tree | grep -i down
ceph osd find osd.N # 定位所在主机
ceph orch daemon start osd.N # 先试着拉起(可能只是临时网络问题)
# (没起来→journalctl 查日志/确认物理盘损坏)
# 2) 进入维护:停 scrub 并移出
ceph osd set noscrub; ceph osd set nodeep-scrub
ceph osd out osd.N
ceph -w # 观察 backfill 把 PG 搬走
while ! ceph osd safe-to-destroy osd.N; do sleep 10; done # 等“可安全销毁”
# 3) 换硬件 + 销毁旧 OSD(可选 zap 清盘)
ceph orch device zap HOST /dev/sdX --force
# 4) 用原 OSD ID 重建(避免改 CRUSH map!)
ceph orch osd rm osd.N --replace
ceph orch osd rm status # 确认完成
ceph orch device ls # 找新盘路径
ceph orch daemon add osd HOST:/dev/sdY
ceph orch daemon start osd.N; ceph osd tree # 确认 up
# 5) 恢复 scrub
ceph osd unset noscrub; ceph osd unset nodeep-scrub- 要点:复用同一 OSD ID 就不用改 CRUSH 权重/位置;新盘设备名可能不同,用 device ls 找。
加/删 MON(编排)
ceph orch ls --service_type=mon # 当前 MON 服务与放置
ceph orch apply mon "clienta serverc serverd servere" # 扩/调 MON 到指定主机(奇数台)
ceph orch host rm serverg.lab.example.com # 移除主机(先腾空其 daemon)
ceph orch host ls- 新主机入集群前:
cephadm get-pub-key > ceph.pub+ssh-copy-id;preflight 后ceph orch host add(见 Ch2/Ch3)。
实验要点 · Guided Exercise + Lab(lab: cluster-review)
GE:ceph osd set noscrub,nodeep-scrub → ceph osd out 某 OSD → ceph -w 观察 degraded/backfill → 用 ceph osd safe-to-destroy 循环等待 → 换盘重建(daemon add 同 ID)→ unset 标志回 HEALTH_OK;另练习 ceph orch apply mon 扩 MON、ceph orch host rm 删主机。Lab:完整演练 + lab grade cluster-review。
命令速查表(本章)
| 命令 | 作用 | | ceph mgr module ls/enable/disable | MGR 模块 | | ceph mgr services | Dashboard/Prometheus 等 URL | | ceph mon stat / ceph quorum_status -f json-pretty | MON 与 quorum | | ceph osd set/unset noout|norecover|nobackfill|norebalance|noscrub|nodeep-scrub|nodown|pause | 集群标志 | | ceph osd out/in osd.N | 手工移出/放回 OSD | | ceph orch ps --daemon_type=osd / ceph orch daemon start|stop|restart | 实例管理 | | journalctl -u ceph-<fsid>@osd.N.service -f | daemon 日志 | | ceph health detail / ceph -w | 告警详情 / 事件流 | | ceph versions | 各组件版本 | | ceph balancer status / eval / execute | 平衡器(crush-compat/upmap) | | ceph osd safe-to-destroy osd.N | 是否可安全移除 | | ceph orch osd rm osd.N --replace | 换盘重建(保 ID) | | ceph orch apply mon "h1 h2 h3" | 扩/调 MON | | ceph orch host rm/ls/add | 主机管理 |
词汇表(本章)
| 英文术语 | 中文 | 一句话速记 |
|---|---|---|
| up/down, in/out | OSD 状态位 | 进程状态 vs 是否参与放置 |
| mon_osd_down_out_interval | 掉线转 out 间隔 | 默认 5 分钟后自动 out 并迁 PG |
| heartbeat | 心跳 | OSD 互检(6s)+上报 MON(120s) |
| health flags | 健康标志 | noout/norecover/nobackfill/noscrub… |
| backfill | 回填 | 新 OSD/故障后补齐 PG 数据 |
| scrub / deep-scrub | 校验/深度校验 | 后台一致性检查(含哈希对比) |
| degraded / undersized | 降级/副本不足 | 副本缺失但 PG 仍可用 |
| peering | 对齐 | 新成员入 PG 先协商状态 |
| safe-to-destroy | 可销毁 | PG 已全部迁走才能删 OSD |
| balancer | 平衡器 | 自动优化 PG→OSD 分布 |
| crush-compat / upmap | 平衡模式 | 权重集 vs pg-upmap |
| MGR services | 管理器服务 | Dashboard/Prometheus 等端点 |
自测
- OSD 四态怎么组合?正常态?down,in 到 down,out 自动转换由哪个参数控制(默认多久)?
- noout 与
ceph osd out的区别?换盘维护前要 set 哪几个标志、为什么还要 nodeep-scrub? - 背出整集群断电 8 步与开机顺序;为什么停机前必须 HEALTH_OK + active+clean?
- PG 状态:peering/degraded/remapped/scrubbing 各代表什么?哪个是健康终态?
- 看某 daemon 日志的命令(cephadm systemd 单元名结构)?
ceph orch ls与ps的区别? - 换盘流程里“复用同一 OSD ID”的好处是什么?safe-to-destroy 循环脚本怎么写?
ceph orch osd rm osd.N --replace与普通daemon rm + osd rm的区别(保留 ID/CRUSH)?- balancer 的两种模式与 eval/execute 工作流?什么时候会得到 "distribution already perfect"?
- 加 MON 用什么命令;为什么要奇数台?移除主机前要处理什么(daemon 腾空)?
ceph mgr services输出里 dashboard/prometheus 的 URL 分别指向哪个端口(8443/9283)?
