Введение в специи
Spice — это сетевой протокол с открытым исходным кодом, разработанный Qumranet. Red Hat приобрела Qumranet в 2008 году и получила этот протокол. SPICE — еще одна «новая технология» Red Hat в области виртуализации помимо KVM. Она обеспечивает удаленное взаимодействие с устройствами виртуальных рабочих столов. В настоящее время основной целью Spice является предоставление высококачественного удаленного доступа к рабочему столу для виртуальных машин qemu. Компания стремится преодолеть некоторые недостатки традиционных виртуальных рабочих столов и повысить удобство работы пользователей.
SpiceОфициальный сайт:https://www.spice-space.org/index.html
Платформа Qemu-Spice
Основные строительные блоки специй
Spice Server
Spice Server реализован в libspice, подключаемой библиотеке VDI. В настоящее время основным пользователем этой библиотеки является QEMU. QEMU использует Spice-сервер для предоставления удаленного доступа к виртуальным машинам через протокол Spice. Интерфейс виртуального устройства (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 — это PCI-устройство QEMU, используемое для связи с агентом.
Spice Protocol
Протокол Spice определяет сообщения и правила для связи между различными компонентами Spice.
Архитектура специй
Агент Spice запускается в клиентской системе (виртуальной машине). Сервер Spice и клиент Spice используют агент Spice для выполнения некоторых задач, которые необходимо выполнить на виртуальной машине, таких как настройка разрешения и копирование файлов через буфер обмена. Как видно из рисунка выше, связь между клиентом Spice, сервером и агентом Spice требует помощи некоторых других программных модулей. Например, в клиенте агенту Spice необходимо взаимодействовать с устройством VDIPort QEMU на хосте через. Драйвер VDIPort. Процесс их взаимодействия. Выполняется цикл, называемый вводом/выводом. Сообщения, генерируемые клиентом и сервером Spice, записываются на выходное кольцо устройства и считываются драйвером порта VDI, в то время как сообщения, отправленные агентом Spice, сначала записываются на входное кольцо устройства порта VDI через драйвер порта VDI и считываются им; QEMU в буфер сервера Spice, а затем решить, будет ли оно обработано непосредственно сервером Spice или отправлено клиенту Spice на основе сообщения.
Недостатки специй
1. Установите spice-сервер на хост-компьютер.
yum -y install spice-protocol spice-server xorg-x11-drv-qxl spice-glib
2. Установите на клиент Spice Client
(1) Клиент Centos устанавливает virt-viewer
yum -y install virt-viewer
Подключиться к удаленной виртуальной машине
#remote-viewer spice://IP:PORT
remote-viewer spice://127.0.0.1:5900
#virt-viewer Domain
virt-viewer guest-rhel7
(2) Установите virt-viewer на клиенте Windows.
http://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-2.0.msi
3. Измените XML-файл виртуальной машины.
Выключите виртуальную машину
virsh destroy win10
Редактировать виртуальную машину
virsh edit win10
Исходная конфигурация XML
По умолчанию qemu использует vnc для установки удаленного соединения, адрес прослушивания — 0.0.0.0, а его порт выделяется автоматически (графический тип='vnc' port='-1' определен в XML-файле, -1 означает, что порт автоматически выделяется 5900+N )
//Измените XML-файл следующим образом
<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 при установке виртуальной машины.
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 для удаленного подключения к виртуальной машине на клиенте. Если вы хотите передавать аудио и видео, воспроизводимые на виртуальной машине, на локальный клиент или совместно использовать буфер обмена между виртуальной машиной и клиентом, вам необходимо установить соответствующие инструменты улучшения в виртуальной машине.
(1) конфигурация виртуальной машины Windows
На виртуальных машинах Windows необходимо установить расширенный инструмент spice-guest-tools. Программное обеспечение включает в себя драйвер видеокарты qxl, гостевой агент SPICE, который может синхронизировать буфер обмена, мышь и регулировать разрешение виртуальной машины по желанию. драйвер, пожалуйста, убедитесь, что Virtio добавлен.
Скачать адрес
http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe
(2) Конфигурация виртуальной машины Linux
виртуальная машина рабочего стола Centos gnome, установите следующие пакеты программного обеспечения
yum install xorg-x11-drv-qxl spice-vdagent
Настроить автозагрузку
systemctl start spice-vdagentd
(3) Перенесите файлы на виртуальную машину и поделитесь буфером обмена.
//Добавляем следующее содержимое в XML-файл
<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-файл добавлен для включения звуковой карты
<sound model='ac97'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</sound>
model='ich6' под Linux, model='ac97' под Windows