---
title: "OpenStack Cinder에서 멈춤 볼륨 안전하게 제거하기: 단계별 가이드"
description: "OpenStack Cinder에서 생성 중·삭제 중에 멈춘 볼륨을 Ceph와 데이터베이스를 직접 확인·삭제하고, 상태를 error 또는 deleted 로 변경해 안전하게 제거하는 단계별 절차를 제공한다."
date: "2026-01-29"
last_modified: "2026-08-06T00:36:00.000Z"
type: "Post"
tags:
  - "openstack"
  - "ceph"
  - "troubleshooting"
  - "Docs"
  - "storage"
categories:
  - "📗 Docs"
series:
  - "오픈스택 운영"
canonical_url: "https://blog.pieroot.xyz/cinder-stop-volume"
markdown_url: "https://blog.pieroot.xyz/cinder-stop-volume.md"
---

# OpenStack Cinder에서 멈춤 볼륨 안전하게 제거하기: 단계별 가이드

OpenStack Cinder에서 생성 중·삭제 중에 멈춘 볼륨을 Ceph와 데이터베이스를 직접 확인·삭제하고, 상태를 error 또는 deleted 로 변경해 안전하게 제거하는 단계별 절차를 제공한다.

## 서론

OpenStack 환경에서 Cinder 볼륨을 관리하다 보면, 볼륨이 **"생성 중"** 또는 **"삭제 중"** 상태에서 멈추는 문제가 간혹 발생합니다. 이번에는 이러한 문제가 무더기로 발생한 상황을 마주하게 되었습니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=3adf64f9-a667-4463-a617-47ade66bf238&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-8043-adc4-d0b43d1839d2)

이 글에서는 상태가 멈춘 볼륨들을 안전하게 제거하는 방법을 단계별로 설명합니다. 확인 결과 해당 볼륨들은 모두 제거해도 되는 상태였기 때문에, 정리 작업을 진행하기로 결정했습니다.

> **이 글에서 다루는 내용**
> 
> - 생성 중 상태에서 멈춘 볼륨 제거 방법
> 
> - 삭제 중 상태에서 멈춘 볼륨 제거 방법
> 
> - Ceph RBD와 Cinder 데이터베이스 직접 조작

---

### 1. 볼륨 상태 확인 및 제거 (생성 중)

볼륨이 "생성 중" 상태에서 멈춘 경우, 먼저 해당 볼륨이 실제로 Ceph에 생성되었는지 확인해야 합니다.

#### 1.1 Ceph에서 볼륨 존재 여부 확인

Ceph 대시보드에서 RBD 이미지 목록을 확인합니다. OpenStack Cinder 볼륨은 일반적으로 볼륨 ID를 이름으로 사용하여 생성됩니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=321aaaa7-1015-4e44-a40b-7a2bfd43adfe&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-804f-b403-ef6e7bd9bce7)

검색 기능을 통해 문제가 된 볼륨 ID를 조회해 봅니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=51d77ab6-89ea-498f-a69f-353fb34b1645&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-80f6-b041-f92120dfc852)

위 이미지처럼 해당 볼륨이 Ceph에 아직 생성되지 않았다면, 처리가 비교적 간단합니다.

#### 1.2 볼륨 상태를 error로 변경

Ceph에 실제 데이터가 없는 경우, OpenStack에서 볼륨 상태만 변경하면 삭제가 가능합니다.

**방법 1: Horizon 대시보드 사용**

관리자 페이지에서 볼륨의 상태를 `error`로 강제 업데이트할 수 있습니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=11e76b6d-c512-4875-b7a9-a6556f638e16&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-805e-9e1f-e51bb33df8cf)

**방법 2: OpenStack CLI 사용**

```bash
# 볼륨 상태를 error로 변경
openstack volume set --state error <volume_id>

# 실제 예시
openstack volume set --state error 4e0e6890-d998-4af6-bcb3-4ee25ef56aab
```

상태 변경이 완료되면 볼륨이 `error` 상태로 전환된 것을 확인할 수 있습니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=28c6c79c-641c-4279-8222-fd09cab01f1b&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-80e7-b658-da81f9f93ec3)

![image](https://blog.pieroot.xyz/api/image-proxy?id=ebccc4c2-c3b1-42d6-8d80-b7707e9dca55&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-8030-afce-e85db3a0cd61)

#### 1.3 볼륨 삭제

`error` 상태가 되면 일반적인 방법으로 볼륨을 삭제할 수 있습니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=1355396d-692b-4215-9fa0-d18651bfa9c5&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-806c-be98-f4aba9baee05)

CLI를 사용하는 경우 다음 명령어를 실행합니다:

```bash
# 볼륨 삭제
openstack volume delete <volume_id>

# 실제 예시
openstack volume delete 4e0e6890-d998-4af6-bcb3-4ee25ef56aab
```

> **Tip**: 여러 볼륨을 한 번에 처리해야 하는 경우, 볼륨 ID 목록을 파일로 저장한 후 반복문으로 처리하면 효율적입니다.
> 
> ```bash
> for vol in $(cat volume_ids.txt); do
>   openstack volume set --state error $vol
>   openstack volume delete $vol
> done
> ```

---

### 2. 볼륨 상태 확인 및 제거 (삭제 중)

이제 더 까다로운 케이스인 **"삭제 중"** 상태에서 멈춘 볼륨을 처리해 보겠습니다. 이런 볼륨들은 **99.99999% 확률로 Ceph에 아직 데이터가 남아있는 상태**입니다. Cinder가 Ceph에서 삭제를 완료하지 못했기 때문에 이런 현상이 발생합니다.

