虚拟机视频设备介绍
前言
2019年5月编写,因涉及到各个版本,所以在此着重提一下。
video负责虚拟机的视频输出(也用VGA标识)。
qemu、kvm、libvirt 这几个名词,免费混淆,简单介绍一下:
- 当硬件支持虚拟化时,可在nova配置中指定 virt_type = kvm ,意义为cpu、内存虚拟化通过kvm提供,其它由qemu提供。若硬件不支持虚拟化,则此属性配置为qemu。qemu可以通过软件完全模拟所需的硬件。
- 目前kvm项目已经整合进qemu项目中,联合使用时为qemu提供cpu、内存虚拟化功能。
- libvirt是一个中间件,实现虚拟机的技术有几种,通过libvirt统一了使用方式。openstack默认通过调用libvirt控制虚拟机。
由于libvirt进行了一些封装操作,因此qemu支持的类型并不能代表libvirt支持的类型,只能有一定的参考意义。
首先介绍qemu支持的类型,再介绍libvirt支持的类型,最后介绍openstack可使用的类型(openstack默认调用libvirt)。
环境
操作系统:centos7
openstack版本:queens
qemu版本:2.10
libvirt版本:3.9.0
基础介绍
通过虚拟机的xml文件可以看到video配置项。
找到xml文件(第一种方式):
如果虚拟机处于启动的状态可通过此方式查看。
- 查询虚拟机在kvm中的名称:
openstack server show <虚拟机id>
其中 OS-EXT-SRV-ATTR:instance_name 属性值就是虚拟机在kvm中的名称。
- 到虚拟机所在物理节点的 /run/libvirt/qemu/ 目录下,根据刚刚查到的kvm虚拟机名称可以找到对应的xml文件。
找到xml文件(第二种方式):
虚拟机未运行也可查看。
- 查询虚拟机在kvm中的名称:
openstack server show <虚拟机id>
其中 OS-EXT-SRV-ATTR:instance_name 属性值就是虚拟机在kvm中的名称。
- 到虚拟机所在物理节点,使用kvm命令查看xml:
virsh dumpxml <kvm虚拟机名称>
qemu支持的video类型
qemu最新版已经支持 cirrus,std,qxl,vmware,virtio,none 。
cirrus
qemu2.2之前默认使用的video类型。
不能支持高清显示并且色彩采用24位。总之,要被淘汰的一种类型。
std
qemu2.2之后默认使用的video类型。
无需虚拟机安装额外的驱动,可支持到 2560 x 1600 分辨率。
qxl
2D场景下,一般与spice搭配使用。
注意虚拟机使用此种类型时,虚拟机需要装额外的驱动程序,否则使用体验很糟糕。
默认配置可支持到 2560x1440 分辨率。通过提高内存使用量可以提供更高的分辨率。
vmware
比 cirros、std表现要更好,但是需要虚拟机安装额外的驱动。
virtio
适用于3D场景。
none
一般不用,等于没有视频设备。无法使用vnc等访问虚拟机。
libvirt支持的video类型
vga, cirrus, vmvga, xen, vbox, qxl(since 0.8.6), virtio(since 1.3.0), gop(since 3.2.0), or none(since 4.6.0)
libvirt兼容多个虚拟机具体实现工具,因此在video设备上对某些类型进行了重命名。这里着重讨论使用qemu驱动。
vga
参考qemu中的 std。
cirrus
kvm虚拟机默认video类型。
参考qemu中的 cirrus。
vmvga
参考qemu中的 vmware
xen
不常用,暂时未找到相关资料
vbox
不常用,暂时未找到相关资料
qxl
参考qemu中的 qxl
virtio
参考qemu中的 virtio
gop
- gop是什么:
UEFI驱动程序启用图形输出协议(GOP)以支持OS前阶段的图形控制台输出.GOP的最终目标是取代传统VGA BIOS并消除VGA硬件功能 - 更偏向未来的一种技术,有兴趣的可自行了解
none
参考qemu中的 none
openstack可使用的video类型
cirrus, vga, vmvga, xen, or qxl
cirrus
参考qemu中的 cirrus。
vga
参考qemu中的 std。
vmvga
参考qemu中的 vmware
xen
不常用,暂时未找到相关资料
qxl
参考qemu中的 qxl。
扩展介绍
如何调整虚拟机使用的视频设备
虚拟机得video类型在镜像中定义。
命令参考:
openstack image set --property hw_video_model='vga'
还支持更多得选项,比如video内存配置。注意某些类型需要虚拟机安装驱动配合使用。详情参考最后得 openstack镜像配置参考
虚拟机支持多个视频设备吗
支持,通关xml中的head区分
参考
- qemu参考:
https://wiki.archlinux.org/index.php/QEMU - libvirt参考:
https://libvirt.org/formatdomain.html - openstack镜像配置参考(s版本。q、r、s版一致):
https://docs.openstack.org/glance/queens/admin/useful-image-properties.html#image-property-keys-and-values - openstack分辨率参考:
https://docs.openstack.org/newton/config-reference/compute/config-options.html