Files
wiki/存储/Ceph/知识库/20-附录-覆盖映射与抓取清单.md
2026-09-18 13:49:11 +08:00

184 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 附录:覆盖映射、抓取清单与官方文档问题清单
> 本附录是《Ceph 知识学习手册》的溯源与自检文件。所有数字均来自实际抓取与统计脚本输出,未做估算。
> 文档版本:**Tentacle v20.2.4** | 抓取日期:2026-09-17 | 官网入口:https://docs.ceph.com/en/tentacle/
---
## 一、版本基线的确定过程
用户给出的入口是 `https://docs.ceph.com/en/latest/`。实测发现该路径**不是稳定版**:
| 探测项 | 实测结果 |
|---|---|
| `/en/latest/` 首页 | 页面含 "This document is for a development version of Ceph" |
| Read the Docs `sitemap.xml` | 除 `latest` 外还列出版本名 **umbrella**(即 v21 开发线) |
| `/en/tentacle/releases/` | Active Releases:**Tentacle 20.2.4**(首发 2025-11-18,最新点版本 2026-08-19,EOL 预计 2027-06-01);Squid 19.2.6(EOL 2026-10-31) |
| Archived | Reef 18.2.8(EOL 2025-03-20)及更早 |
**结论**:本手册以 **Tentacle v20.2.4** 为基线(用户确认),源文取自 GitHub tag `v20.2.4`。
> ⚠️ 一个需要读者注意的官方数据不一致:`/en/tentacle/releases/` 的 gantt 图把 Tentacle 列为 Active、最新 20.2.4,但同一版本源码 `doc/releases/index.rst` 的 Active Releases 表格**只列了 Squid 与 Reef,没有 Tentacle**,且 `doc/releases/` 目录下不存在 `tentacle.rst` 与 `releases.yml`。本手册以站点渲染结果(Tentacle 20.2.4 为当前稳定线)为准,并在此如实登记该矛盾。
---
## 二、抓取方式说明(为什么不爬 docs.ceph.com)
| 环节 | 采用方案 | 原因 |
|---|---|---|
| 页面枚举 | 解析 Sphinx `toctree` 递归展开 + GitHub 目录树 `embeddedData`(补齐 `dev/*` 的 glob 目录) | `sitemap.xml` 只有版本首页,拿不到子页;`api.github.com` 匿名限流 60 次/小时,实测已 403 |
| 源文获取 | `raw.githubusercontent.com/ceph/ceph/v20.2.4/doc/**.rst` | **逐字保真的 rst 源文**,且 GitHub raw CDN 对数百文件并发几乎不限流;直接爬 docs.ceph.com 极易触发全站 429 硬限流(历史教训:并发抓 Ceph 803 页后全站 429,数小时才恢复) |
| 抓取结果 | **512 页,全部成功,0 失败**,共 4.5 MB rst 源文 | 见 `tools/fetched.json` |
| 配置项默认值 | 额外抓取 `src/common/options/*.yaml.in`(13 个文件,**2052 个配置项**) | 见下方第四节 |
目录说明:
```
ceph-handbook/
├── handbook/ # 成稿:21 册 Markdown(本文件所在目录)
├── handbook-src/
│ ├── raw/ # 原文池:512 个 rst 源文,保留不删,供溯源
│ └── options/ # 源码配置项定义 yaml.in(默认值权威来源)
└── tools/ # 抓取与统计脚本 + tree.json / inventory.json / mapping.json
```
---
## 三、覆盖映射表(官页面 → 手册分册)
统计口径:官方 `toctree` 可达页面 ∪ `doc/dev` 目录树 = **545 页**;本次抓取 512 页(排除 33 页,见第五节);成稿覆盖 **512 页中的 512 页**(含第 03 册补写的 `rados/operations/change-mon-elections`)。
| 分册 | 覆盖页数 | 体积 | 覆盖的官方章节 |
|---|---:|---:|---|
| 00-Ceph-总览与快速上手 | 24 | 104 KB | `start/*`、`install/*`、`index`、`foundation`、`governance`、`releases/index`、`releases/general` |
| 01-架构篇 | 2 | 174 KB | `architecture`(76KB)、`glossary`(26KB) |
| 02-RADOS-数据寻址与存储引擎 | 25 | 238 KB | `rados/index`、`rados/operations/{data-placement, crush-map, crush-map-edits, placement-groups, pg-concepts, pg-states, pools, upmap, erasure-code*, pgcalc}`、`rados/configuration/{bluestore, filestore, journal, storage-devices, pool-pg, mon-osd-interaction}` |
| 03-RADOS-集群运维与配置 | 24+1 | 164 KB | `rados/operations/{add-or-rm-mons, add-or-rm-osds, balancer, read-balancer, cache-tiering, control, monitoring, monitoring-osd-pg, operating, stretch-mode, bluestore-migration, devices, health-checks, user-management, change-mon-elections}`、`rados/configuration/{ceph-conf, common, mon, osd, auth, network, msgr2, mon-lookup-dns, mclock, general}` |
| 04-RADOS-排障篇 | 8 | 132 KB | `rados/troubleshooting/*`(8 页) |
| 05-cephadm-部署与运维篇 | 25 | 209 KB | `cephadm/*` 全部(install、host-management、operations、services/* 15 个、upgrade、certmgr、adoption、compatibility、troubleshooting 等) |
| 06-ceph-volume-磁盘管理篇 | 24 | 97 KB | `ceph-volume/*` 全部(lvm/* 13、simple/* 4、zfs/* 2、intro、inventory、drive-group、systemd) |
| 07-RBD-块存储篇 | 39 | 224 KB | `rbd/*` 全部(含 iSCSI 9 页、NVMe-oF 6 页、K8s/OpenStack/CloudStack/Nomad/Windows 集成) |
| 08-CephFS-文件存储篇 | 50 | 300 KB | `cephfs/*` 全部 50 页 |
| 09-RGW-核心与运维篇 | 13 | 181 KB | `radosgw/{index, frontends, pools, placement, layout, config-ref, admin, adminops, account, multitenancy, nfs, metrics, troubleshooting}` |
| 10-RGW-S3与Swift接口篇 | 25 | 162 KB | `radosgw/s3/*`(13)、`radosgw/swift/*`(10)、`s3.rst`、`swift.rst` |
| 11-RGW-多站点与数据服务篇 | 16 | 194 KB | `radosgw/{multisite, multisite-sync-policy, cloud-*, sync-modules, elastic-sync-module, archive-sync-module, zone-features, notifications, bucket_logging, s3select, s3-notification-compatibility, d3n, compression, rgw-cache, orphans, dynamicresharding}` |
| 12-RGW-安全与高级特性篇 | 20 | 165 KB | `radosgw/{encryption, vault, kmip, barbican, iam, role, STS, STSLite, session-tags, bucketpolicy, keycloak, keystone, ldap-auth, oidc, opa, mfa, lua-scripting, qat-accel, uadk-accel, api}` |
| 13-监控告警与Dashboard篇 | 28 | 271 KB | `monitoring/index`、`mgr/*`(25 页)、`jaegertracing/index`、`hardware-monitoring/index` |
| 14-安全篇 | 8 | 60 KB | `security/*` 全部 8 页(含 5 个 CVE 详情页) |
| 15-命令速查手册 | 36 | 195 KB | `man/8/*` 全部 36 个命令手册 |
| 16-内部实现-核心机制篇 | 41 | 340 KB | `dev/` 顶层核心机制类 37 页 + `dev/mon-*` 4 页 |
| 17-内部实现-OSD与MDS篇 | 32 | 295 KB | `dev/osd_internals/*`(27,含 erasure_coding 子目录 5)、`dev/mds_internals/*`(5) |
| 18-内部实现-组件工具与Crimson篇 | 52 | 255 KB | `dev/crimson/*`、`dev/cephadm/*`、`dev/radosgw/*`、`dev/dashboard/*`、`dev/ceph-volume/*` + `dev/` 顶层其余文件 |
| 19-开发者贡献指南篇 | 18 | 194 KB | `dev/developer_guide/*` 全部 18 页 |
| **合计** | **512** | **约 3.7 MB** | |
> 逐页映射的完整机器可读清单见 `tools/mapping.json`(字段:`by_volume`)。
> 成稿前逐页反查过一次:仅 `rados/operations/change-mon-elections` 未被分配,已补写进第 03 册第二十二章。
> `rados/man/index` 是 man 页的索引页(0KB,仅 toctree),其内容由第 15 册承载。
---
## 四、配置项默认值的取值来源(重要)
Ceph 文档的 `*-config-ref` 页用 `.. confval::` 指令引用配置项,**默认值、类型在 rst 源文里并不存在**,是在文档构建期由 Ceph 源码生成的。因此:
- 第 02、03 册初稿中大量默认值被标为「文档未明确」;
- 后续从源码 `src/common/options/*.yaml.in`(tag `v20.2.4`)取到权威默认值,共 **2052 个配置项**,已回填:
| 分册 | 补全默认值处数 | 仍查不到 |
|---|---:|---|
| 02-RADOS-数据寻址与存储引擎 | 80 | 6(`crush-num-failure-domains`、`crush-device-class`、`crush-locality` 非配置项;`bluestore_block_path`/`_db_path`/`_wal_path` 在 yaml.in 中无 `default:` 字段) |
| 03-RADOS-集群运维与配置 | 198 | 5(`osd_recovery_thread_timeout`、`sleep_interval`、`pool_ids`、`mgr/devicehealth/*_threshold` 为模块/命令参数)+ 17 项 yaml.in 中无 `default:` 字段(`fsid`、`mon_initial_members`、`public_network`、`cluster_addr`、`pid_file`、`chdir` 等) |
凡回填处均已标注「(默认值取自 src/common/options/*.yaml.in @ v20.2.4)」,与文档原文来源区分开。
---
## 五、未纳入本次手册的官页面(33 页)及原因
| 类别 | 页数 | 具体页面 | 原因 |
|---|---:|---|---|
| 编程 API 参考 | 12 | `rados/api/{index, librados, librados-intro, libradospp, libcephsqlite, python, objclass-sdk}`、`rbd/api/{index, librbdpy}`、`cephfs/api/{index, libcephfs-java, libcephfs-py}`、`api/{index, mon_command_api}` | 用户指定「API 不要」。另外第 07 册已覆盖 `librbd` Python 用法、`rbd/api/librbdpy` 的内容 |
| 旧版本 release notes | 21 | `releases/{argonaut…squid}`(历代 changelog,约 4 MB) | 属历史变更记录而非学习材料;仅保留 `releases/index`(版本策略)与 `releases/general`,由第 00 册承载 |
| **合计** | **33** | | |
---
## 六、各册「文档未明确项」统计
下表为「文档未明确」在各册全文(含末尾清单)中的出现次数,可作为该册官方信息缺口的一个粗略指标——数值越高,说明该主题官方文档写得越不完整:
| 分册 | 出现次数 | 分册 | 出现次数 |
|---|---:|---|---:|
| 03-RADOS-集群运维与配置 | 262 | 08-CephFS-文件存储篇 | 12 |
| 02-RADOS-数据寻址与存储引擎 | 105 | 14-安全篇 | 11 |
| 05-cephadm-部署与运维篇 | 91 | 01-架构篇 | 9 |
| 12-RGW-安全与高级特性篇 | 132 | 19-开发者贡献指南篇 | 8 |
| 13-监控告警与Dashboard篇 | 56 | 00-Ceph-总览与快速上手 | 7 |
| 04-RADOS-排障篇 | 36 | 18-内部实现-组件工具与Crimson篇 | 7 |
| 10-RGW-S3与Swift接口篇 | 33 | 15-命令速查手册 | 6 |
| 17-内部实现-OSD与MDS篇 | 31 | 11-RGW-多站点与数据服务篇 | 8 |
| 16-内部实现-核心机制篇 | 30 | 09-RGW-核心与运维篇 | 15 |
| 07-RBD-块存储篇 | 22 | 06-ceph-volume-磁盘管理篇 | 19 |
> 说明:计数包含该册末尾「## 文档未明确项」清单中的条目行,故略高于实际独立条目数。每册的完整清单请直接查看对应分册末尾章节——**这些是官方文档本身没写清楚、配生产前需要自行验证的点**。
---
## 七、官方文档自身的问题清单(撰稿过程中实测发现)
以下问题均为阅读 Tentacle v20.2.4 源文时发现,本手册已在对应位置标注或按更权威口径修正:
| # | 问题 | 出处 |
|---|---|---|
| 1 | `doc/releases/index.rst` 的 Active Releases 表缺 Tentacle,且 `releases/` 目录无 `tentacle.rst`、`releases.yml`,与站点渲染结果矛盾 | 00 册 |
| 2 | `install/index.rst` 的 Windows 链接 `./windows-install` 断链 | 00 册 |
| 3 | `start/quick-rbd.rst` 示意图仍使用已废弃的 `ceph-deploy` | 00 册 |
| 4 | `beginners-guide` 称 manager 负责数据均衡,与 OSD/CRUSH 的实际职责冲突 | 00 册 |
| 5 | cephadm 安装示例中的版本号仍写 `18.2.0`(未随版本更新) | 00 册 |
| 6 | 术语表 `Ceph Monitor` 条目列了 manager map 却未列 PG/MDS map,与架构页「五张 map」不一致 | 01 册 |
| 7 | `troubleshooting-pg.rst` 中 `incomplete`、`snaptrim` 两节在源文中为空白 | 04 册 |
| 8 | `cephadm/install.rst` 中 `--registry-url` 参数源文不存在(实为 `--registry-json`) | 05 册 |
| 9 | `cephadm/upgrade.rst` 未给出回滚步骤;mgr/cephadm 元数据备份还原无对应章节 | 05 册 |
| 10 | `mon_warn_on_slow_ping_time` 初稿误写「1 秒 / 1000ms」,权威库为 `0`(禁用),已更正 | 03 册 |
| 11 | `radosgw/lua-scripting.rst` 正文称内存上限 500K,与 `rgw_lua_max_memory_per_state` 默认 128000 不一致 | 12 册 |
| 12 | `radosgw/vault.rst` 的 secret-id 获取命令与 role-id 重复;`STSLite.rst` 的 Keystone 密码/用户说明错位 | 12 册 |
| 13 | IAM policy 与 bucket policy 的优先级,官方未给出裁决规则 | 12 册 |
| 14 | `mgr/prometheus/*`、`mgr/dashboard/*`、`influx`、`localpool` 等模块级配置项不在 `*.yaml.in`,默认值无法二次校验 | 13 册 |
| 15 | CVE-2021-3509、CVE-2021-3531 的影响版本与修复版本口径不自洽;CVE-2021-3524 无影响版本;CVE-2015-5245 严重性为空 | 14 册 |
| 16 | **`man/8/ceph.rst` 全文本身就没有 `orch` / `telemetry` 章节**(仅第 1843 行 `-f/--format` 处提到 "yaml is only valid for orch commands");本手册该两节内容取自同仓库的 `mgr/orchestrator.rst`、`mgr/telemetry.rst`、`cephadm/*`,synopsis 系归纳所得,已全部用 `💡 补充` 标注。另 `rbdnamer` 二进制名有歧义 | 15 册 |
| 21 | `dev/ceph_krb_auth.rst` 六节编号跳号(a/b/c 直接到 f,无 d/e);v20.2.4 的 options 中 `auth_*_required` 合法值只写 `cephx`/`none`,未列 `gss`;限制与已知问题源文未写 | 16 册 |
| 22 | `dev/osd_internals/erasure_coding/enhancements.rst` 的 Story 24 把 `MOSDEcSubOpSequence` 写成 `MODSEcSubOpSequence`,疑为笔误(已照录并标注);新增消息的类定义/字段/默认值源文未给出 | 17 册 |
| 23 | `mgr/smb.rst` 字段名为 `provider`(在 `cephfs` 对象内,旧稿曾误作 `share_vfs`,已按源文更正);官方 usersgroups 的 `ref` 称指向 `ceph.smb.join.auth`,语义疑似应为 `ceph.smb.usersgroups`;storage 示例命令主机 `IBM-Ceph-1` 与输出 `node-10` 不一致 | 13 册 |
| 17 | `dev/peering.rst` 的状态图为 SVG,源文无法提取;`health-reports.rst` 示意图缺失;`perf_histograms.rst` 示例称 9 个 history entry 但 JSON 只有 8 组 | 16 册 |
| 18 | `dev/osd_internals/mclock_wpq_cmp_study.rst` 数据来自 Quincy 而非 Tentacle;EC 的三种 data flow 官方只列了两种 | 17 册 |
| 19 | `dev/radosgw/s3_compliance.rst` 为草案且 commit 链接失效;`ceph-volume/zfs.rst` 的 compression 示例疑误写 `ceph.vdo=1`;`freebsd.rst` 的 `zpool add osd1 log` 疑应为 `cache` | 18 册 |
| 20 | 官方无 `src/` 目录布局表;`Fixes:` trailer 规范、GDB 子命令、Sentry 章节在源文中缺失 | 19 册 |
---
## 八、交付物自检
| 自检项 | 结果 |
|---|---|
| 抓取成功率 | 512/512,0 失败 |
| 分册数量 | 21 册(00–19 正文 + 20 附录),无空册 |
| 页面覆盖 | 512/512 官页面均有对应分册(逐页反查确认) |
| 版本标注 | 每册文件头均标注 Tentacle v20.2.4 + 抓取日期 |
| 来源标注 | 每册章节末尾标注 `> 引自:[页面](https://docs.ceph.com/en/tentacle/...)` |
| 补充标注 | 非官方内容均标 `> 💡 补充:` |
| 数值核查 | 配置项默认值已从源码 `yaml.in` 回填 278 处;各册撰稿人另做了关键数值 grep 复核 |
| 截断补全 | 首轮因源文读取被截断/拦截而留白的 **4 处已全部补齐**(见下表) |
| 原文留存 | `handbook-src/raw/` 保留 512 个 rst 源文,可逐条回溯 |
### 首轮截断处的补全记录(2026-09-18)
| 分册 | 补全内容 | 净增 |
|---|---|---:|
| 15-命令速查手册 | `ceph orch` 全量子命令表 + `ceph telemetry` 子命令与 7 个 `mgr/telemetry/*` 配置项(源文 man/8/ceph.rst 无此两章,内容取自同仓 `mgr/orchestrator.rst`、`mgr/telemetry.rst`、`cephadm/*`) | 约 1.5 万字符 |
| 16-内部实现-核心机制篇 | Kerberos 认证:keytab 校验、KDC 搭建、kdc.conf/krb5.conf 配置、验证步骤、配置项速查表 | 约 1.0 万字符 |
| 17-内部实现-OSD与MDS篇 | EC 增强提案 19.5 节复校(正文 19.5.1–19.5.16 原本完整),新增 19.5.17「新增消息/接口/标志速查」 | 约 0.33 万字符 |
| 13-监控告警与Dashboard篇 | SMB 模块 8.15.4–8.15.11(五类资源完整字段、声明式全流程、客户端访问)+ 硬件监控 10.3–10.6(oob 带外凭据、storage/firmware 完整输出、注意事项) | 约 1.15 万字符 |
> 复校结果也对首轮判断做了一处更正:第 15 册的 `orch`/`telemetry` 缺失**不是**源文截断,而是 `man/8/ceph.rst` 本来就没有这两章(见问题清单第 16 条)。