Как я переезжал на Proxmox: почему бросил ESXi и не жалею
Как я переезжал на Proxmox: почему бросил ESXi и не жалею
Год назад я сидел на кухне, пил остывший чай и смотрел на синий экран VMware ESXi, который висел уже третий час подряд. Виртуалка с Home Assistant упала, вторая с Nginx — тоже, а третью я просто не мог запустить, потому что закончилась лицензия бесплатной версии. Я психанул и решил: хватит.
Проблема была не в том, что ESXi плохой. Он отличный, если у тебя есть бюджет. Я админю домашнюю лабораторию на старом HP ProLiant DL360p Gen8, который купил за 8000 рублей на авито. И каждый раз, когда VMware напоминал, что бесплатная версия — это урезанная игрушка, у меня дёргался глаз. Сначала они ограничили API, потом убрали возможность управлять через веб-интерфейс без отдельного клиента, потом перестали работать бэкапы через сторонние скрипты. В какой-то момент я понял, что трачу больше времени на обход ограничений, чем на полезную работу. Бесплатная лицензия ESXi не даёт использовать нормальные бэкапы, не даёт управлять через REST API, не даёт делать снапшоты из скриптов. А главное — нельзя даже посмотреть полный лог консоли, пока не купишь лицензию. Для дома это перебор.
Я знал про Proxmox давно. Ещё когда выбирал между ним и ESXi, читал форумы, смотрел обзоры на YouTube. Тогда победил VMware — казался привычнее и солиднее. Но сейчас, спустя два года, я понял, что «солидность» ESXi заканчивается там, где начинается домашний бюджет. За два года использования я ни разу не воспользовался фишками VMotion или DRS — они просто не нужны в домашней лаборатории. А платить за лицензию ради того, чтобы ставить три виртуалки на одном сервере — это выброс денег.
Я знаю, что многие сидят на ESXi годами и не жалуются. У меня просто накопился критический объём неудобств. Когда в очередной раз пришлось перезагружать хост из-за того, что Java-клиент не мог подключиться, я сказал себе: «Всё, переезжаю на выходных».
Почему я не хотел переходить
Я боялся. Серьёзно. На Proxmox у меня была запущена пара тестовых контейнеров, и они работали, но переносить всю инфраструктуру — это казалось чем-то страшным. У меня там крутились: DNS-сервер на Bind9, VPN-сервер на WireGuard, три сайта на Nginx, Home Assistant, база данных PostgreSQL для тестов, несколько мелких сервисов в Docker. Я думал, что всё сломается, и я буду сидеть три дня с гуглом и бубном.
Спойлер: всё сломалось. Но не так, как я думал. Сломалось то, о чём я даже не подозревал — сетевые мосты, права доступа к USB-устройствам, конфиги iLO. А сама миграция виртуалок прошла на удивление гладко.
Я специально выделил на переезд целые выходные. В пятницу вечером поставил пиво в холодильник, предупредил жену, что буду занят, и начал. В итоге понадобилась только суббота, а воскресенье я уже просто настраивал мелочи и кайфовал от того, как быстро открывается админка.
Установка Proxmox
Скачал ISO с официального сайта, записал на флешку через Rufus, воткнул в сервер. Установка заняла минут 15 — проще, чем ставить Windows. Выбрал диск, ввёл пароль, настроил сеть. Всё. Даже драйверы для сетевухи не пришлось ставить — мой HP ProLiant со встроенным Broadcom определился сразу.
Первое, что порадовало — веб-интерфейс. Он не красивый, конечно, по сравнению с vSphere, но он работает из коробки. Не нужно ставить отдельный клиент, не нужно танцевать с Java. Открыл браузер, ввёл IP сервера — и вуаля. Вся панель управления грузится за секунду, никаких лагов, никаких ошибок «Flash Player устарел». В 2024 году это кажется базой, но после VMware такое воспринимается как откровение.
Я сразу зашёл в Datacenter → Storage и добавил свой NAS по NFS. Дальше создал бридж vmbr0 для сети, настроил VLANы для разных виртуалок. Интерфейс настолько интуитивный, что я почти не лез в документацию. Почти — потому что найти кнопку «создать ZFS-пул» я смог не сразу. Она оказалась в разделе Disk, а я искал в Storage. Типичная история.
Перенос виртуалок
Вот тут началось самое интересное. ESXi использует VMDK, Proxmox — qcow2. Нужно конвертировать. Я перепробовал три способа и расскажу о каждом, чтобы вы не наступали на те же грабли.
Первый способ — qemu-img convert. Работает, но медленно. Один образ на 200 ГБ конвертировался часа два. Команда выглядит просто: qemu-img convert -f vmdk -O qcow2 disk.vmdk disk.qcow2. Но если у вас снапшоты внутри VMDK — приготовьтесь к сюрпризам. Я не знал, что VMware хранит снапшоты отдельными файлами, и qemu-img их просто не видит. Пришлось сначала сливать снапшоты через веб-интерфейс ESXi, а потом уже конвертировать.
Второй способ — ovftool. Экспорт из ESXi в OVF, потом импорт в Proxmox через веб-интерфейс. Удобно, но OVF весит столько же, сколько оригинал, а у меня место на диске поджимало. Сервер у меня с SSD на 240 ГБ, и хранить дубликаты образов я не мог. Плюс ovftool на Windows ставится отдельно и требует лицензионного соглашения, которое я ленился читать.
Третий способ — Clonezilla. Disk-to-disk по сети. Это оказалось самым быстрым, но пришлось повозиться с настройкой SSH. Я поднял временный SSH-сервер на Proxmox-host, загрузил Clonezilla на виртуалке и сделал dd-копию по сети. Скорость — 80-100 МБ/с, образ на 200 ГБ переехал за 40 минут. Рекомендую, если не жалко поставить две лишние программы.
В итоге я сделал так: критичные виртуалки (Home Assistant, DNS) перенёс через Clonezilla, остальные — через qemu-img. Пару раз я ошибался с путями и перезаписывал не тот образ, но благо резервные копии были (спасибо, Veeam).
Что я сломал
Первое и самое глупое — я забыл, что у виртуалок на ESXi статические IP, а в Proxmox сетевой мост называется vmbr0, а не vSwitch. Пару контейнеров остались без сети, и я тупил час, пока не понял, что нужно просто перенастроить бридж в конфиге /etc/network/interfaces.
Второе — встроенный firewall. Proxmox включает его по умолчанию, и когда я поднял первую виртуалку, она не могла выйти в интернет. Потому что firewall блокировал всё, кроме SSH. Пришлось лезть в Datacenter → Firewall → Rules → Add и разрешать исходящий трафик. Потом я узнал, что можно просто отключить firewall вообще, если не нужен, но я решил оставить — для безопасности.
Третье — бэкапы. На ESXi я делал бэкапы через скрипты GhettoVCB, которые сам правил напильником. На Proxmox есть встроенный инструмент — vzdump. Я привыкал к нему дня три. Интерфейс спартанский: поставил расписание, выбрал пул виртуалок, указал NFS-шару. Теперь раз в неделю он сам делает дампы на NAS и присылает уведомление на почту.
Четвёртое — проброс USB в LXC. Я хотел, чтобы Home Assistant в LXC-контейнере видел Zigbee-координатор Conbee II. Оказалось, что по умолчанию LXC-контейнеры не видят USB-устройства. Пришлось править конфиг контейнера, добавлять строку lxc.cgroup2.devices.allow: c 188:* rwm и пробрасывать устройство через /dev/ttyACM0. Потратил вечер, но разобрался.
Спустя месяц
Proxmox работает стабильно. У меня 8 виртуалок и 5 LXC-контейнеров. Один раз был сбой питания (соседи сверлили стену и выбили автомат), сервер перезагрузился — и все виртуалки стартанули автоматически. На ESXi такого не было: после отключения электричества мне приходилось руками запускать каждую машину через клиент vSphere.
Что мне нравится больше всего — это LXC. Легковесные контейнеры поднимаются за секунды. Я перенёс туда свои тестовые сервисы, и они жрут в разы меньше памяти, чем полноценные VM с Ubuntu. Например, контейнер с Nginx и PHP-FPM потребляет 64 МБ RAM против 256 МБ у аналогичной VM. Разница существенная, когда у тебя всего 64 ГБ памяти и хочется запихнуть побольше сервисов.
Ещё приятная мелочь — снапшоты. Делаются мгновенно, даже на работающей виртуалке. Перед каждым рискованным обновлением делаю снапшот и сплю спокойно. Если что-то идёт не так — откатился за 5 секунд. На ESXi снапшоты тоже есть, но их количество ограничено, и они сильно тормозят диск при активной работе.
Что я получил в итоге
Сейчас мой сервер работает без перезагрузок уже 187 дней (я специально проверил в uptime). Proxmox потребляет около 200 МБ оперативки на сам гипервизор — против 1.2 ГБ у ESXi. Для сервера с 64 ГБ это не критично, но приятно. За год использования я ни разу не столкнулся с ситуацией, когда Proxmox «отвалился» бы сам по себе. Все падения были только из-за железа или моих кривых рук.
Из неожиданных плюсов — сообщество. Чат в Telegram, форумы, Reddit (r/Proxmox). Когда я что-то не понимаю, я захожу в чат, задаю вопрос и через 5 минут получаю ответ. На ESXi такого не было — официальный форум VMware будто вымер, а неофициальные полны советов «купи лицензию». С Proxmox реально ощущается, что продукт делают для людей, а не для денег.
Если вкратце- Скачайте ISO Proxmox с официального сайта и установите на сервер — это бесплатно и легально, никаких триалов.
- Конвертируйте VMDK → qcow2 через qemu-img или переносите через Clonezilla по сети — второй способ быстрее для больших дисков.
- Не забудьте настроить сетевой мост vmbr0 и отключить firewall, если что-то не работает.
- Настройте автоматические бэкапы через vzdump на NAS — спасибо скажете после первого сбоя.
- Попробуйте LXC вместо полноценных VM для мелких сервисов — экономия ресурсов ощутимая.
- Перед обновлениями делайте снапшоты через веб-интерфейс — это бесплатно и реально спасает.
Я переезжал три дня, психовал, пил валерьянку, но ни разу не пожалел. Proxmox — это тот случай, когда бесплатное оказывается лучше платного, потому что его делают люди, которые сами пользуются продуктом. Если у вас дома сервер и вы ещё на ESXi — попробуйте, вам понравится. Только не делайте это перед важным релизом, выделите выходные. Лучше всего — пятница вечером, чтобы всё починить до понедельника.