문제 상황
서버 강제 정전/종료 후 OpenStack 인스턴스에서 disk I/O 에러가 발생하여 인스턴스가 부팅되지 않는 현상
RBD 볼륨 상태 확인
1. RBD 이미지 정보 확인
rbd info volumes/volume-cc222ca6-3063-4436-be69-c0878e4e0020
출력 예시:
rbd image 'volume-cc222ca6-3063-4436-be69-c0878e4e0020':
size 500 GiB in 128000 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 0aa316af846cec
block_name_prefix: rbd_data.0aa316af846cec
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Wed Jun 4 09:29:30 2025
access_timestamp: Mon Jun 16 14:55:05 2025
modify_timestamp: Wed Jun 4 16:22:37 2025
2. 문제 원인 분석
주요 확인 포인트:
- features: 활성화된 RBD 기능들
- access_timestamp와 modify_timestamp: 마지막 접근 시간
- exclusive-lock: 락 상태 확인
원인 분석
RBD Advanced Features와 메타데이터 불일치
강제 종료 시 다음 기능들이 문제를 일으킬 수 있음:
- exclusive-lock: 락이 제대로 해제되지 않아 orphaned lock 상태
- object-map: 객체 할당 맵이 실제 데이터와 불일치
- fast-diff: 변경 블록 추적 정보가 손상
- deep-flatten: 계층 구조 메타데이터 불일치
해결 방법
방법 1: RBD Features 비활성화 (즉시 해결)
# 문제가 되는 features 비활성화
rbd feature disable volumes/volume-{UUID} exclusive-lock
rbd feature disable volumes/volume-{UUID} object-map
rbd feature disable volumes/volume-{UUID} fast-diff
rbd feature disable volumes/volume-{UUID} deep-flatten
# 한 번에 여러 features 비활성화
rbd feature disable volumes/volume-{UUID} exclusive-lock,object-map,fast-diff,deep-flatten
방법 2: 메타데이터 복구 (근본적 해결)
# 1. Object Map 재구성
rbd object-map rebuild volumes/volume-{UUID}
# 2. Fast-diff 재구성
rbd fast-diff rebuild volumes/volume-{UUID}
# 3. 전체 스크럽 실행 (시간 소요)
rbd scrub volumes/volume-{UUID}
방법 3: 락 해제 (exclusive-lock 문제)
# 현재 락 상태 확인
rbd lock list volumes/volume-{UUID}
# 강제 락 해제
rbd lock remove volumes/volume-{UUID} {LOCK_ID} {LOCKER_ADDRESS}
# 또는 feature 비활성화로 락 무시
rbd feature disable volumes/volume-{UUID} exclusive-lock
예방 조치
1. 안전한 RBD Features 설정
# 기본 설정: layering만 활성화
rbd feature disable volumes/volume-{UUID} exclusive-lock,object-map,fast-diff,deep-flatten
rbd feature enable volumes/volume-{UUID} layering
2. Ceph 설정 조정
# /etc/ceph/ceph.conf
[global]
rbd_default_features = 1 # layering만 활성화
3. 정기적인 메타데이터 점검
# 주기적으로 실행하여 메타데이터 일관성 확인
rbd scrub volumes/volume-{UUID}
단계별 트러블슈팅 체크리스트
1단계: 즉시 복구 (긴급)
# Features 비활성화로 빠른 복구
rbd feature disable volumes/volume-{UUID} exclusive-lock,object-map,fast-diff,deep-flatten
2단계: 상태 확인
# 볼륨 상태 재확인
rbd info volumes/volume-{UUID}
rbd status volumes/volume-{UUID}
3단계: 인스턴스 재시작
# OpenStack에서 인스턴스 재시작
openstack server reboot {INSTANCE_ID}
4단계: 근본 원인 해결 (선택사항)
# 메타데이터 복구 (시간 소요)
rbd object-map rebuild volumes/volume-{UUID}
rbd fast-diff rebuild volumes/volume-{UUID}
# 복구 후 features 재활성화
rbd feature enable volumes/volume-{UUID} exclusive-lock,object-map,fast-diff
권장사항
운영 환경
- UPS 사용: 갑작스러운 전원 차단 방지
- 기본 features만 사용: layering만 활성화
- 정기 점검: 월 1회 rbd scrub 실행
개발/테스트 환경
- Advanced features 활용: 성능 향상을 위해 모든 features 사용
- 백업 주기 단축: 메타데이터 손실에 대비
추가 명령어
디버깅용 명령어
# RBD 상태 상세 확인
rbd status volumes/volume-{UUID}
# Ceph 클러스터 상태 확인
ceph -s
# RBD 풀 상태 확인
rbd pool stats volumes
로그 확인
# Cinder 로그 확인
tail -f /var/log/kolla/cinder/cinder-volume.log
# Ceph 로그 확인
tail -f /var/log/ceph/ceph.log
이 가이드를 통해 RBD 관련 I/O 문제를 체계적으로 해결할 수 있으며, 향후 유사한 문제를 예방할 수 있습니다.
'CLOUD' 카테고리의 다른 글
Kolla Ansible 이미지 커스터마이징 및 Docker Hub 배포 가이드 (1) | 2025.06.16 |
---|---|
Ceph 클러스터 성능 모니터링 및 체크 가이드 (0) | 2025.06.16 |
OpenStack 인스턴스 스냅샷 vs 볼륨 스냅샷 완벽 가이드 (0) | 2025.06.16 |
Opnestack kolla-ansible 배포 관련 the error was: systemerror: <built-in function _escape_inner> returned null without setting an exception failed 에러 해결 방법 (0) | 2025.05.29 |
OpenStack Designate에 대해 알아보기 (0) | 2025.04.08 |