13.4. 가상 머신에 스토리지 연결
VM(가상 머신)에 스토리지를 추가하려면 가상 디스크로 VM에 스토리지 리소스를 연결할 수 있습니다.
물리적 스토리지 장치와 유사하게 가상 디스크는 연결된 VM과 독립적이며 다른 VM으로 이동할 수 있습니다.
여러 유형의 스토리지 리소스를 사용하여 가상 디스크를 VM에 추가할 수 있습니다.
13.4.1. 명령줄을 사용하여 가상 머신에 파일 기반 가상 디스크 연결 링크 복사링크가 클립보드에 복사되었습니다!
가상 머신에 로컬 스토리지를 제공하기 위해 가장 쉬운 옵션은 일반적으로 .qcow2 또는 .raw 형식으로 파일 기반 가상 디스크를 연결하는 것입니다.
명령줄에서 이를 수행하려면 다음 방법 중 하나를 사용할 수 있습니다.
libvirt에서 관리하는 디렉터리 기반 스토리지 풀에 파일 기반 스토리지 볼륨을 생성합니다. 이를 위해서는 여러 단계가 필요하지만 하이퍼바이저와 보다 효과적으로 통합됩니다.RHEL 10 호스트에서 첫 번째 VM을 생성할 때 기본 디렉터리 기반 스토리지 볼륨이 자동으로 생성됩니다. 이 스토리지 풀의 이름은 디스크 이미지를 저장하는 디렉터리의 이름을 기반으로 합니다. 예를 들어
libvirt의시스템세션에서 디스크 이미지는/var/lib/libvirt/images/디렉터리에 저장되고 스토리지 풀의 이름은images입니다.qemu-img명령을 사용하여 호스트 파일 시스템에 가상 디스크를 파일로 생성합니다. 이 방법은 더 빠른 방법이지만libvirt와의 통합을 제공하지 않습니다.결과적으로
qemu-img를 사용하여 생성된 가상 디스크는 생성 후 관리하기가 더 어렵습니다.
명령줄에서 새 VM을 생성할 때 파일 기반 가상 디스크를 생성하고 연결할 수도 있습니다. 이렇게 하려면 virt-install 유틸리티와 함께 --disk 옵션을 사용합니다. 자세한 내용은 가상 머신 생성 을 참조하십시오.
프로세스
선택 사항: 가상 디스크를 스토리지 볼륨으로 생성하지만 호스트에서 기본
이미지스토리지 풀 또는 다른 기존 스토리지 풀을 사용하지 않으려면 새 디렉터리 기반 스토리지 풀을 생성하고 설정합니다.디렉터리 유형 스토리지 풀을 구성합니다. 예를 들어
/guest_images디렉터리를 사용하는guest_images_dir이라는 스토리지 풀을 생성하려면 다음을 수행합니다.# virsh pool-define-as guest_images_dir dir --target "/guest_images" Pool guest_images_dir defined이전에 정의한 구성을 기반으로 스토리지 풀의 대상 경로를 생성합니다.
# virsh pool-build guest_images_dir Pool guest_images_dir built스토리지 풀을 시작합니다.
# virsh pool-start guest_images_dir Pool guest_images_dir started선택 사항: 호스트 부팅 시 시작되도록 스토리지 풀을 설정합니다.
# virsh pool-autostart guest_images_dir Pool guest_images_dir marked as autostarted선택 사항: 스토리지 풀이
실행 중인지확인합니다. 보고된 크기가 예상대로 있는지 그리고 autostart가 올바르게 구성되어 있는지 확인합니다.# virsh pool-info guest_images_dir Name: guest_images_dir UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
파일 기반 가상 디스크를 생성합니다. 이렇게 하려면 다음 방법 중 하나를 사용합니다.
libvirt에서 관리하지 않는 파일 기반 VM 디스크를 신속하게 생성하려면qemu-img유틸리티를 사용합니다.예를 들어 다음 명령은 크기가 30GB인 test-image 라는
qcow2디스크 이미지를 생성합니다.# qemu-img create -f qcow2 test-image 30G Formatting 'test-image', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16libvirt에서 관리하는 파일 기반 VM 디스크를 만들려면 기존 디렉터리 기반 스토리지 풀을 기반으로 디스크를 스토리지 볼륨으로 정의합니다.예를 들어 다음 명령은
guest_images_dir스토리지 풀을 기반으로vm-disk1이라는 20GBqcow2볼륨을 생성합니다.# virsh vol-create-as --pool guest_images_dir --name vm-disk1 --capacity 20GB --format qcow2 Vol vm-disk1 created
생성한 가상 디스크를 찾습니다.
-
qemu-img를 사용하여 생성된 VM 디스크의 경우 일반적으로 현재 디렉터리입니다. 스토리지 볼륨의 경우 볼륨이 속하는 스토리지 풀을 검사합니다.
# virsh vol-list --pool guest_images_dir --details Name Path Type Capacity Allocation -------------------------------------------------------------------------- vm-disk1 /guest-images/vm-disk1 file 20.00 GiB 196.00 KiB
-
디스크를 연결할 VM에서 이미 사용되는 대상 장치를 찾습니다.
# virsh domblklist --details <vm-name> Type Device Target Source ---------------------------------------------------------------- file disk *vda /home/VirtualMachines/vm-name.qcow2 file cdrom vdb -- 선택 사항: 데이터 손상 또는 디스크 조각화에 대한 문제를 방지하려면 디스크의 일관성을 확인합니다. 자세한 내용은 가상 디스크의 일관성 확인을 참조하십시오.
virsh attach-disk명령을 사용하여 VM에 디스크를 연결합니다. VM에서 사용하지 않는 대상 장치를 제공합니다.예를 들어 다음 명령은 이전에 생성된
test-disk1을 Cryostat장치로testguest1VM에 연결합니다.# virsh attach-disk testguest1 /guest-images/vm-disk1 vdc --persistent
검증
디스크를 연결한 VM의 XML 구성을 검사하여 구성이 올바른지 확인합니다.
# virsh dumpxml testguest1 ... <disk type='file' device='disk'> <driver name='qemu' type='qcow2' discard='unmap'/> <source file='/guest-images/vm-disk1' index='1'/> <backingStore/> <target dev='vdc' bus='virtio'/> <alias name='virtio-disk2'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> ...- VM의 게스트 운영 체제에서 디스크 이미지를 포맷되지 않고 할당되지 않은 디스크로 사용할 수 있는지 확인합니다.