Установка и настройка 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 :

Включение виртуализации для виртуальной машины в VMware ESX 6

Установка

Есть два варианта установки Proxmox VE — использовать готовый образ или установка на Debian. Мы рассмотрим оба.

Установка готового образа ISO

1. Переходим на страницу загрузки Proxmox официального сайта. Загружаем дистрибутив, например, Proxmox VE 6.1:

Загрузка дистрибутива Proxmox

2. Если установка выполняется на виртуальную машину, монтируем образ. Если нет — создаем установочную флешку, например, с помощью WinSetupFromUsb или загрузочный диск с помощью InfraRecorder .

3. Загружаем сервер с установочного ISO — мы увидим окно приветствия Proxmox — выбираем пункт меню Install Proxmox VE :

Welcome to Proxmox VE

4. Принимаем лицензионное соглашения, кликнув по I agree .

5. Выбираем диск, на который будет установлена система:

Выбираем диск, на который будет установлен Proxmox

* при необходимости, кликаем по Options и задаем настройки файловой системы и размера раздела.

6. Пишем страну, временную зону, язык раскладки клавиатуры по умолчанию:

Пишем страну, временную зону, язык раскладки клавиатуры по умолчанию

7. Вводим дважды пароль, который будет использоваться для пользователя root:

Новый пароль для root

8. Прописываем сетевые настройки:

Сетевые настройки Proxmox

* где:

  • 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:

nano /etc/hosts

… и добавляем:

192.168.1.55 proxmox.remontka.local proxmox

* где 192.168.1.55 — IP-адрес нашего сервера; proxmox — имя сервера; remontka.local — наш домен, если используется.

2. Добавляем репозитории, которые будем устанавливать для установки Proxmox PE и дополнительных компонентов:

nano /etc/apt/sources.list

deb http://mirror.yandex.ru/debian/ bookworm main non-free contrib
deb-src http://mirror.yandex.ru/debian/ bookworm main non-free contrib
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

* обратите внимание, что bookworm — кодовое название 12 версии Debian. Вы должны подставить свое значение:

  • Debian 12 — bookworm .
  • Debian 11 — bullseye .
  • Debian 10 — buster .
  • Debian 9 — stretch .

Чтобы мы могли работать с репозиторием 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

* где 6 — версия устанавливаемого Proxmox.

Обновляем список пакетов:

apt update

3. Устанавливаем Proxmox PE и компоненты:

apt install proxmox-ve open-iscsi

* где proxmox-ve — собственно, сам гипервизор; open-iscsi — iSCSI-клиент для подключения iSCSI-target-ов.

4. Перезагружаем сервер:

systemctl reboot

Проверка установки

В браузере открываем панель управления системой виртуализации по адресу https://<IP-адрес сервера>:8006 . В открывшемся окне выбираем язык, вводим логин и пароль от пользователя root:

Входим в панель управления Proxmox

Должно открыться окно управления.

Начальная настройка

Чтобы начать использовать Proxmox и создать первую виртуальную машину, внесем небольшие настройки и подготовим гипервизор к работе.

1. Загрузка образов

Кликаем по Датацентр — и дважды по storage :

Открываем хранилище Proxmox

* мы можем создать отдельное хранилище для образов ISO. Для этого переходим в раздел Датацентр Хранилище Создать Каталог .

Переходим в раздел Содержимое и кликаем по Загрузить :

Кликаем по Загрузить в Proxmox

В открывшемся окне выбираем ISO-образ системы, который будем устанавливать в качестве гостевой и кликаем по Загрузить . Ждем окончания копирования файла на сервер.

2. Создание сети для виртуальных машин

Мы рассмотрим примеры создания 2-х режимов сети — Bridge и NAT.

Независимо от способа установки Proxmox, необходимо подключиться к хосту по SSH и установить пакет ifupdown2 командой:

apt install ifupdown2

* ifupdown2 — утилита для конфигурации сетевого интерфейса (по сути, аналог ifupdown, написанный на языке Python).

… в противном случае, при попытке применить сетевые настройки мы получим ошибку you need ifupdown2 to reload networking (500) .

Bridge

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

Работать с режимом Bridge нужно очень осторожно. Любое неправильное действие и удаленный доступ к серверу будет потерян. Если работы ведутся на удаленном сервере, рекомендуется сначала потренироваться на какой-нибудь локальной машине.

Также стоит отметить, что при установке PVE из установочного ISO-образа, один Bridge уже будет создан.

Для создания бриджа в панели управления кликаем по нашему серверу Proxmox — переходим в раздел Система Сеть — обратите внимание, чтобы в системе не было bridge-интерфейсов:

