게스트에서 virtio Balloon 드라이버를 수동으로 실행하는 방법은 무엇입니까?

게스트에서 virtio Balloon 드라이버를 수동으로 실행하는 방법은 무엇입니까?

메모리를 확보하기 위해 QEMU에서 실행 중인 특정 Linux 게스트를 원합니다.앞으로호스트에 메모리 압박이 있습니다. 수동으로 트리거하는 방법버티오 벌룬 드라이버가능한 한 많은 메모리를 확보하도록 하시겠습니까?

답변1

다음과 같이 작동하는 것 같습니다. 먼저 게스트가 사용할 수 있는 메모리 양을 줄인 다음 (선택적으로) 원래 설정으로 복원합니다.

virsh --connect qemu:///system qemu-monitor-command --domain NAME --hmp 'balloon 512'
# Wait for the balloon driver to release some memory
sleep 2
virsh --connect qemu:///system qemu-monitor-command --domain NAME --hmp 'balloon 4096'

또는 올바른 스크립트로:

#!/bin/bash

set -eu

domain=$1
# How many MB to temporarily reduce the guest memory to; don't set this too
# low or the OOM killer will start killing.
reduced_memory=$2

hmp() {
    virsh --connect qemu:///system qemu-monitor-command --domain "$domain" --hmp "$1"
}

original_memory=$(hmp "info balloon" | grep = | cut -d '=' -f 2)
hmp "balloon $reduced_memory" > /dev/null
# Wait for the balloon driver to release some memory before setting it back
sleep 2
hmp "balloon $original_memory" > /dev/null

관련 정보