Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

11장. QEMU 게스트 에이전트 및 SPICE 에이전트를 사용하여 가상화 개선

QEMU 게스트 에이전트 및 SPICE 에이전트와 같은 Red Hat Enterprise Linux의 에이전트를 배포하여 시스템에서 가상화 툴을 보다 효율적으로 실행할 수 있습니다. 이러한 에이전트는 이 장에 설명되어 있습니다.
참고
호스트 및 게스트 성능을 추가로 최적화하고 튜닝하려면 Red Hat Enterprise Linux 7 Virtualization 튜닝 및 최적화 가이드 를 참조하십시오.

11.1. QEMU 게스트 에이전트

QEMU 게스트 에이전트는 게스트 내에서 실행되며, 호스트 시스템이 libvirt를 사용하여 게스트 운영 체제에 명령을 실행할 수 있어 freezing 및 awing filesystems 와 같은 기능을 사용할 수 있습니다. 그러면 게스트 운영 체제가 이러한 명령에 비동기적으로 응답합니다. QEMU 게스트 에이전트 패키지 qemu-guest-agent 는 기본적으로 Red Hat Enterprise Linux 7에 설치됩니다.
이 섹션에서는 게스트 에이전트에서 사용할 수 있는 libvirt 명령 및 옵션에 대해 설명합니다.
중요
신뢰할 수 있는 게스트에서 실행하는 경우에만 QEMU 게스트 에이전트를 사용하는 것이 안전합니다. 신뢰할 수 없는 게스트는 악의적인 방식으로 게스트 에이전트 프로토콜을 무시하거나 악용할 수 있으며, 호스트에서 서비스 거부 공격을 방지하기 위해 내장 안전 장치가 존재하지만 호스트는 작업을 예상대로 실행하기 위해 게스트 협업이 필요합니다.
QEMU 게스트 에이전트는 게스트가 실행되는 동안 가상 CPU(vCPU)를 활성화 및 비활성화하는 데 사용할 수 있으므로 핫플러그 및 핫플러그 기능을 사용하지 않고 vCPU 수를 조정할 수 있습니다. 자세한 내용은 20.36.6절. “가상 CPU 수 구성”의 내용을 참조하십시오.

11.1.1. QEMU 게스트 에이전트와 호스트 간 통신 설정

호스트 시스템은 호스트와 게스트 머신 간의 VirtIO 직렬 연결을 통해 QEMU 게스트 에이전트와 통신합니다. VirtIO 직렬 채널은 문자 장치 드라이버(일반적으로 Unix 소켓)를 통해 호스트에 연결되고 게스트는 이 직렬 채널에서 수신 대기합니다.
참고
qemu-guest-agent 는 호스트가 VirtIO 직렬 채널을 수신하는지 감지하지 않습니다. 그러나 이 채널의 현재 사용은 host-to-guest 이벤트를 수신하므로 리스너가 없는 채널에 쓰기 때문에 문제가 발생하는 게스트 가상 시스템의 가능성이 매우 낮습니다. 또한 qemu-guest-agent 프로토콜에는 명령을 실행할 때 호스트 물리적 시스템이 다시 동기화되도록 하는 동기화 마커가 포함되어 있으며 libvirt 는 이미 이러한 마커를 사용하므로 게스트 가상 시스템에서 이전 예기치 않은 응답을 안전하게 삭제할 수 있습니다.

11.1.1.1. Linux 게스트에서 QEMU 게스트 에이전트 구성

QEMU 게스트 에이전트는 실행 중이거나 가상 머신을 종료할 수 있습니다. 실행 중인 게스트에 구성된 경우 게스트는 즉시 게스트 에이전트를 사용하기 시작합니다. 게스트가 종료되면 다음 부팅 시 QEMU 게스트 에이전트가 활성화됩니다.
virsh 또는 virt-manager 를 사용하여 게스트와 QEMU 게스트 에이전트 간의 통신을 구성할 수 있습니다. 다음 지침은 Linux 게스트에서 QEMU 게스트 에이전트를 구성하는 방법을 설명합니다.

절차 11.1. Linux 게스트 종료 시 virsh 를 사용하여 게스트 에이전트와 호스트 간 통신 설정

  1. 가상 머신 종료

    QEMU 게스트 에이전트를 구성하기 전에 가상 머신(이 예제의 이름이 rhel7 임)이 종료되었는지 확인합니다.
    # virsh shutdown rhel7 
  2. 게스트 XML 구성에 QEMU 게스트 에이전트 채널 추가

    게스트의 XML 파일을 편집하여 QEMU 게스트 에이전트 세부 정보를 추가합니다.
    # virsh edit rhel7
    게스트의 XML 파일에 다음을 추가하고 변경 사항을 저장합니다.
    <channel type='unix'>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
  3. 가상 머신 시작

    # virsh start rhel7
  4. 게스트에 QEMU 게스트 에이전트 설치

    게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.
    # yum install qemu-guest-agent
  5. 게스트에서 QEMU 게스트 에이전트 시작

    게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.
    # systemctl start qemu-guest-agent
또는 다음 단계를 사용하여 실행 중인 게스트에 QEMU 게스트 에이전트를 구성할 수 있습니다.

절차 11.2. 실행 중인 Linux 게스트에서 게스트 에이전트와 호스트 간의 통신 설정

  1. QEMU 게스트 에이전트의 XML 파일 생성

    # cat agent.xml
    <channel type='unix'>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
  2. 가상 머신에 QEMU 게스트 에이전트 연결

    다음 명령을 사용하여 실행 중인 가상 머신(이 예에서는 rhel7 이라는)에 QEMU 게스트 에이전트를 연결합니다.
    # virsh attach-device rhel7 agent.xml
  3. 게스트에 QEMU 게스트 에이전트 설치

    게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.
    # yum install qemu-guest-agent
  4. 게스트에서 QEMU 게스트 에이전트 시작

    게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.
    # systemctl start qemu-guest-agent

절차 11.3. virt-manager를 사용하여 QEMU 게스트 에이전트와 호스트 간 통신 설정

  1. 가상 머신 종료

    QEMU 게스트 에이전트를 구성하기 전에 가상 머신이 종료되었는지 확인합니다.
    가상 머신을 종료하려면 Virtual Machine Manager 의 가상 머신 목록에서 선택한 다음 메뉴 표시줄에서 가벼운 스위치 아이콘을 클릭합니다.
  2. 게스트에 QEMU 게스트 에이전트 채널 추가

    게스트 창 상단에 있는 Lightbulb 아이콘을 클릭하여 가상 머신의 하드웨어 세부 정보를 엽니다.
    하드웨어 추가 버튼을 클릭하여 새 가상 하드웨어 추가 창을 열고 채널을 선택합니다.
    이름 드롭다운 목록에서 QEMU 게스트 에이전트를 선택하고 Finish:를 클릭합니다.

    그림 11.1. QEMU 게스트 에이전트 채널 장치 선택

    QEMU 게스트 에이전트 채널 장치 선택
  3. 가상 머신 시작

    가상 머신을 시작하려면 가상 머신 관리자 의 가상 머신 목록에서 선택한 다음 메뉴 표시줄에서 을 클릭합니다.
  4. 게스트에 QEMU 게스트 에이전트 설치

    virt-manager 로 게스트를 열고 게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.
    # yum install qemu-guest-agent
  5. 게스트에서 QEMU 게스트 에이전트 시작

    게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.
    # systemctl start qemu-guest-agent
QEMU 게스트 에이전트가 rhel7 가상 머신에 구성되어 있습니다.