Переход на Proxmox (Proxmox GmbH, Vienna, Austria) с Hyper-V by Microsoft и VMware by Broadcom. Часть четвертая из многих
Для лиги лени: общеизвестное и душное.
Часть 4. Наконец переходим к Proxmox
Поздравляю всех с выходом Proxmox 9.0. Даже статья вышла – ждите сервис пака Upgrade from 8 to 9, читайте Known Issues & Breaking Changes и Known Upgrade Issues.
Первый взгляд: чем отличается Proxmox от Broadcom ESXi и Microsoft Hyper-V?
Первый взгляд: требуемое место для установки.
Broadcom ESXi до недавнего времени отлично (с оговорками) работал с 32 Гб хоть USB флешки, хоть SD карточки, в псевдорейде, и без. При этом, хотя с версии 6.5 флешка умирала за 3-6 месяцев, спасибо криворуким разработчикам, но сам гипервизор, и виртуальные машины на нем, продолжали работать до планового выключения или миграции (обычно). Иногда с проблемами.
RAID для установки? Не нужен. Если умерла флешка, то берется новая, на нее за 10 минут ставиться ESXi той же версии. За еще 5 минут применяется или бекап конфигурации (родной, теплый, встроенный бекап, не забывайте делать), или profile с vCenter, или, если вы озаботились, то прогоняете хоть powershell (powercli) скрипт, хоть что угодно, и система снова в строю.
Можно и PXE boot делать, можно и FC \ iSCSI boot. Со всеми минусами сочетания FC и кривых рук. Известная история, как отформатировать раздел с виртуальными машинами, привлекая внимание санитаров.
С Microsoft Hyper-V другая история. Хотя там и был отдельный дистрибутив с Hyper-V only, но я не видел, чтобы его в таком виде как-то массово использовали. Так что готовьте 60-100 гигабайт на загрузку плюс данные плюс логи.
RAID для установки? Нуууу .. it depends on. Проблема выбора не очевидна, но.
Аппаратный рейд отнимает PCIe слот, снижает производительность NVME SSD дисков (ссылка 1, ссылка 2), и очень хочется заменить его на PCIe SAS или SATA переходник или как-то еще уйти от этого.
Внутри Microsoft Windows давно существует два подхода к RAID – это софтовый рейд от MS, и storage space \ storage space direct (этот требует лицензии DC).
Софтовый рейд работает, но для настройки зеркалирования «и загрузчика и раздела восстановления» нужно идти в diskpart и делать там всякое, причем diskpart еще и не автоматизируется (штатно, конечно можно написать свой обработчик). Сделать можно, и это работает, но в эксплуатации решение «вроде все ок, но как-то так себе». Разовая, но все равно ручная работа.
PXE и прочие варианты загрузки, конечно, тоже есть. Бекап – есть. Нужно ли при этом иметь RAID ? Не знаю. 20 лет назад, во времена 2003 \ 2008 Windows и дисков по 74 Гб, было проще сделать RAID. Сейчас мне проще настроить встроенный бекап, сделать один раз, и экспортировать задание со скриптом. Хотя это все равно колхозное решение.
Установленный для тестов и этой статьи в виртуальную машину Proxmox 8.4 занял 5 Гб, до установки обновлений, агентов, прочей обвязки.
RAID для установки? Нуууу .. it depends on. Проблема в чем. Встроенного бекапа конфигурации нет. Есть какие-то скрипты непонятной годности, их еще и читать надо. Конечно, есть LVM, но его настройка описана «как-то так». Можно заранее сделать mdadm boot on RAID1, но это все равно ручная работа и по перезагрузке, и по восстановлению. И BIOS надо настроить.
Эти все моменты «как бы есть, но как бы и не понятно», стали одним из поводов к написанию заметок, и поводом посидеть, подумать еще раз, погонять сценарии отказа в виртуальной среде. На физике было решено максимально просто: диски новые, сейчас делаем первую итерацию, для наших задач это не так важно, потом переделаем.
FEEL THE POWER OF AGILE! (нет)
Первый взгляд: Остаток используемого места.
Если у вас не отдельные диски «только под загрузку», и не планируется vSAN или Storage space direct, и нет системы хранения данных, то возникает вопрос «что делать с остальным местом на дисках».
Broadcom ESXi решает эту задачу в лоб – отделяет себе 138 Гб, а дальше делайте что хотите, только под vSAN такое не используйте.
Microsoft Hyper-V решает эту задачу не менее прямолинейно – делайте что хотите, но место под ОС будьте добры предоставить.
С PVE Proxmox Virtual Environment все .. не так очевидно.
Для тестов был сделан диск на 75 Гб, тонкий (динамический)
Если при установке сделать LVM, и потом посмотреть, что там вышло, то получим:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 70G 0 disk
├─sda2 8:2 0 512M 0 part /boot/efi
└─sda3 8:3 0 69.5G 0 part
├─pve-swap 252:0 0 8G 0 lvm [SWAP]
├─pve-root 252:1 0 27.4G 0 lvm /
├─pve-data_tmeta 252:2 0 1G 0 lvm
│ └─pve-data 252:4 0 23.5G 0 lvm
└─pve-data_tdata 252:3 0 23.5G 0 lvm
└─pve-data 252:4 0 23.5G 0 lvm
lvdisplay покажет:
--- Logical volume ---
LV Name data
VG Name pve
LV Size <23.50 GiB
--- Logical volume ---
LV Path /dev/pve/swap
LV Name swap
VG Name pve
LV Size 8.00 GiB
--- Logical volume ---
LV Path /dev/pve/root
LV Name root
VG Name pve
LV Size 27.37 GiB
Понятно, что не понятно.
Если смотреть из GUI, то на LVM свободно 9 Гб, а на томе Data свободно все 23.
Как пишут, есть нюанс:
временные файлы при копировании создаются в корневом разделе в /var/tmp/
Но, у меня /dev/mapper/pve-root создался размером 27G, занято всего 3.0G, так что переживу.
Давайте посмотрим, что с этим можно сделать, положу туда стопку ISO !
В GUI это все видно как:
/dev/mapper/pve-root виден как Storage 'local' on node 'proxmox1'
И второй виден как Storage 'local-lvm' on node 'proxmox1'
при этом монтируется это все ничуть не очевидно, например
ISO images в GUI это /var/lib/vz/template/iso
CT templates в GUI это /var/lib/vz/template/cache
CT templates позволяет закачивать только .tar.xz файлы, точнее закачивать то можно хоть ISO, но закачивать надо с именем .tar.xz , ну что за хрень.
Удалить файлы пачкой из GUI нельзя, создать папок под свои представления о прекрасном нельзя, что такое то. ГДЕ СВОБОДА?
В целом GUI не очень понятный, надо сидеть пытаться понять логику авторов.
Если я иду в node/disks, то вижу диски. Ок, понятно.
Если я иду в node/disk/lvm, то вижу, что создана LVM группа PVE, из трех томов, и свободно 9 Гб. Ну, окей.
Если я иду в node/disk/ lvm-thin, то вижу пустой pool, и .. и что мне с этим знанием делать?
Интересное наблюдение. Удаление файлов, хоть из GUI, хоть из CLI, не освобождает место на диске с точки зрения гипервизора. То есть изнутри VM место есть, но дальше, при попытке его сжать, он как был раздут до 29333222111, так и останется, вне зависимости от ключей для Optimize-VHD
Решение гуглится за минуту,
apt install zerofree
но «из коробки» ничего этого нет. Горько мне, горько.
Первичные исправления и обновления.
Для того, чтобы это австрийское изделие заработало в продуктиве, нужно:
Настроить на Nexus – proxy repo
Поменять VLAN и дефолтный IP. У меня оно взяло IP из первичных настроек DHCP, которого я не ожидал.
Настроить DNS
Настроить нужные pero на proxmox
Настроить NTP
И, наконец, обновиться.
Сменить настройку в CLI по умолчанию, куда прописался старый IP.
Сделать нормальную авторизацию, то есть дома – по сертификату с паролем, а в продуктиве, конечно, AD/Kerberos
Убрать надпись при входе
Вроде ничего не забыл, про пересылку логов событий, установки антивирусов и прочих Тайнос Агентос пусть безопасность думает, про Zabbix пусть мониторинг телеграфирует или графанирует.
Сначала сделаю руками. Конечно, надо сразу делать через Ansible.
Настроить на Nexus – proxy repo
Это самое простое.
Settings – Repo – create proxy - Distribution to fetch e.g. bionic : bookworm для 8.4, trixie для 9.
Save – done
Зачем? Чтобы ваши гипервизоры не ходили в интернеты. Но, если вам ОК, то пусть ходят.
Не забудьте выписать URL.
Очень смешно получается, если прописать не bookworm, а bionic, и прописать этот репозиторий в PVE. Обязательно попробуйте.
Поменять VLAN и дефолтный IP.
У меня оно взяло IP из первичных настроек DHCP, которых я не ожидал
Здесь, если делать руками, все максимально просто.
Открываем документацию, раздел Network Configuration, раздел Default Configuration using a Bridge, и делаем.
Для продуктива, конечно, открываем пример
Use VLAN 5 with bond0 for the Proxmox VE management IP with traditional Linux bridge ,
думаем, читаем, делаем.
nano /etc/network/interfaces
и даже делаем
If you made manual changes directly to the /etc/network/interfaces file, you can apply them by running
ifreload -a
Но при этом в GUI, во вкладке localnetwork, все равно откуда-то подтягивается старый адрес для vmbr0, причем в поле COMMENT, если зайти в сети хоста.
Я поленился его искать в описаниях, и исправил из GUI, и это был alias, куда я вообще смотрел.
Настроить DNS
Тут тоже ничего нового, nano /etc/resolv.conf
Настроить нужные pero на proxmox
nano /etc/apt/sources.list
nano /etc/apt/sources.list.d/ceph.list
nano /etc/apt/sources.list.d/pve-enterprise.list
Надеюсь, вы поняли, что надо туда прописать, после настройки Nexus
Настроить NTP
Нет ничего проще, открыли документацию, Time Synchronization, настроили.
nano /etc/chrony/chrony.conf , и посмотрели: chronyc tracking
В изолированной среде, разумеется, за временем придется идти или к NTP proxy, или к контроллерам домена.
И, наконец, обновиться.
Было: pveversion
pve-manager/8.4.0/ (running kernel: 6.8.12-9-pve)
стало
pve-manager/8.4.9/ (running kernel: 6.8.12-9-pve)
Вот что неприятно, так это то, что в
http://download.proxmox.com/debian/pve/dists/bookworm/InRelease
дату обновлений видно, а что там обновлено и исправлено – найти так сразу нельзя.
В changelog смотреть – развлечение тоже то еще.
Сменить настройку в CLI по умолчанию, куда прописался старый IP.
Это, понятно, /etc/hosts
Сделать нормальную авторизацию, то есть дома – по сертификату с паролем, а в продуктиве, конечно, AD/Kerberos
Тут тоже капитанство,
nano ~/.ssh/authorized_keys и готово
Во всех остальных случаях надо читать документацию, Syncing LDAP-Based Realms
Убрать надпись при входе
Тут тоже никакой магии. Прочитать это или это, и сделать. Или, все то же самое, но через pve-nag-buster, или, если вы совсем ленивы, то читаете тред на реддит, и делаете. Вплоть до рецепта remove_nag.yml
615-я строка, кому интересно, res.data.status.toLowerCase() \!== 'active'
Литература
Changing the default size of the ESX-OSData volume in ESXi 7.0
Change ESXi 7 System Storage Installation Size
boot on RAID1
Расширение корневого раздела (LVM) в Proxmox
Proxmox - Распределение дискового пространства
Переключение на бесплатные репозиторий в Proxmox VE
В следующей серии:
Actions step-by-step, Proxmox VE API
надеюсь, теги Proxmox и Ansible наконец добавятся