Spice是一个开放的远程计算解决方案,提供客户端访问远程显示和设备(如键盘、鼠标、音频)。
主要的用例是获得对虚拟机的远程访问。
官网:Spice
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客户端。spice是一个过时的传统客户机,而spicy只是一个测试应用程序。
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的功能:

Multiple Channels 多通道;服务器和客户机通过通道进行通信。每个通道都专用于特定类型的数据。可用的渠道如下:

Main:   控制和配置
Display :图形命令图像和视频流
Inputs :键盘和鼠标输入
Cursor:指针设备位置和光标形状
Playback:从服务器接收到的客户端播放的音频
Record :客户端捕获的音频
Smartcard :将智能卡数据从客户端机器传递到客户操作系统
USB :将插入客户端的USB设备重定向到客户操作系统
Image Compression:图像压缩Spice提供了几种图像压缩算法,可以在服务器启动时选择,也可以在运行时动态选择。Quic是Spice专有的基于SFALIC算法的图像压缩技术。Lempel-Ziv (LZ)算法是另一种选择。Quic和LZ都是单独编码每个图像的本地算法。Global LZ (GLZ)是Spice的另一项专有技术,它将LZ与基于历史的全局字典一起使用。GLZ利用图像之间的重复模式来减少流量和节省带宽,这在广域网环境中是至关重要的。Spice还提供自动售货机
Video Compression:视频压缩Spice对发送到客户端的图像使用无损压缩。然而,视频流的处理方式不同。Spice服务器启发式地识别视频区域,并将其发送为使用M-JPEG编码的视频流。这种处理节省了大量通信量,提高了Spice的性能,特别是在WAN环境中。然而,在某些情况下,启发式行为可能会导致低质量的图像(例如,将更新的文本区域识别为视频流)。 视频流可以在服务器启动时选择,也可以在运行时动态选择
Mouse modes:Spice支持两种鼠标模式:服务器和客户端。该模式可以动态更改,并在客户端和服务器之间协商.
Server mouse:当用户在Spice客户端窗口内单击时,客户端鼠标将被捕获并设置为不可见。在这种模式下,服务器控制显示的鼠标位置。但是,在WAN或加载的服务器上可能会出现问题,其中鼠标光标可能有一些延迟或无响应。
Client mouse :没有被捕获,被用作有效的指向装置。要启用客户端鼠标,VDI主机应用程序必须注册一个绝对指向设备(例如QEMU中的USB平板电脑)。这种模式适用于WAN或加载的服务器,因为光标具有平滑的移动和响应能力。然而,光标可能会在一段时间内失去同步(位置和形状)。

Other Features:其他功能

Multiple Monitors :支持多屏幕 支持任意数量的屏幕 Arbitrary Resolution :
使用QXL驱动时,客户操作系统的分辨率会自动调整为客户端窗口大小。
USB Redirection :USB重定向;Spice可用于将插入客户端的USB设备重定向到客户操作系统。这种重定向可以是自动的(所有新插入的设备都被重定向),也可以是手动的(用户选择他想重定向的设备)。
Smartcard Redirection :
插入到客户端机器的智能卡中的数据可以传递到客户操作系统。智能卡既可以被客户端操作系统使用,也可以被客户端操作系统使用。
Bidirectional Audio : Spice支持音频回放和录音。回放使用OPUS算法进行压缩。
Migration:可迁移性,交换通道连接以支持服务器迁移
Pixmap and Palette caching:图像数据缓存在客户机上,以避免发送相同的数据;

搭建一个Qemu-Spice云桌面环境:
首先查看是否支持支持CPU虚拟化。如果没有开启,需要开启。VmWare需开启虚拟化Intel VT 虚拟化IO
下载spice-protocol-0.10.1:
http://cgit.freedesktop.org/spice/spice-protocol/commit/?h=0.10
或者
https://www.spice-space.org/download/releases/spice-protocol/spice-protocol-0.12.15.tar.bz2
编译 spice-protocol
解压并进入目录执行命令 ./configure,执行后,会生成Makefile文件,运行 make && make install

下载spice-0.10.1:
http://cgit.freedesktop.org/spice/spice/
或者
https://www.spice-space.org/download/releases/spice-0.14.0.tar.bz2
编译spice-server, 解压并进入目录,配置 PKG_CONFIG_PATH,使得能够找到spice-protocol的安装目录(当前你也可以在编译安装spice-protocol 执行./configure 时加上–prefix=/usr)

export PKG_CONFIG_PATH=/usr/local/share/pkgconfig

安装依赖:

apt-get install build-essential
apt-get install autoconf
apt-get install libjpeg62-dev
apt-get install libogg-dev
apt-get install libssl-dev
apt-get install libasound2-dev
apt-get install libxrandr-dev
apt-get install libxfixes-dev
apt-get install pkg-config

yum install pixman-devel.x86_64 celt051-devel.x86_64 openssl-devel.x86_64 libjpeg-turbo-devel.x86_64 -y

