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를 쉽게 사용할 수 있습니다.
마지막 수정일자