- Windows 10 guest best practices
- Contents
- Introduction
- Install
- Prepare
- Launch Windows install
- Install Guest Agent and Services
- Guest Agent
- Drivers and Services
- Check for missing drivers
- Further information
- Disk-Image Format: raw vs qcow2
- VirtIO drivers
- Установка и настройка Proxmox VE
- Системные требования
- Установка
- Установка готового образа ISO
- Установка на Debian
- Проверка установки
- Начальная настройка
- 1. Загрузка образов
- 2. Создание сети для виртуальных машин
- Bridge
- Сеть между виртуалками
- Создание виртуальной машины
- Настройка виртуальной машины
- Полезные настройки
- Добавление дискового накопителя
- Добавление сетевого адаптера
- Удаление виртуальной машины
- Тюнинг сервера PVE
- Отключение предупреждения об отсутствии подписки
- Сертификаты
- Создание нового пользователя
- Ubuntu и CentOS
Windows 10 guest best practices
Contents
Introduction
This is a set of best practices to follow when installing a Windows 10 guest on a Proxmox VE server 6.x. Right now it’s a work in progress.
Install
Prepare
To obtain a good level of performance, we will install the Windows VirtIO Drivers during the Windows installation.
- Create a new VM, select «Microsoft Windows 10/2016/2019» as Guest OS and enable the «Qemu Agent» in the System tab. Continue and mount your Windows 10 ISO in the CDROM drive
- For your virtual hard disk select «SCSI» as bus with «VirtIO SCSI» as controller. Set «Write back» as cache option for best performance (the «No cache» default is safer, but slower) and tick «Discard» to optimally use disk space (TRIM).
- Configure your memory settings as needed, continue and set «VirtIO (paravirtualized)» as network device, finish your VM creation.
- For the VirtIO drivers, upload the driver ISO (use the stable VirtIO ISO, download it from here) to your storage, create a new CDROM drive (use «Add -> CD/DVD drive» in the hardware tab) with Bus «IDE» and number 3. Load the Virtio Drivers ISO in the new virtual CDROM drive.
- Now your ready to start the VM, just follow the Windows installer.
Launch Windows install
- After starting your VM launch the noVNC console
- Follow the installer steps until you reach the installation type selection where you need to select «Custom (advanced)»
- Now click «Load driver» to install the VirtIO drivers for hard disk and the network.
- Hard disk: Browse to the CD drive where you mounted the VirtIO driver and select folder «vioscsi\w10\amd64» and confirm. Select the «Red Hat VirtIO SCSI pass-through controller» and click next to install it. Now you should see your drive.
- Network: Repeat the steps from above (click again «Load driver», etc.) and select the folder «NetKVM\w10\amd64», confirm it and select «Redhat VirtIO Ethernet Adapter» and click next.
- Memory Ballooning: Again, repeat the steps but this time select the «Balloon\w10\amd64» folder, then the «VirtIO Balloon Driver» and install it by clicking next. With these three drivers you should be good covered to run a fast virtualized Windows 10 system.
- Choose the drive and continue the Windows installer steps.
HINT: There is a video showing the process for a Windows Server 2016 installation which is the same as for Windows 10.
Install Guest Agent and Services
Guest Agent
If you enabled the Qemu Agent option for the VM the mouse pointer will probably be off after the first boot.
To remedy this install the «Qemu Guest Agent». The installer is located on the driver CD under guest-agent\qemu-ga-x86_64.msi.
Drivers and Services
The easiest way to install missing drivers and services is to use the provided MSI installer. It is available on the driver CD since version «virtio-win-0.1.173-2».
Run the «virtio-win-gt-x64.msi» file located directly on the CD. If you do not plan to use SPICE you can deselect the «Qxl» and «Spice» features. Restart the VM after the installer is done.
After all this the RAM usage and IP configuration should be shown correctly in the summary page of the VM.
For more information and configuration about ballooning, see Dynamic Memory Management
Check for missing drivers
Go to the Device Manager to see if there are any drivers missing. For any unknown device:
- Right click an select «Update driver».
- Select «Browse my computer for driver software».
- Select the Driver CD. Make sure that «Include subfolders» is checked.
- Once a driver has been found you might be prompted with a security warning asking if you «Would like to install this device software». Click «Install».
Further information
Disk-Image Format: raw vs qcow2
Raw file format provides slightly better performance while qcow2 offers advanced features such as copy on write and Live_Snapshots. Since V2.3, qcow2 is the default format.
VirtIO drivers
Make it really easy: Build your ISO with drivers already included: Windows guests — build ISOs including VirtIO drivers
Установка и настройка Proxmox VE
Используемые термины: Proxmox VE, Linux.
В данной инструкции мы пошагово разберем способы установки Proxmox VE, базовую настройку и создание виртуальной машины. Proxmox основан на Debian — поэтому установку будем выполнять на данный дистрибутив Linux. В данной инструкции работа ведется на Proxmox версии 6.
Системные требования
Требования разделены на минимальные и рекомендованные:
Минимальные | Рекомендованные | |
---|---|---|
Процессор | 64bit с поддержкой технологии виртуализации Intel VT или AMD-V | |
Память | 1 Гб | 2 Гб для системы + для виртуальных машин. Дополнительно, если используется хранилище Ceph или ZFS, 1 Гб на наждый ТБ данных. |
Накопитель | HDD | SSD или NVMe |
Сеть | Сетевой адаптер | Минимум, 2 сетевых адаптера на 10 Гбит/сек. |
Поддержка виртуализации Intel VT или AMD-V может быть отключена на материнской плате. Для проверки заходим в БИОС — находим раздел настройки процессора (как правило, в пункте меню Advanced) — проверяем, что технология виртуализации (Intel VT, AMD-V, Virtualization Technology, VMX) включена (Enabled). Если мы хотим протестировать платформу и устанавливаем ее на виртуальную машину, то в ее настройках включаем поддержку технологии виртуализации. Например, в VMware ESX 6 в настройке виртуальной машины на вкладке Virtual Hardware раскрываем CPU и ставим галочку Expose hardware assisted virtualization to the guest OS:
Установка
Есть два варианта установки Proxmox VE — использовать готовый образ или установка на Debian. Мы рассмотрим оба.
Установка готового образа ISO
1. Переходим на страницу загрузки Proxmox официального сайта. Загружаем дистрибутив, например, Proxmox VE 6.1:
2. Если установка выполняется на виртуальную машину, монтируем образ. Если нет — создаем установочную флешку, например, с помощью WinSetupFromUsb или загрузочный диск с помощью InfraRecorder.
3. Загружаем сервер с установочного ISO — мы увидим окно приветствия Proxmox — выбираем пункт меню Install Proxmox VE:
4. Принимаем лицензионное соглашения, кликнув по I agree.
5. Выбираем диск, на который будет установлена система:
* при необходимости, кликаем по Options и задаем настройки файловой системы и размера раздела.
6. Пишем страну, временную зону, язык раскладки клавиатуры по умолчанию:
7. Вводим дважды пароль, который будет использоваться для пользователя root:
8. Прописываем сетевые настройки:
- Management Interface: сетевой интерфейс для управления сервером виртуальных машин.
- Hostname (FQDN): имя хоста для сервера.
- IP Address: IP-адрес нашего сервера.
- Netmask: маска подсети для сервера.
- Gateway: шлюз по умолчанию.
- DNS Server: сервер DNS.
9. В окне «Summary» проверяем введенные данные и кликаем по Install. Начнется процесс установки, который займет не более 10 минут.
10. После установки мы должны увидеть «Installation Successful» — перезагружаем сервер, кликнув по кнопке Reboot.
После переходим к проверке установки.
Установка на Debian
Если мы решили установить Proxmox на уже установленный Debian, выполняем следующую инструкцию.
При установке среды виртуализации меняется ядро Linux. Это может привести к потери работоспособности уже установленных сервисов. Таким образом, установку Proxmox следует выполнять на чистый сервер, а не тот, который уже используется для каких-либо задач.
1. Имя сервера должно разрешаться по его IP-адресу. Для этого либо добавляем А-запись в DNS, либо настраиваем на сервере файл hosts:
192.168.1.55 proxmox.dmosk.local proxmox
* где 192.168.1.55 — IP-адрес нашего сервера; proxmox — имя сервера; dmosk.local — наш домен, если используется.
2. Добавляем репозитории, которые будем устанавливать для установки Proxmox PE и дополнительных компонентов:
deb http://mirror.yandex.ru/debian/ buster main non-free contrib
deb-src http://mirror.yandex.ru/debian/ buster main non-free contrib
deb http://download.proxmox.com/debian/pve buster pve-no-subscription
Чтобы мы могли работать с репозиторием proxmox добавляем в систему цифровую подпись:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
Обновляем список пакетов:
3. Устанавливаем Proxmox PE и компоненты:
apt-get install proxmox-ve open-iscsi
* где proxmox-ve — собственно, сам гипервизор; open-iscsi — iSCSI-клиент для подключения iSCSI-target-ов.
4. Перезагружаем сервер:
Проверка установки
В браузере открываем панель управления системой виртуализации по адресу https:// :8006. В открывшемся окне выбираем язык, вводим логин и пароль от пользователя root:
Должно открыться окно управления.
Начальная настройка
Чтобы начать использовать Proxmox и создать первую виртуальную машину, внесем небольшие настройки и подготовим гипервизор к работе.
1. Загрузка образов
Кликаем по Датацентр — и дважды по storage:
* мы можем создать отдельное хранилище для образов ISO. Для этого переходим в раздел Датацентр — Хранилище — Создать — Каталог.
Переходим в раздел Содержимое и кликаем по Загрузить:
В открывшемся окне выбираем ISO-образ системы, который будем устанавливать в качестве гостевой и кликаем по Загрузить. Ждем окончания копирования файла на сервер.
2. Создание сети для виртуальных машин
Мы рассмотрим примеры создания 2-х режимов сети — Bridge и NAT.
Независимо от способа установки Proxmox, необходимо подключиться к хосту по SSH и установить пакет ifupdown2 командой:
apt-get install ifupdown2
* ifupdown2 — утилита для конфигурации сетевого интерфейса (по сути, аналог ifupdown, написанный на языке Python).
. в противном случае, при попытке применить сетевые настройки мы получим ошибку you need ifupdown2 to reload networking (500).
Bridge
Сеть, работающая в данном режиме позволяет виртуальной машине видеть локальную сеть, как будто это отдельно стоящее устройство. Данный режим лучше всего подойдет для серверов, стоящих в локальной сети компании.
Работать с режимом Bridge нужно очень осторожно. Любое неправильное действие и удаленный доступ к серверу будет потерян. Если работы ведутся на удаленном сервере, рекомендуется сначала потренироваться на какой-нибудь локальной машине.
Также стоит отметить, что при установке PVE из установочного ISO-образа, один Bridge уже будет создан.
Для создания бриджа в панели управления кликаем по нашему серверу Proxmox — переходим в раздел Система — Сеть — обратите внимание, чтобы в системе не было bridge-интерфейсов:
. иначе, создавать его не обязательно.
Открываем настройки сетевого интерфейса, через который будет работать наш мост и удаляем шлюз:
* если мы не сделаем этого, то при настройке Bridge мы получим ошибку Parameter verification failed. (400). gateway: Default gateway already exists on interface ‘ens160’.
Нажимаем Создать и выбираем Linux Bridge:
В открывшемся окне заполняем поля IPv4/CIDR, Шлюз (IPv4), Порты сетевого моста:
* в данном примере мы задаем IP-адрес, на котором будет работать Proxmox (чтобы ничего не перепутать, можно задать IP-адрес физического интерфейса, который будет задействован под Bridge); маска указывается в нотации CIDR и в нашем примере это 24 или 255.255.255.0; в качестве физического интерфейса наш bridge будет использовать ens160.
. нажимаем Создать.
Кликаем по Apply Configuration, чтобы применить сетевые настройки:
Данный режим сети активно применяется в случае аренды сервера, где количество IP-адресов лимитировано. В данном случае, все виртуальные машины будут находисться за NAT, в качестве которого выступает сам Proxmox.
Сам интерфейс мы делаем из панели управления. Но чтобы виртуальные машины могли выходить в Интернет через сеть NAT, необходимо на самом хосте включить редирект и маскарадинг.
Создание нового bridge-интерфеса
Итак, кликаем по нашему серверу Proxmox — переходим в раздел Система — Сеть — нажимаем Создать и выбираем Linux Bridge:
Оставляем имя vmbr1 или пишем любое другое, прописываем IP-адрес с маской сети, в которой будут находиться серверы за NAT:
Нажимаем Создать. Применяем настройки:
Настройка ядра и брандмауэра
Подключаемся к серверу по SSH. Открываем на редактирование файл настройки ядра:
. и добавляем разрешение на редирект:
После применяем настройки:
sysctl -p /etc/sysctl.d/99-sysctl.conf
Добавляем правило в брандмауэр:
iptables -t nat -A POSTROUTING -s ‘192.168.122.0/24’ -o vmbr0 -j MASQUERADE
* в данном примере мы создали правило для маскарадинга всех пакетов из подсети 192.168.122.0/24 и для исходящего интерфейса vmbr0. Обратите внимание, что если у нас будет другая подсеть и исходящий интерфейс для сети Интернет, то нужно будет задать другие значения.
Ставим утилиту для сохранения правил iptables:
apt-get install iptables-persistent
. и сохраняем правила в процессе установки или командой:
Наш NAT настроен.
Сеть между виртуалками
Данная сеть — частный случай NAT без выхода в Интернет. Мы должны создать бридж с отдельной подсетью без шлюза. При добавлении виртуальным машинам данного сетевого адаптера мы сможем настроить их взаимодействие по внутренней сети.
Создаем бридж, как делали это ранее:
Настраиваем новый интерфейс — задаем имя или оставляем тот, что предложит система, а также указываем IP-адрес:
Создаем интерфейс. Готово — при создании или редактировании виртуалок, мы можем указывать с качестве интерфейса созданный бридж (в данном примере, vmbr2) для изоляции их в отдельную подсеть 192.168.150.0/24.
Создание виртуальной машины
Базовая настройка закончена — можно опробовать наш гипервизор в деле.
В правой верхней части панели управления кликаем по Создать VM:
В открывшемся окне снизу сразу ставим галочку Расширенный:
Задаем имя виртуальной машине и ставим галочку Запуск при загрузке (если хотим, чтобы виртуалка запускалась автоматически с сервером PVE):
* в данном примере мы задали имя FS. При желании, также можно изменить VM ID, но он проставляется автоматически и имеет правильное значение.
Выбираем загруженный нами ISO-образ, с которого будем ставить операционную систему, задаем тип гостевой операционной системы и ее версию:
* в данном примере мы будем устанавливать Linux Ubuntu. Среди списка операционных систем также доступны Microsoft Windows, Solaris и Other.
На вкладке Система можно оставить все значения по умолчанию:
* в некоторых случаях, необходимо выбрать другую видеокарту (при установке систем с GUI), а также особый вариант БИОС.
Задаем размер жесткого диска:
* 16 Гб для Ubuntu достаточно, однако, для наших задач расчет должен быть индивидуальным для каждой создаваемой виртуальной машины.
Мы можем задать количество процессоров и ядер:
* в данном примере мы создаем виртуалку с 2 процессорами, каждый из который с 2 ядрами, итого, 4. Для ненагруженных систем можно оставить значение по умолчанию.
* наша Ubuntu будет работать с 2 Гб оперативной памяти.
Выбираем созданный нами бридж — либо для получения прямого адреса из сети, либо для NAT:
* в данном примере, мы указали vmbr0 для подключения к сети напрямую.
Ставим галочку, чтобы виртуальная машина сразу запустилась после создания:
. и нажимаем Готово. Ждем окончания процесса и переходим к консоли:
Мы должны увидеть загрузку с ISO-образа.
Настройка виртуальной машины
После создания виртуальной машины нам может понадобиться ее изменить. Рассмотрим процесс настройки на примере изменения некоторых параметром, а также добавления диска и сетевого адаптера.
Полезные настройки
Для начала, переходим к виртуальной машине — Параметры:
На мой взгляд, чаще всего могут понадобиться следующие настройки:
- Имя — имя виртуальной машины.
- Запуск при загрузке — для серверов данный параметр должен быть активирован.
- Порядок загрузки — позволяет определить, с какого устройства должна запуститься виртуалка в первую очередь.
Для изменения параметра, просто кликаем по нему дважды, меняем значение и нажимаем OK.
Добавление дискового накопителя
Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Жесткий диск:
В открывшемся окне задаем размер диска и нажимаем OK.
Для увеличения размера имеющегося диска устанавливаем на него курсов и кликаем по Изменить размер диска:
В открывшемся окне задаем объем, на который нужно увеличить дисковое пространство.
Добавление сетевого адаптера
Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Сетевое устройство:
Как при создании ВМ, выбираем тип сетевого адаптера (бридж или нат) и нажимаем Добавить.
Удаление виртуальной машины
Для удаления виртуальной машины, сначала ее отключаем — это можно сделать из операционной системы или из панели управления, нажав на стрелку вниз рядом с Выключить — Остановка:
После кликаем по Дополнительно — Удалить:
В открывшемся окне мы должны подтвердить свои намерения удалить виртуальную машину, вписав ее идентификатор:
* если мы поставим галочку Purge, то виртуальная машина будет удалена полностью вместе с виртуальным диском.
Кликаем по Удалить — готово.
Тюнинг сервера PVE
Внесем несколько изменений, которые сделают работу с Proxmox VE удобнее.
Отключение предупреждения об отсутствии подписки
Каждый раз при заходе в панель управления мы будем видеть такое предупреждение:
Оно говорит нам о том, что мы используем бесплатную версию программного продукта. Чтобы сообщение нас не беспокоило, выполним 2 действия:
- Отключим платный репозиторий для получения пакетов proxmox.
- Отредактируем файл js для отключения данного сообщения.
И так, в SSH открываем на редактирование репозиторий proxmox:
Приводим его к виду:
#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription
* мы закомментировали репозиторий pve-enterprise и добавили pve-no-subscription.
* при большом желании, можно удалить файл репозитория с именем pve-enterprise.list и создать новый — кому как будет удобнее.
После обновим список пакетов:
Последнее — редактируем файл /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js:
sed -i «s/getNoSubKeyHtml:/getNoSubKeyHtml_:/» /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
* данной командой мы находим getNoSubKeyHtml в файле /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js и меняем на getNoSubKeyHtml_.
Закрываем окно браузера с Proxmox, если оно было открыто и запускаем его снова. Входим в систему — сообщение не должно появиться.
Сертификаты
Сервер PVE устанавливается с самоподписанным сертификатом. Это означает, что при подключении к панели управления мы будем видеть предупреждение от системы безопасности. Чтобы браузер принимал сертификат, он должен соответствовать следующим требованиям:
- Быть выдан доверенным центром сертификации или зарегистрированным в вашей локальной сети, например, локальный AD CS.
- Быть для доменного имени, по которому мы заходим в панель управления.
- Иметь актуальные даты начала действия и окончания.
При этом, мы не должны заходить в панель управления по IP-адресу — в противном случае, независимо от сертификата, мы все-равно, получим предупреждение.
И так, сам сертификат можно купить, запросить бесплатно у Let’s Encrypt или создать с использованием локального центра сертификации, например, по данной инструкции. Получив сертификат, открываем панель управления PVE и переходим к серверу — Система — Сертификаты — кликаем по Загрузить пользовательский сертификат:
В открывшемся окне заполняем поля для закрытого и открытого ключей:
. и нажимаем Загрузить. Система предупредит, что загрузится с новым сертификатом — необходимо закрыть вкладку в браузере и открыть консоль управления снова. Если сертификат загружен правильный, мы не увидим предупреждения.
Создание нового пользователя
При установке PVE создается пользователь root. Рассмотрим процесс добавления еще одного через командную строку.
Подключаемся по SSH или открываем консоль из панели управления. Создаем пользователя в системе:
* где user — имя создаваемого пользователя.
После создаем нового пользователя в Proxmox:
pveum useradd user@pam
* в данном примере мы создали пользователя user в области pam.
pveum passwd user@pam
Задаем роль для созданного пользователя, например, административную:
pveum aclmod / -user user@pam -role Administrator
* весь список ролей можно посмотреть в панели администрирования в разделе Датацентр — Разрешения — Роли.
Ubuntu и CentOS
Возможно, кому-то захочется установить Proxmox именно на Ubuntu или CentOS. К сожалению, разработчики остановились на Debian. Возможно, есть неофициальные обходные пути установки Proxmox на другие дистрибутивы Linux, однако такой путь не является приемлемым для продуктивной среды. Для настройка виртуализации на Ubuntu и CentOS предлагаю инструкции: