内容概述
本文档首先分别针对Linux和Windows两类操作系统,列举了qemu-ga最常见的功能异常场景(如修改密码/主机名失败、安装卸载异常、服务启动失败),并详细分析了其可能的原因,提供了 step-by-step 的解决方案。最后,附录部分提供了通用的qemu-ga组件替换操作步骤。
qemu-guest-agent功能异常
Linux:
虚机修改密码或主机名失败
可能原因1:使用的不是定制化的qemu-ga。
解决方法:替换成定制化的qemu-ga(详细步骤见附录)。
可能原因2:selinux服务可能处于开启状态,导致qemu-ga状态或者日志权限等不正确(qemu-ga通用日志路径可参考/var/log/qemu-ga/目录下查看,系统服务日志可通过journalctl -xe查看)。
解决方法:关闭虚机的selinux服务。
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
可能原因3:qemu-guest-agent服务启动失败
可以执行/usr/bin/qemu-ga -v 查看具体原因,可能返回结果如下:
1. -bash: /usr/bin/qemu-ga: Permission denied
原因:qemu-ga 没有执行权限。
解决方法:对qemu-ga添加执行权限
# chmod a+x /usr/bin/qemu-ga
2. Failed to create file “/usr/local/var/run/qga.state”
原因:定制化的软件包需要该目录存放相关信息。
解决方法:手动创建软件包所需要的运行目录信息
# mkdir -p /usr/local/var/run
3. -bash: /usr/bin/qemu-ga: cannot execute binary file
原因:使用的qemu-ga版本与虚机架构、操作系统版本不匹配或qemu-ga二进制文件损坏。
解决方法:用正确版本的qemu-ga进行替换(详细步骤见附录)。
Windows:
1. 修改主机名或密码失败
可能原因1:可能安装了杀毒软件,误将qemu-ga.exe当做病毒删除。
解决方法:查看杀毒软件,将其删除的qemu-ga.exe文件恢复,并将其设置为白名单。
可能原因2:杀毒软件安全策略可能存在问题。
解决方法:用户需要根据已安装杀毒软件的提示来重新配置防护策略。
2. qemu-guest-agent.msi安装或卸载异常
可能原因:可能由异常卸载或删除导致卸载不完全,需要清理剩余的残留后重新安装。
解决方法1:如果控制面板中有QEMU guest agent,使用控制面板卸载后重新安装即可。
解决方案2:如果控制面板中无QEMU guest agent,可参考以下步骤执行手动安装。
(1)手动执行安装管理操作
# msiexec /a qemu-guest-agent.msi
(2)将其C盘中QEMU guest agent 文件夹中的Qemu-ga 文件夹复制到Program Files中,然后进入到目录并使用卸载命令,清除qemu-ga可能残留的信息。
# cd C:\Program Files\Qemu-ga
# qemu-ga.exe -s uninstall
(3)点击安装包去重新安装qemu-ga,则可以正常安装。
附录
qemu-ga替换步骤:
下载对应版本最新的qemu-ga
一、el6
1. 停止qemu-ga服务:
# service qemu-ga stop
2. 备份原有的可执行文件:
# mv /usr/bin/qemu-ga /usr/bin/qemu-ga.bak
3. 更新为新的可执行文件:
# cp qemu-ga /usr/bin/
4. 赋予qemu-ga可执行权限:
# chmod a+x /usr/bin/qemu-ga
5. 重启qemu-ga服务:
# service qemu-ga restart
6. 设置qemu-ga服务开机自启动:
# chkconfig qemu-ga on
二、el7、el8
1. 停止qemu-ga服务:
# systemctl stop qemu-guest-agent
2. 备份原有的可执行文件:
# mv /usr/bin/qemu-ga /usr/bin/qemu-ga.bak
3. 更新为新的可执行文件:
# cp qemu-ga /usr/bin/
4. 赋予qemu-ga可执行权限:
# chmod a+x /usr/bin/qemu-ga
5. 重启qemu-ga服务:
# systemctl restart qemu-guest-agent
6. 设置qemu-ga服务开机自启动:
# systemctl enable qemu-guest-agent
三、Ubuntu
Ubuntu14.04
1. 停止qemu-ga服务:
# service qemu-guest-agent stop
2. 备份原有的可执行文件:
# mv /usr/sbin/qemu-ga /usr/sbin/qemu-ga.bak
3. 更新为新的可执行文件:
# cp qemu-ga /usr/sbin/
4. 赋予qemu-ga可执行权限:
# chmod a+x /usr/sbin/qemu-ga
5. 重启qemu-ga服务:
# service qemu-guest-agent restart
6. 设置qemu-ga服务开机自启动:
# sysv-rc-conf qemu-guest-agent on
Ubuntu16.04/18.04/Ubuntu20.04
1. 停止qemu-ga服务:
# systemctl stop qemu-guest-agent
2. 备份原有的可执行文件:
# mv /usr/sbin/qemu-ga /usr/sbin/qemu-ga.bak
3. 更新为新的可执行文件:
# cp qemu-ga /usr/sbin/
4. 赋予qemu-ga可执行权限:
# chmod a+x /usr/sbin/qemu-ga
5. 重启qemu-ga服务:
# systemctl restart qemu-guest-agent
6. 设置qemu-ga服务开机自启动:
# systemctl enable qemu-guest-agent
四、Suse
Suse11
1. 使用命令进行升级,以 qemu-guest-agent-2.0.4-1.42.x86_64.rpm 为例,实际需根据qemu-guest-agent具体版本号进行修改 :
# rpm -Uvh qemu-guest-agent-2.0.4-1.42.x86_64.rpm
2. 重启qemu-ga服务:
# rcqemu-ga restart
3. 设置qemu-ga服务开机自启动,需要在 after.local 文件末尾添加以下内容:
# vim /etc/init.d/after.local
rcqemu-ga restart
Suse12
1. 使用命令进行升级,以 qemu-guest-agent-2.0.2-40.14.x86_64.rpm 为例,实际需根据qemu-guest-agent具体版本号进行修改 :
# rpm -Uvh qemu-guest-agent-2.0.2-40.14.x86_64.rpm
2. 重启qemu-ga服务:
# systemctl restart qemu-ga
3. 设置qemu-ga服务开机自启动:
# systemctl restart qemu-ga