KVM — Qemu-Spice создает облачный рабочий стол (16)
KVM — Qemu-Spice создает облачный рабочий стол (16)

Введение в специи

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 на основе сообщения.

Недостатки специй

  • Целью Spice является предоставление высокопроизводительной и удобной ссылки на удаленный рабочий стол, которая отображается пользователю так же, как локальный рабочий стол. В настоящее время реализованные функции включают перенаправление USB, передачу аудио и видео, буфер обмена, синхронизацию мыши, 2D. поддержка графики и любая настройка разрешения (драйвер qxl) и т. д.
  • Spice в настоящее время не поддерживает 3D-эффекты на виртуальных машинах.

1. Установите spice-сервер на хост-компьютер.

Язык кода:javascript
копировать
yum -y install spice-protocol spice-server xorg-x11-drv-qxl spice-glib

2. Установите на клиент Spice Client

(1) Клиент Centos устанавливает virt-viewer

Язык кода:javascript
копировать
yum -y install virt-viewer

Подключиться к удаленной виртуальной машине

Язык кода:javascript
копировать
#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-файл виртуальной машины.

Выключите виртуальную машину

Язык кода:javascript
копировать
virsh  destroy  win10

Редактировать виртуальную машину

Язык кода:javascript
копировать
virsh  edit  win10

Исходная конфигурация XML

По умолчанию qemu использует vnc для установки удаленного соединения, адрес прослушивания — 0.0.0.0, а его порт выделяется автоматически (графический тип='vnc' port='-1' определен в XML-файле, -1 означает, что порт автоматически выделяется 5900+N )

//Измените XML-файл следующим образом

Язык кода:javascript
копировать
<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
копировать
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, установите следующие пакеты программного обеспечения

Язык кода:javascript
копировать
yum install xorg-x11-drv-qxl spice-vdagent

Настроить автозагрузку

Язык кода:javascript
копировать
systemctl start spice-vdagentd

(3) Перенесите файлы на виртуальную машину и поделитесь буфером обмена.

//Добавляем следующее содержимое в XML-файл

Язык кода:javascript
копировать
<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
копировать
<sound model='ac97'>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</sound>

model='ich6' под Linux, model='ac97' под Windows

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose