В этом руководстве я собрал свою базовую схему установки и настройки Windows 10 в Proxmox VE. Такой вариант я использую для рабочих виртуальных машин, административных систем, тестовых стендов и других случаев, когда нужна нормальная производительность Windows без лишней экзотики.
Основная идея у меня простая: я сразу создаю Windows 10 как современную UEFI-виртуалку на q35, использую VirtIO для диска и сети, устанавливаю VirtIO-драйверы и обязательно включаю QEMU Guest Agent.
Для установки мне нужны два ISO-образа:
Для VirtIO я использую образ:
virtio-win-0.1.285.iso
Прямая ссылка:
Этот ISO понадобится мне дважды:
В общем виде моя Windows 10 VM выглядит примерно так:
TPM для Windows 10 мне обычно не нужен.
В интерфейсе Proxmox VE я нажимаю:
Задаю имя виртуальной машины и выбираю ISO-образ Windows 10.
На этом этапе я не стараюсь использовать какие-то специфические настройки. Главное — правильно выставить параметры системы, процессора, диска и сети.
Для новых Windows 10 VM я выбираю:
Старый вариант:
я использую только тогда, когда мне действительно нужна совместимость со старой операционной системой, старым загрузчиком или каким-либо специфическим ПО.
Для обычной Windows 10 я предпочитаю q35.
Несмотря на то что Windows 10 может работать с SeaBIOS, для новых виртуальных машин я выбираю:
Также создаю:
Моя стандартная схема выглядит так:
Таким образом Windows устанавливается в UEFI-режиме, примерно как на современном физическом компьютере.
SeaBIOS мне нужен только в отдельных случаях, например:
Для обычной Windows 10 я его не использую.
Для типа процессора я выбираю:
Это позволяет виртуальной машине использовать возможности физического процессора Proxmox-хоста.
В зависимости от CPU Windows получает доступ к таким инструкциям, как AES, AVX, AVX2 и другим современным возможностям процессора.
Для обычной Windows 10 VM я могу использовать:
Для более тяжелой системы:
Я предпочитаю один виртуальный сокет.
То есть вместо:
я обычно выбираю:
Без необходимости я также не отдаю одной виртуальной машине все ядра физического сервера.
Для Windows 10 я ориентируюсь примерно на следующие значения:
Для обычной рабочей или административной VM чаще всего использую:
или:
Если памяти на Proxmox-хосте достаточно и мне нужна предсказуемая производительность Windows, я обычно отключаю Ballooning.
Например:
В таком случае Windows постоянно получает выделенные ей 16 ГБ памяти.
Если виртуальных машин много и память нужно распределять динамически, Ballooning можно оставить включенным.
Например:
Но для основных Windows VM я чаще предпочитаю фиксированный объем RAM.
Для Windows 10 я выбираю:
Системный диск подключаю как:
Например:
IDE и SATA для системного диска я без необходимости не использую.
VirtIO SCSI дает хорошую производительность и нормально работает после установки соответствующего драйвера.
Для обычной Windows 10 я обычно выделяю:
Если внутри будет много программ, обновлений и дополнительных данных:
Для небольшой тестовой VM можно использовать меньше.
Для виртуального диска я обычно включаю:
Это позволяет гостевой системе сообщать хранилищу Proxmox о блоках, которые больше не используются.
Особенно это полезно при использовании:
При правильной поддержке со стороны хранилища удаленные внутри Windows данные могут освобождать место и на уровне Proxmox.
Для системного диска я включаю:
Особенно если используется:
Это позволяет обрабатывать дисковый ввод-вывод эффективнее.
Если VM физически находится на SSD или NVMe, я включаю:
Тогда Windows видит виртуальный накопитель как SSD.
Если виртуальная машина находится на обычных HDD, этот параметр я обычно не включаю.
Без необходимости режим кеширования диска я не меняю.
Обычно оставляю:
или стандартный режим без дополнительного Write Back.
Я не включаю Write Back только ради более красивых результатов в тестах производительности.
Использовать его стоит только тогда, когда я понимаю особенности конкретного хранилища, RAID-контроллера, UPS и возможные последствия отключения питания.
Если VM находится на SSD или NVMe, системный диск у меня обычно выглядит примерно так:
Для сети я выбираю:
Например:
Эмуляцию сетевых карт вроде:
я для современной Windows 10 обычно не использую.
VirtIO дает хорошую скорость сети и создает меньшую нагрузку на CPU.
Перед запуском установки у меня к виртуальной машине должны быть подключены два ISO:
Сам образ VirtIO можно скачать отсюда:
Скачать virtio-win-0.1.285.iso
Прямая ссылка:
Если системный диск создан через VirtIO SCSI, установщик Windows 10 может сначала вообще не показать доступных дисков.
На этапе:
список может быть пустым.
Это нормально.
Я нажимаю:
После этого открываю подключенный:
и перехожу к драйверу VirtIO SCSI для Windows 10 x64.
Обычно нужный путь выглядит так:
Выбираю найденный драйвер и подтверждаю установку.
После его загрузки системный VirtIO SCSI-диск появляется в списке накопителей.
Дальше я создаю разделы и продолжаю установку Windows обычным способом.
Загрузка драйвера SCSI во время установки Windows — это только первый этап.
После первого запуска системы я снова открываю:
virtio-win-0.1.285.iso
и запускаю:
Это важно, потому что Windows нужны не только драйверы системного диска.
Пакет устанавливает необходимые гостевые компоненты VirtIO.
В зависимости от версии туда входят:
После установки пакета я перезагружаю Windows.
Затем проверяю:
и убеждаюсь, что там не осталось неизвестных устройств.
QEMU Guest Agent для Windows VM я устанавливаю практически всегда.
После установки:
я дополнительно проверяю настройки Proxmox.
В интерфейсе открываю:
и включаю:
В итоге:
После этого Proxmox может нормально взаимодействовать с гостевой Windows.
В частности, он может:
После установки QEMU Guest Agent для обычного выключения Windows я использую:
В этом случае Proxmox передает гостевой системе команду штатного завершения работы.
А вот:
использую только при необходимости.
По смыслу это ближе к принудительному отключению питания физического компьютера.
Поэтому постоянно выключать Windows через Stop я не рекомендую.
Для обычной Windows VM мне достаточно стандартного виртуального дисплея Proxmox.
Консоль Proxmox в основном нужна мне:
После установки системы я обычно включаю:
и дальше работаю с Windows через RDP.
Это важный момент.
Если Windows была установлена в режиме:
после установки я не переключаю виртуальную машину на:
Windows после такого изменения может перестать загружаться.
То же самое касается обратного перехода.
Поэтому BIOS я выбираю до установки и дальше без необходимости не меняю.
После установки Windows я также не переключаю виртуальную машину без причины между:
и:
Если я изначально создал Windows 10 на q35, то этот Machine Type и оставляю.
Для обычной Windows 10 VM в Proxmox VE моя конфигурация выглядит примерно так:
Для установки подключаю:
Во время установки Windows, если диск не отображается, загружаю драйвер:
После первого запуска Windows обязательно запускаю:
и устанавливаю полный комплект VirtIO-драйверов и QEMU Guest Agent.
Если свести всю настройку к основным пунктам, моя последовательность выглядит так:
В результате я получаю достаточно простую, быструю и предсказуемую Windows 10 VM, которая нормально работает с дисковой и сетевой VirtIO-подсистемой Proxmox, корректно управляется через QEMU Guest Agent и подходит как для постоянной работы, так и для тестовых задач.
Основная идея у меня простая: я сразу создаю Windows 10 как современную UEFI-виртуалку на q35, использую VirtIO для диска и сети, устанавливаю VirtIO-драйверы и обязательно включаю QEMU Guest Agent.
Что понадобится
Для установки мне нужны два 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 понадобится мне дважды:
- во время установки Windows 10 — чтобы установщик увидел VirtIO SCSI-диск;
- после установки 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.
Коротко: что я обязательно делаю
Если свести всю настройку к основным пунктам, моя последовательность выглядит так:
- Создаю Windows 10 VM на q35.
- Выбираю OVMF / UEFI.
- Создаю EFI Disk.
- CPU ставлю host.
- Использую один виртуальный сокет.
- Выделяю обычно 4-8 виртуальных ядер.
- Выделяю 8-16 ГБ оперативной памяти.
- Для основных VM чаще отключаю Ballooning.
- Выбираю VirtIO SCSI single.
- Системный диск создаю как SCSI.
- Включаю Discard.
- Включаю IO Thread.
- Для SSD/NVMe включаю SSD Emulation.
- Сетевой адаптер использую VirtIO.
- Подключаю Windows 10 ISO.
- Подключаю virtio-win-0.1.285.iso.
- Во время установки загружаю
vioscsi\w10\amd64, если Windows не видит диск. - После установки запускаю
virtio-win-guest-tools.exe. - Включаю QEMU Guest Agent в Proxmox.
- После установки не меняю без необходимости BIOS и Machine Type.
В результате я получаю достаточно простую, быструю и предсказуемую Windows 10 VM, которая нормально работает с дисковой и сетевой VirtIO-подсистемой Proxmox, корректно управляется через QEMU Guest Agent и подходит как для постоянной работы, так и для тестовых задач.