Переход к созданию сетевого интерфейса в Proxmox

… иначе, создавать его не обязательно.

Открываем настройки сетевого интерфейса, через который будет работать наш мост и удаляем шлюз:

Удаляем шлюз из настроек сетевого адаптера

* если мы не сделаем этого, то при настройке Bridge мы получим ошибку Parameter verification failed. (400). gateway: Default gateway already exists on interface ‘ens160’ .

Нажимаем Создать и выбираем Linux Bridge :

Создание нового Bridge интерфейса

В открывшемся окне заполняем поля IPv4/CIDR , Шлюз (IPv4) , Порты сетевого моста :

Создание нового Bridge интерфейса

* в данном примере мы задаем IP-адрес, на котором будет работать Proxmox (чтобы ничего не перепутать, можно задать IP-адрес физического интерфейса, который будет задействован под Bridge); маска указывается в нотации CIDR и в нашем примере это 24 или 255.255.255.0; в качестве физического интерфейса наш bridge будет использовать ens160 .

… нажимаем Создать .

Кликаем по Apply Configuration , чтобы применить сетевые настройки:

Создание нового Bridge интерфейса

Подтверждаем действия.

NAT

Данный режим сети активно применяется в случае аренды сервера, где количество IP-адресов лимитировано. В данном случае, все виртуальные машины будут находисться за NAT, в качестве которого выступает сам Proxmox.

Сам интерфейс мы делаем из панели управления. Но чтобы виртуальные машины могли выходить в Интернет через сеть NAT, необходимо на самом хосте включить редирект и маскарадинг.

Создание нового bridge-интерфеса

Итак, кликаем по нашему серверу Proxmox — переходим в раздел Система Сеть — нажимаем Создать и выбираем Linux Bridge :

Создание нового Bridge интерфейса для NAT

Оставляем имя vmbr1 или пишем любое другое, прописываем IP-адрес с маской сети, в которой будут находиться серверы за NAT:

Настройки при создании Bridge интерфейса для NAT

Нажимаем Создать . Применяем настройки:

Применяем сетевые настройки

Сеть настроена.

Настройка ядра и брандмауэра

Подключаемся к серверу по SSH. Открываем на редактирование файл настройки ядра:

nano /etc/sysctl.d/99-sysctl.conf

… и добавляем разрешение на редирект:

net.ipv4.ip_forward=1

После применяем настройки:

sysctl -p /etc/sysctl.d/99-sysctl.conf

Добавляем правило в брандмауэр:

iptables -t nat -I POSTROUTING -s ‘192.168.122.0/24’ -o vmbr0 -j MASQUERADE

* в данном примере мы создали правило для маскарадинга всех пакетов из подсети 192.168.122.0/24 и для исходящего интерфейса vmbr0 . Обратите внимание, что если у нас будет другая подсеть и исходящий интерфейс для сети Интернет, то нужно будет задать другие значения.

Ставим утилиту для сохранения правил iptables:

apt install iptables-persistent

… и сохраняем правила в процессе установки или командой:

netfilter-persistent save

Наш NAT настроен.

Сеть между виртуалками

Данная сеть — частный случай NAT без выхода в Интернет. Мы должны создать бридж с отдельной подсетью без шлюза. При добавлении виртуальным машинам данного сетевого адаптера мы сможем настроить их взаимодействие по внутренней сети.

Создаем бридж, как делали это ранее:

Создание нового Bridge интерфейса для внутреннего трафика

Настраиваем новый интерфейс — задаем имя или оставляем тот, что предложит система, а также указываем IP-адрес:

Создание нового Bridge интерфейса для внутреннего трафика

Создаем интерфейс. Готово — при создании или редактировании виртуалок, мы можем указывать с качестве интерфейса созданный бридж (в данном примере, vmbr2) для изоляции их в отдельную подсеть 192.168.150.0/24.

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

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

В правой верхней части панели управления кликаем по Создать VM :

Кликаем по Создать VM

В открывшемся окне снизу сразу ставим галочку Расширенный :

Ставим галочку расширенный

Задаем имя виртуальной машине и ставим галочку Запуск при загрузке (если хотим, чтобы виртуалка запускалась автоматически с сервером PVE):

Задаем имя и включаем запуск виртуальной машины при запуске сервера PVE

* в данном примере мы задали имя FS . При желании, также можно изменить VM ID , но он проставляется автоматически и имеет правильное значение.

