- Виртуальные машины Qemu/KVM
- Hookscripts
- Гибернация
- Выбор хранилища состояний
- Управление VM с помощью qm
- Примеры использования CLI
- Что нужно сделать после установки
- Обновить систему до актуальной версии
- Позаботиться о безопасности
- Онлайн курcы по Mikrotik
- Помогла статья? Подписывайся на telegram канал автора
- Настройка сети
- Как создать bridge в proxmox
- Настройка NAT для виртуальных машин
- Routed режим сети
- Пример организации сети для виртуальных машин
- Базовая настройка proxmox
- Установка Qemu Guest Agent на Windows
- Подготовка к установке
- Драйвера и Службы
- Часто задаваемые вопросы по теме статьи (FAQ)
- Создание и настройка виртуальных машин
- Автозапуск виртуальной машины
- Установка proxmox на mdadm raid 1 в debian 10
- Создание виртуальной машины для MacOS
- Хранилище для виртуальных машин
- Добавление и подключение диска
- Хранилище по NFS
- VirtIO drivers
- Как быстро развернуть гипервизор Proxmox VE
- Как это устроено
- Запуск установки Windows в Proxmox
- Подготовка установочного iso образа macos
- Возможности решения
- Видео установки macOS
Виртуальные машины Qemu/KVM
- Эмулированные устройства и паравиртуализированные устройства
- Параметры Виртуальных Машин
- Миграция
- Копии и клоны
- Шаблоны виртуальных машин
- Generation ID виртуальной машины
- Импорт ВМ и образов дисков
- Поддержка Cloud-Init
- Проброс PCI(e)
- Hookscripts
- Гибернация
- Управление VM с помощью qm
- Конфигурация
- Блокировки
Hookscripts
- Примечание переводчика
- Hookscripts — скрипты реагирующие на события
(улавливающие/перехватывающие)
Вы можете добавить скрипт перехвата к виртуальным машинам с помощью
hookscript свойства config .qm set 100 -hookscript local:snippets/hookscript.plОн будет вызываться на разных этапах жизни гостей. Пример и документацию см.
Пример сценария в
/usr/share/pve-docs/examples/guest-example-hookscript.pl.Гибернация
Вы можете приостановить ВМ и сохранить состояние на диск с помощью параметра
‘Hibernate’ Веб-интерфейса или с помощьюqm suspend ID --todiskЭто означает, что текущее содержимое памяти будет сохранено на диск, и
виртуальная машина будет остановлена. Но при следующем запуске содержимое
памяти будет загружено, и ВМ сможет продолжить работу с того места, где она
была остановлена.Выбор хранилища состояний
Если целевое хранилище для памяти не указано, оно будет автоматически
выбрано первым из:- Хранилище vmstatestorage из конфигурации ВМ.
- Первое общее хранилище с любого диска ВМ.
- Первое необщее хранилище с любого диска ВМ.
- Локальное хранилище в качестве запасного варианта.
Управление VM с помощью qm
qm — это инструмент для управления виртуальными машинами Qemu/Kvm на Proxmox VE. Вы можете создавать и уничтожать ВМ и управлять выполнением (запуск/остановка/приостановка/возобновление). Кроме того, вы можете использовать qm для установки параметров в соответствующем файле конфигурации. Также можно создавать и удалять виртуальные диски.
Примеры использования CLI
Используя файл iso, загруженный в локальное хранилище, создайте виртуальную машину с IDE-диском 4 ГБ в хранилище local-lvm.
qm create 300 -ide0 local-lvm:4 -net0 e1000 -cdrom local:iso/proxmox-mailgateway_2.1.isoЗапустите новую виртуальную машину
qm start 300Отправьте запрос на завершение работы и дождитесь остановки виртуальной машины.
qm shutdown 300 && qm wait 300То же, что и выше, но подождите 40 секунд.
qm shutdown 300 && qm wait 300 -timeout 40
- Проброс PCI(e)
- Оглавление
- Конфигурация
Что нужно сделать после установки
Есть несколько важных вещей, которые следует выполнить после установки Proxmox. Расскажем о каждой из них подробнее.
Обновить систему до актуальной версии
Для этого зайдем в консоль нашего сервера и отключим платный репозиторий (доступен только тем, кто купил платную поддержку). Если этого не сделать — apt сообщит об ошибке при обновлении источников пакетов.
- Открываем консоль и редактируем конфигурационный файл apt:
nano /etc/apt/sources.list.d/pve-enterprise.list - В этом файле будет всего одна строка. Ставим перед ней символ #, чтобы отключить получение обновлений из платного репозитория:
#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise - Сочетанием клавиш Ctrl + X выполняем выход из редактора, отвечая Y на вопрос системы о сохранении файла.
- Выполняем команду обновления источников пакетов и обновления системы:
apt update && apt -y upgrade
Позаботиться о безопасности
Исходя из практического опыта, за неделю работы сервера с открытым ssh-портом 22 и внешним статическим IPv4-адресом, было более 5000 попыток подобрать пароль. И около 1500 адресов утилита успешно заблокировала.
Для выполнения установки приводим небольшую инструкцию:
- Открываем консоль сервера через веб-интерфейс или SSH.
- Обновляем источники пакетов:
apt update - Устанавливаем Fail2Ban:
apt install fail2ban - Открываем конфигурацию утилиты на редактирование:
nano /etc/fail2ban/jail.conf - Изменяем переменные bantime (количество секунд на которые будет блокироваться злоумышленник) и maxretry (количество попыток ввода логина/пароля) для каждого отдельного сервиса.
- Сочетанием клавиш Ctrl + X выполняем выход из редактора, отвечая Y на вопрос системы о сохранении файла.
- Перезапускаем службу:
systemctl restart fail2ban
fail2ban-client -v status sshdОтвет утилиты будет выглядеть примерно так:
root@hypervisor:~# fail2ban-client -v status sshd
INFO Loading configs for fail2ban under /etc/fail2ban
INFO Loading files: ['/etc/fail2ban/fail2ban.conf']
INFO Loading files: ['/etc/fail2ban/fail2ban.conf']
INFO Using socket file /var/run/fail2ban/fail2ban.sock
Status for the jail: sshd
|- Filter
| |- Currently failed: 3
| |- Total failed: 4249
| `- File list: /var/log/auth.log
`- Actions |- Currently banned: 0 |- Total banned: 410 `- Banned IP list:Аналогичным способом можно закрыть от подобных атак Web-интерфейс, создав соответствующее правило. Пример такого правила для Fail2Ban можно найти в официальном руководстве.
Онлайн курcы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курcы по программе, основанной на информации из официального курcа MikroTik Certified Network Associate. Помимо официальной программы, в курcах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте Курcы по ИТ.
Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курcов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Настройка сети
Обычно для виртуальных машин достаточно 3 режима работы сети:
- Режим Bridge. В этом режиме виртуальные машины получают ip адрес из одной подсети с гипервизором и имеют в нее прямой доступ.
- Режим NAT. Виртуальные машины получают ip адреса в своей виртуальной подсети, во внешнюю сеть выходят через гипервизор и настроенный на нем NAT.
- Routed режим, когда шлюзом в интернет является одна из виртуальных машин.
Я использую все три режима работы сети, в зависимости от ситуации. Покажу это на примерах.
Как создать bridge в proxmox
Для создания сетевого интерфейса типа bridge в proxmox, в web интерфейсе перейдите в раздел и нажмите Create -> Linux Bridge.

Заполняете необходимые поля. Обязательными являются поле IP address, Gateway, Bridge Ports.

С такими настройками вы сможете в качестве локального интерфейса оставить только vmbr0, а eth0 отключить. Это на ваше усмотрение. Если оставить оба интерфейса, то ваш proxmox будет доступен по двум разным ip адресам. Если получите ошибку:

Удалите настройку шлюза на eth0, добавьте его на vmbr0.
Сразу обращаю внимание, что после создания бриджа, в системе создается новый файл с сетевыми настройками — /etc/network/interfaces.new. Там отражены сделанные нами изменения. Информация из него будет добавлена в основной файл interfaces после перезагрузки. Перезагрузите сервер и проверьте. Если все в порядке, то вы сможете подключаться и по ssh и по web доступу к обоим ip адресам — eth0 и vmbr0.
Очень внимательно отнеситесь к настройке сети в proxmox. Убедитесь, что у вас есть доступ к консоли гипервизора. Мне часто приходится настраивать выделенные серверы. Тем не менее, иногда теряю доступ к серверу из-за какой-то ошибки или невнимательности. Да и в самом proxmox могут быть проблемы.
У меня были ситуации, когда выполняешь описанные выше действия, перезагружаешь сервер — он недоступен. Захожу локально, открываю файл /etc/network/interfaces, и удаляю какую-то лишнюю закомментированную строку, из-за которой не поднималась сеть. Подробностей уже не помню, что именно было не так, но пару раз ловил такие ошибки.
Расскажу про еще один нюанс. Во время создания бриджа вас обязательно просят указать статические сетевые настройки. А иногда нужно использовать dhcp сервер. Через web интерфейс это сделать не получится, либо я не понял как. Поступаю другим образом. Пишу произвольные настройки через gui, а потом исправляю файл /etc/network/interfaces. Вот пример настройки сети, когда bridge получает сетевые настройки по dhcp.
source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug eth0 #iface eth0 inet dhcp auto vmbr0 iface vmbr0 inet dhcp bridge-ports eth0 bridge-stp off bridge-fd 0
Перезагружаю сервер и убеждаюсь, что все работает как надо.

При этом в web интерфейсе будет вот так.

Настройка NAT для виртуальных машин
Для того, чтобы настроить удобный способ сетевого подключения виртуальных машин с использованием NAT, когда все виртуалки вместе с гипервизором будут в единой виртуальной сети видеть друг друга, потребуется создать еще один bridge и настроить трансляцию адресов с помощью iptables на самом гипервизоре. Сделаем это.

Заходим по ssh на гипервизор и добавляем в файл с новыми сетевыми настройками несколько строк:
# mcedit /etc/network/interfaces.new
auto vmbr1 iface vmbr1 inet static address 10.10.10.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0post-up echo 1 > /proc/sys/net/ipv4/ip_forwardpost-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADEpost-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
Объясняю, что мы сделали:
- Разрешили форвард пакетов между сетевыми интерфейсами. Без этого гипервизор не сможет работать в роли шлюза.
- Добавили правила iptables для настройки NAT.
Сохраняем файл и перезагружаем сервер. В настройках сети виртуальных машин указываете интерфейс vmbr1, а в самой системе виртуалки вручную прописываете сетевые настройки, где адрес шлюза равен адресу интерфейса vmbr1 — 10.10.10.1, а ip адрес самой машины будет в подсети 10.10.10.0/24. Все виртуальные машины, у которых установлен бридж vmbr1 будут видеть друг друга.
Если вам не хочется на каждой ВМ вручную прописывать IP, можно настроить dhcp сервер либо на одной из виртуалок, либо на самом гипервизоре. Главное назначить ему нужный интерфейс — vmbr1. Настройка dhcp сервера выходит за рамки этой статьи, не буду на этом останавливаться. Для общего использования достаточно того, что я уже указал.
Routed режим сети
Последний вариант, который я иногда использую. В качестве шлюза в интернет для локальных машин, а если необходимо и офиса, выступает виртуальная машина. Этот режим ничем особо не отличается от режима NAT, кроме того, что сам нат на гипервизоре не нужен, так как натить трафик будет шлюз на виртуальной машине. Нам нужны будут 2 бриджа: один для передачи сети провайдера в виртуальную машину-шлюз, второй для сети виртуальных машин. Настройка может немного отличаться, в зависимости от того, что вы хотите получить. Тут могут быть 2 варианта:
- У вас гипервизор с 1 физической сетевой картой, в которую воткнут шнурок с интернетом от провайдера. Вся ваша инфраструктура виртуальная, доступ только через интернет. Например, вы арендуете выделенный сервер где-то и используете для различных целей.
- На вашем физическом сервере 2 и более сетевых карт. В первую приходит интернет от провайдера, вторая смотрит в локальную сеть. На гипервизоре виртуальные машины используются пользователями из локальной сети и находятся с ними в едином адресном пространстве.
В обоих случаях есть еще варианты настройки в зависимости от количества ip адресов, которые вам выдает провайдер. Если у вас только 1 внешний IP адрес, вы должны его пробросить в виртуальный шлюз. Только он будет иметь доступ в интернет. Для этого вы должны создать бридж вместе с сетевой картой, в которую приходит интернет, но при этом сам бридж не должен иметь IP адреса. Вот пример, как это должно выглядеть в первом варианте:
iface eth0 inet manual auto vmbr0 iface vmbr0 inet manual bridge_ports eth0 bridge_stp off bridge_fd 0 auto vmbr1 iface vmbr1 inet static address 10.0.0.1 netmask 255.255.255.0 gateway 10.0.0.2 bridge_ports none bridge_stp off bridge_fd 0
В eth0 входит провод от провайдера. Этот интерфейс включен в vmbr0 и ему не назначен ip адрес. Второй бридж vmbr1 имеет виртуальный ip адрес и создан для локальной сети виртуальных машин. Дальше вы создаете виртуальную машину для шлюза и добавляете ему оба бриджа — vmbr0 и vmbr1. На первом настраиваете ip в соответствии с настройками провайдера, на втором в данном случае указываете статический ip адрес 10.0.0.2, который будет являться шлюзом для всех виртуальных машин и самого гипервизора в том числе. Это отражено в параметре gateway в свойствах vmbr1. Потом настраиваете виртуальный шлюз и все будет работать.
Виртуальному шлюзу нужно не забыть поставить автозапуск при старте гипервизора, чтобы можно было перезагружать гипервизор удаленно и не терять доступ. Схема кажется немного запутанной, надо просто вникнуть и разобраться. На самом деле это удобно в том случае, если у вас один единственный сервер и на нем надо развернуть всю инфраструктуру. Шлюз замечательно живет на виртуальной машине, легко бэкапится и переносится. Настроить можно любой функционал. Единственный нюанс — настраивать нужно локально, тщательно проверить и только убедившись, что все корректно работает и перезагружается, ставить на постоянную работу.
Таким образом, у вас будет гипервизор, на нем шлюз в виде виртуальной машины. Все настройки сети выполняются на шлюзе, гипервизор трогать вообще не надо. Если у вас несколько гипервизоров в разных местах, вы их объединяете в единую сеть с помощью, к примеру, openvpn, который настраивается на самих шлюза. Виртуальные машины отдельно настраивать не надо. Они замечательно будут видеть друг друга через свои шлюзы на гипервизорах.
Если у вас две сетевые карты, то все то же самое. Первый бридж для интернета от провайдера без ip, второй бридж для виртуальных машин и локальной сети. Нужно только указать в нем bridge_ports eth1, если eth1 используется для физического подключения в локальную сеть.
Я часто использовал такую схему подключения, каких-то особых проблем и подводных камней тут нет. Если сервер под гипервизор надежный, то работает такое решение зачастую лучше, чем отдельный бюджетный роутер. А функционал в разы больше. Последнее время стараюсь под шлюз использовать Mikrotik там, где это возможно и оправданно.
Пример организации сети для виртуальных машин
Я сейчас покажу на конкретном примере как настроить сеть в proxmox по последнему описанному способу. Для доступа в интернет виртуальных машин будет использоваться шлюз в виде отдельной виртуальной машины. На гипервизоре ничего делать не нужно будет, кроме создания бриджа.
Итак, вот настройки сети на гипервизоре.

eth0 смотрит в интернет, vmbr0 бридж, в который включен интерфейс eth0. На обоих интерфейсах настроены внешние ip адреса провайдера, но это не обязательно. Их может и не быть. Тут просто у сервера 8 внешних ip, хватает для всех. vmbr1 полностью виртуальный бридж для организации сети виртуальных машин.
Далее создаем виртуальную машину под шлюз. Добавляем ей оба бриджа.

Диска, как видите, хватит и 10 гб для шлюза. Он уже пару лет так работает. Теперь смотрим на настройки сети у этой виртуалки.
auto ens18 iface ens18 inet static address 5.79.111.222 netmask 255.255.255.224 gateway 5.79.111.1 dns-nameservers 1.1.1.1 8.8.4.4 post-up iptables-restore < /etc/iptables.rules auto ens19 iface ens19 inet static address 10.10.11.1 netmask 255.255.255.0
Ens18 соответствует vmbr0, а ens19 — vmbr1. На ens18 настроен внешний ip и шлюз провайдера, который выделил этот ip адрес и выдал сетевые настройки. Настраиваем на этой виртуальной машине шлюз так, как нам надо — iptables, dns, dhcp и т.д. Далее этот шлюз указываем в качестве default gateway для остальных виртуальных машин гипервизора.
Вот пример настроек сети с одной из виртуальных машин этого гипервизора.
auto eth0 iface eth0 inet static address 10.10.11.17 netmask 255.255.255.0 gateway 10.10.11.1
В данном случае eth0 это бридж vmbr1 гипервизора. Виртуальная машина подключена только к виртуальной сети гипервизра и имеет выход в интернет через шлюза, настроенный выше. Все доступы к виртуальной машине, проброс портов и т.д. настраивается на шлюзе. Если таких гипервизоров много, то они через vpn на шлюзах объединяются.
Такой подход удобен тем, что не надо вообще трогать гипервизор. Все настройки сети (а они могут быть сложными и их может быть много) хранятся на маленьком шлюзе, который удобно бэкапить и разворачивать. В случае необходимости, из бэкапов быстро поднимается вся инфраструктура на чистом гипервизоре.
Если кому-то не понятна описанная схема, задавайте вопросы в комментариях. Я в таком режиме эксплуатирую гипервизоры уже давно. Мне это кажется удобным. Если у вас есть предложения, как можно организовать сеть виртуальных машин в proxmox более удобно, делитесь соображениями.
Базовая настройка proxmox
You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.

У нас нет платной подписки, поэтому нужно удалить из списка репозиториев платный. Для этого открываем консоль сервера и закомментируем репозиторий:
# mcedit /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
Дальше видим главную страницу управления гипервизором proxmox 6.

Установка Qemu Guest Agent на Windows
Для того, чтобы корректно работал Guest Agent на Windows, необходимо его установить отдельно. Он находит в iso образе virtio в корне диска, в папке guest-agent. Для x64 архитектуры установочный файл будет называться qemu-ga-x86_64.msi. Просто запустите установку и дождитесь окончания. Больше ничего делать не надо, агент автоматически установится и запустится.
Если всё прошло успешно, то вы сразу же в веб интерфейсе Proxmox увидите ip адреса на сетевых интерфейсах Windows.
Подготовка к установке
Для того, чтобы получить хорошее быстродействие операционной системы Windows на хосте Proxmox, мы установим Windows VirtIO Drivers во время установки VM.
- Создайте новую виртуальную машину, выберите тип «Microsoft Windows 10/2016/2019» и активируйте функцию «Qemu Agent» на вкладке System. Далее укажите свой iso образ в качестве источника установки.
- В качестве Bus/Device для виртуального диска укажите SCSI, контроллер должен быть VirtIO SCSI. Можете указать опцию кэширования Write back. Это увеличит быстродействие, но есть некоторые риски потери данных. Подробно про варианты кэширования я писал отдельно. Укажите параметр Discard для более эффективного использования места на диске. Этот параметр работает примерно так же, как технология TRIM в SSD дисках. Подчищает реально удаленные данные с диска, уменьшая занимаемое место.
- Настройки памяти и процессора укажите в зависимости от потребностей виртуальной машины. Модель сетевой карты укажите VirtIO (paravirtualized).
- Для того, чтобы во время установки системы использовать драйверы virtio, загрузите iso образ с ними. Добавьте новый CD-ROM к VM и подключите этот образ.
- Теперь у вас всё готово для установки системы Windows.




Драйвера и Службы
Чтобы установить все недостающие драйвера для корректной работы Windows на Proxmox, запустите virtio-win-gt-x64.msi в корне диска virtio. Можете убрать установку тех драйверов и служб, что вы точно не будете использовать. Например, Qxl и Spice. После этого не только ip адреса, но и использования оперативной памяти должны корректно отображаться в веб интерфейсе.
Рекомендуется посмотреть менеджер устройств, чтобы убедиться в том, что там нет неопределённого оборудования. Если все драйверы установились корректно, то всё оборудование будет с драйверами и определено. Если это не так, то попробуйте установить драйвер устройства вручную. Для этого укажите в качестве источника драйвера виртуальный диск с virtio.iso и обязательно укажите использовать для поиска драйвера подпапки. Если драйвер будет найдет, то выберите его и установите, подтвердив, что доверяете установке драйверов от указанного поставщика.



Часто задаваемые вопросы по теме статьи (FAQ)
Как можно делать инкрементные бэкапы виртуальных машин в Proxmox?
Проблема инкрементных бэкапов в proxmox очень актуальна. Универсального решения, к сожалению, нет. На текущий момент инкрементные бэкапы возможны только на уровне хранилища для виртуальных машин, если оно это поддерживает. К примеру, с помощью zfs это можно организовать через механизм снепшотов. Какого-то аналога для бэкапов, типа Veeam, для Proxmox не существует.
Есть ли разница, разворачивать Proxmox на Debian либо через официальный ISO образ?
Принципиальной разницы нет. На выходе будет одна и та же система. Другое дело, что установив сначала Debian, у вас возникает больше возможностей для преднастройки дисковой подсистемы. К примеру, вы можете установить все на массив mdadm. Штатный установщик из ISO образа не дает такой возможности.
Чтло лучше использовать — виртуальные машины или контейнеры?
Однозначного ответа на этот вопрос нет. Все зависит от решаемых задач. Контейнеры позволяют ускорить разворачивание и бэкап систем. Снижают потребление ресурсов за счет использования общего ядра с хостовой системой. Но это накладывает и ограничения. Если вам нужно изменить параметры ядра, то придется это делать для всего гипервизора и всех систем, работающих на его ядре. Так что тут рекомендация может быть такая — если вас устраивает функционал и ограничения контейнеров, используйте их. В остальных случаях — виртуальные машины.
Есть ли какая-то принципиальная разница в чистом гипервизоре KVM по сравнению с Proxmox?
Принципиальной разницы нет. По сути Proxmox — это система управления гипервизором на базе KVM. Виртуальные машины, как настройки, так и сами диски с данными, без проблем переносятся на любой другой гипервизор на базе KVM. Для этого не нужна ни конвертация данных, ни преобразование настроек.
Можно ли в виртуальные машины Proxmox пробрасывать внешние IP адреса?
Да, в этом нет никаких проблем. Просто делаете бридж с интерфейсом гипервизора, на который приходят эти ip адреса и добавляете интерфейсы из этого бриджа в виртуальные машины. А на них настраиваете внешние IP адреса.
Можно ли в Proxmox пробросить USB в виртуальную машину? Например, для подключения токена или лицензионного ключа.
Да, то можно сделать. Гипервизор KVM, на базе которого построен Proxmox, давно поддерживает возможность проброса USB портов в виртуальные машины.
Создание и настройка виртуальных машин
В настройке виртуальных машин в proxmox нет ничего сложного и необычного. Я не буду по шагам рассказывать, как это сделать. Если вы дошли до этого пункта, преодолев все остальные, разобраться не составит труда. Обращаю внимание только на несколько ключевых моментов.
Чтобы установить виртуальную машину, нужно использовать iso образ. Его надо как-то загрузить на proxmox. Сделать это не сложно, нужно только понимать, что загрузить образ можно только на тот storage, который поддерживает такую возможность. Сторейджи LVM не позволяют загружать образы, для этого нужно использовать, например, storage в виде локальной директории. По умолчанию, один такой есть в системе. В него и загрузим образ виртуальной машины. Для этого открываем нужный storage и выбираем вкладку . Жмем на Upload и выбираем нужный образ.

На этапе загрузки iso образа я иногда сталкиваюсь с проблемой. Образ больше 4Гб не загружается. Проверял несколько раз, в том числе в различных инсталляциях на разное железо. Ошибка время от времени проявляется. Если у вас образы больше, чем 4 Гб, ищите альтернативные способы загрузки в хранилище, благо это не составляет большого труда.
Альтернативный способ загрузки iso образа в proxmox — использовать scp или напрямую через wget качать образ из интернета. Положить его нужно в директорию /var/lib/vz/template/iso, если используете дефолтный storage, добавленный по-умолчанию после установки.
Дожидаемся окончания загрузки. Теперь этот образ можно использовать для установки ОС на виртуальную машину. Создание виртуальной машины выглядит следующим образом. Нажимаем на кнопку

Заполняем все необходимые поля и стартуем машину. Некоторое время уйдет на создание машины (от нескольких секунд до 1-2 минут). В нижней части экрана ведется лог событий, там увидите информацию об окончании создания:

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

Виртуальная машина должна быть запущена, чтобы увидеть консоль. Рассказывать про настройку виртуальных машин особенно нечего. Все настройки видны в свойствах машины, выставляйте то, что вам необходимо и пользуйтесь. Отдельно рассмотрю вопрос автозапуска.
Автозапуск виртуальной машины
По-умолчанию созданные виртуальные машины не запускаются со стартом гипервизора, это нужно делать вручную. Но есть настройка, которая отвечает за автозагрузку виртуальных машин, а так же за порядок их загрузки. Вот список параметров, которыми мы можем управлять:
Рассмотрим простой пример. У нас есть виртуальная машина, к примеру Windows Server с ролью Active Directory на борту. Все остальные серверы завязаны на корректную работу службы каталогов. Нам надо сначала запустить контроллер домена, а затем все остальные серверы за ним. Установите параметр Start at boot в положение Yes для всех виртуальных машин, которые хотите запускать автоматически. Укажите Start/Shutdown order на контроллере домена 1, Startup delay 240, Shutdown timeout 120. С такими настройками при запуске гипервизора первой стартует виртуальная машина с КД, через 240 секунд все остальные в соответствии с их настройками.

Установка proxmox на mdadm raid 1 в debian 10
Первым делом нам нужно установить чистую систему Debian. На данный момент это версия 10 Buster. У меня есть отдельная статья по установке Debian. Там подробно описан процесс установки системы на софтовый рейд mdadm. В конце я на примере показал, что делать, когда диск выходит из строя, как его менять. Я на практическом примере продемонстрировал отказоустойчивость такого решения, поэтому не буду здесь подробно на этом останавливаться.
Скачивайте дистрибутив последней версии Debian. Взять его можно, к примеру, на Yandex.Mirror, конкретно здесь. Для установки подойдет образ CD-1 либо netinst. Начинайте стандартную установку и доходите до пункта настройки жесткого диска. Я буду использовать консольное отображение, не графическое. Мне так удобнее. Принципиальных отличий нет, можете делать по аналогии, если начали установку в графическом режиме. Когда дело дойдет до настройки диска, выбирайте вариант ручной разметки.

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

Если есть какие-то разделы, то удалите их все, чтобы были чистые диски. Для написания статьи я использую виртуальную тестовую среду, диски выделены небольшого объема. Для учебных целей этого достаточно. Я разобью диски следующим образом:
Создаем в инсталляторе указанные разделы на обоих дисках. Не буду расписывать по шагам как их сделать, надеюсь сами разберетесь, это не сложно. Должна получиться такая картина:

Параметры первого раздела на 500 Мб:

Параметры второго раздела на 10 Гб:

Оба раздела должны быть Primary.
Теперь создадим 2 отдельных raid массива на 500 мб и 10 гб. Выбираем раздел Configure Software RAID, дальше Create MD device, потом RAID1, 2 диска в массиве, и в завершении выбираем 2 наших раздела по 500 мб:

То же самое делаем с разделами по 10гб — объединяем их в рейд:

Как закончите, жмете Finish. У вас должна получиться такая картина:

Теперь нужно создать файловую систему на рейд массивах. Сделаем на первом раздел /boot ext2, а на втором корень системы — / и файловую систему ext4. В итоге должно получиться вот так:

Применяем изменения и продолжаем стандартную установку. У вас будет предупреждение о том, что не указан раздел для swap.

Игнорируйте его, потом подключим swap отдельно в виде файла. В процессе установки вам будет предложено выбрать набор пакетов. Не ставьте ничего лишнего, только ssh сервер и системные утилиты.

В конце будет предложено установить загрузчик на один из дисков. Можете выбрать любой диск, позже мы установим загрузчик на второй диск и убедимся, что он будет установлен на обоих дисках. Это нужно для того, чтобы система могла загружаться с любого из дисков, в случае выхода одного из строя.
Теперь установим grub на оба жестких диска. Подключаемся к серверу по ssh и выполняем команду:
# dpkg-reconfigure grub-pc
На все вопросы оставляете дефолтные значения, в конце выбираете оба жестких диска для установки загрузчика:

На всякий случай проверим как встала система на жесткие диски:
# df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 17M 782M 3% /run /dev/md1 9.1G 1020M 7.7G 12% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/md0 460M 47M 390M 11% /boot tmpfs 798M 0 798M 0% /run/user/0
# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb1[1] sda1[0] 486400 blocks super 1.2 [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 9756672 blocks super 1.2 [2/2] [UU]
Все в порядке, получилось так, как и задумывали. На данном этапе можно повынимать жесткие диски и проверить как система работает без одного из них, научиться заменять сбойный диск. Команды и рекомендации не буду приводить, чтобы не раздувать статью. Мануалов по работе с mdadm в интернете полно. К тому же, я об этом рассказываю в статье про установку debian, ссылку на которую уже давал ранее. Рекомендую сразу настроить мониторинг mdadm в zabbix.
Переходим непосредственно к установке proxmox. Для этого редактируем файл /etc/hosts и приводим его строго к следующему виду. Если что-то будет не так, как указано у меня, получите ошибку установки с очень большой долей вероятности. Я на этом моменте прилично застрял, когда разбирался.
# mcedit /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.155.104 proxmox6.local proxmox6 pvelocalhost
Проверить правильность настроек можно командой:
# hostname --ip-address 192.168.155.104
В ответ должны получить свой ip адрес.
Добавляем в список репозиториев репу proxmox и стандартные репозитории debian. Я буду использовать зеркало яндекса, все остальное можно закомментировать:
# mcedit /etc/apt/sources.list
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
Если не подходит репозиторий яндекса (заблокирован), можно воспользоваться любым другим, например http://mirror.corbina.net/debian/
Добавляем цифровую подпись 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
Если раньше не обновили систему, то обновитесь и на всякий случай перезагрузите сервер после этого:
# apt update && apt full-upgrade # reboot
Теперь устанавливаем саму систему виртуализации proxmox:
# apt install proxmox-ve postfix open-iscsi
Если получите ошибку во время установки:
dpkg: error processing package proxmox-ve (--configure): dependency problems - leaving unconfigured Errors were encountered while processing: pve-cluster libpve-access-control librados2-perl pve-firewall pve-ha-manager qemu-server pve-container pve-manager proxmox-ve

Проверяйте файл hosts. У меня там лишние строки были, кроме тех, что я указал ранее. Когда исправил, установка прошла без ошибок. После окончания установки перезагрузите сервер, чтобы загрузилось новое ядро. Если все в порядке, то увидите окно приветствия на мониторе сервера:

Открывайте браузер по указанному адресу и заходите в web интерфейс. Напоминаю, что web порт proxmox по-умолчанию — 8006. Не забывайте его указывать в строке адреса в браузере. Вы должны увидеть предупреждение браузера насчет сертификата. Так и должно быть, по-умолчанию используется самоподписанный сертификат.
Если у вас нет своего железа для установки proxmox, можно арендовать недорогой сервер у Selectel. Линейка выделенных севреров Chipcore стартует с абонентки в 1500 р. в месяц. Через панель управления во время заказа сервера можно сразу выбрать proxmox, установленный на софтовый рейд mdadm. Самим ничего делать не нужно будет. Сразу получите отказоустойчивый настроенный гипервизор.

Создание виртуальной машины для MacOS
Теперь идём в веб интерфейс proxmox и создаем виртуальную машину для MacOS. Я ей выделю 4 ядра и 8 гигабайт оперативной памяти. Количество ядер не должно быть 6. Я лично пробовал с 4 или 8 ядрами. Если сделать 6, ничего не получится. Динамическую память тоже обязательно выключаем.
Не буду расписывать все шаги, а просто покажу картинки настроек. Они будут предварительные. Затем завершим подготовку виртуальной машины в консоли. А пока создаём через веб интерфейс.







После создания открываем список оборудования VM и добавляем туда iso образ Catalina-installer.iso.

После создания, виртуальную машину не запускаем. Перемещаемся в консоль гипервизора и открываем конфиг виртуальной машины в директории /etc/pve/qemu-server. Имя конфиг виртуальной машины будет равен её номеру. В моем случае это 135.conf. Нам нужно привести конфиг к следующему виду. Я выделю то, что я добавил и изменил.
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtscballoon: 0 bios: ovmf boot: order=ide2cores: 4 cpu: Penryn efidisk0: local-500G:135/vm-135-disk-0.qcow2,size=128K ide0: local-500G:iso/Catalina-installer.iso,cache=unsafe,size=2096528K ide2: local-500G:iso/OpenCore-v13.iso,cache=unsafe,size=150Mmachine: q35 memory: 8196 name: macos-test net0: vmxnet3=26:06:41:79:8E:7A,bridge=vmbr0 numa: 0 ostype: other sata0: raid1:vm-135-disk-0,cache=unsafe,discard=on,size=128G,ssd=1 scsihw: virtio-scsi-pci smbios1: uuid=ed285c88-e9b7-41e9-b8cc-c18467097fb1 sockets: 1 vga: vmware vmgenid: 1d33ec8f-921c-41eb-9577-6b92088d2902
В веб интерфейсе настройки должны выглядеть примерно вот так:

Если у вас процессор не Intel, а AMD, параметры процессора следует использовать другие:
-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check
В консоли гипервизора делаем еще одну настройку, меняя параметры модуля ядра kvm.
echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
Активируем эту настройку без перезагрузки:
modprobe kvm options ignore_msrs=Y
У нас всё готово к тому, чтобы начать установку MacOS на виртуальную машину Proxmox.
Хранилище для виртуальных машин
После чистой установки proxmox на debian, автоматически создается хранилище local, которое располагается на одном разделе с самой операционной системой по адресу /var/lib/vz. Оно уже предназначено для хранения образов дисков, виртуальных машин и контейнеров.

Для удобства лучше этот раздел не занимать, оставить необходимое пространство для нормальной работы ОС, а для виртуальных машин создать отдельное хранилище в незанятой области жестких дисков, которую мы оставили во время установки, либо на отдельном жестком диске или рейд массиве. Сначала рассмотрим вариант создания хранилища на неразмеченной области диска.
Мы создадим еще один raid 1 mdadm из незанятого места на дисках. Для этого нам нужно будет там создать разделы и объединить их в программный рейд с помощью mdadm.
Обращаю сразу внимание, что это тестовая среда, в реальности так диски разбивать не надо. Оптимально сделать raid 1 из двух отдельных под систему, заняв 30-50 гигов, остальное место на этом рейде отдать под iso образы и возможно бэкапы. Для виртуальных машин подключить отдельные диски и собрать из них рейд. Его уровень будет зависеть от количества дисков. Оптимально 4 штуки для raid 10
Смотрим имена дисков в нашей системе:
# ls -l /dev | grep sd brw-rw---- 1 root disk 8, 0 Aug 9 15:26 sda brw-rw---- 1 root disk 8, 1 Aug 9 15:26 sda1 brw-rw---- 1 root disk 8, 2 Aug 9 15:26 sda2 brw-rw---- 1 root disk 8, 16 Aug 9 15:26 sdb brw-rw---- 1 root disk 8, 17 Aug 9 15:26 sdb1 brw-rw---- 1 root disk 8, 18 Aug 9 15:26 sdb2
У меня 2 диска sda и sdb. На них уже есть по 2 раздела, которые мы сделали во время установки системы. Создадим на каждом из них еще по одному разделу из всего оставшегося свободного места.
# cfdisk /dev/sda

Выбираем свободное пространство, создаем на нем раздел и указываем тип — Linux raid autodetect.

То же самое делаем со вторым диском. После этих действий у вас должны появиться новые разделы /dev/sda3 и /dev/sdb3. Чтобы это произошло, нужно либо перезагрузить сервер, либо перечитать таблицу разделов командой:
# partprobe -s
Если команда не найдена, установите parted:
# apt install parted
Проверим новые разделы:
# ls -l /dev | grep sd brw-rw---- 1 root disk 8, 0 Aug 9 15:40 sda brw-rw---- 1 root disk 8, 1 Aug 9 15:40 sda1 brw-rw---- 1 root disk 8, 2 Aug 9 15:40 sda2 brw-rw---- 1 root disk 8, 3 Aug 9 15:40 sda3 brw-rw---- 1 root disk 8, 16 Aug 9 15:40 sdb brw-rw---- 1 root disk 8, 17 Aug 9 15:40 sdb1 brw-rw---- 1 root disk 8, 18 Aug 9 15:40 sdb2 brw-rw---- 1 root disk 8, 19 Aug 9 15:40 sdb3
Теперь объединим только что созданные разделы в raid1:
# mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sda3 /dev/sdb3
mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md2 started.
Проверим информацию о mdadm:
# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sdb3[1] sda3[0] 42140672 blocks super 1.2 [2/2] [UU] [=>...................] resync = 9.4% (4001792/42140672) finish=3.0min speed=210620K/sec md0 : active raid1 sdb1[1] sda1[0] 486400 blocks super 1.2 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 9756672 blocks super 1.2 [2/2] [UU]
Все в порядке, массив синхронизируется. Дождитесь окончания синхронизации и продолжайте. Хотя это не обязательно, массив и сейчас уже готов к работе, он он будет сильно тормозить во время ребилда. Добавим информацию о новом массиве в конфигурационный файл /etc/mdadm/mdadm.conf, иначе после перезагрузки массив не будет виден в системе:
# mdadm --examine --scan | grep 'md/2' >> /etc/mdadm/mdadm.conf
Конфигурационный файл примет такой вид:
# cat /etc/mdadm/mdadm.conf
# mdadm.conf # mdadm.conf # # !NB! Run update-initramfs -u after updating this file. # !NB! This will ensure that initramfs has an uptodate copy. # # Please refer to mdadm.conf(5) for information about this file. # # by default (built-in), scan all partitions (/proc/partitions) and all # containers for MD superblocks. alternatively, specify devices to scan, using # wildcards if desired. #DEVICE partitions containers # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays ARRAY /dev/md/0 metadata=1.2 UUID=a214eb8b:c3ff0ab2:13197140:25a25924 name=proxmox6:0 ARRAY /dev/md/1 metadata=1.2 UUID=1d5a52f3:7caa923c:b8f13836:8a7bcf54 name=proxmox6:1 # This configuration was auto-generated on Fri, 09 Aug 2019 13:59:40 +0300 by mkconfARRAY /dev/md/2 metadata=1.2 UUID=30be9c4e:6a351eca:6d66228d:ee695c19 name=proxmox6:2
Дальше у нас 2 пути:
- Создать файловую систему на md2, смонтировать раздел в систему и создать storage в виде обычной директории, такой же, как по-умолчанию.
- Создать том LVM и на его основе storage.
Традиционно используют второй способ, так как он позволяет потом использовать в качестве дисков виртуальных машин lvm разделы. С ними удобно работать, плюс, теоретически, блочное устройство типа lvm должно работать чуть быстрее. Так что пойдем по второму пути. Выполним инициализацию раздела для работы с LVM:
# pvcreate /dev/md2 File descriptor 7 (pipe:[31619]) leaked on pvcreate invocation. Parent PID 2856: bash Physical volume "/dev/md2" successfully created.
Создадим группу томов:
# vgcreate raid1-md2 /dev/md2 File descriptor 7 (pipe:[31619]) leaked on vgcreate invocation. Parent PID 2856: bash Volume group "raid1-md2" successfully created
Теперь идем в web интерфейс, выбираем Datacenter, вкладку , жмем Add и выбираем LVM:

Указываем параметры только что созданной группы томов.

Все готово. Новый storage добавили. Его можно использовать для хранения дисков виртуальных машин.
Добавление и подключение диска
Рассмотрим вариант добавления нового диска и использование его в качестве хранилища виртуальных машин. По большому счету, это то же самое, что мы проделали ранее с новым разделом, только теперь все указанные выше операции нужно будет проделать над новым диском. Быстро пройдем по этапам.
Я подключил новый жесткий диск, проверим его имя в системе:
# ls -l /dev | grep sd
brw-rw---- 1 root disk 8, 0 Aug 9 15:40 sda brw-rw---- 1 root disk 8, 1 Aug 9 15:40 sda1 brw-rw---- 1 root disk 8, 2 Aug 9 15:40 sda2 brw-rw---- 1 root disk 8, 3 Aug 9 15:40 sda3 brw-rw---- 1 root disk 8, 16 Aug 9 15:40 sdb brw-rw---- 1 root disk 8, 17 Aug 9 15:40 sdb1 brw-rw---- 1 root disk 8, 18 Aug 9 15:40 sdb2 brw-rw---- 1 root disk 8, 19 Aug 9 15:40 sdb3 brw-rw---- 1 root disk 8, 32 Aug 9 15:40 sdc
Можно не создавать на диске раздел, а сразу его инициализировать для работы в lvm и создать группу томов:
# pvcreate /dev/sdc # vgcreate disk-sdc /dev/sdc
Идем в веб интерфейс и создаем новый storage:

Если у вас будет не одиночный диск, а несколько, то перед этим создайте рейд массив из них и так же поверх накатывайте lvm и добавляйте новый storage. На этом настройку локальных хранилищ завершаем. Все основные действия мы выполнили, можно начинать работать с системой — создавать виртуальные машины.
Хранилище по NFS
Приведу простой пример подключения хранилища по NFS. Мне оно в будущем понадобится для организации бэкапа виртуальных машин. Об этом я расскажу позже. Сейчас только добавим новое хранилище. Сделать это очень просто. У меня уже есть настроенный сервер NFS. Описание его настройки выходит за рамки материала, поэтому будем считать, что сервер у вас есть. Идем в раздел Storage и добавляем новое хранилище NFS:

Я это хранилище буду использовать только для iso образов и backup’ов, поэтому выставляю соответствующие настройки.

Обращаю внимание, что после указания адреса сервера, список доступных каталогов для экспорта будет автоматически запрошен с сервера. Так что нет необходимости указывать путь вручную, можно выбрать из выпадающего списка.
VirtIO drivers
Make it really easy: Build your ISO with drivers already included:
Можно достаточно просто подготовить свой образ операционной системы Windows с интегрированными VirtIO драйверами. Для этого можно можно воспользоваться отдельной статьёй — Windows guests — build ISOs including VirtIO drivers.
Загрузить свежую версию VirtIO drivers можно по ссылке — https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/.
Как быстро развернуть гипервизор Proxmox VE
Установка чаще всего не вызывает никаких вопросов. Скачиваем актуальную версию образа с официального сайта и записываем его на любой внешний носитель с помощью утилиты Win32DiskImager (в Linux используется команда dd), после чего загружаем сервер непосредственно с этого носителя. Наши клиенты, арендующие у нас выделенные серверы, могут воспользоваться двумя еще более простыми путями – просто смонтировав нужный образ непосредственно из KVM-консоли, либо используя наш PXE-сервер.
Программа установки имеет графический интерфейс и задаст всего лишь несколько вопросов.
- Выбираем диск, на который будет выполнена установка. В разделе Options можно также задать дополнительные параметры разметки.

- Указываем региональные настройки.

- Указываем пароль, который будет использоваться для авторизации суперпользователя root и E-mail адрес администратора.

- Указываем сетевые настройки. FQDN обозначает полностью определенное имя домена, например, node01.yourcompany.com.

- После завершения установки, сервер можно отправить в перезагрузку с помощью кнопки Reboot.

Веб-интерфейс управления станет доступен по адресу
https://IP_адрес_сервера:8006
Как это устроено
Когда речь идет о виртуализации, многим начинающим специалистам сложно разобраться в терминологии, поэтому поясним несколько базовых понятий:
- Гипервизор – специальное программное обеспечение, которое позволяет создавать виртуальные машины и управлять ими;
- Виртуальная машина (далее VM) – это система, представляющая собой логический сервер внутри физического со своим набором характеристик, накопителями и операционной системой;
- Хост виртуализации — физический сервер с запущенным на нем гипервизором.
Для того чтобы сервер мог работать полноценным хостом виртуализации, его процессор должен поддерживать одну из двух технологий – либо Intel® VT, либо AMD-V™. Обе технологии выполняют важнейшую задачу — предоставление аппаратных ресурсов сервера виртуальным машинам.
Ключевой особенностью является то, что любые действия виртуальных машин исполняются напрямую на уровне оборудования. При этом они друг от друга изолированы, что достаточно легко позволяет управлять ими по отдельности. Сам же гипервизор играет роль контролирующего органа, распределяя ресурсы, роли и приоритеты между ними. Также гипервизор занимается эмуляцией той части аппаратного обеспечения, которая необходима для корректной работы операционной системы.
Внедрение виртуализации дает возможность иметь в наличии несколько запущенных копий одного сервера. Критический сбой или ошибка, в процессе внесения изменений в такую копию, никак не повлияет на работу текущего сервиса или приложения. При этом также снимаются две основные проблемы – масштабирование и возможность держать «зоопарк» разных операционных систем на одном оборудовании. Это идеальная возможность совмещения самых разных сервисов без необходимости приобретения отдельного оборудования для каждого из них.
Виртуализация повышает отказоустойчивость сервисов и развернутых приложений. Даже если физический сервер вышел из строя и его необходимо заменить на другой, то вся виртуальная инфраструктура останется полностью работоспособной, при условии сохранности дисковых носителей. При этом физический сервер может быть вообще другого производителя. Это особенно актуально для компаний, которые используют серверы, производство которых прекращено и потребуется осуществить переход на другие модели.
Теперь перечислим самые популярные гипервизоры, существующие на текущий день:
- VMware ESXi
- Microsoft Hyper-V
- Open Virtualization Alliance KVM
- Oracle VM VirtualBox
Они все достаточно универсальны, однако, у каждого из них имеются определенные особенности, которые следует всегда учитывать на этапе выбора: стоимость развёртывания/обслуживания и технические характеристики. Стоимость коммерческих лицензий VMware и Hyper-V весьма высока, а в случае возникновения сбоев, решить проблему с этими системами собственными силами очень непросто.
KVM же напротив, полностью бесплатен и достаточно прост в работе, особенно в составе готового решения на базе Debian Linux под названием Proxmox Virtual Environment. Именно эту систему мы можем порекомендовать для первоначального знакомства с миром виртуальной инфраструктуры.
Запуск установки Windows в Proxmox
- После запуска установки системы, подключитесь к консоли виртуальной машины.
- Дойдите до этапа установки, где нужно выбрать жёсткий диск. Скорее всего список доступных дисков будет пуст.
- Нажмите «Загрузить драйвер» для того, чтобы установить драйвер жесткого диска и сетевой карты.
- Для установки драйвер диска перейдите в директорию vioscsi\w10\amd64 и подтвердите выбор. Выберите «Red Hat VirtIO SCSI pass-through controller«. Ваш виртуальный жёсткий диск должен появиться в списке для установки на него системы.
- Повторите то же самое для выбора драйвера сетевой карты. Он находится в директории NetKVM\w10\amd64. Выберите «Redhat VirtIO Ethernet Adapter«.
- Драйвер выделения динамической оперативной памяти находится в Balloon\w10\amd64. Перейдите в эту директорию и выберите драйвер «VirtIO Balloon Driver«.
- Загрузка этих трёх драйверов позволит установщику Windows определить всё оборудование, так что можно продолжить установку системы в обычном режиме.
Подробно описанную процедуру можно лицезреть на видео на примере установки Windows Server 2016 на ProxMox. Установка Windows 10 или 11 будет проходить точно так же.




Подготовка установочного iso образа macos
Начнём с того, что подготовим 2 iso образа для установки macos:
- OpenCore.iso — качаем его из этого репозитория. Данный образ будет загрузочным. Он каким-то образом убеждает установщик самой системы, что работает на железе apple. Это его основная функция.
- Catalina-installer.iso — стандартный установщик macos. Его мы подготовим далее.
Для того, чтобы начать установку macos, нам нужно подготовить образ системы. Для этого копируем себе репозиторий — https://github.com/kholia/OSX-KVM.
# git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git
В корне проекта есть python скрипт fetch-macOS-v2.py. Запускаем его и выбираем установку Catalina.
# cd OSX-KVM # ./fetch-macOS-v2.py

Скрипт скачает базовый образ BaseSystem.dmg. Нам нужно будет его сконвертировать в iso.
# qemu-img convert BaseSystem.dmg -O raw Catalina-installer.iso
Оба образа — OpenCore.iso и Catalina-installer.iso копируем в репозиторий образов proxmox.
Возможности решения
виртуализациюдля чайников, то стоит упомянуть, что гипервизор играет роль «контроллера». Программа распределяет аппаратные ресурсы, приоритеты между VM, эмулирует необходимое с учетом стандартов, принятых в установленной операционной системе. Никаких ограничений по выбору операционной системы с Proxmox VEWindows 7/10, Linux и т.д.).
Особенности виртуальных машин:
- Критический сбой, ошибки в работе одной VM никак не влияют на остальные.
- Масштабирование осуществляется простым копированием виртуального сервера
- Поломка «железа» не влияет на сохранность системы, главное — иметь резервную копию.
- Одну и ту же VM легко развернуть на сервере любого производителя.
Последнее заметно упрощает задачу по модернизации оборудования ЦОД. Провайдер меняет любое «железо» на более современное без необходимости учитывать совместимость с ПО. За счет применения тех же дисковых массивов вроде RAID 5, Proxmox вообще не заметит замену одного или несколько накопителей. Виртуализация физических серверов работает бесшовно, чтобы обеспечить заявленную доступность уровня Tier 3 (не менее 99,9%).
Пользуются популярностью несколько гипервизоров: VMware ESXi, Microsoft Hyper-V, Oracle VM VirtualBox, Open Virtualization Alliance KVM. Каждый продукт имеет свои особенности и различную стоимость. При сравнении цена играет важную роль, здесь однозначно выигрывает KVM в составе готового решения на базе Debian Linux — это Proxmox Virtual Environment или Proxmox VE. Отчасти потому, что оно полностью бесплатно, да еще и имеет открытый исходный код.
Процедура установки продукта Proxmox обычно не вызывает вопросов. Инсталлятор работает через стандартный графический интерфейс, и пользователю остается лишь выбирать нужные настройки из выпадающих списков или вручную вносить наименования, пароли и т.д. Скачивать образ диска с новой версией программы рекомендуется с официальной страницы разработчика. Затем его или монтируют из консоли KVM, или развертывают на любой внешний диск.
- Заказать аренду выделенного сервера у провайдера.
- Смонтировать скачанный образ в качестве сменного диска.
- Выбрать диск, куда будет произведена установка продукта.
- В разделе Option задать дополнительные параметры (по необходимости).
- Внести региональные настройки, в нашем случае – Russia.
- Задать пароль для авторизации суперпользователя, указать email.
- Перезагрузить компьютер кликом на кнопку Reboot.
Если речь идет о развертывании системы из ISO-образа на базе Debian, а не инсталляции файлом Proxmox Debian Install, последний пункт обязателен. В любом случае лучше это сделать, чтобы исключить вероятные сбои из-за другого софта, который пользователь ставил в ту же сессию. Остается запустить Proxmoxнастройкой виртуальной машины. Адрес веб-интерфейса выглядит следующим образом:
Видео установки macOS
Мне очень сильно помогло видео на youtube на данную тему. Оно позволило быстро въехать в тему, чтобы понять этапы, по которым надо пройти.
https://youtube.com/watch?v=86XqF5dqjYc%3Ffeature%3Doembed
В видео не рассмотрен момент с получением osk key. Автор взял его со своего текущего mac. А что делать тем, у кого его нет? Я не сразу понял. В итоге нашёл информацию, что на последних версиях OpenCore ключ не имеет значения. Можно указать любой, что я и сделал. После этого всё получилось.

