Ceph 블록 스토리지 (RBD) 실무

Ceph 블록 스토리지 (RBD) 실무

1️⃣ Ceph RBD 개념 및 사용 사례

1. Ceph RBD란?

RBD(RADOS Block Device)는 Ceph의 블록 스토리지 솔루션으로, 클라우드 및 가상화 환경에서 활용됩니다.

🔹 주요 특징

  • 확장성과 고가용성을 갖춘 분산 블록 스토리지
  • 스냅샷 및 클론 기능 제공
  • 동적 크기 조정 가능
  • 고성능을 위한 캐시 및 스트라이핑 기능 제공

2. RBD 사용 사례

사용 사례 설명
KVM/Proxmox VM 디스크 백엔드로 사용
OpenStack Cinder 블록 스토리지로 통합
Kubernetes CSI 기반의 블록 스토리지 활용
Docker 컨테이너 볼륨으로 사용 가능

📌 💡 RBD는 Ceph 클러스터의 분산 스토리지 기능을 활용하여, 안정성과 성능을 극대화할 수 있습니다.


2️⃣ RBD 이미지 생성, 관리

1. RBD 이미지 생성

Ceph의 RBD는 rbd 명령어를 이용하여 생성할 수 있습니다.

# 10GB 크기의 RBD 이미지 생성
rbd create mydisk --size 10G --pool rbd

2. RBD 이미지 목록 조회

rbd ls --pool rbd

3. RBD 이미지 크기 조정 (확장)

rbd resize mydisk --size 20G

4. RBD 이미지 삭제

rbd rm mydisk

📌 💡 RBD 이미지는 VM, 컨테이너, 데이터 저장용 디스크 등으로 활용할 수 있습니다.


3️⃣ RBD Snapshots 및 Cloning

1. RBD Snapshot 생성 및 관리

# 스냅샷 생성
rbd snap create mydisk --snap snap1

# 스냅샷 목록 확인
rbd snap ls mydisk

# 스냅샷 삭제
rbd snap rm mydisk@snap1

2. RBD Clone 생성

# RBD 스냅샷을 읽기 전용 클론으로 생성
rbd clone mydisk@snap1 myclone

📌 💡 RBD 스냅샷과 클론 기능을 활용하면, VM의 빠른 배포 및 백업이 가능합니다.


4️⃣ RBD Striping과 성능 튜닝

1. Striping이란?

  • 데이터를 여러 OSD에 균등하게 배치하여 성능을 향상시키는 기법
  • 디스크 I/O 부하를 분산하여 병목 현상을 방지

2. Striping 활성화 예제

rbd create mydisk --size 10G --stripe-unit 64K --stripe-count 4

📌 💡 stripe-unit: 한 번에 기록할 데이터 크기, stripe-count: 병렬 저장할 OSD 수


5️⃣ RBD Cache 및 성능 최적화

1. RBD 성능 벤치마크

# RBD 벤치마크 실행
rbd bench --io-type write --io-size 4K --io-threads 4 mydisk

2. RADOS 벤치마크 테스트

# RADOS 스토리지 성능 테스트
rados bench -p rbd 10 write --no-cleanup

📌 💡 벤치마크 테스트를 통해 블록 스토리지의 성능을 최적화할 수 있습니다.


6️⃣ KVM/Proxmox/OpenStack에서 Ceph RBD 사용법

1. KVM에서 RBD 스토리지 사용

qemu-img convert -O raw vm-disk.img rbd:rbd/mydisk

📌 💡 KVM은 RBD를 VM의 디스크로 직접 마운트할 수 있습니다.

2. Proxmox에서 RBD 스토리지 추가

pveceph pool create rbd
pvesm add ceph rbd --monhost 10.0.0.1 --pool rbd

3. OpenStack에서 Ceph RBD 연동

[ceph]
rbd_store_pool = volumes
rbd_user = openstack
rbd_secret_uuid = <UUID>

📌 💡 Proxmox와 OpenStack에서 Ceph RBD를 활용하면, VM 디스크를 분산 스토리지로 사용할 수 있습니다.


7️⃣ RBD를 Kubernetes에서 활용하기 (Rook-Ceph)

1. Kubernetes에 Rook-Ceph 설치

kubectl create -f common.yaml
kubectl create -f operator.yaml
kubectl create -f cluster.yaml

2. Ceph RBD 기반 PVC 생성 예제

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-rbd-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: rook-ceph-block

3. PVC를 Pod에서 사용

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: ubuntu
      volumeMounts:
        - mountPath: "/mnt/data"
          name: ceph-volume
  volumes:
    - name: ceph-volume
      persistentVolumeClaim:
        claimName: my-rbd-pvc

📌 💡 Rook-Ceph을 활용하면 Kubernetes 환경에서도 Ceph RBD를 쉽게 사용할 수 있습니다.


RSS Feed
마지막 수정일자