执行./configure,成功后执行make && make install
成功编译后的库显示如下:

下载qemu:
https://download.qemu.org/qemu-3.1.0.tar.xz
编译qemu-kvm
配置变量PKG_CONFIG_PATH,使qemu可以找到spice和spice-protocol的安装目录

export PKG_CONFIG_PATH=/usr/local/share/pkgconfig/:/usr/local/lib/pkgconfig/

执行./configure 配置生成makefile文件

./configure --enable-spice --enable-kvm --enable-vnc t--arget-list=x86_64-softmmu --prefix=/usr

参数介绍:

–enable-spice 表示加载spice模块
–enable-kvm 编译KVM模块,使QEMU可以利用KVM来访问硬件提供的虚拟化服务。
–enable-vnc 表示支持vnc
–target-list=x86_64-softmmu 选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可
–prefix=/usr 安装到/usr目录下

成功生成MakeFile后执行make && make install;
执行which qemu-system-x86_64,查看Qemu安装情况,
执行which qemu-img,查看qemu-img
执行qemu-system-x86_64 --version,查看版本号
如果找不到libspice-server.so.1,需要将/usr/local/lib添加到/etc/ld.so.conf里面,前提是没有指定–prefix,因为默认通过源码装会将库安装在/usr/local/lib目录下

echo /usr/local/lib >> /etc/ld.so.conf

通过Qemu创建虚拟云桌面:
创建虚拟机镜像:
qemu-img create -f qcow2 fedora.img 10G
参数介绍:

    fedora.img 镜像名称-f      选项用于指定镜像的格式,qcow2   格式是QEMU最常用的镜像格式,采用来写时复制技术来优化性能。10G     是镜像文件大小。最好创建更大点,128G起步建议;镜像文件创建完成后,可使用qemu-system-x86来启动x86架构的虚拟机

启动Qemu命令:

./qemu-kvm -name guest=nsd1,debug-threads=on -cpu host -m 8192
-realtime mlock=off -smp 16,sockets=4,cores=2,threads=2 -uuid \ bb3cbb7e-6e26-4481-b36d-edb3b9c193ab -no-user-config -nodefaults
-device sga -rtc base=localtime -no-shutdown -boot d
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 -drive file=/home/tom/Server/qemuImgOS/tomOS.img,format=qcow2,
if=none,id=drive-ide0-0-0 -device
ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1
-chardev spicevmc,id=charchannel0,\ name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
-usbdevice tablet
-spice port=6915,addr=0.0.0.0,disable-ticketing,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,\ vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x8 -device
virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on
-netdev user,id=network0 -device e1000,netdev=network0 -cdrom /home/tom/Server/qemuImgOS/ztWin10.iso

-cdrom参数为外部文件输入,即类似windows的光驱,iso文件可以输入,安装上系统后,再次打开可以关闭,后续开发通过spice-vdagent可以实现文件的传输。spice-vdagent主要为消息传递的媒介。

下载libvirt:
https://libvirt.org/sources/libvirt-5.2.0.tar.xz,./configure,make && make install安装;
启动libvirtd服务,即执行systemctl start libvirtd
将该服务设置开机自启动:systemctl enable libvirtd

问题:
vdagent安装有问题:(在虚拟windows上安装了virtoi接口驱动,但是无法启动)

./qemu-kvm -m 8192 -cpu host -realtime mlock=off -smp
16,sockets=4,cores=2,threads=2 -enable-kvm -vga qxl -boot d -hda
/home/tom/Server/qemuImgOS/zhongtaoOS.img
-chardev spicevmc,id=charchannel0,name=vdagent -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 -device
virtserialport,bus=virtio-serial0.0,nr=1,
chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -usbdevice
tablet -spice port=6915,disable-ticketing,streaming-video=all -vga qxl
-cdrom /home/tom/Server/qemuImgOS/vdagent-linux.iso

-spice port=6915 使用的端口,
-m 8192 使用的运行内存;

注:镜像iso文件可以通过cdrom参数加入

安装spice-vdagent
安装spice-vdagent.msi,必须安装virtoi驱动,之后在windows切换到虚拟机中执行 KSVD Guest Tools1/64目录下,执行./vdservice install ,如果出现Service already exist,
执行./cdservice uninstall ,在执行./vdservice install即可安装成功;

通过spice windows客户端进行连接:
安装软件virt-viewer-x86-3.0.msi 下载
安装启动后输入:
spice://ip:port ,ip为服务器的ip

linux 连接:
下载spice 源码,源码链接:https://www.spice-space.org/download/releases/spice-0.12.5.tar.bz2
./configure 生成Makefile 文件
./configure --enable-client 生成客户端,
进入client 目录进行编译客户端(之前要先编译spice-common),或者直接执行make 连同spice-common,spice server 一起编译;就不会报错

打开客户端后输入 spice://192.168.40.20:6915,即可连接到云桌面;

参考:https://blog.csdn.net/zhaihaibo168/article/details/90183577

