Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >KVM--Qemu-Spice构建云桌面(十六)

KVM--Qemu-Spice构建云桌面(十六)

作者头像
Kevin song
发布于 2022-11-19 01:24:39
发布于 2022-11-19 01:24:39
6.5K00
代码可运行
举报
运行总次数:0
代码可运行

Spice简介

Spice是由Qumranet开发的开源网络协议,2008年红帽收购了Qumranet得到了这个协议。SPICE是红帽在虚拟化领域除了KVM的又一“新兴技术”,它提供与虚拟桌面设备的远程交互实现。目前,spice主要目标是为qemu虚拟机提供高质量的远程桌面访问,它致力于克服传统虚拟桌面的一些弊端,而且强调用户体验。

Spice官网:https://www.spice-space.org/index.html

Qemu-Spice框架

Spice 基本构建模块

Spice Server

Spice Server是在libspice中实现的,libspice是一个VDI可插拔库。目前,这个库的主要用户是QEMU。QEMU使用Spice -server通过Spice协议提供对虚拟机的远程访问。虚拟设备接口(Virtual Device Interface, VDI)定义了一组接口, 提供了发布虚拟设备(例如,显示设备、键盘、鼠标)的标准方法,并允许不同的Spice组件与这些设备交互。一方面,服务器使用Spice协议与远程客户端通信; 另一方面,它与VDI主机应用程序(例如QEMU)交互。

Spice Client

Spice客户端是终端用户通过Spice访问远程系统的程序。推荐的客户端是远程查看器(与virt-viewer一起提供)。GNOME Boxes也可以用作Spice客户端。

QXL Device and Drivers

Spice Server支持QXL VDI接口。当libspice与QEMU一起使用时,可以使用特定的视频PCI设备来提高远程显示性能和增强客户图形系统的图形功能。这个视频设备称为QXL设备,需要客户QXL驱动程序才能实现完整的功能。但是,当不存在驱动程序时,支持标准VGA。

Spice Agent

Spice代理是一个可选组件,用于增强用户体验和执行面向客户的管理任务。例如,当使用客户端鼠标模式时,代理将鼠标位置和状态注入到客户端。它还允许您在客户端和客户端之间自由移动光标。代理的其他功能包括共享剪贴板(客户端和主机之间的复制和粘贴)和在进入全屏模式时客户端分辨率与客户端对齐。

VDI Port Device

Spice协议支持客户端和服务器端代理之间的通信通道。当使用QEMU时,Spice代理驻留在客户机上。VDI端口是QEMU PCI设备,用于与代理通信。

Spice Protocol

Spice协议定义了各种Spice组件之间通信的消息和规则。

Spice 架构

Spice agent运行在客户机(虚拟机)系统中。Spice server和Spice client利用spice agent来执行一些需要在虚拟机里执行的任务,如配置分辨率,另外还有经过剪贴板来拷贝文件等。从上图能够看出,Spice client与server与Spice Agent的通讯需要借助一些其余的软件模块,如在客户机里面,Spice Agent需要经过VDIPort Driver与主机上 QEMU的VDIPort Device进行交互,他们的交互经过一种叫作输入/输出的环进行。Spice Client和Server产生的消息被写入到设备的输出环中,由VDI Port Driver读取;而Spice Agent发出的消息则经过VDI Port Driver先写入到VDI Port Device输入环中,被QEMU读入到Spice server的缓冲区中,而后再根据消息决定由Spice Server直接处理,仍是被发往Spice Client中。

Spice的不足

  • spice目标是提供一个高性能,高用户体验的远程桌面链接,就像本地桌面同样展示给用户. 其目前实现的功能有usb重定向,音视频传输,剪贴板,鼠标同步,2D图形支持,任意调整分辨率(qxl驱动)等
  • spice目前不支持虚拟机中的3D效果

1,宿主机安装spice-server

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install spice-protocol spice-server xorg-x11-drv-qxl spice-glib

2,客户端安装spice client

(1)centos客户端安装virt-viewer

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install virt-viewer

连接远程虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#remote-viewer spice://IP:PORT
remote-viewer spice://127.0.0.1:5900
#virt-viewer Domain
virt-viewer guest-rhel7

(2)windows客户机安装virt-viewer

http://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-2.0.msi

3,修改虚拟机xml文件

关闭虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh  destroy  win10

编辑虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh  edit  win10

原始XML配置

默认情况下,qemu使用vnc建立远程连接,监听地址为0.0.0.0,其端口为自动分配(xml文件中定义graphics type='vnc' port='-1', -1表示端口自动分配5900+N)

//XML文件修改如下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<graphics type='spice'  port='5920'  autoport='no' listen='0.0.0.0'>    
  <listen type='address' address='0.0.0.0'/>    
</graphics>
<video>      
  <model type='qxl' vram='32768' heads='1' primary='yes'/>    
  <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>   
</video>

注:默认虚拟机使用的显卡是虚拟显卡,而使用spice协议时可以将虚拟显卡更换为qxl 显卡,这会加快视频传输的质量。

