Overview
Kubernetes 환경에서 상태를 가진 애플리케이션(Stateful Applications)을 운영할 때, 적절한 스토리지 솔루션 선택은 매우 중요하다. 기존의 NFS나 클라우드 기반 스토리지의 한계를 극복하고자 많은 조직들이 local storage 기반의 분산 블록 스토리지 솔루션을 도입하고 있다.
본 가이드에서는 현재 가장 주목받고 있는 세 가지 오픈소스 스토리지 솔루션을 심층 분석하고 비교한다.
OpenEBS
CNCF 샌드박스 프로젝트로, Container Attached Storage(CAS) 개념을 도입한 클라우드 네이티브 스토리지 솔루션이다. 다양한 스토리지 엔진을 제공하여 다양한 워크로드 요구사항을 충족한다.
Longhorn
Rancher에서 개발한 분산 블록 스토리지로, 단순함과 사용 편의성에 중점을 둔 솔루션이다. 직관적인 웹 UI와 강력한 백업/복원 기능을 제공한다.
Rook Ceph
Kubernetes 환경에서 Ceph 클러스터를 자동화하여 관리하는 솔루션입니다. 엔터프라이즈급 성능과 안정성을 제공하며, Object, Block, File 스토리지를 모두 지원한다.
📅 관련 글
2024.02.20 - [Open Source Software] - Rook-Ceph란?
아키텍처 비교
OpenEBS 아키텍처

특징
- 멀티 엔진 아키텍처: 워크로드별 최적화된 엔진 선택 가능
- Container Attached Storage: 각 볼륨마다 전용 컨트롤러 파드
- 마이크로서비스 기반: 각 컴포넌트가 독립적으로 스케일링 가능
Longhorn 아키텍처

특징
- 단순한 아키텍처: 이해하기 쉬운 구조
- iSCSI 기반: 표준 블록 스토리지 프로토콜 사용
- 볼륨별 엔진: 각 볼륨마다 독립적인 엔진 프로세스
Rook Ceph 아키텍처

