使用virsh console管理虚机

在KVM的虚拟化实践中,使用终端状态的虚机管理软件virsh可以完成创建、删除、管理等一系列动作。但在默认情况下,virsh使用virsh console连接虚机会出现卡住的情况。这是由于virsh console连接不上虚机的虚拟串行端口所致。

对于Ubuntu虚机,解决的方式如下:

首先,KVM环境中的虚机开启相关服务:

$ sudo systemctl start serial-getty@ttyS0
$ sudo systemctl enable serial-getty@ttyS0
Created symlink /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service → /lib/systemd/system/serial-getty@.service.

然后,无需重启客户机就可以在管理端可以看到结果

root@tc8304:~# virsh start ubuntu
域 ubuntu 已开始

root@tc8304:~# virsh console ubuntu
连接到域 ubuntu
换码符为 ^]

Ubuntu 17.04 ubuntu ttyS0

ubuntu login: 

对于CentOS7的虚机而言,则需要执行如下命令:

root# grubby --update-kernel=ALL --args="console=ttyS0"
root# reboot

virsh管理virt-manager创建的虚机

virsh是kvm虚拟化套件libvirtd提供的字符模式虚拟机管理工具。virt-manager是redhat开发的一套图形界面的kvm虚拟机管理工具。虽然virt-manager和virsh同时是libvirtd这套管理程序的不同类型的管理实现方式,但具体使用起来还是有些许不兼容的地方。
默认使用Desktop版ubuntu安装virt-manager所创建的虚拟机,使用virsh list是看不到的,必须使用virsh list --all命令才能看到。同样,virsh start Beijing也是无法启动虚拟机,会出现“域无法找到”的类似错误。
解决的方法是使用virsh define /etc/libvirt/qemu/Beijing.xml命令,将虚拟机的配置文件在virsh中重新注册一下就可以使用其他的virsh管理命令了。

[root@tc8304 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 1     Beijing                        running
 2     Shanghai                       running
 -     CentOS                         关闭

tips:
Ubuntu中默认的虚拟机磁盘存放位置是在
/var/lib/libvirt/images
而kvm的配置文件存储位置在
/etc/libvirt/qemu/