4,虚拟机安装时启用spice协议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virt-install -n windows01 -r 2048 \
-f /var/kvm/images/windows.img -s 50 \
--vcpus=2--os-type windows--os-variant=win7 \
--network bridge=br0 \
--graphics spice,port=5940,listen=0.0.0.0,password=password \
--video qxl --channel spicevmc \
--cdrom /dev/cdrom 

5,Windows 客户端连接测试

6,提高虚拟机性能(鼠标同步,共享剪贴板,音视频传输等)

在客户端使用spice client远程连接虚拟机,如果想要虚拟机中播放的音视频传输到本地客户端,或者在虚拟机和客户机之间共享剪贴板,则需要在虚拟机中安装相应增强工具。

(1) windows虚拟机配置

Windows虚拟机需要安装增强工具spice-guest-tools,软件包含qxl视频卡驱动,SPICE guest agent,实现同步剪贴板,鼠标,任意调整虚拟机分辨率等功能,安装QXL驱动前,请确保已添加virtio镜像。

下载地址

http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe

(2) Linux虚拟机配置

centos gnome桌面版虚拟机,安装以下软件包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install xorg-x11-drv-qxl spice-vdagent

设置开机启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start spice-vdagentd

(3)虚拟机中的传输文件,共享剪贴板

//XML文件添加如下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<channel type='spicevmc'>
   <target type='virtio' name='com.redhat.spice.0'/>
   <alias name='channel0'/>
   <address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>

(4)虚拟机中的音视频传输到客户端

//XML文件添加启用声卡

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<sound model='ac97'>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</sound>