특징
- 엔터프라이즈급 아키텍처: 검증된 Ceph 기반
- 다중 스토리지 타입: Block, Object, File 모두 지원
- 고도로 분산된 구조: 대규모 클러스터에 최적화
상세 기능 비교
스토리지 엔진 및 기능
| 기능 | OpenEBS | Longhorn | Rook Ceph |
| 스토리지 엔진 | LocalPV, Jiva, cStor, Mayastor | 단일 엔진 | Ceph RBD, CephFS, RGW |
| 복제 방식 | 동기/비동기 선택 가능 | 동기식 복제 | 동기식 복제 |
| 스냅샷 | ✅ (엔진별 상이) | ✅ | ✅ |
| 백업 | ✅ | ✅ (S3, NFS) | ✅ (Multiple backends) |
| 암호화 | ✅ | ✅ | ✅ |
| 압축 | ✅ (cStor, Mayastor) | ❌ | ✅ |
| 씬 프로비저닝 | ✅ | ❌ | ✅ |
| QoS | ✅ | ❌ | ✅ |
성능 비교
| 항목 | OpenEBS | Longhorn | Rook Ceph |
| 지연시간(Latency) | 낮음-중간 (엔진별) | 낮음 | 중간 |
| 처리량(Throughput) | 높음 (Mayastor) | 중간 | 매우 높음 |
| IOPS | 높음 (LocalPV) | 중간 | 매우 높음 |
| 오버헤드 | 낮음-중간 | 낮음 | 중간-높음 |
| 네트워크 사용량 | 중간 | 중간 | 높음 |
관리 및 운영
| 항목 | OpenEBS | Longhorn | Rook Ceph |
| 설치 복잡도 | 중간 | 낮음 | 높음 |
| 웹 UI | ✅ (기본적) | ✅ (풍부한 기능) | ✅ (Ceph Dashboard) |
| 모니터링 | Prometheus/Grafana | 내장 + Prometheus | 풍부한 메트릭 |
| 로그 관리 | 기본적 | 상세함 | 매우 상세함 |
| 업그레이드 | 복잡 | 간단 | 복잡 |
| 문제 해결 | 중간 | 쉬움 | 어려움 |
| 문서화 | 양호 | 우수 | 우수 |
워크로드별 성능 분석
데이터베이스 워크로드
성능 순위(랜덤 I/O 집약적 워크로드)
- OpenEBS (Mayastor/LocalPV): 8.5/10
- NVMe 최적화
- 낮은 지연시간
- Rook Ceph: 8.0/10
- BlueStore 최적화
- 높은 IOPS
- Longhorn: 7.0/10
- 안정적이지만 상대적으로 낮은 성능
빅데이터/분석 워크로드(순차 I/O 집약적 워크로드)
성능 순위
- Rook Ceph: 9.0/10
- 뛰어난 처리량
- 병렬 처리 최적화
- OpenEBS (cStor): 8.0/10
- ZFS 기반 최적화
- Longhorn: 7.5/10
- 간단하지만 제한적 성능
웹 애플리케이션(혼합 I/O 패턴)
성능 순위
- OpenEBS (LocalPV): 9.0/10
- 로컬 스토리지 성능
- Longhorn: 8.5/10
- 균형 잡힌 성능
- Rook Ceph: 8.0/10
- 안정적이지만 오버헤드 존재
실제 구현 사례
OpenEBS 구현 예시
# StorageClass for Database
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-mayastor-nvme
provisioner: io.openebs.csi-mayastor
parameters:
repl: "3"
protocol: "nvmf"
fsType: "ext4"
allowVolumeExpansion: true
volumeBindingMode: Immediate
---
# PVC for High-Performance Database
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: openebs-mayastor-nvme
resources:
requests:
storage: 100Gi
Longhorn 구현 예시
# StorageClass for General Purpose
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: longhorn-ssd
provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Retain
parameters:
numberOfReplicas: "2"
staleReplicaTimeout: "30"
fromBackup: ""
fsType: "ext4"
---
# PVC with Backup Policy
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data
annotations:
longhorn.io/recurring-jobs: |
[
{
"name": "backup",
"task": "backup",
"cron": "0 2 * * *",
"retain": 7
}
]
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn-ssd
resources:
requests:
storage: 50Gi
Rook Ceph 구현 예시
# CephCluster Configuration
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
cephVersion:
image: quay.io/ceph/ceph:v17.2.6
dataDirHostPath: /var/lib/rook
mon:
count: 3
allowMultiplePerNode: false
mgr:
count: 2
dashboard:
enabled: true
ssl: true
storage:
useAllNodes: true
useAllDevices: true
config:
osdsPerDevice: "1"
---
# StorageClass for Enterprise Workload
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block-ssd
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
clusterID: rook-ceph
pool: replicapool
imageFormat: "2"
imageFeatures: layering
csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph
allowVolumeExpansion: true
총 소유 비용(TCO) 분석
하드웨어 요구사항
| 솔루션 | 최소 노드 수 | CPU 요구사항 | 메모리 요구사항 | 네트워크 | 예상 비용 |
| OpenEBS | 3 | 2-4 코어/노드 | 4-8GB/노드 | 1Gbps | 중간 |
| Longhorn | 3 | 1-2 코어/노드 | 2-4GB/노드 | 1Gbps | 낮음 |
| Rook Ceph | 3-5 | 4-8 코어/노드 | 8-16GB/노드 | 10Gbps | 높음 |
사용 사례별 추천 가이드
스타트업/중소기업 (10-50 노드)
추천: Longhorn
이유
- 낮은 학습 곡선
- 최소한의 운영 인력
- 충분한 성능
- 우수한 백업 기능
적합한 워크로드
- 웹 애플리케이션
- 소규모 데이터베이스
- CI/CD 파이프라인
- 개발/테스트 환경
중견기업 (50-200 노드)
추천: OpenEBS
이유
- 다양한 워크로드 지원
- 성능 최적화 옵션
- 적당한 복잡도
- 활발한 커뮤니티
적합한 워크로드
- 마이크로서비스
- 중규모 데이터베이스
- 실시간 분석
- 혼합 워크로드 환경
대기업/엔터프라이즈 (200+ 노드)
추천: Rook Ceph
이유
- 엔터프라이즈급 성능
- 뛰어난 확장성
- 다양한 스토리지 타입
- 성숙한 생태계
적합한 워크로드
- 대규모 데이터베이스
- 빅데이터 분석
- AI/ML 워크로드
- 멀티미디어 처리
특수 환경별 추천
엣지 컴퓨팅
추천: OpenEBS LocalPV
- 최소한의 리소스 사용
- 네트워크 의존성 없음
멀티클라우드
추천: Longhorn
- 클라우드 간 이식성
- 표준화된 백업 형식
고성능 컴퓨팅(HPC)
추천: Rook Ceph
- 병렬 I/O 최적화
- 높은 처리량
결론 및 권장사항
최종 추천 매트릭스
| 시나리오 | 1순위 | 2순위 | 3순위 |
| 소규모 환경 | Longhorn | OpenEBS LocalPV | OpenEBS Jiva |
| 중간 규모 환경 | OpenEBS | Longhorn | Rook Ceph |
| 대규모 엔터프라이즈 | Rook Ceph | OpenEBS | Longhorn |
| 고성능 요구 | OpenEBS Mayastor | Rook Ceph | Longhorn |
| 단순함 우선 | Longhorn | OpenEBS LocalPV | OpenEBS Jiva |
| 다양한 워크로드 | OpenEBS | Rook Ceph | Longhorn |
핵심 결론
- Longhorn: 단순함과 사용 편의성을 중시하는 환경에 최적. 중소규모 조직과 Kubernetes 초보자에게 강력 추천.
- OpenEBS: 다양한 워크로드와 성능 요구사항을 가진 환경에 최적. 유연성과 확장성을 동시에 원하는 조직에 적합.
- Rook Ceph: 엔터프라이즈급 성능과 안정성이 필요한 대규모 환경에 최적. 복잡하지만 가장 강력한 기능 제공.
성공적인 도입을 위해선?
- 단계적 접근: 파일럿 프로젝트부터 시작하여 점진적으로 확대
- 충분한 테스트: 프로덕션 적용 전 다양한 시나리오에서 충분한 테스트 수행
- 모니터링 강화: 초기 단계에서 상세한 모니터링 구축
- 백업 전략: 마이그레이션 전 반드시 백업 계획 수립
- 팀 역량: 선택한 솔루션에 대한 팀의 이해도와 역량 개발
각 솔루션은 고유한 장단점을 가지고 있으며, 조직의 요구사항, 기술적 역량, 그리고 예산을 종합적으로 고려하여 선택해야 한다. 무엇보다 중요한 것은 선택한 솔루션을 충분히 이해하고 운영할 수 있는 역량을 확보하는 것이다.
Reference
공식 문서
- OpenEBS Official Documentation
- Longhorn Official Documentation
- Rook Ceph Documentation
- Kubernetes Storage Documentation
아키텍처 및 설계 가이드
'Container Orchestration > Kubernetes' 카테고리의 다른 글
| Kubernetes 환경에서 Redis Redlock 구현하기: 분산 락의 완전한 이해 (0) | 2025.12.24 |
|---|---|
| Containerd v3에서 Insecure Registry 설정 방식 변경 (0) | 2025.11.26 |
| Kubernetes 클러스터 구축하기(kubespray 2025v.) (4) | 2025.07.31 |
| Helmfile 완전 정복: 실무에서 Helm을 선언적으로 관리하는 방법 (0) | 2025.06.16 |
| Helm values.schema.json 완벽 정리 (0) | 2025.05.29 |