volume attach dettach 실습

2025년 09월 07일

mac os 에서 vagrant, virtual box를 사용하여 ubuntu 환경에서 실습하였습니다.

1. 실습 환경 준비: KVM 호스트 설정

# 루트 권한으로 전환
sudo su -
# KVM 및 가상머신 관리 도구 설치
# ARM 아키텍처(M1/M2/M3 Mac) 환경에서는 virt-install 대신 virtinst를 설치합니다.
apt-get update
apt-get install -y qemu-system-arm libvirt-daemon-system libvirt-clients virtinst
 
# libvirtd 확인
systemctl status libvirtd
 
# KVM 이미지 기본 폴더로 이동
cd /var/lib/libvirt/images/

2. 데이터 볼륨 생성

duck-volume.qcow2라는 이름의 5GB짜리 파일을 생성하겠습니다. VM과 분리되어 데이터를 영구적으로 보관할 독립적인 저장소입니다.

# 볼륨 생성
qemu-img create -f qcow2 duck-volume.qcow2 5G
 
# 확인
ls -lh

3. 1세대 VM 생성 및 볼륨 연결

데이터를 사용할 첫 번째 VM, duck-vm1을 만들고, 방금 생성한 데이터 볼륨(duck-volume.qcow2)을 연결하겠습니다.
virt-install 명령어로 1GB RAM, 1 vCPU 사양의 duck-vm1을 생성합니다. OS가 설치될 기본 디스크(vda)는 자동으로 함께 만들어집니다.

# VM 생성
virt-install --name duck-vm1 --ram 1024 --vcpus 1 --disk size=10 --os-variant ubuntu22.04 --import --noautoconsole
 
# 확인
virsh list --all

볼륨 연결: virsh attach-disk 명령어로 duck-vm1에 duck-volume.qcow2을 두 번째 디스크(vdb)로 연결합니다.

# 연결
virsh attach-disk duck-vm1 /var/lib/libvirt/images/duck-volume.qcow2 vdb --persistent
 
# 연결확인
virsh domblklist duck-vm1

4. 볼륨 연결 해제 및 VM 삭제

# 볼륨 연결 해제
virsh detach-disk duck-vm1 vdb --persistent
 
# 연결 해제 확인
virsh domblklist duck-vm1
 
# VM 종료
virsh destroy duck-vm1
 
# VM 삭제
virsh undefine --nvram duck-vm1
 
# VM 목록 확인 (아무것도 없어야 함)
virsh list --all
 
# 데이터 볼륨 파일 확인 (파일이 존재해야 함)
ls -lh

5. 2세대 VM으로 데이터 이전

duck-vm2를 만들고, 볼륨을 연결하겠습니다.

# VM 생성: 이번에는 2GB RAM의 더 좋은 사양으로 duck-vm2를 생성합니다.
virt-install --name duck-vm2 --ram 2048 --vcpus 1 --disk size=10 --os-variant ubuntu22.04 --import --noautoconsole
데이터 볼륨 연결: 새로 만든 duck-vm2에 우리가 보관했던 duck-volume.qcow2를 똑같이 연결합니다.
 
 
virsh attach-disk duck-vm2 /var/lib/libvirt/images/duck-volume.qcow2 vdb --persistent
# 최종 복구 확인: duck-vm2에 OS 볼륨(vda)과 데이터 볼륨(vdb)이 모두 연결되었는지 확인합니다.
virsh domblklist duck-vm2