Introduction
VirtIO Drivers are paravirtualized drivers for kvm/Linux (see http://www.linux-kvm.org/page/Virtio). In short, they enable direct (paravirtualized) access to devices and peripherals for virtual machines using them, instead of slower, emulated, ones.
A quite extended explanation about VirtIO drivers can be found here http://www.ibm.com/developerworks/library/l-virtio.
At the moment these kind of devices are supported:
- block (disks drives), see Paravirtualized Block Drivers for Windows
- network (ethernet cards), see Paravirtualized Network Drivers for Windows
- balloon (dynamic memory management), see Dynamic Memory Management
You can maximize performances by using VirtIO drivers. The availability and status of the VirtIO drivers depends on the guest OS and platform.
Windows OS Support
Windows does not have native support for VirtIO devices included.
But, there is excellent external support through opensource drivers, which are available compiled and signed for Windows:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D
Note that this repository provides not only the most recent, but also many older versions.
Those older versions can still be useful when a Windows VM shows instability or incompatibility with a newer driver version.
The binary drivers are digitally signed by Red Hat, and will work on 32-bit and 64-bit versions of Windows
Installation
Using the ISO
You can download the latest stable or you can download the most recent build of the ISO.
Normally the drivers are pretty stable, so one should try out the most recent release first.
You can access the ISO in a VM by mounting the ISO with a virtual CD-ROM/DVD drive on that VM.
Wizard Installation
You can use an easy wizard to install all, or a selection, of VirtIO drivers.
- Open the Windows Explorer and navigate to the CD-ROM drive.
- Simply execute (double-click on) virtio-win-gt-x64
- Follow its instructions.
- (Optional) use the virtio-win-guest-tools wizard to install the QEMU Guest Agent and the SPICE agent for an improved remote-viewer experience.
- Reboot VM
Manual Installation
- Open the Windows Explorer and navigate to the CD-ROM drive.
- There you can see that the ISO consists of several directories, each having sub-directories for supported OS version (for example, 2k19, 2k12R2, w7, w8.1, w10, …).
- Balloon
- guest-agent
- NetKVM
- qxl
- vioscsi
- …
- Navigate to the desired driver directories and respective Windows Version
- Right-click on the file with type «Setup Information»
- A context menu opens, select «Install» here.
- Repeat that process for all desired drivers
- Reboot VM.
Downloading the Wizard in the VM
You can also just download the most recent virtio-win-gt-x64.msi or virtio-win-gt-x86.msi from inside the VM, if you have already network access.
Then just execute it and follow the installation process.
Troubleshooting
Try an older version of the drivers first, if that does not help ask in one of our support channels:
https://pve.proxmox.com/wiki/Get_support
Further Reading
https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html
http://www.linux-kvm.org/page/WindowsGuestDrivers
The source code of those drivers can be found here: https://github.com/virtio-win/kvm-guest-drivers-windows
http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
See also
- Paravirtualized Block Drivers for Windows
- Paravirtualized Network Drivers for Windows
- Dynamic Memory Management
Современную ИТ-инфраструктуру уже нельзя представить себе без виртуализации. Настолько повсеместно она используется (и не без основания). Операционные системы уже даже давно научились понимать то, что она работаю в качестве виртуальной машине, а не на физическом оборудовании. Правда, иногда в этом им приходится помогать. Например, в Proxmox для того, чтобы виртуальные машины могли использовать “нарисованный” (VirtIO) тип контроллера SCSI необходимо, чтобы была выполнена установка драйвера VirtIO для Windows. VirtIO является рекомендуемым типом контроллера SCSI, т.к. он позволяет виртуальной машине напрямую обращаться к виртуальным ресурсам, а не через эмуляцию IDE или какого-то другого протокола.
Есть несколько вариантов или сценариев установки драйвера VirtIO для Windows. Каждый из них применим к определенным случаям. Ниже я постараюсь кратко рассказать про каждый из этих сценариев.
Этот сценарий применим к тем случаям, когда вы выполняете установку новой операционной системы Windows.
Если вы настроите для виртуальной машины Windows тип SCSI контроллера VirtIO и попробуете выполнить установку операционной систем, то на этапе выбора диска вы не увидите виртуальный диск ВМ:
Для того, чтобы установить драйвер VirtIO на этапе установки системы выполните следующие действия:
1. Загрузить дистрибутив с гостевыми средствами интеграции Proxmox.
2. Подключить дополнительный ISO образ к виртуальной машине.
3. На этапе выбора диски для установки операционной системы нажать кнопку “Load Driver”.
4. В следующем диалоговом коне нажмите кнопку “Browse”.
5. В дереве доступных путей найдите смонтированный ISO образ. В корне образа найдите директорию “vioscsi”. Внутри этой директории найдите нужную вам версию и редакции ОС. Нажмите кнопку “OK”.
6. На следующей странице выберите один доступный драйвер и нажмите кнопку “Next”.
7. После завершения процедуры добавления драйвера диск, подключенный по SCSI через VirtIO будет доступен в качестве диска для установки операционной системы.
8. Дальнейшая установка операционной системы выполняется как обычно – дополнительных сложнойстей возникнуть не должно.
Вариант 2. Установка драйвера VirtIO для уже установленной ОС
Этот сценарий применим к тем случаям, когда у вас уже есть виртуальная машина с установленной операционной системой, но виртуальный жесткий диск подключен, например, к IDE контроллеру, а не к контроллеру VirtIO.
Приведенный ниже метод я протестировал на Windows 10. На других версиях ОС Windows, возможно, алгоритм может немного отличаться.
Например, есть подопытная машина:
т.е. в качестве SCSI контроллера выступает эмуляция контроллера LSI53C895A, а в качестве интерфейса подключения диска с операционной системой – SATA.
Для того, чтобы переключить системный диск на использование контроллера VirtIO нужно выполнить следующие действия:
1. В гостевой операционной системе установить средства интеграции Proxmox.
2. Выключить виртуальную машину.
3. Измените тип SCSI контроллера в параметрах оборудовании виртуальной машины.
4. Добавляем какой-то пустой диск (не важно какого размера). Обязательно подключаем его по SCSI протоколу. Почему то без этого шага переключение непосредственно диска с ОС сразу на SCSI протокол успехом не увенчалось. Видимо, сама ОС догружает еще какие-то драйвера. Какие именно я быстро не смог найти. Поэтому быстрее было через вот такой шаг с дополнительным диском реализовать автоматическую установку необходимых драйверов.
5. Запускаем виртуальную машину. Дожидаемся окончания загрузки операционной системы и выключаем виртуальную машину.
6. Отсоединить виртуальный жесткий диск с операционной системой.
7. Перейдите в режим редактирования виртуального жесткого диска.
8. Укажите тип контроллера – SCSI и нажмите кнопку “Add”.
9. Убедитесь, что диск с операционной системой, который вы подключили по SCSI является первым загрузочным устройством (Options – Boot order).
10. Запустите виртуальную машину. После выполнения всех действий виртуальный диск операционной системы будет подключен через VirtIO, что позволит обеспечить максимальную эффективность и производительность работы.
Вариант 3. Подготовка шаблона ВМ с установленным драйвером VirtIO
Если вам приходится часто разворачивать виртуальные машины Windows, то вы можете подготовить базовый образ с уже установленным драйвером для VirtIO. Затем в любой момент времени вы можете из готового шаблона развернуть новую виртуальную машину Windows. И в ней уже будет установлен драйвер для VirtIO.
Как подготовить образ:
1. Сначала необходимо выполнить подготовку операционной системы. Далее на выбор – либо вариант 1, либо вариант 2 из разлов выше. Все зависит от ваших предпочтений и стартовых условйи.
2. Дополнительно вы можете установить весь необходимый набор ПО – архиваторы, офисное ПО и любое другое необходимое вам ПО.
3. Далее необходимо подготовить систему – удалить всю идентифицирующую информацию и идентификаторы для того, чтобы в последующем можно было сделать копию системы. Для этих целей у Microsoft есть утилита sysprep. Расположена вот тут:
C:\windows\system32\sysprep\sysprep.exe
4. В утилите sysprep нужно выбрать следующие параметры:
5. Дождитесь завершения работы утилиты sysprep и выключения системы. После этого наша исходная система готова для конвертирования её в шаблон виртуальной машины.
6. Конвертируем виртуальную машину в шаблон.
7. Теперь вы можете клонировать подготовленный вами образ ОС, в котором будут все необходимые драйвера для VirtIO, а также все необходимое вам дополнительное ПО и обновления (если вы включили эти шаги в образ системы).
Использование шаблона позволит значительно сократить время создания и подготовки новой виртуальной машины. Особенно, если вам приходится часто приходится подготавливать типовое развертывание операционной системы.
В данной статье мы проиллюстрируем пошаговую установку драйверов VirtIO на примере операционной системы Microsoft Windows Server.
Для начала авторизуйтесь в панели управления Cloud2 для присоединения ISO-образа диска с драйверами VirtIO к существующей виртуальной машине:
1. Авторизуемся в панели управления по адресу: https://ru.cloud-2.io/ui/premium/
2. Выбираем нужную виртуальную машину кликая по её названию (1). В открывшейся панели управления переходим во вкладку устройств (2) и нажимаем стилизованную под плюс кнопку подключения ISO-образа (3):
3. В открывшемся окне прикрепления ISO-образа указываем тип операционной системы Windows (1), отмечаем образ диска с драйверами VirtIO (2) и подключаем его к нашей машине (3):
4. Переходим в операционную систему. Для этого подключаемся к машине по RDP или используем встроенную консоль панели управления. Для этого кликаем по стилизованной под три точки кнопке меню виртуальной машины (1) и выбираем пункт «Доступ к ВМ» (2):
В открывшемся окне нажимаем ссылку «Открыть VNC консоль» (1):
5. В операционной системе с помощью проводника Windows проверяем наличие присоединённого нужного образа с драйверами:
В контекстном меню (правая кнопка мыши) кнопки «Пуск» выбираем пункт «Управление компьютером»:
6. В открывшейся панели переходим в Диспетчер устройств (1), где наблюдаем ряд неизвестных нашей системе девайсов (2), которые нам предстоит инициализировать:
7. Поочерёдно устанавливаем драйвера на каждое устройство с подключенного диска. Устанавливаем драйвер устройства Virtio RNG Device:
Аналогично устанавливаем последующие драйвера устройств VirtIO Serial Driver и Red Hat VirtIO Ethernet Adapter:
В результате проделанных манипуляций мы получаем полностью установленные VirtIO устройства в нашей системе. Не забудьте отключить ISO в самой системе или в панели управления виртуальной машиной по окончании работ.
После установки гостевой Windows в виртуальную машину на хосте KVM, нужно добавить корректные драйвера (kvm virtio driver). Без этих драйверов гостевая Windows не сможет определить виртуальные сетевые адаптеры и ряд другого оборудования.
Скачайте актуальную версию ISO образа с драйверами KVM для Windows (около 500 Мб):
$ wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -P /vm/kvm/iso/
Создайте конфигурационной файл для монтирования iso образа в виртуальную машину:
$ vi /etc/libvirt/qemu/guest-virtio-drivers.xml
Добавьте в него следующую конфигурацию:
<disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/vm/kvm/iso/virtio-win.iso'/> <target dev='hdb' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk>
Чтобы смонтировать ISO образ в виртуальную машину KVM, выполните:
$ virsh update-device test-win1 /etc/libvirt/qemu/guest-virtio-drivers.xml
Подключитесь к консоли виртуальной машины Windows, запустите диспетчер устройств и найдите оборудование Ethernet Controller в секции Other Device. Как вы видите, Windows не нашла драйвер для сетевой карты.
Щелкните по контроллеру правой клавишей и выберите: Update Driver -> Browse my computer for driver software, укажите путь к виртуальному CD диску, в который смонтирован ISO образ.
Подтвердите установку драйвера Red Hat VirtIO Ethernet Adapter.
Аналогичным образом установите все остальные драйвера, для оборудования, которое Windows не смогла обнаружить.
Обновлено:
Опубликовано:
После установки гостевой операционной системы Windows на гипервизор KVM мы можем столкнуться с проблемой отсутствия драйверов. Как правило, больше всего неудобств вызывает отсутствие сетевых драйверов. Мы рассмотрим универсальный способ установки драйверов на Windows, который установлен на виртуальную машину KVM.
Предполагается, что наш KVM установлен на операционную систему семейства Linux, например, CentOS или Ubuntu. Все команды в данной инструкции будут выполняться из командной строки.
Загрузка драйверов и их монтирование
Первым делом загрузим ISO образ с набором драйверов и примонтируем его к операционной системе. Для этого заходим на хост виртуализации по SSH и вводим команду:
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -P /data/kvm/iso/
* где https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso — источник файла iso с драйверами KVM; /data/kvm/iso/ — каталог на сервере, в который мы загрузим образ.
* если при вводе команды система выдаст ошибку, необходимо установить wget командой yum install wget или apt-get install wget.
Дожидаемся загрузки файла на сервер, после чего создаем конфигурационный файл для монтирования образа в операционную систему:
vi /etc/libvirt/qemu/guest-virtio-drivers.xml
Добавляем в него следующее:
<disk type=’file’ device=’cdrom’>
<driver name=’qemu’ type=’raw’/>
<source file=’/data/kvm/iso/virtio-win.iso’/>
<target dev=’hdb’ bus=’ide’/>
<readonly/>
<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’1’/>
</disk>
* /data/kvm/iso/virtio-win.iso — путь до файла, который мы загрузили на сервер. В данном файле мы создали описание для монтирования устройства cdrom.
С помощью созданного файла XML мы монтируем ISO образ в CDROM на виртуальной машине:
virsh update-device WIN /etc/libvirt/qemu/guest-virtio-drivers.xml
* где WIN — имя виртуальной машины.
Установка драйверов
Подключаемся к виртуальной машине с помощью VNC. Мы должны увидеть примонтированный CD-ROM с драйверами virtio:
Кликаем правой кнопкой мыши по пуск и выбираем Диспетчер устройств:
* в ранних версиях Windows необходимо кликнуть правой кнопкой мыши по Мой компьютер — Управление — Диспетчер устройств.
В разделе «Другие устройства» кликаем правой кнопкой мыши по устройству, для которого необходим драйвер и выбираем Обновить драйверы:
В открывшемся окне выбираем Выполнить поиск драйверов на этом компьютере:
… и выбираем наш CD-ROM с драйверами:
Если система выдаст предупреждение безопасности, кликаем по Установить:
Драйвер установлен. Повторяем процедуру для каждого устройства, для которого система не смогла установить драйвер.
Была ли полезна вам эта инструкция?
Да Нет