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 를 사용하여 게스트 에이전트와 호스트 간 통신 설정
가상 머신 종료
QEMU 게스트 에이전트를 구성하기 전에 가상 머신(이 예제의 이름이 rhel7 임)이 종료되었는지 확인합니다.# virsh shutdown rhel7
게스트 XML 구성에 QEMU 게스트 에이전트 채널 추가
게스트의 XML 파일을 편집하여 QEMU 게스트 에이전트 세부 정보를 추가합니다.# virsh edit rhel7
게스트의 XML 파일에 다음을 추가하고 변경 사항을 저장합니다.<channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
가상 머신 시작
# virsh start rhel7
게스트에 QEMU 게스트 에이전트 설치
게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.# yum install qemu-guest-agent
게스트에서 QEMU 게스트 에이전트 시작
게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.# systemctl start qemu-guest-agent
또는 다음 단계를 사용하여 실행 중인 게스트에 QEMU 게스트 에이전트를 구성할 수 있습니다.
절차 11.2. 실행 중인 Linux 게스트에서 게스트 에이전트와 호스트 간의 통신 설정
QEMU 게스트 에이전트의 XML 파일 생성
# cat agent.xml <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
가상 머신에 QEMU 게스트 에이전트 연결
다음 명령을 사용하여 실행 중인 가상 머신(이 예에서는 rhel7 이라는)에 QEMU 게스트 에이전트를 연결합니다.# virsh attach-device rhel7 agent.xml
게스트에 QEMU 게스트 에이전트 설치
게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.# yum install qemu-guest-agent
게스트에서 QEMU 게스트 에이전트 시작
게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.# systemctl start qemu-guest-agent
절차 11.3. virt-manager를 사용하여 QEMU 게스트 에이전트와 호스트 간 통신 설정
가상 머신 종료
QEMU 게스트 에이전트를 구성하기 전에 가상 머신이 종료되었는지 확인합니다.가상 머신을 종료하려면 Virtual Machine Manager 의 가상 머신 목록에서 선택한 다음 메뉴 표시줄에서 가벼운 스위치 아이콘을 클릭합니다.게스트에 QEMU 게스트 에이전트 채널 추가
게스트 창 상단에 있는 Lightbulb 아이콘을 클릭하여 가상 머신의 하드웨어 세부 정보를 엽니다.새 가상 하드웨어 추가 창을 열고 채널을 선택합니다.버튼을 클릭하여이름 드롭다운 목록에서 QEMU 게스트 에이전트를 선택하고 :를 클릭합니다.그림 11.1. QEMU 게스트 에이전트 채널 장치 선택
가상 머신 시작
가상 머신을 시작하려면 가상 머신 관리자 의 가상 머신 목록에서 선택한 다음 메뉴 표시줄에서 을 클릭합니다.게스트에 QEMU 게스트 에이전트 설치
virt-manager 로 게스트를 열고 게스트 가상 머신에 아직 설치되지 않은 경우 QEMU 게스트 에이전트를 설치합니다.# yum install qemu-guest-agent
게스트에서 QEMU 게스트 에이전트 시작
게스트에서 QEMU 게스트 에이전트 서비스를 시작합니다.# systemctl start qemu-guest-agent
QEMU 게스트 에이전트가 rhel7 가상 머신에 구성되어 있습니다.