linux下model='ich6',windows下model='ac97'

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
桌面虚拟化spice协议研究(一)
最近在搞VDI安全研究,公司正好用的是redhat的spice协议,所以正好想把研究结果做个总结记录。
半月弧
2020/06/23
7.9K0
桌面虚拟化spice协议研究(一)
kvm 安装 windows 虚拟机
将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
用户8824291
2022/02/25
2.4K0
KVM 应用-创建虚拟机
KVM虚拟化部署完成了,接下来我们要做的就是创建一个KVM虚拟机,如何创建呢?本节课程主要讨论。
星哥玩云
2022/09/15
3.1K0
KVM 应用-创建虚拟机
腾讯云TDP-virt-viewer win客户端的软件使用
2.使用此软件可以解决KVM宿主机内virt-manager客户端操作单台VM时,鼠标跟踪不同步问题
root0day
2022/06/12
5.9K0
在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器
我们已经讲解了 在 Ubuntu 18.04 无头服务器上配置 Oracle VirtualBox 。在本教程中,我们将讨论如何使用 KVM 去配置无头虚拟化服务器,以及如何从一个远程客户端去管理访客系统。正如你所知道的,KVM(Kernel-based virtual machine)是开源的,是 Linux 上的全虚拟化。使用 KVM,我们可以在几分钟之内,很轻松地将任意 Linux 服务器转换到一个完全的虚拟化环境中,以及部署不同种类的虚拟机,比如 GNU/Linux、*BSD、Windows 等等。
用户8639654
2021/10/25
1.4K0
macOS 使用 remote-viewer 连接 spice | PC 连接 spice 云桌面
最近需要使用到云桌面办公,但目前仅支持 windows 客户端。后经过询问,发现是使用 spice 协议链接,提供地址后,即可使用第三方客户端链接。
宋天伦
2023/10/20
6760
macOS 使用 remote-viewer 连接 spice | PC 连接 spice 云桌面
KVM--虚拟化环境安装(一)
Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。
Kevin song
2022/06/07
1.9K0
KVM--虚拟化环境安装(一)
kvm命令行安装
qemu-img创建磁盘文件 通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动 时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最 快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁 盘格式必须为qcow2。 raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节 省空间,可动态增长,在
L宝宝聊IT
2018/06/27
3.4K0
KVM学习收集1
2) OS 版本&架构: CentOS/7.9.2009/x86_64/ 官网下载地址
全栈工程师修炼指南
2022/09/29
4770
KVM学习收集1
Centos6.5 安装部署KVM
KVM是开源软件,全称是kernel-based virtualmachine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel VT技术或者AMD V技术)。自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
DevOps云学堂
2019/10/18
1.4K0
Centos6.5 安装部署KVM
KVM基于内核的虚拟机概念理解与客户机浅析
作为一个KVM的学习者,如果你想要自己完善一个KVM样品级的解决方案,仅仅学会图形化界面使用和简单的配置(详情见上一篇文章)是远远不够的。在上文中感谢@laowolf提出的问题,让我有动力完成接下来的深入的“科普”。可能在本文编写的时候,笔者还没有精力对@laowolf提到的几个难点问题来探究,但是仍然需要纂写文本旨在知识的传播与经验记录,那么同时,也想试着抛出一些热点问题旨在抛砖引玉。 严格来说KVM是属于云计算-虚拟化的范畴。但是我们今天不来讨论所谓云计算的问题,我们着重来介绍KVM的比较深入的知识。
逸鹏
2018/04/09
1.7K0
KVM基于内核的虚拟机概念理解与客户机浅析
裸金属服务器kvm虚拟化安装win10
和普通的 VPS 相比,裸金属服务器属于物理服务器,我的数据和其他用户数据做到了物理隔离,同时服务器本身是支持二次虚拟化的。
宋天伦
2020/07/16
7.3K0
KVM详解,学习kvm系列文章
其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:
菲宇
2019/06/12
9.4K1
KVM详解,学习kvm系列文章
kvm研究和实践
qemu-kvm 该软件包主要包含KVM内核模块和基于KVM重构后的QEMU模拟器。KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。 依赖包qemu-img 主要用来QEMU磁盘镜像的管理,如新建一块磁盘镜像给虚拟机。
初心不改
2020/01/23
1.8K0
QEMU/KVM虚拟机安装配置
[root@KVM ~]# yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v2v virt-top libvirt libvirt-Python libvirt-client python-virtinst bridge-utils tunctl
用户8704835
2021/06/08
1.7K0
Centos6.3安装KVM
一、安装kvm 1 在安装CentOS6.3时可以选择安装好kvm 2 如果未安装好kvm,请按照下列方式安装 [创建本地yum源] 挂载iso文件 mount -o loop -t iso9660 CentOS-6.3-x86_64-bin-DVD1.iso /mnt 设置本地yum源 在/etc/yum.repos.d/创建   “任意文件名.repo"    文件   vi 刚才新建的文件名编辑 【localyum】任意名称 ,不能有空格。 name= local yum  任意名称 baseurl=file:////mnt/Packages      这个路径是自定的。Server为光盘中的Server目录 ,Packages与Server放在同一目录下。即/software目录下 enabled=1   代表   生效     0为不生效 gpgcheck=1   检查gpgkey  1 生效   0不生效 gpgkey=file:///software    安装光盘里有这个文件        不指定  安装时,可能提示没有注册 保存退出 执行命令 yum clean all (1) kvm需要有 CPU 的支持(Intel VT 或 AMD SVM) [root@moniter ~]#egrep '^flags.*(vmx|svm)' /proc/cpuinfo 如果有返回值说明cpu支持虚拟化 (2) 安装kvm libvirted yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst (3) 启动libvirted service messagebus start service haldaemon start service libvirtd start chkconfig messagebus on chkconfig haldaemon on chkconfig libvirtd on (4)检查kvm是否安装成功 [root@jiayuan ~]# virsh -c qemu:///system list  Id    名称                         状态 ----------------------------------------------------  1     redhat6.3                      running (5)kvm模块 [root@myKVM ~]# lsmod | grep kvm kvm_intel              52570  0 kvm                  314739  1 kvm_intel 二、配置网桥 vi /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static BROADCAST=10.207.20.255 IPADDR=10.207.20.200 NETMASK=255.255.255.0 NETWORK=10.207.20.0 ONBOOT=yes b、 vi /etc/sysconfig/network-scripts/ifcfg-eth0 # Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet DEVICE=eth0 BOOTPROTO=none ONBOOT=yes BRIDGE=br0 c、 重起网络服务生效 service network restart d、 echo 1 > /proc/sys/net/ipv4/ip_forward  #虚拟机上网 e、 检查桥接网络 [root@moniter ~]# brctl show bridge name     bridge id               STP enabled     interfaces br0             8000.842b2b74e1b6       no              eth0 virbr0          8000.000000000000       yes br0是我们配置的桥接网卡,virbr0是系统脚本自动配置的NAT网卡 三、安装vnc 注意:CentOS6.3 VNC的命名rpm为tiggervnc-server (1) yum install tiggervnc-server (2) vi /etc/sysconfig/vncservers #加一行     VNCSERVERS="
DevinGeng
2019/04/09
1.2K0
使用DoraCloud在Proxmox虚拟化平台搭建桌面云
Proxmox VE是一个完整的企业虚拟化开源平台。借助内置的Web界面,您可以轻松管理虚拟机和容器,软件定义的存储和网络,高可用性集群以及单个解决方案上的多个现成工具。
用户7709316
2021/05/07
4.5K0
KVM_虚拟化技术
KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。 2006 年 10 月,由以色列的 Qumranet 组织开发的一种新的“虚拟机”实现方案。 2007 年 2 月发布的 Linux 2.6.20 内核第一次包含了 KVM 。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
yaohong
2019/09/11
1.6K0
物理机搭建KVM并与局域网互访(保姆级教程)
(1)kvm只支持x86平台 (2)依赖于 HVM,inter VT AMD-v
互联网-小阿宇
2022/11/21
3.9K0
物理机搭建KVM并与局域网互访(保姆级教程)
OpenEuler 部署 KVM 虚拟化制作openstack镜像
内核模块导出了一个名为/dev/kvm的设备,该设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间
Kevin song
2023/12/04
1.6K0
OpenEuler 部署 KVM 虚拟化制作openstack镜像
相关推荐
桌面虚拟化spice协议研究(一)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文