Qemu-spice云桌面创建相关推荐

  1. 阿里云无影云桌面服务关联角色设置及删除方法

    阿里云无影云桌面服务关联角色是指创建角色名称AliyunServiceRoleForGws,并赋予权限策略AliyunServiceRolePolicyForGws,说人话就是允许无影云桌面服务访问你 ...

  2. OpenStack虚拟云桌面在携程呼叫中心的应用

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:刘科,携程系统研发云平台桌面虚拟架构师,多年从事分布式计算.通信系统平台设计.开发.本文为刘科在第六期[携程技术微分享]中的分享 ...

  3. 利用citrix xenapp and xendesktop建立你的云桌面

    本文关键字:云办公.真正可用的个人云桌面,云下载云播放.GPO dns,xendeskop storeweb无法完成您的请求 其实云电脑桌面,虚拟桌面vdi,瘦客户端这样的东西出现很久了,只是它们从来 ...

  4. openstack和云桌面杂记

    实验室买了个服务器,托管在学校机房,配置还不错. CPU: 2 * XEON E5-2680V4 GPU: 8 * NVIDIA V100 内存: 128G 硬盘:240G SSD + 4T企业盘 主 ...

  5. VDI虚拟云桌面 和 共享云桌面 区别

    近年,"云桌面"在中国狠火爆.不少学校电脑机房,图书馆阅览室,企业办公室,房地产门店,医院,政务大厅等场所都把传统电脑更换成了云桌面: 教学云桌面,图书馆云桌面,企业云桌面,房地产 ...

  6. 我理解的云桌面(或桌面云)

    我理解的云桌面(或桌面云)定义:通过KVM/XEN/VMWARE/Hyper-V等操作系统虚拟化技术,将传统的办公桌面操作系统以虚拟机的形式集中运行在数据中心.机房.园区网络.互联网的一台或多台服务器 ...

  7. 国产云桌面还需跨过的坎

    云桌面再被火热追捧和炒作的同时,伴之而来也有着对它的口诛笔伐,这些讨伐的声音或自来最终用户的感同身受,或来自行业竞争的敌意污蔑:但不可否认的是云桌面已经进入了我们的生活,从行政机关.窗口单位到医院.学 ...

  8. 服务器搭建虚拟win云服务,云服务器创建win10虚拟机

    云服务器创建win10虚拟机 内容精选 换一换 弹性云服务器(Elastic Cloud Server,以下简称ECS)是由CPU.内存.镜像.云硬盘组成的一种可随时获取.弹性可扩展的计算服务器,同时 ...

  9. 企业云桌面-02-安装第2台域控制器和第2台DNS服务器-012-DC02

    作者:学 无 止 境 QQ交流群:454544014 注意: <企业云桌面>系列博文是<企业云桌面规划.部署与运维实践指南>的基础部分,因为书中内容涉及非常多,非常全面,所以基 ...

最新文章

  1. [RN] React Native 自定义 底部 弹出 选择框 实现
  2. 关于绑定IP地址与端口号的见解
  3. 模块化数据中心成未来互联网企业首选
  4. oracle之4多行函数之分组函数
  5. 计量经济学及stata应用思维导图_小学毕业数学重点考点,火车过桥应用题,用思维导图轻松掌握...
  6. Hive 0.12.0安装配置
  7. shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)
  8. 转:在csv中维护变量参数
  9. Android入门(14)| 通知
  10. PAT Basic 1071. 小赌怡情(15)
  11. 模块化方案esl以及amd的依赖方式
  12. 使用监听器生成请求记录日志
  13. 电子专业 英语词汇大全(持续更新)
  14. Mac下phpstorm 浏览器出现 502 bad gateway 解决办法
  15. visio付款流程图_职场人士常用的3款超好用流程图软件!
  16. 彩虹6号 计算机服务设置,彩虹六号围攻各选项效果解析与设置建议 画面优化设置方法...
  17. Kubernetes----Job控制器
  18. 设计模式八(享元模式)
  19. RK3399 10.0 打开双wifi STA+AP并发
  20. Harmonyos应用开发第一次笔记

热门文章

  1. 招商证券携手联想Filez谱写云中办公新篇章
  2. 计算机win7进不了,Win7进不了系统如何解决?
  3. 企业电子文档安全管理
  4. 七、IN和LIKE的使用
  5. matlab红外遥感温度反演,一种地表温度多通道热红外遥感反演方法与流程
  6. 利用AxhubCharts元件库在Axure RP中快速创建可视化统计图
  7. 管理计算机的作用是什么意思,admin是什么意思 Admin的用途介绍
  8. python 通登录银行_Python3实现简单的银行账户登录系统实例
  9. 联想服务器 硬盘支架 st,【供应联想存储SureSAS112 SF112磁盘阵列3.5寸SATA SAS转FC硬盘托架】价格_厂家 - 中国供应商...
  10. COOX培训材料 — SCADA(6.Silo)