![실제로 조회를 해보면 이와 같다.](https://blog.pieroot.xyz/api/image-proxy?id=d7c009c0-c2e5-45f5-94cb-3fb7b84a2e1e&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-8040-a6eb-dc4dee0bb5a2)

> **주의**: 정석적인 방법은 상태를 `error`로 변경 후 `delete --force` 옵션을 사용하는 것입니다. 하지만 이 방법이 통하지 않는 경우가 있으며, 현재 상황도 그러합니다. 이 경우 Ceph와 데이터베이스를 직접 조작해야 합니다.

#### 2.1 처리 절차 개요

삭제 중 상태의 볼륨을 제거하기 위해 다음 순서로 진행합니다:

1. Ceph RBD에서 해당 볼륨 이미지 조회 및 제거

1. Cinder 데이터베이스에서 볼륨 상태를 `deleted`로 업데이트

#### 2.2 Ceph에서 볼륨 확인

먼저 Ceph에 해당 볼륨이 존재하는지 확인합니다:

```bash
# Ceph RBD 이미지 조회
rbd ls -p volumes --id cinder | grep <volume_id>

# 실제 예시
rbd ls -p volumes --id cinder | grep 947cb78b-a6d0-48e8-9520-361f63e63d99
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=a6614964-a799-460f-acf4-fc1565d1ba80&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-80dc-b790-f138ecde8074)

> **명령어 설명**
> 
> - `rbd ls`: RBD 이미지 목록을 조회합니다.
> 
> - `-p volumes`: `volumes` 풀을 대상으로 조회합니다. (풀 이름은 환경에 따라 다를 수 있습니다)
> 
> - `--id cinder`: cinder 사용자 권한으로 접근합니다.
> 
> - `grep <volume_id>`: 특정 볼륨 ID가 포함된 이미지만 필터링합니다.

#### 2.3 Ceph에서 볼륨 제거

볼륨이 존재하는 것을 확인했다면, 해당 이미지를 제거합니다:

```bash
# Ceph RBD 이미지 제거
rbd -p volumes --id cinder remove volume-<volume_id>

# 실제 예시
rbd -p volumes --id cinder remove volume-947cb78b-a6d0-48e8-9520-361f63e63d99
```

✅ **삭제 중 멈춤**: Ceph RBD에서 이미지 제거 → DB에서 deleted 처리

![볼륨 id 가 바뀌었지만 아래 Removing image: 100% complete...done. 가 나오면 성공이다.](https://blog.pieroot.xyz/api/image-proxy?id=f3ee5672-fd6a-478a-a0e8-de7b5bc03599&kind=s3&pageId=2f7067c0-15d0-80e8-8b12-db382407b2d0&source=block&blockId=2f7067c0-15d0-80dd-97c2-c5723be9d3f8)

#### 2.4 Cinder 데이터베이스 업데이트

Ceph에서 실제 데이터를 제거했으니, 이제 Cinder 데이터베이스에서도 해당 볼륨을 삭제 처리해야 합니다.

> **주의**: 데이터베이스를 직접 수정하는 것은 위험한 작업입니다. 반드시 백업을 수행하고, 정확한 볼륨 ID를 확인한 후 진행하세요. 잘못된 쿼리 실행 시 다른 볼륨 데이터가 손상될 수 있습니다.

MySQL/MariaDB에 접속하여 다음 쿼리를 실행합니다:

```sql
-- 볼륨 상태를 deleted로 업데이트
UPDATE cinder.volumes t 
SET t.deleted_at = now(), 
    t.deleted = 1, 
    t.status = 'deleted' 
WHERE t.id = '<volume_id>';

-- 실제 예시
UPDATE cinder.volumes t 
SET t.deleted_at = now(), 
    t.deleted = 1, 
    t.status = 'deleted' 
WHERE t.id = '79993942-d2d1-4068-a914-f361c5c14461';
```

> **쿼리 설명**
> 
> - `deleted_at = now()`: 삭제 시간을 현재 시간으로 설정합니다.
> 
> - `deleted = 1`: 소프트 삭제 플래그를 활성화합니다.
> 
> - `status = 'deleted'`: 볼륨 상태를 삭제됨으로 변경합니다.
> 
> - **LIKE 대신 = 사용 권장**: 정확한 ID 매칭을 위해 `=` 연산자를 사용하는 것이 더 안전합니다.

---

### 핵심 정리

이 글에서는 OpenStack Cinder에서 상태가 멈춘 볼륨을 제거하는 방법을 다루었습니다.

✅ **생성 중 멈춤**: 볼륨 상태를 `error`로 변경 후 일반 삭제 진행

✅ **Ceph 확인**: `rbd ls -p volumes --id cinder | grep <volume_id>`로 존재 여부 확인

✅ **Ceph 삭제**: `rbd -p volumes --id cinder remove volume-<volume_id>`로 이미지 제거

✅ **DB 업데이트**: `deleted_at`, `deleted`, `status` 컬럼 업데이트로 삭제 처리

### 주의사항

⚠️ **백업 필수**: 데이터베이스 직접 수정 전 반드시 백업을 수행하세요.

⚠️ **볼륨 ID 확인**: 쿼리 실행 전 볼륨 ID가 정확한지 재확인하세요.

⚠️ **운영 환경 주의**: 프로덕션 환경에서는 사전 테스트 후 적용하세요.

⚠️ **근본 원인 분석**: 반복적으로 발생한다면 Cinder-Ceph 연동 설정이나 네트워크 상태를 점검하세요.