Выбираем загруженный нами ISO-образ, с которого будем ставить операционную систему, задаем тип гостевой операционной системы и ее версию:

Выбираем образ, с которого должна загрузиться виртуалка

* в данном примере мы будем устанавливать Linux Ubuntu. Среди списка операционных систем также доступны Microsoft Windows, Solaris и Other.

На вкладке Система можно оставить все значения по умолчанию:

Системные настройки можно не трогать

* в некоторых случаях, необходимо выбрать другую видеокарту (при установке систем с GUI), а также особый вариант БИОС.

Задаем размер жесткого диска:

Задаем размер для жесткого диска

* 16 Гб для Ubuntu достаточно, однако, для наших задач расчет должен быть индивидуальным для каждой создаваемой виртуальной машины.

Мы можем задать количество процессоров и ядер:

Задаем количество процессоров и ядер для ВМ

* в данном примере мы создаем виртуалку с 2 процессорами, каждый из который с 2 ядрами, итого, 4. Для ненагруженных систем можно оставить значение по умолчанию.

Выделяем память:

Укажем объем оперативной памяти

* наша Ubuntu будет работать с 2 Гб оперативной памяти.

Выбираем созданный нами бридж — либо для получения прямого адреса из сети, либо для NAT:

Выбираем сетевой адаптер, через который будет работать сеть виртуальной машины

* в данном примере, мы указали vmbr0 для подключения к сети напрямую.

Ставим галочку, чтобы виртуальная машина сразу запустилась после создания:

Разрешив запуск машины после ее создания

… и нажимаем Готово . Ждем окончания процесса и переходим к консоли:

Подключаемся к консоли сервера

Мы должны увидеть загрузку с ISO-образа.

Настройка виртуальной машины

После создания виртуальной машины нам может понадобиться ее изменить. Рассмотрим процесс настройки на примере изменения некоторых параметром, а также добавления диска и сетевого адаптера.

Полезные настройки

Для начала, переходим к виртуальной машине — Параметры :

Переходим к параметрам виртуальной машины

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

  • Имя — имя виртуальной машины.
  • Запуск при загрузке — для серверов данный параметр должен быть активирован.
  • Порядок загрузки — позволяет определить, с какого устройства должна запуститься виртуалка в первую очередь.

Для изменения параметра, просто кликаем по нему дважды, меняем значение и нажимаем OK .

Добавление дискового накопителя

Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Жесткий диск :

Добавляем жесткий диск

В открывшемся окне задаем размер диска и нажимаем OK .

Для увеличения размера имеющегося диска устанавливаем на него курсов и кликаем по Изменить размер диска :

Увеличиваем размер диска

В открывшемся окне задаем объем, на который нужно увеличить дисковое пространство.

Добавление сетевого адаптера

Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Сетевое устройство :

Добавляем сетевой адаптер

Как при создании ВМ, выбираем тип сетевого адаптера (бридж или нат) и нажимаем Добавить .

Установка гостевого агента

Обязательная процедура для повышения производительности и возможностей работы с виртуальной машиной. Настройка выполняется как на гипервизоре, так и в самой виртуальной машине. Рассмотрим пример установки агента на базе системы Linux.

В гипервизоре переходим в Параметры , находим пункт QEMU Guest Agent и кликаем по нему:

Кликаем по пункту QEMU Guest Agent

Ставим галочку Use QEMU Guest Agent и нажимаем OK :

Включаем гостевого агента для виртуальной машины

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

Теперь подключаемся к виртуальной машине и устанавливаем утилиту. В зависимости от типа Linux команды будут отличаться.

а) DEB-based:

apt update

apt install qemu-guest-agent

б) RPM-based:

yum install qemu-guest-agent

Установка завершена.

Для запуска сервиса выполняем:

systemctl enable qemu-guest-agent —now

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

Подробнее процесс описан на странице https://pve.proxmox.com/wiki/Qemu-guest-agent .

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

Для удаления виртуальной машины, сначала ее отключаем — это можно сделать из операционной системы или из панели управления, нажав на стрелку вниз рядом с Выключить Остановка :

Выключаем виртуальную машину

После кликаем по Дополнительно Удалить :

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

В открывшемся окне мы должны подтвердить свои намерения удалить виртуальную машину, вписав ее идентификатор:

Добавляем сетевой адаптер

* если мы поставим галочку Purge , то виртуальная машина будет удалена полностью вместе с виртуальным диском.

Кликаем по Удалить — готово.

Тюнинг сервера PVE

Внесем несколько изменений, которые сделают работу с Proxmox VE удобнее.

Отключение предупреждения об отсутствии подписки

