Что нового

Windows 10 в Proxmox VE: установка и правильная настройка виртуальной машины

В этом руководстве я собрал свою базовую схему установки и настройки Windows 10 в Proxmox VE. Такой вариант я использую для рабочих виртуальных машин, административных систем, тестовых стендов и других случаев, когда нужна нормальная производительность Windows без лишней экзотики.

Основная идея у меня простая: я сразу создаю Windows 10 как современную UEFI-виртуалку на q35, использую VirtIO для диска и сети, устанавливаю VirtIO-драйверы и обязательно включаю QEMU Guest Agent.
1499df04-9397-48fd-b746-c869d922a956.jpg

Что понадобится​


Для установки мне нужны два ISO-образа:

  • ISO-образ Windows 10 x64;
  • ISO с VirtIO-драйверами.

Для VirtIO я использую образ:

virtio-win-0.1.285.iso

Прямая ссылка:

Код:
https://sysadmin.guru/static/virtio-win-0.1.285.iso

Этот ISO понадобится мне дважды:

  1. во время установки Windows 10 — чтобы установщик увидел VirtIO SCSI-диск;
  2. после установки Windows — чтобы установить остальные VirtIO-драйверы и QEMU Guest Agent.

Моя типовая конфигурация​


В общем виде моя Windows 10 VM выглядит примерно так:

Код:
Machine: q35
BIOS: OVMF (UEFI)
EFI Disk: да

CPU Type: host
Sockets: 1
Cores: 4-8

RAM: 8-16 GB

SCSI Controller: VirtIO SCSI single
Disk Bus: SCSI
Discard: включен
IO Thread: включен

Network: VirtIO

QEMU Guest Agent: включен

TPM для Windows 10 мне обычно не нужен.

Создание виртуальной машины​


В интерфейсе Proxmox VE я нажимаю:

Код:
Create VM

Задаю имя виртуальной машины и выбираю ISO-образ Windows 10.

На этом этапе я не стараюсь использовать какие-то специфические настройки. Главное — правильно выставить параметры системы, процессора, диска и сети.

Выбор Machine Type​


Для новых Windows 10 VM я выбираю:

Код:
Machine: q35

Старый вариант:

Код:
i440fx

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

Для обычной Windows 10 я предпочитаю q35.

BIOS и UEFI​


Несмотря на то что Windows 10 может работать с SeaBIOS, для новых виртуальных машин я выбираю:

Код:
BIOS: OVMF (UEFI)

Также создаю:

Код:
EFI Disk

Моя стандартная схема выглядит так:

Код:
Machine: q35
BIOS: OVMF
EFI Disk: Enabled

Таким образом Windows устанавливается в UEFI-режиме, примерно как на современном физическом компьютере.

Когда я использую SeaBIOS​


SeaBIOS мне нужен только в отдельных случаях, например:

  • для старых операционных систем;
  • для Legacy-загрузки;
  • для старых загрузчиков;
  • для специфических лабораторных стендов;
  • для проверки совместимости со старым ПО.

Для обычной Windows 10 я его не использую.

Настройка CPU​


Для типа процессора я выбираю:

Код:
CPU Type: host

Это позволяет виртуальной машине использовать возможности физического процессора Proxmox-хоста.

В зависимости от CPU Windows получает доступ к таким инструкциям, как AES, AVX, AVX2 и другим современным возможностям процессора.

Для обычной Windows 10 VM я могу использовать:

Код:
Sockets: 1
Cores: 4
CPU Type: host

Для более тяжелой системы:

Код:
Sockets: 1
Cores: 8
CPU Type: host

Я предпочитаю один виртуальный сокет.

То есть вместо:

Код:
2 sockets
2 cores

я обычно выбираю:

Код:
1 socket
4 cores

Без необходимости я также не отдаю одной виртуальной машине все ядра физического сервера.

Оперативная память​


Для Windows 10 я ориентируюсь примерно на следующие значения:

Код:
4 GB   - минимум
8 GB   - нормально
16 GB  - комфортно

Для обычной рабочей или административной VM чаще всего использую:

Код:
8192 MB

или:

Код:
16384 MB

Ballooning​


Если памяти на Proxmox-хосте достаточно и мне нужна предсказуемая производительность Windows, я обычно отключаю Ballooning.

Например:

Код:
Memory: 16384 MB
Ballooning Device: Disabled

В таком случае Windows постоянно получает выделенные ей 16 ГБ памяти.

Если виртуальных машин много и память нужно распределять динамически, Ballooning можно оставить включенным.

Например:

Код:
Memory: 16384 MB
Minimum Memory: 8192 MB
Ballooning: Enabled

Но для основных Windows VM я чаще предпочитаю фиксированный объем RAM.

Контроллер дисков​


Для Windows 10 я выбираю:

Код:
SCSI Controller: VirtIO SCSI single

Системный диск подключаю как:

Код:
Bus/Device: SCSI

Например:

Код:
scsi0: 100 GB

