본문으로 건너뛰기

8. Cinder MultiBackend

검증 목적

  • Ceph RBD·Generic NFS Backend의 단일 Cinder 환경 동시 구성
  • Backend별 Active-Active 지원 차이 확인
  • 전역 cluster 설정에 따른 NFS Service 기동 실패 원인 확인
  • Driver 수정·Backend 분리 대안의 적용 범위와 위험 비교

시험 환경

항목구성
HypervisorKVM
OpenStack NodeControl·Compute 통합 1대
Cinder BackendCeph RBD·Generic NFS
RBD Backend Namerbddriver
NFS Backend NameNFS_VOLUME1
배포 방식OpenStack-Ansible
  • 단일 Node 시험 환경 적용
  • 실제 IP·UUID·내부 경로의 공개용 일반화 적용
  • 운영 적용 전 Release·Driver Support Matrix 재확인 필요

구성 구조

핵심 제약

구분Ceph RBDGeneric NFS
MultiBackend 등록가능가능
독립 Volume Type 선택가능가능
Active-Active HA지원지원 선언 부재
cluster 설정 적용가능Service 기동 실패
운영 권장 방식Cluster 구성 가능Active-Passive·독립 Process 검토 필요
  • MultiBackend 기능과 Active-Active HA의 별도 개념
  • enabled_backends 등록만으로 Active-Active 요구 발생 부재
  • cluster Option 적용 시 동일 Cluster의 Service를 Active-Active로 간주
  • Generic NFS Driver의 Active-Active 지원 선언 부재
  • Driver별 공식 Support Matrix 확인 필요

장애 발생 흐름

확인된 오류

cinder-volume 기동 오류
Active-Active configuration is not currently supported by driver
cinder.volume.drivers.nfs.NfsDriver.

Volume service <host>@nfs_volume failed to start.
  • NFS Share 접근 실패가 아닌 Driver Capability 검증 단계 오류
  • Scheduler 선택 이전의 cinder-volume 초기화 단계 실패
  • RBD Service 정상·NFS Service 실패의 비대칭 상태 발생

OpenStack-Ansible Backend 구성

openstack_user_config.yml 예시
storage_hosts:
storage01:
ip: <management-ip>
container_vars:
cinder_backends:
limit_container_types: cinder_volume

nfs_volume:
volume_backend_name: NFS_VOLUME1
volume_driver: cinder.volume.drivers.nfs.NfsDriver
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
nfs_shares_config: /etc/cinder/nfs_shares
shares:
- ip: "<nfs-server-ip>"
share: "/export/cinder"

rbd_volumes:
volume_backend_name: rbddriver
volume_driver: cinder.volume.drivers.rbd.RBDDriver
rbd_pool: volumes
rbd_ceph_conf: /etc/ceph/ceph.conf
rbd_user: "{{ cinder_ceph_client }}"
rbd_secret_uuid: "{{ cinder_ceph_client_uuid }}"
rbd_store_chunk_size: 16
report_discard_supported: true
  • nfs_volume·rbd_volumes Section 분리 적용
  • Backend별 고유 volume_backend_name 적용
  • NFS Share·Ceph 인증값의 외부 공개 방지 필요
  • Backend별 Volume Type 연결 필요

배포 후 설정 확인

cinder.conf 핵심 항목
[DEFAULT]
enabled_backends = rbd_volumes,nfs_volume
cluster = ceph

[nfs_volume]
volume_backend_name = NFS_VOLUME1
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares

[rbd_volumes]
volume_backend_name = rbddriver
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
  • 전역 cluster = ceph의 모든 Backend Service 적용
  • RBD만을 대상으로 한 Cluster 의도와 실제 적용 범위 불일치
  • NFS Driver 초기화 시 Active-Active Capability 검사 발생

대안 비교

대안적용 방식장점위험·제약
A. Driver 직접 수정SUPPORTS_ACTIVE_ACTIVE=True단일 Process 기동 가능성공식 지원 부재·전수시험 필요
B. Backend Process 분리RBD·NFS의 Host·Config 분리Capability별 독립 운영배포 구조·운영 복잡도 증가
C. NFS Cluster 제외NFS Service에 cluster 미적용Driver 원형 유지Process별 설정 분리 필요
D. 지원 Driver 전환Active-Active 지원 Storage 사용공식 HA 구성 가능Storage·Migration 비용 필요

