성능 튜닝
1️⃣4️⃣ 최신 동향 및 성능 튜닝
분산 스토리지 시스템에서 성능과 안정성은 생존의 문제입니다.
이번 장에서는 Ceph의 최신 릴리즈 동향, 스토리지 성능 튜닝 전략, 그리고 Rook-Ceph의 최신 Helm 차트 적용 방법까지 폭넓게 다뤄보겠습니다.
1. Ceph Pacific / Quincy / Reef 변화점
버전 | 주요 변화 | 설명 |
---|---|---|
Pacific (16.x) | Cephadm, SSD 최적화 | container native 배포 공식화 |
Quincy (17.x) | Multisite RGW, NFS 지원 강화 | CephFS의 NFS 지원 본격화 |
Reef (18.x) | 성능 향상, NVMe 지원 확대 | BlueStore 개선, Latency 최적화 |
📌 예시: Reef 릴리즈 하이라이트
- OSD Sharding 구조 개선으로 쓰기 지연 감소
- CephFS의
async directory operations
적용 - NVMe 기반 RADOS 성능 향상
ceph version
# ceph version 18.2.1 (reef)
2. Performance Tuning 옵션 (BlueStore, RocksDB, Journaling)
Ceph의 성능은 내부 저장 엔진인 BlueStore와 그 하위 구성에 크게 의존합니다.
⚙️ BlueStore 설정 최적화
[osd]
bluestore_cache_size = 4294967296 # 4GB Cache
bluestore_compression_algorithm = zstd
bluestore_compression_mode = aggressive
🔸 RocksDB 최적화
RocksDB는 BlueStore의 메타데이터 저장소입니다.
RocksDB는 반드시 빠른 디스크(SSD/NVMe)에 위치해야 성능 저하를 방지할 수 있습니다.
bluestore_block_wal_size = 512MB
bluestore_block_db_size = 2GB
📑 Journaling (Write Ahead Log)
wal
및db
를 빠른 장치에 분리 저장하면 latency 개선- OSD 1개에 SSD 파티션을 공유하는 구조 추천
3. SSD/NVMe와 HDD 조합 전략
📈 하이브리드 스토리지 아키텍처
flowchart LR NVME1[NVMe SSD (RocksDB/WAL)] --> OSD1[HDD OSD] NVME1 --> OSD2[HDD OSD] NVME2[NVMe SSD (RocksDB/WAL)] --> OSD3[HDD OSD]
- HDD: 대용량 데이터 저장 (블록 장치)
- SSD/NVMe: 메타데이터, WAL 전용 (속도)
예시 구성:
/dev/sda # HDD (OSD Data)
/dev/nvme0n1p1 # RocksDB
/dev/nvme0n1p2 # WAL
OSD 생성 시 아래처럼 매핑
ceph-volume lvm create \
--data /dev/sda \
--block.db /dev/nvme0n1p1 \
--block.wal /dev/nvme0n1p2
4. Rook-Ceph 최신 Helm 차트 활용
Rook의 Helm 차트는 지속적으로 개선되며, 설정의 유연성이 매우 높습니다.
⬇️ Helm Chart 설치
helm repo add rook-release https://charts.rook.io/release
helm upgrade --install rook-ceph rook-release/rook-ceph --namespace rook-ceph --create-namespace
✅ Helm values 예시 (values.yaml
)
cephClusterSpec:
dashboard:
enabled: true
storage:
useAllNodes: true
useAllDevices: false
nodes:
- name: "worker-1"
devices:
- name: "sdb"
- name: "nvme0n1"
mon:
count: 3
resources:
mgr:
limits:
cpu: "1"
memory: "1Gi"
🚀 최신 기능: CephCluster CRD에서 deviceClass
명시
storageClassDeviceSets:
- name: ssd-osd
count: 2
portable: true
resources:
limits:
memory: "4Gi"
volumeClaimTemplates:
- metadata:
name: data
spec:
storageClassName: "rook-ceph-block"
resources:
requests:
storage: 100Gi
🧠 튜닝 플로우: 성능 최적화 전략
flowchart TD A[설계 단계] --> B[BlueStore 및 RocksDB 위치 선정] B --> C[Helm으로 디바이스/스토리지 정의] C --> D[ceph osd perf bench] D --> E{성능 부족?} E -->|Yes| F[SSD/NVMe 재배치 or Cache Size 증가] E -->|No| G[정상 운영 유지]
📌 실전 팁 요약
주제 | 내용 | 비고 |
---|---|---|
Ceph 버전 | Reef 권장 (18.x) | 성능 + 안정성 향상 |
저장소 엔진 | BlueStore 필수 | Filestore는 deprecated |
메타데이터 | SSD에 RocksDB/WAL 분리 | 필수 구성 |
OSD 배포 | ceph-volume or Rook CRD |
자동화 가능 |
Helm | rook-release/rook-ceph 사용 |
values.yaml 조정 |
마지막 수정일자