Ceph 스토리지 타입 상세
4️⃣ Ceph 스토리지 타입 상세
Ceph는 단일 스토리지 클러스터에서 Block, File, Object Storage를 모두 지원하는 유연하고 확장성 있는 스토리지 솔루션입니다.
이 장에서는 Ceph의 각 스토리지 타입(RBD, CephFS, RGW)에 대해 아키텍처와 실습 방법을 함께 설명합니다.
1. Ceph Block Storage
📦 RBD: RADOS Block Device
- Ceph의 블록 스토리지는 RBD라는 형태로 제공됩니다.
- 일반적인 VM 디스크, DB 저장소, 로그 저장소 등 읽기/쓰기 집중적인 워크로드에 적합합니다.
📌 아키텍처
+------------------+
| Pod / VM |
| (사용자 앱) |
+--------+---------+
|
v
+------------------+ +----------------------+
| CSI Driver (RBD) | --> | Ceph Cluster (RADOS) |
+------------------+ +----------------------+
🛠️ RBD 사용을 위한 CSI 구성 예제
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
clusterID: rook-ceph
pool: replicapool
imageFeatures: layering
csi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
- discard
PVC 예시:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ceph-block-pvc
spec:
storageClassName: rook-ceph-block
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Pod 예시:
apiVersion: v1
kind: Pod
metadata:
name: ceph-block-test
spec:
containers:
- name: app
image: busybox
command: ["/bin/sh"]
args: ["-c", "while true; do echo Hello from RBD; sleep 5; done"]
volumeMounts:
- mountPath: "/mnt/rbd"
name: ceph-vol
volumes:
- name: ceph-vol
persistentVolumeClaim:
claimName: ceph-block-pvc
2. Ceph File System (CephFS)
- CephFS는 POSIX 호환의 분산 파일 시스템입니다.
- 대규모 파일 공유, 로그 저장, 머신러닝 워크로드 등에 적합합니다.
📌 아키텍처
+------------------+
| Pod / Container |
+--------+---------+
|
v
+------------------+
| CSI Driver (FS) |
+--------+---------+
|
v
+----------------------+
| CephFS MDS + RADOS |
+----------------------+
- MDS(Metadata Server)는 파일의 메타데이터를 관리
- 데이터는 RADOS에 저장됨
🛠️ MDS 구성 및 Mount 방법
스토리지 클래스:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-cephfs
provisioner: rook-ceph.cephfs.csi.ceph.com
parameters:
clusterID: rook-ceph
fsName: myfs
pool: cephfs-data0
csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node
csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph
PVC 예시:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cephfs-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: rook-cephfs
resources:
requests:
storage: 1Gi
3. Ceph Object Storage (RGW)
- RGW는 S3 호환 API를 제공하는 객체 저장소입니다.
- 백업, 로그, 이미지 저장 등 비정형 데이터에 적합
📌 아키텍처
+--------------------------+
| S3 Client / App / Tool |
+------------+-------------+
|
v
+--------------------------+
| RADOS Gateway (RGW) |
+------------+-------------+
|
v
+--------------------------+
| Ceph RADOS (Object Pool)|
+--------------------------+
🛠️ 사용자 및 버킷 관리
- Tool Pod로 접속
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
- 사용자 생성
radosgw-admin user create --uid="user1" --display-name="User One"
- 버킷 생성
radosgw-admin bucket create --bucket=my-bucket --uid=user1
- 접속 정보 확인
radosgw-admin user info --uid=user1
📦 S3 클라이언트 예: s3cmd
, rclone
, minio-client
등 사용 가능
📊 Ceph 스토리지 비교 요약표
타입 | 설명 | 주요 사용 사례 | AccessModes |
---|---|---|---|
Block (RBD) | 가상 디스크 형태의 블록 | DB, VM 디스크, 로그 | RWO |
File (CephFS) | POSIX 파일 시스템 | 파일 공유, 코드 저장소 | RWX, RWO |
Object (RGW) | S3 호환 객체 스토리지 | 백업, 이미지 저장, 아카이브 | HTTP(S) 기반 접근 |
마지막 수정일자