권장 판단 흐름

대안 A. Driver 직접 수정

PoC 한정 변경 예시
SUPPORTS_ACTIVE_ACTIVE = True
운영 적용 주의

상수 변경은 실제 동시성 안전성 구현이 아닌 Capability 검사 우회에 해당. NFS Driver의 Local Lock·Snapshot·Clone·Delete·Failover 전체 동작 검증 필요.

  • Package Upgrade·재배포 시 변경 유실 가능
  • 공식 Support 범위 이탈 가능
  • 동일 Volume 동시 작업의 Race Condition 검증 필요
  • 장애 복구·Service Cleanup·Lock 동작 전수시험 필요
  • 운영 표준안보다 PoC 검증용 적용

대안 B. Backend 분리

  • RBD와 NFS의 Service Host·Process·Config 분리 적용
  • RBD Service에만 Cluster·Coordination 설정 적용
  • NFS Service의 단일 Active 또는 Active-Passive 운영 필요
  • OpenStack-Ansible Host Group·Container Variable 분리 필요
  • Scheduler의 두 Backend Service 동시 인식 확인 필요

Volume Type 연결

RBD Volume Type 생성
openstack volume type create ceph-rbd
openstack volume type set ceph-rbd \
--property volume_backend_name=rbddriver
NFS Volume Type 생성
openstack volume type create nfs
openstack volume type set nfs \
--property volume_backend_name=NFS_VOLUME1
Volume Type 확인
openstack volume type list
openstack volume type show ceph-rbd
openstack volume type show nfs
  • Backend별 독립 Volume Type 적용
  • Extra Spec과 volume_backend_name의 정확한 일치 필요
  • 기존 Volume의 Backend 변경과 Type 변경의 별도 Migration 검토 필요

검증 절차

Cinder Service 확인
openstack volume service list
openstack volume pool list --detail
Backend별 Volume 생성
openstack volume create \
--size 1 \
--type ceph-rbd \
rbd-test

openstack volume create \
--size 1 \
--type nfs \
nfs-test
생성 결과 확인
openstack volume show rbd-test
openstack volume show nfs-test

판정 기준

  • cinder-volume <host>@rbd_volumesenabled·up 확인
  • cinder-volume <host>@nfs_volumeenabled·up 확인
  • RBD Volume의 Ceph volumes Pool 생성 확인
  • NFS Volume의 지정 Share 파일 생성 확인
  • Backend별 Snapshot·Clone·Extend·Attach·Detach·Delete 확인 필요

Active-Active 전수시험 항목

시험 항목주요 확인 내용
동시 생성동일 Backend의 병렬 Volume 생성
동시 삭제사용·미사용 Volume의 병렬 삭제
Snapshot생성·삭제·Volume 복원
CloneVolume·Snapshot 기반 Clone
ExtendOnline·Offline 확장
Attach복수 Compute 연결·해제
Service 장애Process 종료·재기동·Failover
Lock중복 작업·Race Condition 부재
DB 정합성Service·Volume·Attachment 상태 일치
UpgradePackage 재배포 후 설정 유지

장애 확인

증상원인확인·조치
NFS Service 기동 실패전역 cluster 적용Backend별 Config·Process 분리
RBD만 upNFS Active-Active 미지원NFS Service Log·Driver Matrix 확인
No valid backendService Down·Type 불일치Service·Pool·Extra Spec 확인
잘못된 Backend 선택volume_backend_name 중복Backend Name·Volume Type 분리
Driver 수정 유실Package Upgrade·재배포배포 자동화·Patch 관리 검토
NFS 데이터 충돌동시성 안전성 미검증Active-Passive 전환·전수시험 필요

정리

  • Ceph RBD·Generic NFS MultiBackend 동시 등록 가능
  • MultiBackend와 Active-Active HA의 독립 개념
  • RBD Driver의 Active-Active 지원 적용
  • Generic NFS Driver의 Active-Active 지원 선언 부재
  • 전역 cluster 설정에 따른 NFS Service 기동 실패 확인
  • Driver 상수 수정의 PoC 한정 적용 필요
  • 운영 환경의 Backend Process 분리 또는 지원 Driver 전환 권장

참고 자료