TT Lab
블로그

한국어

시작하기
블로그

블로그

Rook-Ceph 해설 3: rook-ceph·rook-ceph-cluster 1.21.1 차트의 values 읽기

상태: 초안 (2026-10-29), 차트 원문 기준, 실측 없음. 값은 모두 Rook v1.21.1 태그가 가리키는 커밋 09d2f0d8d883b70b30de796c4390371be725ff3b 의 deploy/charts/rook-ceph/values.yaml 과 deploy/charts/rook-ceph-cluster/values.yaml 에서 직접 읽었고, 표의 줄 번호는 그 파일의 줄입니다. 자원 합계와 용량은 values 와 Ceph 문서의 기본값으로 계산한 값이고 재지 않았습니다. TT Lab 실습 클러스터(VM 세 대, VM 마다 빈 디스크 17GiB)에서 실제로 뜬 파드와 용량은 4편에서 확인합니다. 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」, 원문에서 찾지 못한 것은 「미확인」으로 표시합니다.

목차

1. 차트는 셋이고, 순서가 있다

Rook 문서(Helm Charts Overview)는 v1.21 의 차트를 셋으로 소개합니다. 흔히 「rook-ceph 와 rook-ceph-cluster 두 개를 깔면 된다」 고 알고 있지만, v1.20 부터 가운데에 하나가 더 생겼습니다.

v1.21 의 Helm 차트 셋, 이 순서로 ① rook-ceph Rook 저장소 operator Deployment·CRD·RBAC ceph-csi-operator 1.1.0 (하위 차트) ② ceph-csi-drivers ceph-csi-operator 저장소 OperatorConfig Driver: rbd·cephfs 켜짐 RBAC·서비스 계정 ③ rook-ceph-cluster Rook 저장소 CephCluster 풀·파일시스템·오브젝트 스토어 StorageClass 셋(ceph-block 기본) toolbox(기본 꺼짐) ②를 빠뜨리면 서비스 계정이 없어 CSI 드라이버가 실패한다 업그레이드도 같은 순서: ① → ② → ③
그림: v1.21 의 Helm 차트 셋과 각자 만드는 것
순서 차트 어디서 만드는 것
1 rook-ceph Rook 저장소 Rook operator Deployment, CRD, RBAC, 하위 차트 ceph-csi-operator 1.1.0
2 ceph-csi-drivers ceph-csi-operator 의 Helm 저장소, Rook 이 맞춘 values 로 OperatorConfig, RBD·CephFS Driver CR, 드라이버 파드의 RBAC
3 rook-ceph-cluster Rook 저장소 CephCluster, 블록 풀·파일시스템·오브젝트 스토어 CR, 그 StorageClass, toolbox(기본 꺼짐)

2번을 빠뜨리면 PVC 가 묶이지 않습니다. 업그레이드 문서는 이 차트가 없으면 서비스 계정이 없어 CSI 드라이버가 실패 상태가 된다고 적고, operator 차트 문서의 설치 절차도 「operator 차트 → CSI 드라이버 차트 → 클러스터」 순서입니다 (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

명령은 문서의 예를 그대로 옮긴 것입니다. 클러스터 차트 문서는 values 전체를 복사하지 말고 바꿀 값만 담은 파일을 만들라고 권합니다. 참고로 태그의 Chart.yaml 에는 두 차트 모두 version: 0.0.1 이 적혀 있어서, 배포되는 차트의 판 번호는 릴리스 과정에서 붙는 것으로 보입니다(미확인). v1.21 부터 OCI 차트 태그에는 v 가 붙지 않습니다.

2. rook-ceph(operator 차트)의 중요한 값

파일 전체가 245줄로 짧습니다 (values.yaml).

키 기본값 뜻과 메모 줄
image.tag v1.21.1 operator 이미지 docker.io/rook/ceph L10
crds.enabled true 차트가 CRD 를 만들고 갱신한다. 처음 설치할 때만 정하라는 경고: 나중에 끄면 클러스터가 파괴될 수 있다 L21
resources 요청 CPU 200m·메모리 128Mi, 상한 메모리 512Mi operator 파드 자원 L24
unreachableNodeTolerationSeconds 5 노드가 닿지 않을 때 operator 파드를 옮기기까지. 쿠버네티스 기본 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 mon 파드를 root 로 돌릴지 L81
deleteUnusedCrushRules true mgr 이 뜬 뒤 쓰지 않는 자동 생성 CRUSH 규칙을 지운다 L84
csi.installCsiOperator true ceph-csi-operator 하위 차트를 설치한다 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 파드를 호스트 네트워크로(CNI 가 없는 환경) L213
disableDeviceHotplug false 새 장치가 보이면 자동으로 OSD 로 만드는 동작을 끌지 L216
enableOBCWatchOperatorNamespace true OBC 프로비저너가 operator 네임스페이스를 볼지 L229
obcAllowAdditionalConfigFields "maxObjects,maxSize" OBC 사용자가 정할 수 있는 추가 필드. 나머지(버킷 정책·수명 주기·소유자 등)는 위험하다고 주석이 경고 L240
monitoring.enabled false 켜면 operator 가 ServiceMonitor 를 만들 RBAC 를 받는다. Prometheus 가 먼저 있어야 한다 L245

CSI 설정은 대부분 이 차트를 떠났습니다. 예전에는 이 차트의 csi 아래에서 provisioner 복제 수, kubelet 경로, 드라이버별 자원 같은 값을 정했지만, 업그레이드 문서는 이제 그런 값을 ceph-csi-drivers 차트 설정에서 찾으라고 안내합니다. 이 차트에 남은 csi 는 하위 차트를 설치할지와 이미지 덮어쓰기, ServiceMonitor 정도입니다. ceph-csi-operator 하위 차트 자체의 설정은 values 의 ceph-csi-operator 절(L86)에 적습니다.

3. rook-ceph-cluster 의 바깥 값

여기부터는 844줄짜리 클러스터 차트입니다 (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 에 그대로 들어갑니다. 클러스터 차트 문서는 이 기본값이 「예시일 뿐, 여러분의 클러스터에 맞을 가능성은 낮다」 고 적습니다.

키 기본값 뜻과 메모 줄
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 사이드카도 붙는다 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 데몬 크래시 덤프 수집기(노드마다 파드) L253
logCollector 켜짐, 매일, 최대 500M 데몬마다 로그 파일 회전 사이드카 L260
cleanupPolicy.confirmation "" 2편 7절. 지울 때만 yes-really-destroy-data L271
cleanupPolicy.sanitizeDisks quick·zero·1회 디스크 닦는 방식 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 OSD·mon·RGW·MDS 의 PodDisruptionBudget 을 operator 가 관리 L446
disruptionManagement.osdMaintenanceTimeout 30 드레인 중인 장애 단위를 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 이므로, 차트 기본값(4Gi)은 Ceph 기본과 같습니다. MDS 와 RGW 의 자원은 여기가 아니라 각자의 절에 있습니다(5절).

5. 블록 풀, 파일시스템, 오브젝트 스토어의 기본값

클러스터 차트는 기본으로 세 가지를 하나씩 만들고 각각에 StorageClass 를 붙입니다. 이 StorageClass 는 operator 가 아니라 차트 템플릿이 만듭니다(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 는 차트에 없어서 CRD 기본값 false 가 쓰입니다. CR 을 지우면 파일시스템도 함께 지워진다는 뜻입니다(CephFilesystem CRD).

cephObjectStores: ceph-objectstore 와 StorageClass ceph-bucket

키 기본값 메모 줄
metadataPool host, 복제 size 3 버킷 인덱스 등 L670
dataPool.erasureCoded K=2, M=1, host 데이터 풀은 이레이저 코딩 L674
dataPool.parameters.bulk "true" PG 오토스케일러가 처음부터 PG 를 많이 준다(1편) L680
preservePoolsOnDelete true CR 을 지워도 풀은 남긴다 L681
gateway.port 80 HTTP. securePort·인증서는 주석 처리 L683
gateway.instances 1 RGW 파드 하나 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(예: 실습 VM 의 빈 디스크 이름만 맞는 정규식)나 노드별 devices 를 적으십시오.

경고 2. ceph-block 의 isDefault: true(L531). 설치하는 순간 ceph-block 이 쿠버네티스 전체의 기본 StorageClass 가 됩니다. 이미 다른 기본 StorageClass 가 있으면 기본이 둘이 되고, 쿠버네티스는 이때 storageClassName 없는 PVC 에 가장 최근에 만든 기본 StorageClass 를 씁니다(Kubernetes: Default StorageClass). 다른 앱의 새 PVC 가 말없이 Ceph 로 가게 됩니다. 기존 클러스터에 얹을 때는 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 차트 L21). 처음 설치할 때 정한 값을 나중에 false 로 바꾸면 클러스터가 파괴될 수 있다고 주석이 경고합니다. 같은 주석이 CRD 가 지워졌을 때를 위해 재해 복구 문서의 「삭제 뒤 CRD 복구」 절을 가리킵니다. 이 값은 설치할 때 한 번 정하고 바꾸지 마십시오.

경고 6. requireMsgr2: true 와 keyType: aes(L231, L176). msgr2 에는 커널 5.11 이상이 필요하고, 업그레이드 문서는 더 오래된 커널이면 requireMsgr2: false 로 끄라고 안내합니다. keyType: aes 는 노드 커널이 7.0 미만이면 필요하다고 주석에 적혀 있습니다. 노드의 커널 판부터 확인하십시오. mon.allowMultiplePerNode(L184)와 requireSafeReplicaSize: false(풀 CRD, size 1 허용)는 시험 환경 밖에서 켜지 않습니다.

7. 실습 클러스터에서 메모리와 CPU 를 줄일 때

TT Lab 실습 클러스터는 VM 세 대에 빈 디스크가 하나씩(17GiB) 붙은 구성입니다. 기본값으로 설치했을 때 Ceph 파드가 요청하는 자원을 values 로 계산하면 이렇습니다. 개수는 노드 셋, 디스크 셋, 기본 풀·파일시스템·오브젝트 스토어 하나씩을 가정했습니다.

파드 개수 요청 CPU 합 요청 메모리 합
osd 3 3000m 12Gi
mds 2(활성 1 + 대기 1) 2000m 8Gi
mon 3 3000m 3Gi
mgr + 사이드카 2 + 2 1200m 1104Mi
rgw 1 1000m 1Gi
logcollector 사이드카 데몬마다 하나로 가정해 11 1100m 1100Mi
crashcollector, exporter 노드마다 하나씩 3 + 3 450m 330Mi
operator 1 200m 128Mi
합 약 12 코어 약 26.6Gi

CSI 파드(ctrlplugin·nodeplugin)와 ceph-csi-operator 의 요청은 그쪽 차트 기본값이라 넣지 않았습니다(미확인). 파드가 Pending 에 머물면 먼저 이 합계를 VM 의 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 입니다. Ceph 는 OSD 사용률이 mon_osd_nearfull_ratio(0.85)를 넘으면 경고하고, 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. 정리

티티 한마디. values.yaml 은 「기본으로 이렇게 해 둘게요」 라는 편지예요. 그런데 이 편지에는 「빈 디스크는 다 쓸게요」, 「제가 기본 StorageClass 할게요」 같은 꽤 대담한 문장이 섞여 있어요. 설치 버튼을 누르기 전에 그 몇 줄만은 꼭 다시 읽어 주세요!

참고

values 와 문서는 모두 2026-10-29 에 위 커밋에서 열람했습니다.

로그인하면 좋아요를 누를 수 있습니다

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다