IDE и SATA для системного диска я без необходимости не использую.

VirtIO SCSI дает хорошую производительность и нормально работает после установки соответствующего драйвера.

Размер системного диска​


Для обычной Windows 10 я обычно выделяю:

Код:
80-100 GB

Если внутри будет много программ, обновлений и дополнительных данных:

Код:
120-150 GB

Для небольшой тестовой VM можно использовать меньше.

Discard / TRIM​


Для виртуального диска я обычно включаю:

Код:
Discard: ON

Это позволяет гостевой системе сообщать хранилищу Proxmox о блоках, которые больше не используются.

Особенно это полезно при использовании:

  • LVM-thin;
  • ZFS;
  • Ceph;
  • SSD;
  • NVMe;
  • thin provisioned хранилищ.

При правильной поддержке со стороны хранилища удаленные внутри Windows данные могут освобождать место и на уровне Proxmox.

IO Thread​


Для системного диска я включаю:

Код:
IO Thread: ON

Особенно если используется:

Код:
VirtIO SCSI single

Это позволяет обрабатывать дисковый ввод-вывод эффективнее.

SSD Emulation​


Если VM физически находится на SSD или NVMe, я включаю:

Код:
SSD Emulation: ON

Тогда Windows видит виртуальный накопитель как SSD.

Если виртуальная машина находится на обычных HDD, этот параметр я обычно не включаю.

Cache​


Без необходимости режим кеширования диска я не меняю.

Обычно оставляю:

Код:
Cache: Default

или стандартный режим без дополнительного Write Back.

Я не включаю Write Back только ради более красивых результатов в тестах производительности.

Использовать его стоит только тогда, когда я понимаю особенности конкретного хранилища, RAID-контроллера, UPS и возможные последствия отключения питания.

Моя типовая настройка диска​


Если VM находится на SSD или NVMe, системный диск у меня обычно выглядит примерно так:

Код:
Bus: SCSI
SCSI Controller: VirtIO SCSI single
Cache: Default
Discard: ON
IO Thread: ON
SSD Emulation: ON

Сетевой адаптер​


Для сети я выбираю:

Код:
Model: VirtIO (paravirtualized)

Например:

Код:
Bridge: vmbr0
Model: VirtIO

Эмуляцию сетевых карт вроде:

Код:
E1000
Realtek RTL8139

я для современной Windows 10 обычно не использую.

VirtIO дает хорошую скорость сети и создает меньшую нагрузку на CPU.

Подключение ISO с VirtIO​


Перед запуском установки у меня к виртуальной машине должны быть подключены два ISO:

Код:
Windows 10 ISO
virtio-win-0.1.285.iso

Сам образ VirtIO можно скачать отсюда:

Скачать virtio-win-0.1.285.iso

Прямая ссылка:

Код:
https://sysadmin.guru/static/virtio-win-0.1.285.iso

Windows 10 не видит диск во время установки​


Если системный диск создан через VirtIO SCSI, установщик Windows 10 может сначала вообще не показать доступных дисков.

На этапе:

Код:
Where do you want to install Windows?

список может быть пустым.

Это нормально.

Я нажимаю:

Код:
Load driver

После этого открываю подключенный:

Код:
virtio-win-0.1.285.iso

и перехожу к драйверу VirtIO SCSI для Windows 10 x64.

Обычно нужный путь выглядит так:

Код:
vioscsi\w10\amd64

Выбираю найденный драйвер и подтверждаю установку.

После его загрузки системный VirtIO SCSI-диск появляется в списке накопителей.

Дальше я создаю разделы и продолжаю установку Windows обычным способом.

Почему нельзя забывать про VirtIO после установки Windows​


Загрузка драйвера SCSI во время установки Windows — это только первый этап.

После первого запуска системы я снова открываю:

virtio-win-0.1.285.iso

и запускаю:

Код:
virtio-win-guest-tools.exe

Это важно, потому что Windows нужны не только драйверы системного диска.

Пакет устанавливает необходимые гостевые компоненты VirtIO.

В зависимости от версии туда входят:

  • VirtIO SCSI;
  • VirtIO Network;
  • VirtIO Serial;
  • Balloon Driver;
  • QEMU Guest Agent;
  • другие компоненты VirtIO.

После установки пакета я перезагружаю Windows.

Затем проверяю:

Код:
Device Manager

и убеждаюсь, что там не осталось неизвестных устройств.

QEMU Guest Agent​


QEMU Guest Agent для Windows VM я устанавливаю практически всегда.

После установки:

Код:
virtio-win-guest-tools.exe

я дополнительно проверяю настройки Proxmox.

В интерфейсе открываю:

Код:
VM
→ Options
→ QEMU Guest Agent

и включаю:

Код:
Enabled

В итоге:

Код:
QEMU Guest Agent: Enabled

После этого Proxmox может нормально взаимодействовать с гостевой Windows.

