QGA 使用介绍
功能介绍
使用 qemu guest agent 来操作或者查看运行中的虚拟机的信息。
安装部署
不同版本的操作系统安装方式不同,启动方式不同,以下列出一些操作系统安装方式。
linux 安装启动
# 安装:
Debian : apt-get install qemu-guest-agent
Ubuntu : apt-get install qemu-guest-agent
Alpine : apk add qemu-guest-agent
Arch Linux : pacman -S qemu-guest-agent
Kali Linux : apt-get install qemu-guest-agent
Fedora :dnf install qemu-guest-agent-2
Raspbian : apt-get install qemu-guest-agent
# systemd 启动或其他启动方式:
$ systemctl enable --now qemu-guest-agent
# 启动完成后可以在虚机内查看到 qemu-ga 的进程
# 例如 centos7 下,ps 可以看到 qemu-ga进程启动,并且禁用了一下命令:
$ /usr/bin/qemu-ga --method=virtio-serial --path=/dev/virtio-ports/org.qemu.guest_agent.0 --blacklist=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status -F/etc/qemu-ga/fsfreeze-hook
# centos7 下 blacklist 配置是在 /etc/sysconfig/qemu-ga 下面
$ cat /etc/sysconfig/qemu-ga | grep BLACKLIST_RPC
BLACKLIST_RPC=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status
# 也可以使用以下命令查看 blacklist 配置
$ ps -ef|grep qemu-ga|grep -E "blacklist=|b="
修改黑名单配置
# 修改黑名单,编辑 /etc/sysconfig/qemu-ga 配置文件,将需要的命令从BLACKLIST_RPC中删除
$ vi /etc/sysconfig/qemu-ga
# 编辑完成后保存,重新启动 qemu-ga 服务:
$ systemctl restart qemu-guest-agent
# 重新查看QGA的黑名单,确认是否配置成功
$ ps -ef|grep qemu-ga|grep -E "blacklist=|b="
windows 安装启动
windows 需要挂载 virtio-win 的 iso, 打开 iso 找到 guest-agent 目录 安装对应的 guest-agent.
使用介绍
执行 QGA 命令需要确保虚机为 running(运行中) 的状态。若虚机内 guest-agent 未安装,则执行的命令会超时失败。
执行任意 QGA 命令
$ climc server-qga-command --help
Usage: climc server-qga-command [--help] <ID> <COMMAND>
Qga-Command server
Positional arguments:
<ID>
ID or name of the server
<COMMAND>
qga command
Optional arguments:
[--help]
Print usage and this help message and exit.
# 例如执行 guest-info 命令来获取 QGA 的信息,包括 QGA 版本,QGA 支持的命令信息。
# 这是一个有用的命令来获取虚机内的 QGA 支持和禁用了哪些操作。
$ climc server-qga-command test-server '{"execute": "guest-info"}'
supported_commands:
- enabled: true
name: guest-sync-delimited
success-response: true
- enabled: true
name: guest-sync
success-response: true
- enabled: true
name: guest-suspend-ram
success-response: false
- enabled: true
name: guest-suspend-hybrid
success-response: false
- enabled: true
name: guest-suspend-disk
success-response: false
- enabled: true
name: guest-shutdown
success-response: false
- enabled: true
name: guest-set-vcpus
success-response: true
- enabled: true
name: guest-set-user-password
success-response: true
- enabled: true
name: guest-set-time
success-response: true
- enabled: true
name: guest-set-memory-blocks
success-response: true
- enabled: true
name: guest-ping
success-response: true
- enabled: true
name: guest-network-get-interfaces
success-response: true
- enabled: true
name: guest-info
success-response: true
- enabled: true
name: guest-get-vcpus
success-response: true
- enabled: true
name: guest-get-users
success-response: true
- enabled: true
name: guest-get-timezone
success-response: true
- enabled: true
name: guest-get-time
success-response: true
- enabled: true
name: guest-get-osinfo
success-response: true
- enabled: true
name: guest-get-memory-blocks
success-response: true
- enabled: true
name: guest-get-memory-block-info
success-response: true
- enabled: true
name: guest-get-host-name
success-response: true
- enabled: true
name: guest-get-fsinfo
success-response: true
- enabled: true
name: guest-fstrim
success-response: true
- enabled: true
name: guest-fsfreeze-thaw
success-response: true
- enabled: true
name: guest-fsfreeze-status
success-response: true
- enabled: true
name: guest-fsfreeze-freeze-list
success-response: true
- enabled: true
name: guest-fsfreeze-freeze
success-response: true
- enabled: true
name: guest-file-write
success-response: true
- enabled: true
name: guest-file-seek
success-response: true
- enabled: true
name: guest-file-read
success-response: true
- enabled: true
name: guest-file-open
success-response: true
- enabled: true
name: guest-file-flush
success-response: true
- enabled: true
name: guest-file-close
success-response: true
- enabled: true
name: guest-exec-status
success-response: true
- enabled: true
name: guest-exec
success-response: true
version: 2.11.1