- SPICE – протокол доставки виртуального рабочего стола
- Отличительные особенности:
- Установка
- Настройка и использование
- SPICE
- Contents
- Introduction
- Requirements for SPICE
- SPICE client
- Enable SPICE for a VM
- Caution
- OS specific settings for VM
- Windows
- Windows 7/8/10 and Windows 2012/2016
- Linux
- Start your SPICE session
- Using client USB devices
- Caution
- Using Audio
- SPICE Enhancements
- Troubleshooting
- Can’t start Spice session
- Guest resolution does not resize to Remote Viewer window
- Alternatives
- SPICE
- Содержание
- Краткий обзор технологий [ править ]
- Протокол SPICE [ править ]
- Proxmox VE [ править ]
- OpenStack [ править ]
- SPICE-сервер [ править ]
- SPICE-клиенты [ править ]
- Драйвер QXL VGA [ править ]
- Агент «виртуального рабочего стола» [ править ]
- Терминальный сервер на физическом узле [ править ]
- Общий доступ к рабочему столу [ править ]
- Download
- Client
- GTK+ widget
- Windows installers
- Other clients
- Guest
- Linux sources
- Windows binaries
- Server
- 0.14.91 — release candidate
- 0.14.3 — stable release
- 0.12.8 — previous stable series
- Xspice server
- x11spice
- Streaming agent (experimental)
- Older releases
- Nightly Builds
SPICE – протокол доставки виртуального рабочего стола
SPICE (от англ.: Simple Protocol for Independent Computing Environments, то есть «Простой протокол для независимой вычислительной среды») — открытый протокол доставки виртуального рабочего стола, изначально разрабатываемый компанией Qumranet и в дальнейшем купленный компанией Red hat. О нем и пойдет речь в данной статье.
Изначально протокол разрабатывался в рамках проекта с аналогичным названием (но пишется строчными буквами Spice), представляющего собой систему отображения удаленного дисплея, построенную для виртуальной среды, которая позволяет просматривать виртуальный «рабочий стол» вычислительной среды не только на машине, на которой он запущен, но и откуда угодно через Интернет, причем для просмотра можно использовать широкий спектр машинных архитектур.
Базовые блоки Spice это:
- Собственно протокол (SPICE)
- Spice сервер
- Spice клиент
- Spice агент
Кроме того, стоит выделить непосредственно не входящие в состав драйвера для виртуальной видеокарты QXL и некоторые другие вспомогательные компоненты. Ниже будет представлена основная информация обо всех компонентах и возможностях.
Отличительные особенности:
- Многоканальность. Сервер и клиент сообщаются посредством каналов. Каждый канал определяет свой тип данных. Доступны каналы: управления и конфигурации, изображения, устройств ввода, курсора, аудипоток с сервера, аудиопоток с клиента.
- Сжатие изображений. Spice позволяет сжимать передаваемые изображения различными алгоритмами: quic,lempel-ziv, giz.
- Определение и компрессия видеопотока. Spice способен определять регионы, в которых производится передача видеопотока и использовать для этих регионов другие алгоритмы, синхронизацию звука, и т.п.
- Различные режимы работы с указывающими устройствами. В зависимости от скорости передачи данных и требований пользователя положение указателя мышии может обрабатываться как сервером, так и клиентом.
- Поддержка нескольких мониторов.
- Двусторонняя передача звука. Полезна для участия в аудиоконференциях, презентациях и пр.
- Миграция. Поддерживается набор команд, позволяющих прозрачно для пользователя переключать клиента на другой хост.
- Синхронизация звука. При передаче видеопотока звук постоянно сихронизируется с изображением, независимо от скорости соединения.
- Подключение осуществляется к хост-системе (а не к виртуальной машине). Возможна работа с виртуальными машинами, на которых нет поддержки сети.
Установка
В настоящий момент поддержка Spice включена в дистрибутив Fedora 14, RHEL6. Есть пакеты для Gentoo и Arch Linux, Если в дистрибутиве нет пакетов для SPICE и qemu с поддержкой SPICE, их всегда можно собрать из исходных кодов:
1) SPICE — downloads.spice-space.org (исходные коды spice, spice-protocol, spice-agent для Linux и бинарные сборки для Windows)
2) qemu — git.freedesktop.org/git/spice/qemu — GIT репозиторий qemu с поддержкой SPICE
3) libvirt — http://libvirt.org/sources/libvirt-git-snapshot.tar.gz — ежечасные (автоматические) сборки libvirt (с поддержкой spice).
Установка из исходных текстов вполне стандартна
(./configure —help для списка опций).
Настройка и использование
Для работы со SPICE достаточно на сервере запустить qemu с дополнительными опциями:
для доступа без пароля, или
для защиты соединения паролем. И с клиента подключиться к spice-серверу:
Для включения/выключения опций сжатия каналов, шифрования и пр. следует ознакомиться с man-станицей qemu.
SPICE
Contents
Introduction
SPICE (Simple Protocol for Independent Computing Environments) is an open remote computing solution built for virtual environments which allows users to view a computing «desktop» environment. The integrating of Spice into Proxmox VE provides a solution for interaction with virtualized desktop devices, like keyboard, mouse, audio and video. Interaction between front-end and back-end is done using Virtual Device Interfaces (VDI).
Spice achieves a user experience similar to an interaction with a local machine. It is suitable for both LAN and WAN usage, without compromising on the user experience.
Using Spice on Proxmox VE is easy and secure. It is integrated in the cluster environment, the user- and authentication system — and of course, all traffic is fully encrypted.
Spice was first introduced with Proxmox VE 3.1.
Requirements for SPICE
In order to use Spice you need the following:
- Spice client on your desktop OS
- Spice drivers inside your VM (VirtIO, QXL Graphic card drivers)
SPICE client
- Windows: virt-viewer 0.5.6 or higher, http://www.spice-space.org/download.html
- Linux: virt-viewer 0.5.6 or higher
- OS X (not yet working as expected): virt-viewer 0.5.7 or higher, https://www.spice-space.org/osx-client.html
Enable SPICE for a VM
Spice is not enabled by default. To enable it set the Display in the Hardware section of the VM to Spice (shown in the screenshot at the top). Increase the memory if you intend to use SPICE with high resolutions. 32 MiB is plenty for 4K resolutions.
Caution
Before changing the Display setting to SPICE check the following section. You may need to install QXL/SPICE drivers depending on the guest OS.
OS specific settings for VM
Windows
Windows 7/8/10 and Windows 2012/2016
Fully supported. Before you switch the Display to SPICE install the Windows SPICE guest tools 0.132 or higher (spice-guest-tools-0.132.exe or higher)
Linux
All Linux distributions released after 2011 have the necessary qxl driver included as a part of the Xorg package.
Start your SPICE session
A Spice session can be started by clicking directly on the Console button or by opening the Console sub menu and selecting Spice explicitly. This will trigger the download of the connection config file.
Open this file with Remote Viewer to start the session.
The association is automatic for Chrome and Internet Explorer (they use the mime type association from the OS). For Firefox, the association must be done manually, as Firefox has his own internal mime type association (See Options/Applications).
Using client USB devices
You can pass USB devices from the client into the VM. Add a USB device of the type Spice Port in the Hardware section of the VM.
Old methods of editing the config file directly are not necessary anymore with recent versions of Proxmox VE.
Caution
- The Windows version of the virt-viewer does not support it.
Using Audio
Audio devices can be added in the Hardware section of the VM. Three audio devices are supported:
- ich9-intel-hda: emulates Intel HDA Audio on ICH9 chipsets
- intel-hda: emulates Intel HDA Audio on ICH6 chipsets. Use if the ICH9 one does not work properly
- AC97: useful for older OS`s like Windows XP
Manually editing the config file of the VM is not necessary with recent versions of Proxmox VE.
SPICE Enhancements
SPICE Enhancements are optional features that can improve the remote viewer experience. They can be enabled in the Options panel of a VM.
Two enhancements are currently available:
Foldersharing enables you to share a local folder with the VM you are connecting to. The «spice-webdavd» daemon needs to be installed in the VM.
HINT: only the Linux version of Virt-viewer (remote-viewer) supports this.
Videostreaming will encode fast refreshing areas in a lossy video stream. A general recommendation cannot be given but depending on your situation this can greatly improve the performance.
More information can be found in the reference manual by clicking the «Help» button in the dialog to enable the enhancements.
Troubleshooting
Can’t start Spice session
If you can’t start a Spice session from the PVE Web gui, you can try the following shell script: https://git.proxmox.com/?p=pve-manager.git;a=blob_plain;f=spice-example-sh;hb=HEAD
Guest resolution does not resize to Remote Viewer window
Make sure the spice-vdagent service is installed and running in the VM.
If the guest stops resizing once you go higher than a certain size it is possible that the video memory is not enough. Increase the Memory settings of the Display in the Hardware section of the VM by a few MiB. For the changes to take effect you have to shutdown the VM and do a clean start.
Alternatives
Depending on your situation SPICE might not be the best solution. Alternatives are:
- RDP (Remote Desktop Protocol) for Windows Guests
- X2GO for Linux Guests
SPICE
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Содержание
Краткий обзор технологий [ править ]
Протокол SPICE [ править ]
SPICE — простой протокол для независимой вычислительной среды. Позволяет работать с «виртуальным рабочим столом», в том числе, через Интернет, причём и на стороне «клиента», и на стороне «сервера» могут выступать различные операционные системы и аппаратные платформы (подробнее). Хотя изначально SPICE проектировался исключительно для виртуальных сред, его можно поставить в один ряд с новейшими (объектными) версиями таких «чисто терминальных» протоколов, как RDP и NX.
Proxmox VE [ править ]
PVE — готовое решение для управления средой виртуализации, позволяющее обеспечить, в числе прочего, безопасный удалённый доступ по протоколу SPICE к большому количеству терминальных серверов, работающих внутри виртуальных машин KVM. При этом можно задействовать максимум возможностей, предоставляемых протоколом SPICE и гипервизором QEMU/KVM, в том числе, проброс USB-флэшек, смарт-карт, принтеров, звука, получить более тесную интеграцию с окном гостевой системы (бесшовную работу мыши, клавиатуры, динамическое переключение разрешения экрана, общий с гостевой системой буфер обмена для операций копирования/вставки).
OpenStack [ править ]
OpenStack — ещё одно готовое решение для построения более масштабной инфраструктуры облачных сервисов и облачных хранилищ. Как и PVE, OpenStack позволяет обеспечить, в числе прочего, безопасный удалённый доступ по протоколу SPICE к большому количеству терминальных серверов, работающих внутри виртуальных машин, использующих гипервизор QEMU/KVM.
SPICE-сервер [ править ]
SPICE-сервер реализован библиотекой libspice. Пока что основным пользователем этой библиотеки является среда виртуализации QEMU, использующая SPICE-сервер для предоставления удалённого доступа к виртуальным машинам через протокол SPICE. Таким образом, все возможности протокола SPICE на данный момент могут быть обеспечены только в виртуальной среде на основе QEMU. Поскольку код SPICE-сервера вынесен в отдельную библиотеку, есть надежда на скорое появление реализаций, выходящих за рамки этой виртуальной среды.
SPICE-клиенты [ править ]
SPICE-клиенты — это программы, которые используются для удалённого доступа по протоколу SPICE. Рекомендуемым SPICE-клиентом является remote-viewer из пакета virt-viewer. Программа spicy из пакета libspice-gtk-tools может использоваться в тестовых целях, всей функциональности она не предоставляет. Установив пакет spice-html5, можно получить удалённый доступ к «виртуальному рабочему столу» прямо из веб-браузера.
Драйвер QXL VGA [ править ]
SPICE-сервер поддерживает интерфейс VDI QXL. Когда libspice используется с QEMU, для улучшения производительности «удалённого» дисплея и улучшения графических возможностей «гостевой» графической системы можно задействовать определенное видео-устройство PCI. Это видео-устройство называется устройством QXL. Оно требует наличия «гостевых» драйверов QXL для полной функциональности.
Агент «виртуального рабочего стола» [ править ]
SPICE VDAgent — необязательный компонент, улучшающий интеграцию окна гостевой системы с графическим интерфейсом удалённого пользователя. SPICE-протокол поддерживает канал связи между клиентом и агентом на стороне сервера. Агент работает внутри гостевой системы. Для связи с агентом в гостевой системе также используется специальное устройство, так называемый VDI-порт.
Терминальный сервер на физическом узле [ править ]
Терминальный сервер может быть развёрнут не только в виртуальной среде. Он может работать и на физическом железе, даже без видеокарты. Headless/bare-metal конфигурация теперь легко настраивается благодаря наличию в репозитории Xorg-модуля spiceqxl.
Общий доступ к рабочему столу [ править ]
x11spice позволяет предоставлять удалённый общий доступ к своему рабочему столу (сеансу, уже запущенному на реальной видеокарте). Это аналог общего рабочего стола X2Go (похожая функция в Windows называется «Удалённый помощник», для тех же целей служит TeamViewer).
Правим конфигурацию под обычным пользователем:
Теперь на клиенте запускаем x11spice (из меню или терминала). Чтобы подключаемый мог не только видеть рабочий стол, но и менять на нём что-либо, требуется включить опцию allow-control=true.
Download
Client
To connect to a virtual machine using SPICE, you need a client application.
GTK+ widget
spice-gtk is a GTK+3 SPICE widget. It features glib-based objects for SPICE protocol parsing and a gtk widget for embedding the SPICE display into other applications such as virt-manager or Boxes. Python and Vala bindings are available too.
The recommended client application is virt-viewer.
Windows installers
- virt-viewer Windows installer — can be downloaded from virt-manager download page
- UsbDk — A Windows filter driver developed for Spice USB redirection (windows client side) — UsbDk_1.0.22_x64.msi, UsbDk_1.0.22_x86.msi, (source code)
- https://gitlab.freedesktop.org/spice/win32/usbdk
Other clients
- Android client — aSPICE is a secure, SSH capable, open source SPICE protocol client that makes use of the LGPL licensed native libspice library. You can find and install aSPICE from play.google.com.
- Web client — a simple javascript client
- https://gitlab.freedesktop.org/spice/spice-html5
- Experimental OS X client
- launcher-mobile — A GPLv2 licensed cross-platform mobile client for both iOS and Android. Though mainly intended to be used as a client for flexVDI, it can also connect to conventional SPICE sessions.
- It is also avaiable in binary form: flexVDI Client at App Store, flexVDI Client at Play Store
Guest
This section contains various optional drivers and daemons that can be installed on the guest to provide enhanced SPICE integration and performance.
Linux sources
- SPICE vdagent — spice-vdagent-0.21.0.tar.bz2
- https://gitlab.freedesktop.org/spice/linux/vd_agent
- x.org QXL video driver — xf86-video-qxl-0.1.5.tar.bz2; Also contains Xspice
- http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl
Windows binaries
This installer contains some optional drivers and services that can be installed in Windows guest to improve SPICE performance and integration. This includes the qxl video driver and the SPICE guest agent (for copy and paste, automatic resolution switching, . )
Windows QXL driver is not needed if you are using the Windows guest tools installer above.
This is not needed if you are using the Windows guest tools installer above.
To enable the folder sharing in the Windows guest you need:
Server
The SPICE server code is needed when building SPICE support into QEMU. It should be available as a package in your favourite Linux distribution, which is the preferred way of getting it.
0.14.91 — release candidate
0.14.3 — stable release
0.12.8 — previous stable series
Xspice server
Xspice — an X and Spice server. Requires Xorg. See README.xspice.
- The latest sources are xf86-video-qxl. Xspice is mostly reusing that driver and linking directly with spice-server.
x11spice
- x11spice — A utility to allow a user to share a current running X session via a Spice server.
- https://gitlab.freedesktop.org/spice/x11spice
Streaming agent (experimental)
Guest-side daemon which captures the guest video output, encodes it to a video stream and forwards the resulting stream to the host to be sent through SPICE.
Older releases
Older source releases can be found here. Old versions of spice-gtk can be found here.
Nightly Builds
Nightly builds are generated from upstream git master.