Каждый раз при заходе в панель управления мы будем видеть такое предупреждение:

Предупреждение об отсутствии подписки

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

  1. Отключим платный репозиторий для получения пакетов proxmox.
  2. Отредактируем файл js для отключения данного сообщения.

И так, в SSH открываем на редактирование репозиторий proxmox:

nano /etc/apt/sources.list.d/pve-enterprise.list

Приводим его к виду:

#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 и создать новый — кому как будет удобнее.

Добавляем gpg-ключ для репозитория:

apt-key adv —keyserver keyserver.ubuntu.com —recv-keys 0D9A1950E2EF0603

После обновим список пакетов:

apt update

Последнее — редактируем файл /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js (перед этим его сохраняем):

cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/backup_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 и переходим к серверу — Система Сертификаты — кликаем по Загрузить пользовательский сертификат :

Переходим к загрузке сертификатов

В открывшемся окне заполняем поля для закрытого и открытого ключей:

Загружаем ключи

… и нажимаем Загрузить . Система предупредит, что загрузится с новым сертификатом — необходимо закрыть вкладку в браузере и открыть консоль управления снова. Если сертификат загружен правильный, мы не увидим предупреждения.

б) Установка сертификата из командной строки

После развертывания Proxmox создается 2 файла в каталоге /etc/pve/nodes/<имя ноды> (например, /etc/pve/nodes/pve/) с именами pve-ssl.key и pve-ssl.pem . Их нужно заменить.

Сначала создадим их копию:

mkdir -p /backup/proxmox/ssl

cp /etc/pve/nodes/pve/pve-ssl.* /backup/proxmox/ssl/

Предположим, что мы получили сертификаты с помощью Let’s Encrypt и они находятся по пути /etc/letsencrypt/live/pve.remontka.com . Тогда копируем нужны ключи:

cp /etc/letsencrypt/live/pve.remontka.com/fullchain.pem /etc/pve/nodes/pve/pve-ssl.pem

cp /etc/letsencrypt/live/pve.remontka.com/privkey.pem /etc/pve/nodes/pve/pve-ssl.key

Возможно, вы подумаете, что для сертификатов Let’s Encrypt лучше создавать симлинки, вместо копирования файлов. Однако, для каталога /etc/pve создается FUSE файловая система, которая не поддерживает симлинки.

Перезапускаем сервисы:

systemctl restart pvestatd pvedaemon pve-cluster corosync

Создание нового пользователя

При установке PVE создается пользователь root. Рассмотрим процесс добавления еще одного через командную строку.

Подключаемся по SSH или открываем консоль из панели управления. Создаем пользователя в системе:

useradd user

* где 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 предлагаю инструкции:

1. Установка и настройка KVM на CentOS 7

2. Настройка KVM на Ubuntu Server

Возможные ошибки

Рассмотрим некоторые ошибки, с которыми столкнулся я.

Falling back to a fallback locale

Ошибка появляется при установке гостевой утилиты на компьютер с Linux, а также выполнении некоторых других команд.

Причина: это связано с настройками локали в вашей системе. Скорее всего, среди вариантов языковых настроек не перечислен en_US.UTF-8.

Решение: исходя из причины, нам нужно правильно настроить локаль. Это можно сделать в интерактивном режиме командой:

dpkg-reconfigure locales

После выбираем нужные локали, например: en_US.UTF-8 и ru_RU.UTF-8.

Также можно просто отредактировать файл:

vi /etc/locale.gen

Необходимо снять комментарий с en_US.UTF-8 :


en_US.UTF-8 UTF-8

После вводим:

locale-gen

Настраиваем формат времени и определяем язык интерфейса:

export LC_TIME=ru_RU.utf8

update-locale LANG=en_US.UTF-8

Гостевая служба помечена как masked

Мы можем заметить, что служба qemu-guest-agent не запускается со статусом masked :

qemu-guest-agent.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)

Причина: в некоторых операционных системах (я столкнулся в Astra Linux) по умолчанию сервис qemu-guest-agent маскируется.

Решение: маскировку можно снять простой командой:

systemctl unmask qemu-guest-agent

После перечитываем конфигурацию daemon-reload:

systemctl daemon-reload

Можно разрешить запуск сервиса и стартовать его:

systemctl enable qemu-guest-agent —now

Читайте также

Следующие инструкции также могут показаться вам полезными:

1. Настройка кластера Proxmox VE .

2. Конвертирование виртуального диска Proxmox в диск VMware .

3. Включение вложенной виртуализации в Proxmox .

EnglishRussianUkrainian