状态:草稿(2026-10-29),基于 Chart 原文,未进行实际测量。 所有值均直接从 Rook
v1.21.1标签指向的提交09d2f0d8d883b70b30de796c4390371be725ff3b的deploy/charts/rook-ceph/values.yaml与deploy/charts/rook-ceph-cluster/values.yaml中 读取,表格中的行号即为该文件中的行数。资源总和与容量是根据 values 和 Ceph 文档的默认值 计算得出的,未经实际测量。 TT Lab 实训集群(3 台 VM,每台 VM 拥有 17GiB 空盘)中实际运行的 Pod 和容量将在第 4 篇中确认。 编写规则:以实测数据为准,未能测量的标记为「未实测」,在原文中未找到的标记为「未确认」。
目录
- 1. Chart 有三个,且有安装顺序
- 2. rook-ceph(operator Chart)的重要参数
- 3. rook-ceph-cluster 的外层参数
- 4. cephClusterSpec:CephCluster 本体
- 5. 块池、文件系统与对象存储的默认值
- 6. 直接使用默认值会有风险的地方
- 7. 在实训集群中缩减内存和 CPU 时
- 8. 总结
- 参考
1. Chart 有三个,且有安装顺序
Rook 文档(Helm Charts Overview) 介绍了 v1.21 的三个 Chart。大家通常以为「只要部署 rook-ceph 和 rook-ceph-cluster 这两个就行了」,但从 v1.20 开始,中间多了一个。
| 顺序 | Chart | 来源 | 创建的内容 |
|---|---|---|---|
| 1 | rook-ceph |
Rook 仓库 | Rook operator Deployment、CRD、RBAC、子 Chart ceph-csi-operator 1.1.0 |
| 2 | ceph-csi-drivers |
ceph-csi-operator 的 Helm 仓库,使用 Rook 调整过的 values | OperatorConfig、RBD 与 CephFS Driver CR、驱动 Pod 的 RBAC |
| 3 | rook-ceph-cluster |
Rook 仓库 | CephCluster、块池·文件系统·对象存储 CR、对应的 StorageClass、toolbox(默认关闭) |
如果漏掉第 2 个,PVC 将无法绑定。 升级文档中提到,如果没有这个 Chart,就会因为缺少服务账户而导致 CSI 驱动进入失败状态,
operator Chart 文档中的安装步骤也是「operator Chart → CSI 驱动 Chart → 集群」的顺序
(Ceph Operator Helm Chart,
Rook Upgrades).
ceph-csi-drivers 指出,如果仅使用默认值进行安装,驱动将会失败,因此文档强调必须同时加入 Rook 仓库的
deploy/charts/ceph-csi-drivers/values.yaml。该文件将驱动名称 rook-ceph.rbd.csi.ceph.com 匹配到 operator 命名空间。
helm repo add rook-release https://charts.rook.io/release
helm install --create-namespace -n rook-ceph rook-ceph rook-release/rook-ceph -f operator-values.yaml
helm repo add ceph-csi-operator https://ceph.github.io/ceph-csi-operator
helm install -n rook-ceph ceph-csi-drivers ceph-csi-operator/ceph-csi-drivers \
-f https://raw.githubusercontent.com/rook/rook/v1.21.1/deploy/charts/ceph-csi-drivers/values.yaml
helm install -n rook-ceph rook-ceph-cluster rook-release/rook-ceph-cluster \
--set operatorNamespace=rook-ceph -f cluster-values.yaml
命令直接复制了文档中的示例。集群 Chart 文档建议不要复制整个 values,而是创建一个 只包含需要更改的值的文件。
顺便一提,标签的 Chart.yaml 中两个 Chart 都写着 version: 0.0.1 ,因此分发时的 Chart 版本号似乎是在发布过程中附加的(未确认)。从 v1.21 开始,OCI Chart 标签中不再带有 v 。
2. rook-ceph(operator Chart)的重要参数
整个文件很短,共 245 行 (values.yaml).
| 键 | 默认值 | 含义与备注 | 行号 |
|---|---|---|---|
image.tag |
v1.21.1 |
operator 镜像 docker.io/rook/ceph |
L10 |
crds.enabled |
true |
Chart 创建并更新 CRD。 仅在首次安装时确定的警告:以后关闭可能会破坏集群 | L21 |
resources |
请求 CPU 200m、内存 128Mi,内存上限 512Mi | operator Pod 资源 | L24 |
unreachableNodeTolerationSeconds |
5 |
当节点无法访问时,迁移 operator Pod 的等待时间。将 Kubernetes 默认的 5 分钟缩短为 5 秒 | L42 |
currentNamespaceOnly |
false |
是否仅监视自身命名空间的 CephCluster | L45 |
logLevel |
INFO |
ERROR·WARNING·INFO·DEBUG |
L58 |
containerSecurityContext |
runAsNonRoot、UID 2016、移除所有 capability | operator 容器的安全上下文 | L71 |
allowLoopDevices |
false |
是否在测试集群中将 loop 设备用作 OSD | L78 |
monRunAsRoot |
false |
是否以 root 运行 mon Pod | L81 |
deleteUnusedCrushRules |
true |
删除 mgr 启动后不再使用的自动生成的 CRUSH 规则 | L84 |
csi.installCsiOperator |
true |
安装 ceph-csi-operator 子 Chart | L95 |
csi.cephcsi 等 7 种镜像 |
全部为空值 | 留空则使用 ceph-csi-operator 内置的镜像。仅在需要更改时填写仓库和标签 | L102 |
csi.serviceMonitor.enabled |
false(开启时为 5 秒间隔) |
用于 CSI 指标的 ServiceMonitor | L144 |
enableDiscoveryDaemon |
false(间隔 60m) |
定期查找节点上新磁盘的守护进程 | L156 |
cephCommandsTimeoutSeconds |
"15" |
operator 调用的 ceph 命令的超时时间(秒) | L161 |
scaleDownOperator |
false |
当通过 GitOps 部署时,将 operator 缩减为 0 以便人工维护的开关 | L169 |
enforceHostNetwork |
false |
将所有 Rook Pod 置于主机网络(适用于无 CNI 环境) | L213 |
disableDeviceHotplug |
false |
是否关闭发现新设备时自动将其配为 OSD 的行为 | L216 |
enableOBCWatchOperatorNamespace |
true |
OBC Provisioner 是否监视 operator 命名空间 | L229 |
obcAllowAdditionalConfigFields |
"maxObjects,maxSize" |
OBC 用户可定义的附加字段。其余字段(桶策略、生命周期、所有者等)注释警告称具有危险性 | L240 |
monitoring.enabled |
false |
开启后,operator 将获得创建 ServiceMonitor 的 RBAC。前提是必须先安装 Prometheus | L245 |
CSI 配置大部分已移出该 Chart。 过去曾在该 Chart 的 csi 下设置 provisioner 副本数、kubelet 路径、各驱动资源等
参数,但升级文档现在建议在 ceph-csi-drivers Chart 设置中查找这些参数。该 Chart 中保留的 csi 主要是关于是否安装子 Chart、镜像覆盖以及 ServiceMonitor。ceph-csi-operator 子 Chart 自身的设置写在 values 的
ceph-csi-operator 章节(L86)中。
3. rook-ceph-cluster 的外层参数
接下来是 844 行的集群 Chart
(values.yaml).
cephClusterSpec ),首先看外层的参数。
| 键 | 默认值 | 含义与备注 | 行号 |
|---|---|---|---|
operatorNamespace |
rook-ceph |
operator 所在的命名空间。将成为 StorageClass 的 provisioner 名称前缀 | L6 |
configOverride |
无 | 要追加到 ceph.conf 的内容 | L16 |
toolbox.enabled |
false |
rook-ceph-tools Deployment。镜像与 Ceph 镜像相同。请求 128Mi、上限 1Gi |
L26 |
monitoring.enabled |
false |
Prometheus 集成。 metricsDisabled: false ,因此 mgr 的 prometheus 模块和 exporter 默认开启 |
L72 |
monitoring.createPrometheusRules |
false |
是否创建 Ceph 告警规则(PrometheusRule) | L76 |
cephImage |
quay.io/ceph/ceph:v20.2.4, allowUnsupported: false |
Ceph Tentacle。注释建议在生产环境中应使用形如 v20.2.4-20260818 带有日期的标签进行固定 |
L124 |
ingress.dashboard, route.dashboard |
为空 | 通过 Ingress 或 HTTPRoute 导出仪表盘时使用 | L475 |
cephFileSystemVolumeSnapshotClass, cephBlockPoolsVolumeSnapshotClass |
enabled: false |
快照类。如需使用则开启 | L642 |
csiDriverNamePrefix |
为空 | 若留空,则以 operator 命名空间作为驱动名称前缀 | L844 |
4. cephClusterSpec:CephCluster 本体
cephClusterSpec 直接进入 CephCluster CR 的 spec 中。集群 Chart 文档指出,该默认值「仅作示例,不太可能适合您的集群」。
| 键 | 默认值 | 含义与备注 | 行号 |
|---|---|---|---|
dataDirHostPath |
/var/lib/rook |
存放 mon 数据和配置的主机路径。 若重新安装时未清除此目录,新集群中的 mon 将无法启动 | L150 |
skipUpgradeChecks |
false |
是否跳过升级前检查 | L156 |
continueUpgradeAfterChecksEvenIfNotHealthy |
false |
即使 PG 不健康是否也继续操作 | L159 |
waitTimeoutForHealthyOSDInMinutes |
10 |
等待单个 OSD 停止后达到安全状态所需的时间 | L166 |
upgradeOSDRequiresHealthyPGs |
false |
是否在 PG 健康时才开始升级 OSD | L171 |
security.cephx.csi.keyType |
aes |
注释:若节点内核低于 7.0 则需要此项 | L176 |
mon.count |
3 |
mon 数量。文档建议为 1 到 9 之间的奇数 | L181 |
mon.allowMultiplePerNode |
false |
单节点上的多个 mon。 仅限可承担数据丢失风险的测试环境 | L184 |
mgr.count |
2 |
一个 active,一个 standby。若为 2 则还会附加 mgr sidecar | L190 |
mgr.modules |
rook 模块已关闭 |
注释中写明不推荐使用 rook mgr 模块 | L196 |
dashboard.enabled·ssl |
true·true |
仪表盘已开启,若未提供证书则使用自签证书 | L201 |
network.connections.encryption |
false |
传输加密。如需开启需内核 5.11 以上 | L223 |
network.connections.compression |
false |
传输压缩 | L227 |
network.connections.requireMsgr2 |
true |
关闭 msgr v1 端口(6789),仅保留 v2(3300)。需要内核 5.11 以上 | L231 |
crashCollector.disable |
false |
守护进程崩溃转储收集器(每个节点一个 Pod) | L253 |
logCollector |
开启,每天,最大 500M | 每个守护进程的日志文件轮转 sidecar | L260 |
cleanupPolicy.confirmation |
"" |
见第 2 篇第 7 节。仅在删除时使用 yes-really-destroy-data |
L271 |
cleanupPolicy.sanitizeDisks |
quick·zero·一次性 |
清理磁盘的方式 | L277 |
removeOSDsIfOutAndSafeToRemove |
false |
是否自动移除状态为 out 且删除安全的 OSD | L409 |
priorityClassNames |
mon·osd system-node-critical,mgr system-cluster-critical |
当资源不足时防止被优先驱逐 | L412 |
storage.useAllNodes |
true |
将所有节点作为存储节点 | L418 |
storage.useAllDevices |
true |
将所有可用设备配为 OSD | L419 |
storage.deviceFilter·nodes |
已注释 | 设备名称正则表达式、按节点的设备列表 | L420 |
disruptionManagement.managePodBudgets |
true |
由 operator 管理 OSD·mon·RGW·MDS 的 PodDisruptionBudget | L446 |
disruptionManagement.osdMaintenanceTimeout |
30 |
在隔离(drain)期间通过 noout 保持故障域的时间(分钟) | L449 |
healthCheck.daemonHealth |
mon 45s、osd 60s、status 60s | 检查间隔。未记录 mon 的 timeout ,将使用代码默认值 10 分钟(见第 2 篇) |
L453 |
资源请求(resources)
cephClusterSpec.resources(L340)的默认值。Rook 文档指出「如果过低则只会打印警告并照常启动」,并记录了作为标准的建议
最低值(CephCluster CRD)。
从源码来看,此检查以 上限(limit) 为准,如果上限小于请求则会视为错误
(spec.go#L486-L520).
| 对象 | 请求 CPU | 请求内存 | 内存上限 | Rook 建议最小值 | 行号 |
|---|---|---|---|---|---|
| mgr | 500m | 512Mi | 1Gi | 512MB | L341 |
| mon | 1000m | 1Gi | 2Gi | 1024MB | L347 |
| osd | 1000m | 4Gi | 4Gi | 2048MB | L353 |
| prepareosd | 500m | 50Mi | 无(建议不设置) | 无上限 | L359 |
| mgr-sidecar | 100m | 40Mi | 100Mi | 上限 100MB·请求 40MB | L371 |
| crashcollector | 100m | 60Mi | 60Mi | 60MB | L377 |
| logcollector | 100m | 100Mi | 1Gi | 未确认 | L383 |
| cleanup | 500m | 100Mi | 1Gi | 未确认 | L389 |
| exporter | 50m | 50Mi | 128Mi | 上限 128MB·请求 50MB | L395 |
| cmd-reporter | 500m | 100Mi | 1Gi | 未确认 | L401 |
文档中指出,如果为 OSD 设置较小的内存,Rook 会将 Ceph 的 osd_memory_target 设置为相同的值。正如我们在第 1 篇中所看到的,此值的 Ceph 默认值为 4Gi,因此 Helm Chart 默认值(4Gi)与 Ceph 默认值相同。MDS 和 RGW 的资源不在这里,而是在各自的章节中(第 5 节)。
5. 块池、文件系统和对象存储的默认值
集群 Chart 默认会 分别创建这三种资源 并为每种资源附加一个 StorageClass。这个 StorageClass 不是由 Operator 创建的,而是由 Chart 模板创建的(第 2 篇第 9 节)。
cephBlockPools: ceph-blockpool 与 StorageClass ceph-block
| 键 | 默认值 | 备注 | 行 |
|---|---|---|---|
spec.failureDomain |
host |
每个副本位于不同主机 | L520 |
spec.replicated.size |
3 |
三份 | L522 |
storageClass.isDefault |
true |
成为集群的默认 StorageClass | L531 |
storageClass.reclaimPolicy |
Delete |
删除 PVC 时也会删除 RBD 镜像 | L532 |
storageClass.allowVolumeExpansion |
true |
允许卷扩容 | L533 |
storageClass.volumeBindingMode |
Immediate |
PVC 一创建就立即生成 | L534 |
parameters.imageFormat |
"2" |
RBD 镜像格式 | L559 |
parameters.imageFeatures |
layering |
注:内核 RBD 从 5.4 版本开始支持完整功能,但默认仅为 layering | L565 |
parameters 的六对 Secret |
rook-csi-rbd-provisioner, rook-csi-rbd-node |
用于 provisioner·expand·publish·node-stage·modify·node-publish 的 cephx 密钥。由 Operator 创建(第 2 篇) | L568 |
parameters."csi.storage.k8s.io/fstype" |
ext4 |
注:在将卷挂载到与 OSD 相同节点的配置中,XFS 可能会陷入死锁,因此不建议这样做 | L585 |
模板(cephblockpool.yaml)会附加
provisioner: <operatorNamespace>.rbd.csi.ceph.com 和 pool·clusterID(集群命名空间)。
cephFileSystems: ceph-filesystem 与 StorageClass ceph-filesystem
| 键 | 默认值 | 备注 | 行 |
|---|---|---|---|
metadataPool.replicated.size |
3 |
元数据池 | L595 |
dataPools[0] |
名称 data0, host,size 3 |
数据池 | L597 |
metadataServer.activeCount |
1 |
一个活跃的 MDS,Rook 会启动两倍数量(2个) | L603 |
metadataServer.activeStandby |
true |
备用 MDS 保持缓存预热状态 | L604 |
metadataServer.resources |
请求 CPU 1000m·内存 4Gi,上限 4Gi | Rook 建议 MDS 内存为 4096MB 以上,并将上限设置为 mds_cache_memory_limit 相同的值 |
L605 |
storageClass.isDefault |
false |
L614 | |
storageClass.pool |
data0 |
L617 | |
storageClass.reclaimPolicy |
Delete |
L618 |
CephFilesystem 的 preserveFilesystemOnDelete 在 Chart 中不存在,因此将使用 CRD 默认值 false 。这意味着删除 CR 时也会一并删除文件系统(CephFilesystem CRD).
cephObjectStores: ceph-objectstore 与 StorageClass ceph-bucket
| 键 | 默认值 | 备注 | 行 |
|---|---|---|---|
metadataPool |
host,副本 size 3 |
桶索引等 | L670 |
dataPool.erasureCoded |
K=2, M=1, host |
数据池采用纠删码(Erasure Coding) | L674 |
dataPool.parameters.bulk |
"true" |
PG 自动缩放器从一开始就分配较多的 PG(第 1 篇) | L680 |
preservePoolsOnDelete |
true |
即使删除 CR 也保留数据池 | L681 |
gateway.port |
80 |
HTTP. securePort·证书已被注释掉 |
L683 |
gateway.instances |
1 |
一个 RGW Pod | L692 |
gateway.resources |
请求 CPU 1000m·内存 1Gi,上限 2Gi | L684 | |
storageClass |
ceph-bucket, Delete, region: us-east-1 |
provisioner 为 <클러스터 네임스페이스>.ceph.rook.io/bucket |
L701 |
ingress.enabled·route.enabled |
false |
导出到集群外部时 | L712 |
多站点(realm·zonegroup·zone)、对象存储用户和 EC 块池仅作为注释包含在 values 中,默认不创建(从 L743 开始)。
6. 使用默认值存在风险的地方
警告 1.
useAllNodes: true+useAllDevices: true(L418, L419). 所有节点上所有可用设备都将成为 OSD 并被格式化。正如我们在第 2 篇中所看到的,虽然已挂载或带有文件系统·OSD 签名的设备会被跳过,但 没有任何签名的空磁盘会被直接拿来使用,不会进行任何询问。 目标包括为了其他用途 随意连接的磁盘以及尚未格式化的磁盘。CephCluster 文档指出useAllDevices「除非是在没有擦除设备风险的极其受控的环境中,否则不建议使用」,并建议在生产环境中 使用useAllNodes: false来明确指定节点。请至少填写deviceFilter(例如: 仅匹配实训虚拟机空磁盘名称的正则表达式)或每个节点的devices。
警告 2.
ceph-block的isDefault: true(L531). 在安装的瞬间,ceph-block将成为整个 Kubernetes 的默认 StorageClass。如果已经存在其他默认 StorageClass,则会出现两个默认值,此时 Kubernetes 会将没有storageClassName的 PVC 分配给 最近创建的 默认 StorageClass (Kubernetes: Default StorageClass)。 其他应用的新 PVC 将悄悄流向 Ceph。当将其部署到现有集群时,请务必将false设为 false。
警告 3. 对象存储数据池的 EC 2+1 (L674)。 Ceph 文档指出 M=1 配置「强烈不建议用于生产数据」。 在维护期间数据将无法访问,如果发生重叠故障则会导致数据丢失。此外,由于 K+M=3,
host故障域中必须正好有三个或更多主机,并且如果按照建议将min_size设置为 K+1=3,那么只要有一个主机宕机,该池就会停止写入(实际的min_size值将在第 4 篇中确认,未实际测量)。 如果是生产环境,请考虑使用副本 3 或 K=4、M=2。
警告 4. 删除时会消失的资源。 三个 StorageClass 的
reclaimPolicy都是Delete,因此删除 PVC 也会删除数据。文件系统的preserveFilesystemOnDelete默认是false,所以删除 CR 也会删除文件系统。相反,对象存储的preservePoolsOnDelete: true会保留数据池。请记住这三者的默认值各不相同。
警告 5.
crds.enabled(Operator Chart L21)。 注释警告称,如果在初次安装后将初始设置的值更改为false,可能会破坏集群。同样的注释针对 CRD 被删除的情况,指向了灾难恢复文档中的「删除后恢复 CRD」一节。这个值在安装时只需设置一次,请勿更改。
警告 6.
requireMsgr2: true与keyType: aes(L231, L176)。 msgr2 需要内核 5.11 或更高版本,升级文档指导如果在更旧的内核上则通过requireMsgr2: false将其关闭。注释中写道,如果节点内核低于 7.0,则需要keyType: aes。请首先检查节点的内核版本。切勿在测试环境之外开启mon.allowMultiplePerNode(L184) 和requireSafeReplicaSize: false(允许池 CRD size 1)。
7. 在实训集群中减少内存和 CPU 占用
TT Lab 实训集群的配置包含三个虚拟机,每个虚拟机挂载一个空磁盘(17GiB)。如果使用默认值安装,Ceph Pod 请求的资源 通过 values 计算如下。数量假设为节点数、磁盘数、默认池、文件系统和对象存储各一个。
| Pod | 数量 | 请求 CPU 总计 | 请求内存总计 |
|---|---|---|---|
| osd | 3 | 3000m | 12Gi |
| mds | 2 (1 个活跃 + 1 个备用) | 2000m | 8Gi |
| mon | 3 | 3000m | 3Gi |
| mgr + Sidecar | 2 + 2 | 1200m | 1104Mi |
| rgw | 1 | 1000m | 1Gi |
| logcollector Sidecar | 假设每个守护进程一个,共 11 个 | 1100m | 1100Mi |
| crashcollector, exporter | 每个节点一个,共 3 + 3 | 450m | 330Mi |
| operator | 1 | 200m | 128Mi |
| 总计 | 约 12 核 | 约 26.6Gi |
CSI Pod(ctrlplugin·nodeplugin)和 ceph-csi-operator 的请求由于是对应 Chart 的默认值,因此未包含在内(未确认)。如果 Pod 停留在 Pending 状态,请首先将此总和与虚拟机的 CPU·内存进行对比。实际调度值将在第 4 篇中确认。
这是缩减大小时需要调整的值。以下是 建议配置,但从未以该组合启动过(未实际测量)。
cephClusterSpec:
mgr:
count: 1 # mgr 하나와 사이드카 둘이 빠진다
dashboard:
enabled: false
crashCollector:
disable: true # cluster-test.yaml 도 끈다
logCollector:
enabled: false # 데몬마다 붙는 로그 사이드카가 빠진다
resources:
mon:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 1Gi} # 권장 최소 1024MB 와 같다
mgr:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 512Mi} # 권장 최소 512MB
osd:
requests: {cpu: 500m, memory: 2Gi}
limits: {memory: 2Gi} # 권장 최소 2048MB, osd_memory_target 도 2Gi 가 된다
cephFileSystems:
- name: ceph-filesystem
spec:
metadataServer:
activeCount: 1
activeStandby: false
resources:
requests: {cpu: 250m, memory: 1Gi}
limits: {memory: 1Gi} # 권장 4096MB 보다 낮아 operator 가 경고를 찍는다
cephObjectStores:
- name: ceph-objectstore
spec:
gateway:
instances: 1
resources:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 1Gi}
由于列表值(cephFileSystems, cephObjectStores)会被 Helm 完全替换,因此在实际文件中必须同时编写默认值的其余字段(池、StorageClass)。在上面的代码片段中,为了只展示更改的字段进行了简化。如果不需要 RWX 卷或 S3,使用 cephFileSystems: [],
cephObjectStores: [] 将其完全剔除是缩减幅度最大的方式。 activeStandby: false 只是将备用 MDS 改为冷备,MDS 的数量(2)保持不变(第 2 篇第 2 节)。
如果以相同方式计算上述组合的请求总和,内存约为 10.8Gi(osd 6Gi, mds 2Gi, mon 1.5Gi, mgr 512Mi, rgw 512Mi, exporter 150Mi, operator 128Mi),CPU 约为 3.6 核。相应地,OSD 的内存目标从 4Gi 降至 2Gi,导致 BlueStore 缓存变小(对性能的影响未实际测量),MDS 低于 Rook 的建议值。 对性能的影响将在测量结束后单独撰写的性能篇中讨论。
作为同方向的官方示例,Rook 仓库中提供了
deploy/examples/cluster-test.yaml。这是一种完全不设置资源请求、仅保留一个 mon 和 mgr、将 osd_memory_target 设置为 1GiB、并将池大小设为 1 的配置。文件头部注释将其介绍为「单节点即可满足的小型测试集群」。由于只有一个副本,因此没有数据保护。
容量计算
磁盘集的原始容量为 51GiB。当 OSD 使用率超过 mon_osd_nearfull_ratio(0.85) 时,Ceph 会发出警告,当达到 mon_osd_full_ratio(0.95) 时,则会阻止写入(Monitor Config Reference).
| 池类型 | 空间倍数 | 达到 full (0.95) 之前可容纳的原始数据 | 直到 nearfull (0.85) 警告 |
|---|---|---|---|
| 副本 size 3(块、文件系统) | 3.0 | 约 16.2GiB | 约 14.5GiB |
| EC 2+1(对象数据) | 1.5 | 约 32.3GiB | 约 28.9GiB |
由于所有池共享相同的原始容量,因此这两行不能直接相加。计算中剔除了 BlueStore 和 RocksDB 的固定开销以及 PG 分布不均的情况(未实际测量)。实际可用量可通过第 4 篇的 ceph df 进行确认。
8. 总结
- Chart 共有 三个,顺序为
rook-ceph→ceph-csi-drivers→rook-ceph-cluster。如果漏掉中间的,CSI 将会失败。 - Operator Chart 很短,大部分默认值就足够了。需要确认的是
crds.enabled,monitoring.enabled、OBC 字段允许程度等。 - 集群 Chart 的默认值仅供「参考」。请务必自行决定
storage(使用哪些磁盘)、isDefault、对象数据池的 EC 策略以及资源请求。
Titi 的小贴士。 values.yaml 就像是一封写着「我默认会这样处理哦」的信。然而,这封信里夹杂了一些相当大胆的语句,比如「我会用光所有的空磁盘」、「我要当默认的 StorageClass」。在点击安装按钮之前,请务必重新阅读这几行内容!
参考
values 和文档均于 2026-10-29 从上述 commit 中查阅。
- rook-ceph values.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/rook-ceph/values.yaml
- rook-ceph-cluster values.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/rook-ceph-cluster/values.yaml
- Rook 调整的 ceph-csi-drivers values: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/ceph-csi-drivers/values.yaml
- Helm Charts Overview, Operator 차트, Cluster 차트, CSI 드라이버 차트 문서: https://github.com/rook/rook/tree/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/Helm-Charts
- CephCluster CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Cluster/ceph-cluster-crd.md
- CephBlockPool CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Block-Storage/ceph-block-pool-crd.md
- CephFilesystem CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Shared-Filesystem/ceph-filesystem-crd.md
- CephObjectStore CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md
- cluster-test.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/examples/cluster-test.yaml
- Ceph Erasure Code: https://docs.ceph.com/en/tentacle/rados/operations/erasure-code/
- Ceph Monitor Config Reference: https://docs.ceph.com/en/tentacle/rados/configuration/mon-config-ref/
- Kubernetes Storage Classes: https://kubernetes.io/docs/concepts/storage/storage-classes/