В частности, он может:

  • получать IP-адрес виртуальной машины;
  • видеть дополнительную информацию о гостевой ОС;
  • корректно отправлять команду завершения работы;
  • лучше взаимодействовать с Windows во время резервного копирования;
  • использовать guest agent для служебных операций.

Shutdown и Stop​


После установки QEMU Guest Agent для обычного выключения Windows я использую:

Код:
Shutdown

В этом случае Proxmox передает гостевой системе команду штатного завершения работы.

А вот:

Код:
Stop

использую только при необходимости.

По смыслу это ближе к принудительному отключению питания физического компьютера.

Поэтому постоянно выключать Windows через Stop я не рекомендую.

Display и дальнейшая работа​


Для обычной Windows VM мне достаточно стандартного виртуального дисплея Proxmox.

Консоль Proxmox в основном нужна мне:

  • во время установки;
  • при настройке сети;
  • при проблемах с Windows;
  • для аварийного доступа.

После установки системы я обычно включаю:

Код:
Remote Desktop

и дальше работаю с Windows через RDP.

Не менять BIOS после установки​


Это важный момент.

Если Windows была установлена в режиме:

Код:
OVMF / UEFI

после установки я не переключаю виртуальную машину на:

Код:
SeaBIOS

Windows после такого изменения может перестать загружаться.

То же самое касается обратного перехода.

Поэтому BIOS я выбираю до установки и дальше без необходимости не меняю.

Не менять Machine Type без необходимости​


После установки Windows я также не переключаю виртуальную машину без причины между:

Код:
q35

и:

Код:
i440fx

Если я изначально создал Windows 10 на q35, то этот Machine Type и оставляю.

Моя итоговая конфигурация Windows 10​


Для обычной Windows 10 VM в Proxmox VE моя конфигурация выглядит примерно так:

Код:
OS:
Windows 10 x64

Machine:
q35

BIOS:
OVMF (UEFI)

EFI Disk:
Enabled

TPM:
не требуется

CPU:
Type: host
Sockets: 1
Cores: 4-8

Memory:
8192-16384 MB

Ballooning:
обычно Disabled

SCSI Controller:
VirtIO SCSI single

System Disk:
SCSI
80-150 GB
Discard: ON
IO Thread: ON
SSD Emulation: ON, если VM находится на SSD/NVMe

Network:
VirtIO
Bridge: vmbr0

QEMU Guest Agent:
Enabled

Для установки подключаю:

Код:
Windows 10 ISO

virtio-win-0.1.285.iso
https://sysadmin.guru/static/virtio-win-0.1.285.iso

Во время установки Windows, если диск не отображается, загружаю драйвер:

Код:
vioscsi\w10\amd64

После первого запуска Windows обязательно запускаю:

Код:
virtio-win-guest-tools.exe

и устанавливаю полный комплект VirtIO-драйверов и QEMU Guest Agent.

Коротко: что я обязательно делаю​


Если свести всю настройку к основным пунктам, моя последовательность выглядит так:

  1. Создаю Windows 10 VM на q35.
  2. Выбираю OVMF / UEFI.
  3. Создаю EFI Disk.
  4. CPU ставлю host.
  5. Использую один виртуальный сокет.
  6. Выделяю обычно 4-8 виртуальных ядер.
  7. Выделяю 8-16 ГБ оперативной памяти.
  8. Для основных VM чаще отключаю Ballooning.
  9. Выбираю VirtIO SCSI single.
  10. Системный диск создаю как SCSI.
  11. Включаю Discard.
  12. Включаю IO Thread.
  13. Для SSD/NVMe включаю SSD Emulation.
  14. Сетевой адаптер использую VirtIO.
  15. Подключаю Windows 10 ISO.
  16. Подключаю virtio-win-0.1.285.iso.
  17. Во время установки загружаю vioscsi\w10\amd64, если Windows не видит диск.
  18. После установки запускаю virtio-win-guest-tools.exe.
  19. Включаю QEMU Guest Agent в Proxmox.
  20. После установки не меняю без необходимости BIOS и Machine Type.

В результате я получаю достаточно простую, быструю и предсказуемую Windows 10 VM, которая нормально работает с дисковой и сетевой VirtIO-подсистемой Proxmox, корректно управляется через QEMU Guest Agent и подходит как для постоянной работы, так и для тестовых задач.
Об авторе
Guru
Василий, cистемный админ /gnu/linux/windows/macos/mikrotik/troubleshooter, создатель сайта
Интересуюсь всем что делает инфраструктуру быстрой и надёжной
Открыт к общению и проектам, написать мне можно через форму или в личном сообщении

❗ Если есть пожелания по обзору какого-либо вопроса не представленного на сайте - пиши в комментариях

Комментарии

Нет комментариев для отображения.

Информация о статье

Автор
Guru
Время чтения статьи
7 мин чтения
Просмотры
15
Посл. обновление

Ещё в Windows

Ещё от Guru

Поделиться этой статьёй

Назад
Верх