SPICE

SPICE (сокр. от англ. «Simple Protocol for Independent Computing Environments», то есть «Простой протокол для независимой вычислительной среды») — протокол, используемый в рамках проекта с аналогичным названием (но пишется строчными буквами: Spice). Проект представляет собой систему отображения (рендеринга) удаленного дисплея, построенную для виртуальной среды, которая позволяет вам просматривать виртуальный «рабочий стол» вычислительной среды не только на машине, на которой он запущен, но и откуда угодно через Интернет, причем для просмотра можно использовать широкий спектр машинных архитектур.

Первоначально протокол был разработан кампанией Qumranet, которую затем купила Red Hat, Inc.

Уже сегодня Spice может конкурировать с Virtual Network Computing (VNC), в дальнейшем планируется выход на уровень более мощных закрытых протоколов таких как Remote Desktop Protocol(RDP), PC-over-IP (PCoIP).

В настоящее время протокол SPICE используется в связке с QEMU/KVM для предоставления доступа к виртуальным машинам. По всем признакам в будущем возможно появления независимых SPICE-серверов - средств удаленного доступа к физическим машинам.

Структура

Протокол SPICE сегодня состоит из следующих элементов:

  • SPICE-сервер - обычно QEMU/KVM гипервизор
  • SPICE-клиент - клиент удаленного доступа
  • SPICE-агент - гостевое дополнение, расширяющее интеграцию гостя и хоста

SPICE-сервер

SPICE-сервер представляет собой графическую подсистему гипервизора.

Чтобы задействовать протокол SPICE в QEMU/KVM необходимо подключить протокол удаленого доступа к графической подсистеме SPICE. По желанию можно добавить звуковую карту и использовать в качестве основной видеокарты карту qxl.

Видео адаптер "qxl" полноценно отображает только 2D графику, отображение 3D осуществляется медленно так как рендеринг осуществляется программно без аппаратного ускорения.

Операционные системы на базе ядра Linux могут поддерживать графический видеоадаптер QXL, для этого необходимо установить специальный драйвер для X.org (например, в Ubuntu 11.04 есть специальный пакет "xserver-xorg-video-qxl"). Пользователям Windows необходимо получить исходный код драйвера из репозитория и скомпилировать его вручную с помощью бесплатной среды "Microsoft Windows Driver Kit".   

SPICE-клиент

Для того чтобы подключится к SPICE серверу используются SPICE-клиенты.

Доступны следующие клиенты:

  • spicec (входит в состав spice)
  • spicy (gtk-spice)
  • xspice (X и Spice сервер)
  • spice-xpi (плагин для браузера Firefox)

Горячие клавиши:

  • Долгое нажатие Alt - залипание клавиши Аlt в виртуальной машине
  • Shift + F11 - Полный экран
  • Shift + F12 - Освободить мышь

Также доступ к виртуальной машине по протоколу SPICE можно получить с помощью virt-manager.

SPICE-агент

SPICE-агент - дополнительный механизм связи гостя с хостом. Предоставляет следующие возможности:

  • Передача доступа к мыши гостю - снятие лагов.
  • Совместная работа с буфером обмена

Для установки агента нужно скомпилировать её либо установить из репозитория. В ubuntu 11.04 установка агента выполняется пакетом "spice-vdagent" из репозитория "ppa:bderzhavets/spice2"

Также необходимо в конфигурацию добавить SPICE-канал (spicevmc) для обеспечения связи между хостом и гостем. Это можно легко сделать в virt-manager.

Применение

SPICE в отличае от VNC более требователен к ресурсам компьютера. На компьютере с процессором Athlon X2 4000+ - 2.1 GHz и 2Gb DDR2 заметны лаги. Это связано с тем что SPICE находится в состоянии активной разработки. Возможно в скором будущем производительность SPICE увеличится. А пока лучше использовать более мощные компьютеры. 

SPICE слишком грамоздк для использования в серверной виртуализации, он больше подходит для виртуализации рабочих станций VDI. При использовании SPICE становится возможным использование отдельной виртуальной машины под каждую задачу, а также доступ к виртуальной рабочей станции из нетбука, планшетника или смартфона.

В качестве дисков гостей рекомендуется использование LVM томов. Так как LVM тома более удобны в эксплуатации и их производительность значительно выше чем у файлов-образов фиксированного размера. Рекомендуется использование локальных LVM томов, для обеспечения живой миграции лучше осуществлять доступ к LVM томам по сети через iSCSI.

Рекомендации

Аппаратное обеспечение

Хост должен иметь несколько ядер, а по возможности и процессоров. Объем кэша в процессорах при виртуализации играет не маловажную роль. Поддержка VT-d или SVM обязательна.

Рекомендуется использование чипсета с поддержкой VT-x или IOMMU и поддержкой производительной памяти DDR-3. Рекомендуемый объем оперативной памяти от 4GB.

Программное обеспечение

Так как SPICE находится в состоянии активной разработки (после многих часов проб и ошибок!) рекомендуется использование ПО следующих версий:

  • ubuntu 10.04 amd64 (LTS стабилен и в отличае от fedora изначально дружит с проприетарными драйверами NVidia)
  • spice-protocol-0.8.1 (официальный релиз)
  • spice-0.8.2 (официальный релиз)
  • vdagent-0.8.1 (использовался пакет "spice-vdagent" (0.8.0) из APT-репозитория "ppa:bderzhavets/spice2")
  • spiced-quemu (репозиторий git://git.freedesktop.org/git/spice/qemu ветка master) он же KVM

Внимание: Использование чистых qemu-0.14.1, qemu-kvm-0.14.1 не рекомендуется так как возможны ошибки при взаимодействии с qxl-видеокартой.

Чтобы не приходилось мучится с коммандной строкой при настройке KVM настоятельно рекомендуется использование lib-virt (0.9.3) и virt-manager-0.9.0. Вы можете съэкономить ресурсы хоста, отказавшись от X-сервера в пользу консоли и используя virsh (консольный клиент libvirt).

Чтобы запусть виртуальную машину ubuntu на локальном KVM через libvirt можно воспользоваться следующими командами выполнеными от имени root:
#virsh qemu:///
#start ubuntu

Для выключения и жесткого отключения используются команды shutdown и destroy соответственно.

Инфраструктура

В целях экономии памяти и процессорного времени хоста настоятельно рекомендуется запуск SPICE-клиента на другом компьютере. Для повышения пропускной способности сети рекомендуется использование Gigabit Ethernet.

В случае использования NAS/SAN необходимо использование отдельной сети для работы с хранилищем и сети для обеспечения связи между компьютерами.

SPICE-клиенты могут быть развернуты на тонких клиентах, загружающихся по сети.