13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] 클라우드 트러블슈팅

  • [OpenStack] 오픈스택 쿼터 초과 장애 해결: 테넌트 자원 고갈 진단부터 관리까지

    [OpenStack] 오픈스택 쿼터 초과 장애 해결: 테넌트 자원 고갈 진단부터 관리까지

    [OpenStack] 오픈스택 쿼터 초과 장애 해결: 테넌트 자원 고갈 진단부터 관리까지

    운영하다 보면 제일 당황스러운 순간이 있어요. 분명 하이퍼바이저(Hypervisor, 가상화 호스트) 자원은 남아 있는데 사용자 쪽에서는 인스턴스(Instance, 가상머신)가 더 이상 생성되지 않는 상황이거든요. 저도 홈랩(Home Lab, 개인 실험 환경)과 실무 환경에서 비슷한 일을 몇 번 겪었는데, 처음엔 컴퓨트 노드(Compute Node) 장애인가 싶어서 로그만 한참 뒤졌습니다. 그런데 원인은 의외로 단순했어요. 바로 오픈스택 쿼터 초과였거든요. 특히 여러 프로젝트(Project, 테넌트 단위)와 팀이 함께 쓰는 환경에서는 오픈스택 테넌트별 자원 제한을 제대로 보지 않으면, 겉으로는 인프라 장애처럼 보여도 실제로는 정책 문제인 경우가 대부분이에요.

    혹시 이런 경험 있으신가요? CPU나 메모리는 남아 있는데 신규 서버가 안 떠서 급하게 노바(Nova), 신더(Cinder), 뉴트론(Neutron) 로그부터 보는 경우요. 저도 그랬습니다 ㅎㅎ 이번 글에서는 제가 실제로 많이 겪었던 패턴을 바탕으로, 자원 고갈처럼 보이는 쿼터 이슈를 어떤 순서로 확인하고, 어떻게 복구하고, 이후엔 어떤 식으로 쿼터 관리 체계를 잡아야 덜 고생하는지 정리해보겠습니다.

    오픈스택 쿼터 초과와 테넌트별 자원 흐름을 설명하는 아키텍처 다이어그램

    프로젝트별로 컴퓨트, 스토리지, 네트워크 자원이 어떻게 제한되고 소비되는지 한눈에 보여주는 개요 이미지입니다.

    1. 왜 오픈스택 쿼터 초과가 장애처럼 보일까

    쉽게 말해 쿼터(Quota, 사용 한도)는 멀쩡한 클라우드 자원 앞에 달린 논리적 문지기예요. 물리 자원이 남아 있어도 테넌트에 할당된 한도를 넘으면 API 단계에서 요청이 거절됩니다. 그래서 현상만 보면 진짜 자원 부족과 거의 비슷해 보여요.

    • 인스턴스 생성 실패: vCPU, RAM, instances 한도 초과
    • 볼륨 생성 실패: 볼륨 수 또는 총 용량 한도 초과
    • 포트 생성 실패: 네트워크 포트 수 제한 도달
    • 플로팅 IP 부족처럼 보이는 현상: 실제 풀 부족이 아니라 프로젝트 쿼터 제한일 수 있음

    현장에서 무서운 건 여기서부터예요. 사용자 입장에서는 그냥 "서버가 안 만들어진다"로 보이고, 운영자도 로그만 대충 보면 스케줄러(Scheduler, 배치 결정기) 문제로 오해하기 쉽거든요. 오픈스택 장애 해결에서 중요한 건, 물리 자원 확인 전에 논리 자원 제한부터 보는 습관이에요. 이 순서 하나로 장애 대응 시간이 꽤 줄어듭니다.

    2. 핵심 개념 정리: 테넌트, 쿼터, 사용량

    저도 처음엔 프로젝트(Project)와 테넌트(Tenant) 용어가 좀 헷갈렸는데요. 실무에서는 거의 같은 맥락으로 쓰는 경우가 많습니다. 중요한 건 "누가 얼마까지 쓸 수 있나"를 나누는 단위라는 점입니다.

    항목 의미 장애와의 관련성
    Tenant / Project 자원을 사용하는 관리 단위 쿼터가 적용되는 기준
    Quota 인스턴스, 코어, RAM, 볼륨, 포트 등의 상한 초과 시 API 요청 실패
    Usage 현재 사용 중인 실제 자원량 삭제 누락, 유령 리소스 확인 포인트
    Limit 허용된 최대치 운영 정책과 연결됨

    여기서 중요한 포인트! 오픈스택 쿼터 초과는 꼭 사용자가 과하게 쓴 경우만 의미하지 않아요. 삭제했다고 생각한 리소스가 실제로는 남아 있거나, 포트(Port, 네트워크 연결 단위)나 스냅샷(Snapshot, 시점 복사본)처럼 눈에 잘 안 띄는 리소스가 누적돼도 발생합니다. 제가 직접 해보니 특히 테스트 환경에서 이런 잔여 리소스가 잘 쌓이더라고요.

    자주 막히는 리소스 종류

    • cores(vCPU 코어 수)
    • ram(메모리 총량)
    • instances(가상머신 개수)
    • volumes(볼륨 개수)
    • gigabytes(볼륨 총 용량)
    • ports(네트워크 포트 수)
    • floating-ips(공인 IP 할당 수)

    3. 증상 확인: 에러 메시지부터 방향을 잡아야 해요

    장애 대응 초반엔 일단 증상을 짧게 정리해야 합니다. 저는 아래 3가지를 먼저 봐요.

    1. 사용자가 어떤 작업에서 실패했는지 확인합니다. 인스턴스 생성인지, 볼륨 생성인지, 포트 할당인지가 중요하거든요.
    2. CLI(Command Line Interface, 명령행 도구) 또는 대시보드에서 에러 문구를 확인합니다.
    3. 관리자 권한으로 해당 프로젝트의 사용량과 쿼터를 바로 조회합니다.

    대표적으로 보게 되는 흐름은 이렇습니다.

    openstack server create --flavor m1.small --image ubuntu-test --network private-net test-vm

    이때 실패하면 사용자 쪽에서는 막연히 "인스턴스 생성 실패"로만 전달하는 경우가 많아요. 근데 실제로는 쿼터 메시지가 붙어 있는 경우가 있습니다. 그래서 저는 같은 프로젝트 컨텍스트(Context, 인증 범위)에서 자원 상태를 먼저 재현해 봅니다.

    오픈스택 쿼터 초과 점검을 위한 CLI 운영 화면 이미지

    쿼터 조회와 사용량 확인 명령을 실행하며 원인을 좁혀가는 운영 절차를 보여주는 이미지입니다.

    4. 실전 점검 절차: 제가 실제로 쓰는 확인 순서

    이 부분이 핵심이에요. 삽질 좀 했던 경험을 바탕으로, 지금은 거의 이 순서대로 갑니다. 괜히 노바 로그부터 깊게 파지 않고, 범위를 빠르게 좁히는 방식입니다.

    4-1. 프로젝트 쿼터 조회

    openstack quota show <PROJECT_ID 또는 PROJECT_NAME>

    이 명령으로 현재 제한값을 봐요. 환경에 따라 cores, instances, ram, volumes, snapshots, ports 같은 항목이 나옵니다. 숫자만 보지 말고, 어떤 항목이 업무 성격상 먼저 닳을지 감으로 연결해야 합니다. 예를 들어 쿠버네티스(Kubernetes, 컨테이너 오케스트레이션) 실험용 프로젝트는 포트가 생각보다 빨리 찹니다.

    4-2. 실제 사용량 확인

    openstack server list --project <PROJECT_ID>
    openstack volume list --project <PROJECT_ID>
    openstack port list --project <PROJECT_ID>

    여기서 저는 꼭 리소스 개수와 상태(Status, 현재 상태)를 같이 봐요. 삭제 중으로 남아 있거나 에러 상태인 리소스가 quota usage에 영향을 주는 경우가 있거든요. 처음엔 이게 뭔가 싶었는데, 특히 포트와 볼륨에서 잔재가 남는 경우가 꽤 있었습니다.

    4-3. 하이퍼바이저 자원과 분리해서 판단

    openstack hypervisor stats show

    이건 ‘진짜 인프라 자원 부족인지’를 분리하기 위한 확인이에요. 하이퍼바이저에 여유가 있는데 프로젝트 생성만 막히면, 높은 확률로 쿼터 또는 스케줄링 정책 쪽입니다. 반대로 전체 자원도 부족하다면 단순 쿼터 상향만으로는 해결이 안 됩니다.

    4-4. 필요 시 쿼터 조정

    openstack quota set --cores 40 --ram 81920 --instances 20 <PROJECT_ID>
    openstack quota set --volumes 20 --gigabytes 2000 <PROJECT_ID>
    openstack quota set --ports 150 <PROJECT_ID>

    여기서 중요한 게 하나 있어요. 무조건 늘리는 게 답이 아니라는 점입니다. 저도 예전엔 급하다고 넉넉하게 올려줬었는데, 결국 몇 주 뒤 다른 팀이 영향을 받는 식으로 되돌아오더라고요. 그래서 지금은 증상 완화용 임시 상향과 정책 반영용 영구 조정을 분리해요.

    4-5. 남은 리소스 재정리

    openstack server delete <SERVER_ID>
    openstack volume delete <VOLUME_ID>
    openstack port delete <PORT_ID>

    실제로 써보니까 쿼터를 늘리는 것보다 먼저 불필요 리소스를 비우는 편이 더 깔끔한 경우가 많았어요. 특히 테스트 프로젝트에서는 종료된 인스턴스보다 남아 있는 포트나 미사용 볼륨이 더 문제였습니다.

    5. 주의사항과 트러블슈팅: 여기서 많이 헷갈립니다

    오픈스택 장애 해결을 하다 보면 쿼터 문제는 금방 끝날 것 같지만, 실제로는 꼬인 상태가 종종 있어요. 제가 자주 봤던 패턴을 정리해보겠습니다.

    ⚠️ 1) 인스턴스는 없는데 쿼터가 찬 것처럼 보이는 경우

    이럴 땐 네트워크 포트나 볼륨, 스냅샷을 의심해요. 사용자는 VM만 지웠다고 생각하지만, 연결된 리소스가 남아 있는 경우가 많거든요.

    • 포트 목록 확인
    • 볼륨과 스냅샷 목록 확인
    • 에러 상태 리소스 확인

    ⚠️ 2) 쿼터를 올렸는데도 바로 안 되는 경우

    정책 반영 지연이라기보다, 실제 실패 원인이 다른 리소스일 수 있어요. 예를 들어 cores는 늘렸는데 ports가 이미 꽉 차 있으면 증상은 그대로입니다. 저도 한 번 이걸 놓쳐서 "왜 안 풀리지?" 하면서 한참 돌았습니다.

    ⚠️ 3) 관리자와 사용자 기준 숫자가 다르게 보이는 경우

    프로젝트 스코프(Project Scope, 프로젝트 범위)나 도메인(Domain, 계정 그룹) 선택이 다르면 조회 결과가 달라질 수 있어요. CLI 인증 정보부터 다시 보는 게 좋습니다.

    ⚠️ 4) 임시 증설이 상시 정책이 되는 경우

    이게 은근 위험해요. 한 번 올려준 쿼터는 잘 안 내려가거든요. 결국 특정 오픈스택 테넌트가 과도한 자원을 점유하면서 다른 팀 배포에 영향을 줄 수 있습니다. 그래서 저는 변경 후 꼭 사유를 남겨요.

    # 예시: 변경 전후 값을 운영 기록에 남기기
    openstack quota show <PROJECT_ID>

    운영 기록은 위키나 티켓 시스템에 남겨두는 편이 좋습니다. 나중에 "왜 이 프로젝트만 이렇게 높지?"라는 질문이 꼭 나오더라고요.

    오픈스택 쿼터 초과 원인 분석과 잔여 리소스 점검 흐름도

    인스턴스, 볼륨, 포트, 스냅샷 중 어디를 먼저 확인할지 보여주는 트러블슈팅 흐름도입니다.

    6. 검증 방법: 수정 후엔 꼭 다시 확인해야 합니다

    조치가 끝났다고 바로 닫으면 안 돼요. 저는 최소한 아래 순서로 검증합니다.

    1. 실패했던 동일 작업을 다시 실행합니다.
    2. 프로젝트 쿼터와 사용량을 다시 조회합니다.
    3. 사용자에게 실제 서비스 배포가 진행되는지 확인받습니다.
    4. 다른 프로젝트에 영향이 없는지도 봐요.
    openstack quota show <PROJECT_ID>
    openstack server create --flavor m1.small --image ubuntu-test --network private-net quota-check-vm
    openstack server list --project <PROJECT_ID>

    검증 포인트는 단순히 "생성이 된다"가 아니에요. 자원 고갈이 구조적으로 반복될 상황인지까지 봐야 합니다. 예를 들어 일시적으로 1대 생성은 되지만, 자동 확장(Auto Scaling, 부하에 따라 자동 증설) 워크로드가 예정돼 있다면 지금 쿼터로는 또 막힐 수 있거든요. 여기서 한 번 더 업무 패턴을 확인해두면 같은 장애를 반복하지 않아요.

    오픈스택 쿼터 초과 해결 후 사용량 변화를 보여주는 대시보드 이미지

    조치 후 VM 생성 성공과 리소스 사용량 증가가 정상적으로 반영된 결과 화면을 보여주는 이미지입니다.

    7. 운영 기준 제안: 쿼터 관리를 이렇게 바꾸니 덜 아팠습니다

    제가 몇 번 데이고 나서 바꾼 방식이 있어요. 그냥 요청 올 때마다 수동으로 늘려주는 방식은 오래 못 갑니다. 결국 장애 대응도 늦고, 정책도 흐려져요.

    • 기본 쿼터 표준화: 개발, 테스트, 운영 프로젝트별 기본값을 구분합니다.
    • 증설 요청 기준 문서화: 인스턴스 수, 코어, RAM, 볼륨 증설 사유를 받습니다.
    • 유휴 자원 정리 주기화: 미사용 볼륨, 포트, 스냅샷 점검 일정을 둬요.
    • 임시 상향 만료 기준: 이벤트성 증설은 종료 시점에 원복 여부를 검토합니다.

    특히 쿼터 관리는 자원 절약만의 문제가 아니에요. 장애를 예측 가능하게 만드는 운영 체계에 가까워요. 드디어 됐다! 하고 쿼터만 올려두면 그날은 끝나지만, 다음 분기엔 더 큰 문제로 돌아오더라고요.

    운영 방식 장점 단점
    요청 올 때마다 수동 증설 즉시 대응 가능 정책 일관성 부족, 누적 위험
    프로젝트 유형별 기본 쿼터 예측 가능성 높음 초기 설계 필요
    정기 점검 기반 조정 유휴 자원 회수 가능 운영 습관이 필요

    8. 정리와 FAQ: 오픈스택 쿼터 초과 대응의 핵심

    정리하면 이렇습니다. 오픈스택 쿼터 초과는 물리 자원이 남아 있어도 충분히 발생할 수 있고, 겉으로는 인프라 장애처럼 보이기 때문에 더 헷갈려요. 그래서 확인 순서는 아주 단순해야 해요. 프로젝트 쿼터 확인, 실제 사용량 확인, 잔여 리소스 점검, 필요한 경우에만 제한 조정. 이 순서만 몸에 익어도 대응 속도가 확실히 빨라집니다.

    저도 처음엔 무조건 시스템 로그부터 깊게 봤었는데, 실제로는 쿼터 하나 때문에 시간을 꽤 썼습니다. 근데 여기서 배운 게 있어요. 장애 대응은 많이 아는 것보다 먼저 의심할 순서를 잘 세우는 게 더 중요하다는 점입니다. 다음 글에서는 프로젝트별 자원 사용량을 주기적으로 점검하는 방법이나, 간단한 자동화 스크립트로 경고를 만드는 방법도 다뤄볼 예정입니다. 이전 글에서 다룬 스토리지 정리 루틴과 함께 보시면 운영 흐름을 잡는 데 더 도움이 될 거예요.

    자주 묻는 질문

    • Q. 하이퍼바이저 자원이 남는데도 생성이 실패할 수 있나요?
      A. 네, 가능해요. 프로젝트 쿼터가 먼저 막고 있을 수 있습니다.
    • Q. 쿼터를 무조건 크게 잡는 게 안전한가요?
      A. 아니에요. 특정 팀의 과점유를 막기 위해 적정선이 필요합니다.
    • Q. 가장 자주 놓치는 리소스는 뭔가요?
      A. 경험상 포트, 볼륨, 스냅샷 같은 잔여 리소스가 많았어요.
    오픈스택 쿼터 초과 예방을 위한 쿼터 관리 체크리스트 인포그래픽

    운영자가 바로 참고할 수 있도록 쿼터 점검 순서와 관리 원칙을 요약한 인포그래픽 이미지입니다.

    ✅ 핵심만 다시 적어보면, 오픈스택 쿼터 초과는 흔하지만 의외로 진단 순서만 잡으면 빠르게 해결돼요. 🎉 중요한 건 단발성 복구가 아니라, 같은 유형의 자원 고갈 이슈가 반복되지 않게 운영 기준을 만드는 거예요. 저처럼 처음에 로그만 파다가 시간 보내지 마시고, 다음 장애 때는 꼭 쿼터부터 확인해보세요. 이거 진짜 편하더라고요.

  • [OpenStack] OpenStack Cinder 볼륨 생성 실패? 흔한 원인과 해결책

    [OpenStack] OpenStack Cinder 볼륨 생성 실패? 흔한 원인과 해결책

    OpenStack Cinder 볼륨 생성 실패? 흔한 원인과 해결책

    OpenStack Cinder 오류 때문에 볼륨이 안 만들어지는 상황, 운영하다 보면 한 번쯤은 꼭 겪게 됩니다. 인스턴스는 잘 뜨는데 스토리지 쪽에서 갑자기 발목을 잡으면 진짜 답답하거든요. 저도 홈랩과 실서비스 비슷한 테스트 환경에서 Cinder 볼륨 생성이 계속 실패해서 한참 삽질했었습니다. 처음엔 Nova(컴퓨트 서비스) 문제인가 싶었는데, 실제로 파고 들어가 보니 메시지는 비슷해도 원인은 꽤 다양하더라고요.

    이번 글에서는 OpenStack Cinder 오류가 났을 때 어디부터 봐야 하는지, 어떤 로그를 먼저 열어야 하는지, 그리고 OpenStack 스토리지 문제를 어떻게 단계적으로 좁혀 가는지 제 경험 기준으로 정리해보겠습니다. 특히 막연하게 재시도만 하는 대신, Cinder 디버깅 관점에서 원인을 빠르게 찾는 흐름에 집중해볼게요.

    OpenStack 환경에서 Cinder, Nova, 백엔드 스토리지가 어떻게 연결되는지 보여주는 개요 이미지입니다.

    1. OpenStack Cinder 오류는 왜 그렇게 자주 터질까요?

    쉽게 말해 Cinder(블록 스토리지 서비스)는 단순히 디스크 파일 하나 만드는 역할이 아닙니다. API 요청을 받고, 스케줄러가 적절한 백엔드로 보내고, 실제 스토리지 드라이버가 LVM(Logical Volume Manager)이나 Ceph(분산 스토리지) 같은 백엔드에 볼륨을 생성하는 구조거든요. 중간 단계가 많다 보니 어디 한 군데만 어긋나도 사용자 입장에서는 그냥 볼륨 생성 실패로 보입니다.

    제가 직접 해보니 특히 아래 네 군데에서 많이 막혔습니다.

    • 서비스 상태 이상: cinder-api, cinder-scheduler, cinder-volume 중 하나가 비정상
    • 백엔드 설정 오류: volume_backend_name, target_helper, 드라이버 옵션 불일치
    • 권한/연결 문제: iSCSI, RBD, LVM 명령 실행 실패
    • 용량 부족: 실제 디스크 또는 풀(pool) 여유 공간 부족

    여기서 중요한 포인트! 에러 메시지 한 줄만 보고 판단하면 거의 항상 돌아갑니다. 요청 경로를 따라가면서 Cinder 디버깅을 체계적으로 진행해야 합니다.

    2. Cinder 볼륨 생성 흐름을 먼저 이해해보겠습니다

    저도 처음엔 헷갈렸는데, 구조를 이해하면 로그 보는 순서가 훨씬 쉬워집니다.

    1. 사용자가 Horizon(대시보드) 또는 CLI로 볼륨 생성 요청
    2. cinder-api가 요청을 받음
    3. cinder-scheduler가 어떤 백엔드에 생성할지 결정
    4. cinder-volume이 실제 스토리지 드라이버 호출
    5. LVM, Ceph RBD, NFS 같은 백엔드에서 실제 볼륨 생성

    즉, 볼륨이 안 만들어지면 API, 스케줄링, 백엔드 실행까지 모두 후보입니다. 그래서 저는 늘 서비스 상태 확인 → 볼륨 상태 확인 → 로그 확인 → 백엔드 직접 점검 순서로 갑니다. 이 흐름이 제일 덜 꼬였습니다.

    3. 기본 점검: 가장 먼저 확인할 사항

    솔직히 여기서 끝나는 경우도 꽤 많습니다. 너무 복잡하게 보기 전에 기본 체크부터 해보세요.

    3-1. Cinder 서비스 상태 확인

    openstack volume service list
    systemctl status openstack-cinder-api
    systemctl status openstack-cinder-scheduler
    systemctl status openstack-cinder-volume

    서비스 목록에서 enabled/up 상태인지 먼저 봅니다. 특히 cinder-volume이 down이면 백엔드까지 요청이 안 내려갑니다. 실제로 써보니까 API는 살아 있는데 volume 서비스만 죽어 있는 케이스가 은근 많더라고요.

    3-2. 실패한 볼륨 상태 확인

    openstack volume list
    openstack volume show <VOLUME_ID>

    error, error_deleting, creating에서 멈췄는지 봐야 합니다. creating 상태가 오래 유지되면 백엔드 작업이 걸렸거나 스케줄링 이후 후속 처리가 멈췄을 가능성이 있습니다.

    3-3. quota(쿼터, 자원 할당량) 확인

    openstack quota show <PROJECT_ID>

    의외로 단순한 프로젝트 quota 초과 때문에 OpenStack Cinder 오류처럼 보일 때도 있습니다. 특히 테스트 환경에서는 이것 때문에 시간을 꽤 쓰게 되네요.

    OpenStack Cinder 오류 점검을 위한 서비스 상태와 볼륨 확인 이미지

    초기 점검 단계에서 서비스 상태와 볼륨 상태를 어떻게 확인하는지 보여주는 이미지입니다.

    4. Cinder 디버깅의 핵심: 로그를 요청 흐름대로 읽기

    이제부터는 본격적인 문제 해결입니다. 여기서는 로그를 한 군데만 보는 게 아니라 요청 흐름대로 나눠서 보는 게 Cinder 디버깅의 핵심입니다.

    4-1. API와 스케줄러 로그 확인

    journalctl -u openstack-cinder-api -n 200 --no-pager
    journalctl -u openstack-cinder-scheduler -n 200 --no-pager

    여기서 보는 포인트는 두 가지입니다. 첫째, 요청이 정상적으로 들어왔는지. 둘째, 스케줄러가 백엔드를 찾지 못했는지입니다. 만약 No valid backend 같은 메시지가 보이면 백엔드 이름 불일치나 capacity 정보 수집 실패를 의심해볼 수 있습니다.

    4-2. cinder-volume 로그로 근본 원인 찾기

    journalctl -u openstack-cinder-volume -n 300 --no-pager

    볼륨 생성 실패 원인은 대부분 여기서 실마리가 나옵니다. 드라이버 예외, 인증 실패, 디바이스 생성 실패, 명령 실행 오류가 다 이쪽에 남습니다. 처음엔 이게 뭔가 싶었는데, 에러 한 줄보다 바로 위아래 문맥이 더 중요하더라고요.

    4-3. 백엔드 직접 확인하기

    LVM 백엔드라면 볼륨 그룹이 실제로 보이는지 확인합니다.

    vgs
    lvs
    pvs

    Ceph RBD 백엔드라면 풀 접근이 되는지, 인증이 맞는지 확인합니다.

    ceph -s
    rbd ls <POOL_NAME>

    여기서 막히면 Cinder 문제가 아니라 사실상 백엔드 스토리지 문제인 경우가 많습니다. 이럴 때는 접근 방향을 바꿔야 합니다.

    5. 흔한 원인과 해결책: 빠르게 참고할 표

    제가 자주 봤던 패턴을 표로 정리해보겠습니다. 운영 중이면 이 표만 보고도 대략 감이 올 때가 있습니다.

    증상 가능한 원인 확인 포인트 해결 방향
    볼륨이 계속 creating 상태 백엔드 응답 지연 또는 작업 멈춤 cinder-volume 로그, 백엔드 상태 백엔드 연결 확인, stuck 작업 정리
    즉시 error 상태로 전환 드라이버 설정 오류 cinder.conf, volume_backend_name 설정값 정합성 수정 후 서비스 재시작
    No valid backend 스케줄러가 사용 가능한 백엔드 없음 scheduler 로그, capacity 보고값 backend 등록 상태와 용량 정보 점검
    권한 관련 오류 스토리지 인증 또는 OS 권한 부족 Ceph keyring, LVM 실행 권한 자격 증명과 실행 계정 권한 수정
    간헐적 실패 네트워크 또는 메시지 큐 지연 MQ, DB, 관리 네트워크 지연 인프라 레이어 상태 함께 점검

    5-1. 설정 파일에서 자주 실수하는 부분

    [DEFAULT]
    enabled_backends = lvm
    
    [lvm]
    volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
    volume_group = cinder-volumes
    volume_backend_name = LVM
    target_helper = tgtadm

    여기서 enabled_backends와 섹션 이름, volume_backend_name이 꼬이면 스케줄러가 백엔드를 인식하지 못합니다. 저는 예전에 섹션 이름은 lvm인데 다른 쪽 설정에서 백엔드 이름을 다르게 참조해둬서 몇 시간을 날렸습니다. 정말 삽질했네요.

    수정 후에는 보통 관련 서비스를 다시 올려줘야 합니다.

    systemctl restart openstack-cinder-volume
    systemctl restart openstack-cinder-scheduler
    Cinder 볼륨 생성 설정과 백엔드 매핑을 설명하는 이미지

    enabled_backends, 섹션 이름, volume_backend_name 관계를 이해하기 쉽게 보여주는 구성 이미지입니다.

    6. ⚠️ OpenStack 스토리지 운영에서 자주 놓치는 부분

    여기부터는 경험상 체감 비중이 높았던 항목입니다.

    6-1. 디스크 용량은 남았는데도 실패하는 경우

    겉으로는 스토리지 여유가 있어 보여도, thin provisioning(씬 프로비저닝) 설정이나 reserved space(예약 공간) 때문에 실제 할당 가능 용량이 부족할 수 있습니다. 특히 LVM thin pool을 쓰면 숫자만 보고 안심했다가 나중에 뒤통수 맞기 쉽습니다.

    6-2. 메시지 큐와 데이터베이스 지연

    Cinder만 보는 게 아니라 RabbitMQ(메시지 브로커)나 MariaDB/MySQL 같은 공통 인프라 레이어도 함께 봐야 합니다. 요청은 들어갔는데 상태 갱신이 늦거나 작업 분배가 밀리면 사용자 눈에는 그냥 실패처럼 보이거든요.

    6-3. 멀티백엔드 환경의 우선순위 문제

    백엔드가 여러 개면 특정 volume type(볼륨 타입)이 어느 백엔드로 가는지 꼭 확인해야 합니다. volume type과 extra specs(추가 속성)가 맞지 않으면 엉뚱한 백엔드로 가거나 스케줄링에 실패할 수 있습니다.

    openstack volume type list
    openstack volume type show <VOLUME_TYPE>

    혹시 이런 경험 있으신가요? 분명 Ceph로 보내야 하는데 기본 타입 때문에 LVM으로 가고 있던 상황이요. 이거 생각보다 자주 나옵니다.

    7. 해결책 검증하기: 실제로 동작하는지 확인

    원인을 수정했다면 반드시 재현 테스트를 해봐야 합니다. 저는 아래 순서대로 확인합니다.

    1. 테스트용 소형 볼륨 생성
    2. 상태가 available로 바뀌는지 확인
    3. 인스턴스에 attach(연결) 테스트
    4. OS 내부에서 블록 디바이스 인식 확인
    openstack volume create --size 1 test-volume
    openstack volume list
    openstack server add volume <SERVER_ID> <VOLUME_ID>

    인스턴스 내부에서는 보통 아래처럼 확인합니다.

    lsblk
    sudo fdisk -l

    여기까지 정상이라면 일단 급한 불은 껐다고 봐도 됩니다. 드디어 됐다! 하는 순간이 오긴 오더라고요.

    OpenStack Cinder 오류 해결 후 볼륨 생성과 attach 검증 이미지

    문제 해결 후 볼륨 상태가 정상으로 바뀌고 인스턴스에 연결된 결과를 보여주는 검증 이미지입니다.

    8. 자주 묻는 질문 정리

    Q1. Cinder 디버깅은 로그를 어디부터 봐야 하나요?

    openstack volume show로 상태를 보고, 그다음 cinder-scheduler, cinder-volume 순으로 보시면 됩니다. 백엔드 생성 실패는 보통 cinder-volume에 단서가 많습니다.

    Q2. Horizon에서는 실패라고만 나오는데요?

    그럴 때는 CLI가 훨씬 낫습니다. Horizon은 요약 메시지만 보여주는 경우가 많아서요. 실제 현장에서는 CLI와 journalctl 조합이 훨씬 빠릅니다.

    Q3. OpenStack Cinder 오류가 간헐적으로만 발생합니다

    이 경우는 설정 오류보다 인프라 지연, 네트워크 흔들림, 메시지 큐 병목 같은 문제일 가능성이 높습니다. 그래서 애플리케이션 로그만 보지 말고 아래도 함께 봐야 합니다.

    • 관리 네트워크 지연
    • 메시지 큐 적체
    • DB 응답 시간
    • 백엔드 스토리지 클러스터 상태

    9. 마무리: Cinder 볼륨 생성 실패는 체계적으로 접근하세요

    Cinder 볼륨 생성 실패는 겉보기엔 단순하지만, 실제로는 API, 스케줄러, 볼륨 서비스, 백엔드 스토리지까지 다 연결된 문제입니다. 그래서 OpenStack Cinder 오류를 빨리 잡으려면 감으로 접근하면 안 되고, 요청 흐름 기준으로 차근차근 좁혀 가야 합니다. Cinder 디버깅의 원칙만 지켜도 복구 시간이 꽤 줄었습니다.

    정리하면 이렇습니다.

    • 서비스 상태부터 확인합니다
    • 볼륨 상태와 로그를 함께 봅니다
    • 백엔드 스토리지를 직접 검증합니다
    • quota, volume type, 멀티백엔드 매핑도 놓치지 않습니다

    다음 글에서는 Cinder와 Ceph RBD 조합에서 자주 만나는 장애 포인트를 따로 정리해볼 예정입니다. OpenStack Cinder 오류 해결에 필요한 Nova attach 흐름도 함께 보시면 전체 그림 이해에 도움이 됩니다.

    OpenStack Cinder 오류 점검 순서를 정리한 요약 인포그래픽

    서비스, 로그, 백엔드, 검증 순서로 이어지는 Cinder 트러블슈팅 체크리스트 요약 이미지입니다.