9.3. 가상 머신 XML 구성 샘플

VM의 XML 구성은 도메인 XML 이라고도 하며 VM의 설정 및 구성 요소를 결정합니다. 다음 표에서는 VM(가상 머신)의 샘플 XML 구성 섹션을 보여주고 내용을 설명합니다.

VM의 XML 구성을 얻으려면 virsh dumpxml 명령 뒤에 VM 이름을 사용할 수 있습니다.

# virsh dumpxml testguest1

표 9.1. 샘플 XML 구성

도메인 XML 섹션설명
<domain type='kvm'>
 <name>Testguest1</name>
 <uuid>ec6fbaa1-3eb4-49da-bf61-bb02fbec4967</uuid>
 <memory unit='KiB'>1048576</memory>
 <currentMemory unit='KiB'>1048576</currentMemory>

이 가상 머신은 Testguest1 이라는 KVM 가상 머신이며 1024MiB RAM이 할당됩니다.

 <vcpu placement='static'>1</vcpu>

VM은 단일 가상 CPU(vCPU)로 할당됩니다.

vCPU 구성에 대한 자세한 내용은 가상 머신 CPU 성능 최적화를 참조하십시오.

 <os>
  <type arch='x86_64' machine='pc-q35-rhel9.0.0'>hvm</type>
  <boot dev='hd'/>
 </os>

머신 아키텍처는 AMD64 및 Intel 64 아키텍처로 설정되고 Intel Q35 시스템 유형을 사용하여 기능 호환성을 결정합니다. OS는 하드 드라이브에서 부팅되도록 설정되어 있습니다.

설치된 OS를 사용하여 VM을 생성하는 방법에 대한 자세한 내용은 웹 콘솔을 사용하여 가상 머신 생성 및 게스트 운영 체제 설치를 참조하십시오.

 <features>
  <acpi/>
  <apic/>
 </features>

acpiapic 하이퍼바이저 기능은 비활성화되어 있습니다.

 <cpu mode='host-model' check='partial'/>

기능 XML의 호스트 CPU 정의( virsh domcapabilities로 가져올 수 있음)는 VM의 XML 구성에 자동으로 복사됩니다. 따라서 VM이 부팅되면 libvirt 에서 호스트 CPU와 유사한 CPU 모델을 선택한 다음 호스트 모델에 최대한 가깝게 추가 기능을 추가합니다.

 <clock offset='utc'>
  <timer name='rtc' tickpolicy='catchup'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
 </clock>

VM의 가상 하드웨어 클럭은 UTC 시간대를 사용합니다. 또한 QEMU 하이퍼바이저와 동기화하기 위해 세 가지 다른 타이머가 설정됩니다.

 <on_poweroff>destroy</on_poweroff>
 <on_reboot>restart</on_reboot>
 <on_crash>destroy</on_crash>

VM의 전원을 끄거나 OS가 예기치 않게 종료되면 libvirt 는 VM을 종료하고 할당된 모든 리소스를 해제합니다. VM이 재부팅되면 libvirt 가 동일한 구성으로 다시 시작합니다.

 <pm>
  <suspend-to-mem enabled='no'/>
  <suspend-to-disk enabled='no'/>
 </pm>

이 VM에 대해 S3 및 S4 ACPI 절전 상태가 비활성화됩니다.

 <devices>
  <emulator>/usr/libexec/qemu-kvm</emulator>
  <disk type='file' device='disk'>
   <driver name='qemu' type='qcow2'/>
   <source file='/var/lib/libvirt/images/Testguest.qcow2'/>
   <target dev='vda' bus='virtio'/>
  </disk>
  <disk type='file' device='cdrom'>
   <driver name='qemu' type='raw'/>
   <target dev='sdb' bus='sata'/>
   <readonly/>
  </disk>

VM은 에뮬레이션에 /usr/libexec/qemu-kvm 바이너리 파일을 사용하며 두 개의 디스크 장치가 연결되어 있습니다.

