분량이 조금 되서 1차로 CLI 사용법을 등록해놓고 테스트케이스 추가는 수정으로 붙이겠습니다.
1) CLI 사용법 – openstack volume attachment
volume attachment 개요
Manila, Ironic, Magnum.. < (볼륨 제공)
^
|
Cinder <----------> [단일 볼륨] <--(생성)-- 스토리지 백엔드
|
(연결 관리)
volume attachment는 Cinder가 관리하는 볼륨을 특정 소비자(인스턴스, 베어메탈, 컨테이너 노드 등)에 연결하기 위한 절차를 제어합니다.- Nova에는 인스턴스-볼륨 attach/detach 명령이 있지만, Nova를 거치지 않는 환경(Ironic, Manila, Magnum 등)에서는 직접 Cinder의 attachment API/CLI를 호출해야 합니다.
volume attachment는 Cinder 볼륨 리소스의 생성/삭제와는 별개로, 연결 수명주기만 다룹니다.- 그래서 실제로 사용하기 위해서는 다음과 같은 절차가 필요합니다.
volume attachment를 사용하여 외부 볼륨(LUN)을 Cinder를 통해 사용하는 과정
- (Storage) 교체/사용할 LUN을 생성하고 ACL/zoning 등 연결 정보를 준비합니다.
- (Cinder)
cinder manageable-list로 조회된 외부 볼륨을cinder manage명령어를 통해 import 합니다. 이때volumeId가 부여됩니다. - (Cinder)
volume attachment create명령어를 통해 연결 정보를 수동으로 생성합니다. - (사용처) 블록 디바이스 조회 API 또는 인터페이스를 통해 사용합니다.
volume attachment에는 아래 하위 명령어가 있습니다.
- `volume attachment create`
- `volume attachment complete`
- `volume attachment show`
- `volume attachment set`
- `volume attachment delete`
- `volume attachment list`
volume attachment create
Cinder에 attachment 레코드를 생성합니다.
이는 Cinder ↔ 스토리지 백엔드 간 상호작용입니다.
지원되는 프로토콜은 다음과 같습니다.
- RBD (Ceph)
- iSCSI
- SAN
- NFS
- FCoE, NVMe-oF
여기서는 가장 많이 사용하는 RBD, iSCSI, SAN, NFS 4가지에 대해서 알아보겠습니다.
RBD 백엔드 연결에 필요한 정보
volume attachment create --connect <VOL> <SERVER>
- 이 연결은 Ceph에서 생성한 볼륨을 Cinder의 attachment로 등록하는 명령어 입니다.
- Ceph 설정, keyring, rbd map (Ceph 블록 디바이스 매핑), multipath 준비가 미리 필요합니다.
iSCSI 백엔드 연결에 필요한 정보
volume attachment create --connect \
--initiator <IQN> \
--ip <HOST_IP> \
--host <HOSTNAME> \
[--multipath] \
<VOL> <SERVER>
- 이 연결은 iSCSI Target에서 생성한 LUN export를 Cinder의 attachment로 등록하는 명령어 입니다.
- 실제 연결 시점에는 WWPN 정보 등이 필요합니다.
- iSCSI Target에서 IQN, LUN Export 등의 설정 준비가 미리 필요합니다.
SAN (FC) 백엔드 연결에 필요한 정보
volume attachment create --connect <VOL> <SERVER>
- 이 연결은 SAN 스토리지의 LUN을 Cinder의 attachment로 등록하는 명령어 입니다.
- SAN 스토리지에서 LUN 생성, LUN mapping(host affinity, presentation …), SAN S/W zonning 등 준비가 미리 필요합니다.
NFS 백엔드 연결에 필요한 정보
openstack volume attachment create \
--connect \
--host <HOSTNAME> \
--os-type <OS_TYPE> \
VOL_ID SERVER_ID
- 이 연결은 NFS 공유볼륨을 Cinder의 attachment로 등록하는 명령어 입니다.
- 다른 연결과 다르게 세션 수립이 아니라 자동으로 연결 처리가 됩니다. 다만 Cinder는 export 정보만 반환하고 이후 Nova가 NFS 마운트 후 루프백 디바이스에 연결하는 과정을 자동 처리합니다.
volume attachment complete
이미 생성된 attachmet에 대해 완료(complete) 상태로 전환하는 역할을 합니다.
- 완료란 attachment 레코드의 상태를
attaching에서in-use로 전환하는 역할을 합니다. - Nova는 이를 자동으로 수행하지만, Nova가 아닌 리소스에서 상태 전환이 필요할때 사용합니다.
volume attachment complete <ATTACHMENT_ID>
- 볼륨 상태:
attaching→in-use - attachment 상태:
reserved/attaching→attached
volume attachment show
특정 attachment 레코드의 상세 정보를 조회하는 명령입니다.
- volume show와 달리, 이 명령은 연결(attachment) 관점의 세부 정보, 특히 connection_info, initiator, protocol, 상태를 제공합니다.
openstack volume attachment show <ATTACHMENT_ID>
| 필드 | 설명 |
|---|---|
| id | attachment 레코드 ID |
| volume_id | 연결 대상 Cinder 볼륨의 UUID |
| instance | Nova 인스턴스 ID (Nova attach일 경우에만) |
| status | attachment 상태 (reserved / attaching / attached) |
| attach_mode | rw(읽기/쓰기) 또는 ro(읽기 전용) |
| mountpoint | Nova 인스턴스 안에서 디바이스가 마운트된 경로 (/dev/vdb 등) |
| connection_info | 드라이버에서 반환한 연결 정보(JSON) → driver_volume_type(iSCSI, RBD, NFS, FC 등)와 연결 매개변수(portal, target IQN, export path 등) 포함 |
| os_type | 소비자 OS 타입(수동 attach 시 옵션으로 지정 가능) |
| platform | CPU 아키텍처(필요시 옵션으로 지정) |
| attachment_metadata | 드라이버/운영자가 지정한 부가 메타데이터 (initiator IQN, 호스트명, IP 등) |
| created_at / updated_at | 레코드 생성/갱신 시간 |
volume attachment set
이미 존재하는 attachment 레코드의 속성을 수정하는 명령입니다.
- 이 명령은 Cinder DB 레코드만 업데이트합니다. 프로토콜 세션이나 스토리지 백엔드 설정을 실시간으로 변경하지 않습니다.
- 따라서 연결 정보에 대한 속성을 수정한 경우에는 미리 ACL, SAN Zoning 등이 준비되어 있어야 합니다.
openstack volume attachment set \
[--instance INSTANCE] \
[--mode {rw,ro}] \
[--os-type OS_TYPE] \
[--platform PLATFORM] \
[--initiator IQN] \
[--ip IP_ADDRESS] \
[--host HOST_NAME] \
[--mountpoint MOUNTPOINT] \
ATTACHMENT_ID
| 옵션 | 설명 | 비고 |
|---|---|---|
| –instance | attachment를 연결할 Nova 인스턴스 ID | Nova 환경에서만 의미 있음 |
| –mode | rw(읽기/쓰기) 또는 ro(읽기 전용) | 멀티 attach 환경에서 읽기 전용 권장 |
| –os-type | 연결 대상 호스트 OS 타입 (linux, windows, aix 등) | 일부 드라이버는 OS 타입별로 connection_info를 다르게 반환 |
| –platform | CPU 아키텍처 (x86_64, ppc64, arm64 등) | 드라이버 종속적 |
| –initiator | iSCSI Initiator IQN | iSCSI 프로토콜 사용 시 필수일 수 있음 |
| –ip | 호스트 IP 주소 (스토리지와 연결되는 인터페이스) | SAN zoning/NVMe-oF ACL 구성 시 중요 |
| –host | 호스트 이름 | 스토리지에서 LUN masking 할 때 사용 가능 |
| –mountpoint | 인스턴스 내부에서의 디바이스 경로 | Nova attach 시 자동 지정, 수동 환경에서 메타데이터 용도 |
volume attachment delete
특정 attachment 레코드를 삭제하는 명령입니다.
- Nova 환경에서는
openstack server remove volume을 사용하면 Nova가 내부적으로 Cinder의attachment_deleteAPI를 호출합니다. - CLI에서 직접 실행하는 경우는 비-Nova 환경, 수동 연결 해제, 상태 꼬임 복구에 주로 사용됩니다.
openstack volume attachment delete <ATTACHMENT_ID> [<ATTACHMENT_ID> ...]
주로 다음의 절차과정에서 사용됩니다.
- 호스트(사용처) 에서 세션 해제 및 연결 제거
- 오픈스택에서
attachment delete명령어 수행 - 스토리지 백엔드에서 리소스 할당 제거 수행
- 더이상 사용하지 않을 경우 오픈스택에서
volume delete수행
volume attachment list
Cinder에 등록된 모든 attachment 레코드 목록을 출력합니다.
특히 Nova환경이 아닌 볼륨 연결 목록을 파악할때 사용합니다.
openstack volume attachment list
[--all-projects]
[--long]
[--status STATUS]
[--volume VOLUME]
[--instance INSTANCE]
| 옵션 | 설명 | 비고 |
|---|---|---|
| –all-projects | 모든 프로젝트의 attachment 표시 (admin만 가능) | 멀티테넌트 환경에서 유용 |
| –long | connection_info 등 추가 필드 표시 | 민감 정보 포함 가능, 주의 |
| –status STATUS | 특정 상태(reserved, attaching, attached)만 필터링 | 상태별 작업 대기열 확인 가능 |
| –volume VOLUME | 특정 볼륨 ID/이름에 대한 attachment만 표시 | 특정 리소스 추적 |
| –instance INSTANCE | 특정 인스턴스 ID에 연결된 attachment만 표시 | Nova 환경에서 사용 |