我有 Ubuntu 12.04 LTS KVM 主机和 OpenBSD 5.4 客户机。
virsh shutdown
我遇到了无法工作/冻结客人的问题。
调用关机后,客户机冻结且无响应。所有 ssh 会话都冻结,所有 vnc 控制台都无响应。冻结时客户端日志中没有任何内容。
唯一的解决办法就是消灭 vish 中的客人。
该问题类似于: http://comments.gmane.org/gmane.os.openbsd.misc/200982
从主机关闭
- 来自主持人:
$ sudo virsh list --all ... 15 ssh2 running ...
$ sudo virsh shutdown ssh2 Domain ssh2 is being shutdown
$ sudo virsh list --all ... 15 ssh2 running ...
- 等待 5 分钟后,状态没有变化。
客人关机
- 在关闭请求期间查看日志:
sudo tail -F /var/log/messages
- 没有记录由于关闭请求而产生的其他值。
- 终端(ssh)和控制台(通过 vnc)都变得无响应。
- 终端(ssh)最终出现错误
Write failed: Broken pipe
。
主机详细信息
- 主持人:
$ uname -a Linux kvm2 3.2.0-51-generic #77-Ubuntu SMP Wed Jul 24 20:18:19 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
- 主机 kvm 版本:
$ virsh version Compiled against library: libvir 0.9.8 Using library: libvir 0.9.8 Using API: QEMU 0.9.8 Running hypervisor: QEMU 1.0.0
- 主机 kvm 客户机上的 dominfo:
$ virsh dominfo ssh2 Id: - Name: ssh2 UUID: 7bb1977e-7268-f40a-32d4-5ae972be7e5f OS Type: hvm State: shut off CPU(s): 2 Max memory: 524288 kB Used memory: 524288 kB Persistent: yes Autostart: disable Managed save: no Security model: apparmor Security DOI: 0
客户机安装步骤
下载的 amd64 install54.iso: http://ftp.openbsd.org/pub/OpenBSD/5.4/amd64/install54.iso
创建磁盘:
sudo qemu-img create -f qcow2 -o preallocation=metadata /vm/ssh2-disk0.qcow2 2G
- 运行 virt-install:
sudo virt-install \ --name ssh2 \ --ram 512 \ --vcpus=1 \ --os-variant=openbsd4 \ --hvm \ --cdrom /vm/install/install54-amd64.iso \ --network bridge:br0,model=virtio \ --graphics vnc \ --disk path=/vm/ssh2-disk0.qcow2,bus=virtio,size=2
注意:使用 br0 而不是 virbr0,因为主机使用 br0。
从 kvm:
sudo virsh vncdisplay ssh2
- 从桌面:
ssh -L 5910:127.0.0.1:5909 kvm2
通过 vnc 连接到 localhost 5910,继续安装。
没有安装 game54.tgz 或任何 x 包:
-game* -x*
答案1
Qemu 对 ACPI 做出了假设,而 OpenBSD 没有。在多个 OpenBSD 和多个 Qemu/KVM 版本的过程中,我发现有效关闭 OpenBSD 客户机的唯一方法是使用
halt -p
在客人本身。
答案2
当尝试在 KVM 中关闭 OpenBSD 作为虚拟机时,这是一个常见问题。
解决方法:
root@myhost:~# config -ef /bsd
disable mpbios
q
root@myhost:~# reboot