첫 번째 디스크는 호스트에 저장된 /var/libvirt/images/Testguest.qcow2 를 기반으로 가상화된 하드 드라이브이며 해당 논리적 장치 이름은 vda 로 설정됩니다. Windows 게스트에서는 virtio 대신 sata 버스를 사용하는 것이 좋습니다.

두 번째 디스크는 가상화된 CD-ROM이며 해당 논리적 장치 이름은 sdb 로 설정됩니다.

  <controller type='usb' index='0' model='qemu-xhci' ports='15'/>
  <controller type='sata' index='0'/>
  <controller type='pci' index='0' model='pcie-root'/>
  <controller type='pci' index='1' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='1' port='0x10'/>
  </controller>
  <controller type='pci' index='2' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='2' port='0x11'/>
  </controller>
  <controller type='pci' index='3' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='3' port='0x12'/>
  </controller>
  <controller type='pci' index='4' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='4' port='0x13'/>
  </controller>
  <controller type='pci' index='5' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='5' port='0x14'/>
  </controller>
  <controller type='pci' index='6' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='6' port='0x15'/>
  </controller>
  <controller type='pci' index='7' model='pcie-root-port'>
   <model name='pcie-root-port'/>
   <target chassis='7' port='0x16'/>
  </controller>
  <controller type='virtio-serial' index='0'/>

VM은 단일 컨트롤러를 사용하여 USB 장치를 연결하고 PCI-Express ( PCI-Express) 장치를 위한 루트 컨트롤러를 사용합니다. 또한 virtio-serial 컨트롤러를 사용하면 VM이 직렬 콘솔과 같은 다양한 방식으로 호스트와 상호 작용할 수 있습니다.

가상 장치에 대한 자세한 내용은 가상 장치 유형을 참조하십시오.

 <interface type='network'>
  <mac address='52:54:00:65:29:21'/>
  <source network='default'/>
  <model type='virtio'/>
 </interface>

네트워크 인터페이스는 기본 가상 네트워크와 virtio 네트워크 장치 모델을 사용하는 VM에 설정됩니다. Windows 게스트에서는 virtio 대신 e1000e 모델을 사용하는 것이 좋습니다.

네트워크 인터페이스 구성에 대한 자세한 내용은 가상 머신 네트워크 성능 최적화를 참조하십시오.

  <serial type='pty'>
   <target type='isa-serial' port='0'>
    <model name='isa-serial'/>
   </target>
  </serial>
  <console type='pty'>
   <target type='serial' port='0'/>
  </console>
  <channel type='unix'>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
   <address type='virtio-serial' controller='0' bus='0' port='1'/>
  </channel>

pty 직렬 콘솔은 VM에 설정되어 호스트와의 기본 VM 통신을 활성화합니다. 콘솔은 포트 1에서 UNIX 채널을 사용합니다. 이 설정은 자동으로 설정되고 이러한 설정을 변경하는 것은 권장되지 않습니다.

VM과의 상호 작용에 대한 자세한 내용은 웹 콘솔을 사용하여 가상 머신과 상호 작용을 참조하십시오.

  <input type='tablet' bus='usb'>
   <address type='usb' bus='0' port='1'/>
  </input>
  <input type='mouse' bus='ps2'/>
  <input type='keyboard' bus='ps2'/>

VM은 태블릿 입력을 수신하도록 설정된 가상 USB 포트와 마우스 및 키보드 입력을 수신하도록 설정된 가상 ps2 포트를 사용합니다. 이 설정은 자동으로 설정되고 이러한 설정을 변경하는 것은 권장되지 않습니다.

  <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
   <listen type='address' address='127.0.0.1'/>
  </graphics>

VM은 그래픽 출력을 렌더링하기 위해 vnc 프로토콜을 사용합니다.

  <redirdev bus='usb' type='tcp'>
   <source mode='connect' host='localhost' service='4000'/>
   <protocol type='raw'/>
  </redirdev>
  <memballoon model='virtio'>
   <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  </memballoon>
 </devices>
</domain>

VM은 TCP 리디렉션을 사용하여 USB 장치를 원격으로 연결하고 메모리 증대가 켜집니다. 이 설정은 자동으로 설정되고 이러한 설정을 변경하는 것은 권장되지 않습니다.