18.07.2021
Сегодня расскажу как подключить на виртуальную машину (ВМ) в Proxmox утилиту qemu-guest-agent для просмотра IP-адреса через WEB-интерфейс и правильной завершении работы ВМ.
Что такое qemu-guest-agent
qemu-guest-agent — это вспомогательный демон, который устанавливается в гостевой системе. Он используется для обмена информацией между хостом и гостем, а также для выполнения команды в госте.
В Proxmox VE qemu-guest-agent используется в основном для двух вещей:
- Чтобы правильно завершить работу гостя, вместо того чтобы полагаться на команды ACPI или политики Windows
- Чтобы заморозить гостевую файловую систему при создании резервной копии (в Windows используйте службу теневого копирования томов VSS).
Установка qemu-guest-agent
На Proxmox
Вы должны установить гостевой агент в каждой виртуальной машине, а затем включить его, вы можете сделать это в веб-интерфейсе Proxmox VE (GUI).
или через CLI:
qm set VMID --agent 1
На Linux VM
В Linux вам нужно просто установить пакет qemu-guest-agent
.
Здесь мы покажем команды для систем на базе Debian/Ubuntu и Redhat:
В системах на Debian/Ubuntu выполняем следующие команды:
sudo apt install qemu-guest-agent
На системах на базе Redhat:
yum install qemu-guest-agent
На Windows VM
Сначала вы должны скачать драйвер virtio-win iso (см. Windows VirtIO Drivers).
Затем установите драйвер virtio-serial:
- Прикрепите ISO к виртуальной машине Windows (virtio-*.iso)
- Перейдите в Диспетчер устройств Windows
- Найдите «PCI Simple Communications Controller«
- Щелкните правой кнопкой мыши -> Обновить драйвер и выберите на смонтированном iso DRIVE:vioserial<OSVERSION> where <OSVERSION> is your Windows Version — ваша версия Windows (например, W7 для Windows 7)
После этого необходимо установить qemu-guest-agent:
- Перейти к смонтированному ISO в проводнике
- Установщик гостевого агента находится в каталоге гостевой агент
- Запустите установщик двойным щелчком (либо qemu-ga-x86_64.msi (64-разрядная версия), либо qemu-ga-i386.msi (32-разрядная версия)
После этого qemu-guest-agent должен быть запущен.
Если он не запущен, вы можете использовать панель управления Службами, чтобы запустить его и убедиться, что он запустится автоматически при следующей загрузке.
Настройка qemu-guest-agent в Linux
В зависимости от дистрибутива гостевой агент может не запускаться автоматически после установки. Для запуска воспользуемся следующими командами:
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent
Проверка того, что связь с гостевым агентом работает
Связь с гостевым агентом происходит через сокет unix, расположенный в /var/run/qemu-server/<my_vmid>.qga
Вы можете проверить связь агента qm в proxmox:
qm agent <vmid> ping
если qemu-guest-agent правильно запущен в виртуальной машине, он выдаст пустое сообщения.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!
RSS
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
3.3
3
голоса
Рейтинг статьи
-
#9
I’m still searching for a fix for the Windows agent for Proxmox. Any updates to the instructions on how to make this work for WIndows VMs? (or is Windows just not widely supported?)
Did you ever get anywhere with this? I’m in a similar situation.
-
#17
Figured it out!
The drivers are controlled by your VM options:
- Hardware -> Memory -> Ballooning Device = Windows VirtIO Ballon Driver
- Options -> QEMU Guest Agent = Windows VirtIO Serial Driver
The need to be set before you boot the VM and install the drivers. If you enable either of these after you have installed the drivers, you nned to go the device manager and make that the devices are there and install the drivers if necessary.
I wish that the QEMU Guest Agent was enabled as this is the biggest issue newbs like me have starting out.
Once you have the VirtIO Ballon Driver and Virt IO Serial driver installed, then install the QEMU Guest agent and you are ready to roll.
You need to see these drivers
Last edited: Oct 21, 2021
После установки гостевой системы на Proxmox для того чтобы не было проблем с производительностью и резервным копированием необходимо произвести некоторые действия.
1. Ballooning
Для эффективного использования ресурсов Proxmox поддерживает технологию ballooning.
Ballooning – это динамическое управление памятью. Другими словами, вы прописываете в настройках виртуальной машины минимальный и максимальный объем памяти, выделяемой этой машине, а далее Proxmox сам распределяет необходимые ресурсы. Таким образом уменьшается влияние гостевой системы на весь хост.
Для начала выставим желательные параметры в настройках машины.
Чтобы их применить, машину нужно выключить и включить обратно.
Чтобы ballooning заработал, нам потребуется скачать и установить дополнительные драйвера.
Скачать их можно по адресу: https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/
Стабильная версия драйверов: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Перейдем на гостевую систему и создадим каталог Balloon в папке Program files (c:/ Program files /Balloon). В эту папку со скачанного диска нужно скопировать драйвера для вашей операционной системы.
В диспетчере устройств появится новое оборудование и на него нужно установить эти драйверы.
После этого необходимо установить ballooning как службу.
Win + X, Выполнить, cmd
cd / cd Program Files/Balloon blnsrv -i
Проверяем:
Win + X, Выполнить, services.msc
Выделение памяти теперь работает коректно.
2. QEMU Guest agent
Следующее что нужно сделать – установить QEMU Guest agent. Без этого не будет работать поддержка VSS (Volume Shadow Copy Service) т.е. служба теневого копирования тома.
В настройках виртуальной машины включим агента. Чтобы настройки применились – выключим и включим снова данную виртуальную машину.
У нас появилось новое устройство:
Драйверы находятся на том же диске в папке vioserial
Устанавливаем и проверяем, что QEMU Guest agent запущен в сервисах.
QEMU Guest Agent — это программа-демон, которая устанавливается на ВМ. QEMU Guest Agent обеспечивает выполнение команд на ВМ и обмен информацией между ВМ и узлом кластера.
VMmanager использует QEMU Guest Agent чтобы изменять сетевые настройки ВМ без перезагрузки. Если QEMU Guest Agent недоступен для платформы в течение пяти минут, VMmanager перезагрузит ВМ для применения настроек.
Чтобы управлять ВМ с ОС CentOS, в QEMU Guest Agent должна быть включена функция guest-exec.
Чтобы избежать незапланированного перезапуска ВМ, вы можете проверить статус QEMU Guest Agent перед изменением настроек. Это можно сделать на ВМ или узле кластера.
Диагностика на ВМ
-
Подключитесь к ВМ по SSH.
-
Определите статус QEMU Guest Agent:
systemctl status qemu-guest-agent
CODE
Примеры ответов:
QEMU Guest Agent запущен
● qemu-guest-agent.service - QEMU Guest Agent Loaded: loaded (/usr/lib/systemd/system/qemu-guest-agent.service; enabled; vendor preset: enabled) Active: active (running) since Вт 2021-08-10 05:25:54 UTC; 1 weeks 3 days ago
CODE
QEMU Guest Agent остановлен
● qemu-guest-agent.service - QEMU Guest Agent Loaded: loaded (/usr/lib/systemd/system/qemu-guest-agent.service; enabled; vendor preset: enabled) Active: inactive (dead) since Пт 2021-08-20 06:27:16 UTC; 2s ag
CODE
QEMU Guest Agent не установлен
Unit qemu-guest-agent.service could not be found.
CODE
Диагностика на узле кластера
- Подключитесь к узлу кластера по SSH.
-
Определите статус QEMU Guest Agent:
virsh qemu-agent-command <vm_id>_<vm_name> '{"execute": "guest-info", "arguments": {}}'
CODE
Пояснения к команде
<vm_id>_<vm_name> — имя файла ВМ, содержащее id и имя ВМ. Например, для ВМ с id 12 и именем test-vm имя файла должно быть 12_test_vm
Если QEMU Guest Agent запущен, вы получите ответ вида:
Фрагмент ответа в JSON
{"return":{"version":"2.12.0","supported_commands":[{"enabled":true,"name":"guest-get-osinfo","success-response":true}
CODE
Если QEMU Guest Agent не запущен или остановлен, вы получите ответ вида:
ошибка: Guest agent is not responding: QEMU guest agent is not connected
CODE
-
Для ВМ с ОС CentOS определите статус функции guest-exec:
virsh qemu-agent-command <vm_id>_<vm_name> '{"execute":"guest-info"}' --pretty | grep -B1 "guest-exec"
BASH
Пояснения к команде
<vm_id>_<vm_name> — имя файла ВМ, содержащее id и имя ВМ. Например, для ВМ с id 12 и именем test-vm имя файла должно быть 12_test_vm
Фрагмент ответа, если функция включена
"enabled": true, "name": "guest-exec",
CODE
Фрагмент ответа, если функция выключена
"enabled": false, "name": "guest-exec",
CODE
Восстановление работы
Если QEMU Guest Agent не установлен
- Подключитесь к ВМ по SSH.
-
Установите QEMU Guest Agent:
ОС CentOS
yum install qemu-guest-agent
CODE
ОС Debian, Ubuntu
apt install qemu-guest-agent
CODE
-
Добавьте QEMU Guest Agent в автозагрузку:
systemctl enable --now qemu-guest-agent
CODE
-
Проверьте статус QEMU Guest Agent:
systemctl status qemu-guest-agent
CODE
-
Проверьте статус службы SELinux:
Если статус отличается от disable:
-
Отключите SELinux. Для этого замените в файле /etc/selinux/config строку
на
- Перезагрузите ВМ.
-
-
Если в файле /etc/sysconfig/qemu-ga есть строка вида
BLACKLIST_RPC=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status
CODE
- Закомментируйте или удалите эту строку.
-
Перезапустите QEMU Guest Agent:
systemctl restart qemu-guest-agent
CODE
Если QEMU Guest Agent остановлен
- Подключитесь к ВМ по SSH.
-
Запустите QEMU Guest Agent:
systemctl start qemu-guest-agent
CODE
Если функция guest-exec отключена
- Подключитесь к ВМ по SSH.
-
Выполните команду:
sed -i '/BLACKLIST_RPC=/cBLACKLIST_RPC=' /etc/sysconfig/qemu-ga
BASH
-
Перезапустите QEMU Guest Agent:
systemctl restart qemu-guest-agent
CODE
В этой статье я покажу тонкости установки Windows 10 в среде виртуализации от ProxMox. Основное внимание будет уделено Virtio драйверам.
Создание виртуальной машины
Про ProxMox VE я уже писал:
- Что такое Proxmox VE?
- Установка Proxmox VE 6.3
Для того чтобы создать новую виртуальную машины для Windows 10, заходим в Web-интерфейс управления ProxMox VE и нажимаем кнопку “Create VM“:
Во-первых придумаем имя для виртуальной машины:
Выберем хранилище на котором лежит нужный образ (iso). Затем выбираем сам образ. Меняем тип гостевой ОС и её подтип:
Настроим систему, а именно поставим галочку Qemu Agent (дальше нужно будет установить агента в ОС). А для контролера выбирайте VirtIO SCSI, хотя он и так используется по умолчанию:
А потом настроим жёсткий диск для виртуальном машины – я использую SCSI (по умолчанию используется IDE). А также нужно выбрать хранилище для жесткого диска и его размер:
Настроим процессор для виртуальной машины (укажите количество виртуальных ядер):
Выделим необходимое количество оперативной памяти:
Настроим сетевую карту, я снова использую VirtIO устройство:
В итоге, после всех настроек, нажмём кнопку “Finish“:
После того, как мы создали виртуальную машину, добавим ей ещё один привод (CD/DVD Drive). Его будем использовать для того, чтобы подключить ещё один образа с VirtIO драйверами:
И подключим в новый привод образ с VirtIO драйверами:
Если у вас ещё нет образа с VirtIO драйверами, то вы можете скачать их от сюда.
А также, почитать про VirtIO драйверы можно в wiki от ProxMox – здесь.
Прежде чем двигаться дальше посмотрим ещё раз на виртуальное оборудование нашей виртуальной машины:
Установка гостевой ОС
Чтобы запустить виртуальную машину, нажмите кнопку “Start“. Затем, чтобы открыть консоль, нажмите кнопку “Console“:
Начнётся процесс установки Windows 10:
Весь процесс показывать не буду, покажу лишь те места, которые связаны с виртуализацией. Вначале вам нужно будет выбрать диск для установки системы, но для этого необходимо загрузить VirtIO драйвера:
Нажимаем кнопку “Загрузить“:
На диске с VirtIO драйверами ищем каталог /amd64/w10/:
И устанавливаем найденный драйвер:
После установки диск в системе должен определиться:
Дальше на найденный диск устанавливаем систему как обычно.
После установки, когда система начнет первоначальную настройку, нажимаем кнопку “У меня нет Интернета“. Это необходимо, так как драйвер VirtIO для сетевого интерфейса мы сможем установить только после первоначальной настройки:
Установка дополнительных VirtIO драйверов
После установки системы, для многих виртуальных устройств не будет найдено драйверов. Чтобы это исправить запускаем “Диспетчер устройств“:
Видим неизвестные устройства:
Нужно для каждого такого устройства установить драйвер с образа диска для VirtIO драйверов. Для этого нажимаем правой кнопкой мышки по устройству и выбираем “Обновить драйвер“:
Затем выбираем пункт меню “Выполнить поиск драйверов на этом компьютере“:
Дальше нажимаем кнопку “Обзор“:
И указываем диск с VirtIO драйверами:
Здесь уже искать драйвера не обязательно, главное указать диск.
Таким образом устанавливаете все остальные драйвера:
И в самом конце установим VirtIO Агента с этого же образа диска. Для этого на диске ищем каталог guest-agent а в нем запускаем установщик:
После проделанного вы можете выполнять дополнительные настройки, например:
- настроить сеть;
- изменить имя компьютера или ввести систему в домен;
- обновить систему;
- установить дополнительное ПО;
- и другое.
Итог
В этой статье я показал что в среде виртуализации ProxMox используется специальное VirtIO оборудование и для его использования в Windows нужно устанавливать специальные VirtIO драйвера. Дополнительно в систему можно установить агента (Qemu-guest-agent), чтобы гипервизор получал некоторые сведенья о гостевой системе, например ip-адреса.
Ну а в Linux поддержка VirtIO оборудования уже встроена в ядро. Хотя агента всё-таки придется установить, например таким способом:
# apt-get install qemu-guest-agent Или #yum install qemu-guest-agent
Спасибо за внимание!
Сводка
Имя статьи
Установка Windows 10 на ProxMox VE 6
Описание
В этой статье я покажу тонкости установки Windows 10 в среде виртуализации от ProxMox. Основное внимание будет уделено Virtio драйверам
Описываю оптимальную, на мой взгляд, установку Windows 2008R2:
-
В режиме просмотра по хранилищам, в хранилище «local» ноды, на которой
создается VM необходимо загрузить установочный образ W2008R2 и актуальный
стабильный
образ
virtio-win drivers -
В правом верхнем углу интерфейса жмем кнопку «Создать VM»
-
Попадаем на первую вкладку мастера — задаем VM ID, имя машины, ставим
галку агента: -
Выбираем,загруженный на шаге 1, образ
диска с Windows и тип операционной системы -
Далее
создаем/подключаем образ диска VM (я использовал iSCSI таргет, вы можете
указать хранилище и размер создаваемого образа). Обратите внимание на тип
шины и птицу нет резервных копий. -
Указываем тип и количество сокетов/ядер процессора (по умолчанию «KVM64» —
самый совместимый, я выбираю «host»), обращаю внимание на птицу NUMA, если
ядер больше 1 -
Настраиваем память: можно использовать динамическое выделение — для этого
указать верхнюю и нижнюю границы -
Настраиваем сеть — обратите внимание на тип интерфейса
-
Проверяем сводные характеристики VM, при необходимости правим на
соответствующих вкладках -
Переключаемся в режим просмотра по серверам, становимся на новосозданную
VM и заходим во вкладку оборудование, жмем кнопку
«Добавить»->»CD/DVD» -
В процессе создания привода выбираем образ virtio-win
-
Запускаем VM
-
Переходим во вкладку «Консоль»
-
Идет тривиальная установка Winows вплоть до выбора диска для установки
-
Жмем на загрузку и на диске с virtio-win выбираем папку
d:viostor2k8r2amd64 -
Устанавливаем драйвер, после чего продолжаем и заканчиваем установку.
-
После завершения установки заходим в систему и ставим гостевой агент,
который находится в папке guest-agent диска virtio-win -
После установки агента идем в диспетчер устройств
-
Устанавливаем недостающие драйвера
-
На одном из устройств получаем следующее сообщение:
-
Смотрим dev_id устройства — дело в том, что последние версии Proxmox VE
поддерживают Virtual Machine Generation ID, поддержка которого Windows,
появилась только начиная с 8/2012 версий -
Для удаления неподдерживаемого усторйства выключаем VM, заходим по SSH на
ноду Proxmox VE и выполняем:qm set vm_id -delete vmgenid
вместо vm_id ID вашей машины, в моем случае 720
-
Запускаем VM и смотрим в диспетчере устройств
Установка VM завершена — дальше идет обычная настройка сервера..
Рекомендуемые настройки:
- Отключить автоматическое обновление
-
Система -> Дополнительные параметры системы ->дополнительно
->загрузка и восстановление ->малый дамп памяти -
Диспетчер сервера -> отключить отчеты об ошибках
The qemu-guest-agent is a helper daemon, which is installed in the guest. It is used to exchange information between the host and guest, and to execute command in the guest.
The communication with the guest agent takes place over a unix socket located in
/var/run/qemu-server/<my_vmid>.qga
In Proxmox VE, the qemu-guest-agent is used for mainly two things:
- To properly shutdown the guest, instead of relying on ACPI commands or windows policies
- To freeze the guest file system when making a backup (on windows, use the volume shadow copy service VSS).
If you have installed qemu-guest-agent on a client apt-get install qemu-guest-agent
(Debian) or yum install qemu-guest-agent
(RedHat, CentOS7) and then, on the host you see an error “No Qemu Guest Agent” – it means VM was created without the agent flag set and you should Enable it in VM options:
Don’t forget to REBOOT your VM after it!!!
You can also set this parameter via CLI:
qm set VMID -agent 1
More information: https://pve.proxmox.com/wiki/Qemu-guest-agent
Hey fellow Internet dweller, are you worried about the following message appearing during backup of a suspended virtual machine in Proxmox?
...
INFO: suspend vm
INFO: creating archive '...'
Qemu Guest Agent is not running - VM ### qmp command 'guest-ping' failed - got timeout
...
Then you should ask yourself a question, how can the QEMU guest agent in the virtual machine answer the “guest-ping” request while its virtual machine is suspended?
(Pay attention to the INFO: suspend vm
line appearing before the message).
Of course it cannot, so maybe you shouldn’t worry that much.
One thing you can try to calm yourself down is to test the communication with the VM from the host while the VM is not suspended:
qm agent <id> ping
If the the QEMU guest agent is reachable, the command will complete without any output.
If you’re using Windows as a guest OS, you can (re)install the QEMU guest agent from a virtio-win iso.
This entry was posted in Solutions and tagged proxmox, qemu. Bookmark the permalink.
Обновлено: 25.05.2022
Опубликовано: 30.01.2020
Используемые термины: Proxmox VE, Linux.
В данной инструкции мы пошагово разберем способы установки Proxmox VE, базовую настройку и создание виртуальной машины. Proxmox основан на Debian — поэтому установку будем выполнять на данный дистрибутив Linux. В данной инструкции работа ведется на Proxmox версии 6.
Системные требования
Установка Proxmox
Из готового образа
Установка на Debian
Проверка установки
Базовая настройка
Как загрузить ISO-образ
Создание сетей
Bridge
NAT
Сеть между виртуалками
Создание виртуальной машины
Настройка виртуальной машины
Базовые настройки
Добавление диска
Добавление сетевого адаптера
Установка гостевого агента
Удаление виртуальной машины
Тюнинг Proxmox
Предупреждения об отсутствии подписки
Правильный сертификат
Создание нового пользователя
Ubuntu и CentOS
Системные требования
Требования разделены на минимальные и рекомендованные:
Минимальные | Рекомендованные | |
---|---|---|
Процессор | 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:
nano /etc/hosts
… и добавляем:
192.168.1.55 proxmox.dmosk.local proxmox
* где 192.168.1.55 — IP-адрес нашего сервера; proxmox — имя сервера; dmosk.local — наш домен, если используется.
2. Добавляем репозитории, которые будем устанавливать для установки Proxmox PE и дополнительных компонентов:
nano /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
Чтобы мы могли работать с репозиторием 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-get update
3. Устанавливаем Proxmox PE и компоненты:
apt-get install proxmox-ve open-iscsi
* где proxmox-ve — собственно, сам гипервизор; open-iscsi — iSCSI-клиент для подключения iSCSI-target-ов.
4. Перезагружаем сервер:
systemctl reboot
Проверка установки
В браузере открываем панель управления системой виртуализации по адресу https://<IP-адрес сервера>: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, чтобы применить сетевые настройки:
Подтверждаем действия.
NAT
Данный режим сети активно применяется в случае аренды сервера, где количество IP-адресов лимитировано. В данном случае, все виртуальные машины будут находисться за NAT, в качестве которого выступает сам Proxmox.
Сам интерфейс мы делаем из панели управления. Но чтобы виртуальные машины могли выходить в Интернет через сеть NAT, необходимо на самом хосте включить редирект и маскарадинг.
Создание нового bridge-интерфеса
Итак, кликаем по нашему серверу Proxmox — переходим в раздел Система — Сеть — нажимаем Создать и выбираем Linux Bridge:
Оставляем имя vmbr1 или пишем любое другое, прописываем IP-адрес с маской сети, в которой будут находиться серверы за 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 -A POSTROUTING -s ‘192.168.122.0/24’ -o vmbr0 -j MASQUERADE
* в данном примере мы создали правило для маскарадинга всех пакетов из подсети 192.168.122.0/24 и для исходящего интерфейса vmbr0. Обратите внимание, что если у нас будет другая подсеть и исходящий интерфейс для сети Интернет, то нужно будет задать другие значения.
Ставим утилиту для сохранения правил iptables:
apt-get install iptables-persistent
… и сохраняем правила в процессе установки или командой:
netfilter-persistent save
Наш 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.
Для увеличения размера имеющегося диска устанавливаем на него курсов и кликаем по Изменить размер диска:
В открывшемся окне задаем объем, на который нужно увеличить дисковое пространство.
Добавление сетевого адаптера
Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Сетевое устройство:
Как при создании ВМ, выбираем тип сетевого адаптера (бридж или нат) и нажимаем Добавить.
Установка гостевого агента
Обязательная процедура для повышения производительности и возможностей работы с виртуальной машиной. Настройка выполняется как на гипервизоре, так и в самой виртуальной машине. Рассмотрим пример установки агента на базе системы Linux.
В гипервизоре переходим в Параметры, находим пункт QEMU Guest Agent и кликаем по нему:
Ставим галочку Use QEMU Guest Agent и нажимаем OK:
Для применения настройки нужно выключить и включить виртуальную машину.
Теперь подключаемся к виртуальной машине и устанавливаем утилиту. В зависимости от типа Linux команды будут отличаться.
а) DEB-based:
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 действия:
- Отключим платный репозиторий для получения пакетов proxmox.
- Отредактируем файл 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 и создать новый — кому как будет удобнее.
После обновим список пакетов:
apt-get update
Последнее — редактируем файл /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 или открываем консоль из панели управления. Создаем пользователя в системе:
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