성능 튜닝

성능 튜닝

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)

  • waldb를 빠른 장치에 분리 저장하면 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 조정

RSS Feed
마지막 수정일자