Переезжаем с VMmanager на Proxmox VE
В данной статье мы расскажем, как своими силами перенести виртуальные машины с VMmanager 5 на Proxmox VE.
Установка Proxmox VE
Прежде всего, вам нужно будет установить Proxmox VE на сервер, размещенный в дата-центре. Это может быть арендованный или ваш собственный сервер.
Требования к серверу
Здесь подойдет такой же сервер, который вы использовали для VMmanager. Необходимо, чтобы на сервере была включена поддержка флага виртуализации в процессоре Intel VT или AMD-V.
Не помешает подключить к серверу два дисковых массива RAID-1 (зеркало). Первый из этих массивов имеет смысл собрать из быстродействующих дисков SSD или NVMe. На нем будет установлена система Proxmox и размещены файлы образов виртуальных машин. Второй массив можно собрать из дисков HDD для размещения резервных копий виртуальных машин.
Также будет полезен аппаратный контроллер дисков, оборудованный аккумулятором или суперконденсатором для защиты содержимого кэш-памяти контроллера при внезапном отключении электропитания сервера.
Что касается оперативной памяти и ядер процессора, то чем больше будет этих ресурсов, тем больше виртуальных машин вы сможете разместить на сервере. Если вы ранее использовали VMmanager, то уже знаете свои потребности в ресурсах сервера.
Запуск установки Proxmox VE
Для запуска установки вам потребуется ISO-образ инсталляционного диска, который можно скачать здесь.
Далее нужно получить доступ к IP-KVM, допускающему удаленное монтирование на сервер ISO-образов дисков для загрузки. Некоторые модели серверов содержат встроенные порты управления с интерфейсом, допускающие монтирование ISO-образов, такие, например, как Intel RMM.
В том случае, когда средства удаленной загрузки недоступны, попросите сотрудников поддержки дата-центра записать ISO-образ на DVD-R диск или флеш-карту, вставить в сервер и выполнить загрузку. Ход загрузки контролируйте через IP-KVM, который есть в любом дата-центре.
Сама по себе установка очень простая. После загрузки на консоли появится приглашение (рис. 1).
Рис. 1. Приглашение для установки Proxmox VE
Здесь с помощью клавиш перемещения курсора нужно выбрать строку Install Proxmox VE, а затем нажать клавишу Enter. Строка Advanced Options позволит вам запустить проверку оперативной памяти сервера, а также выполнить установку в отладочном режиме.
Через некоторое время после запуска установки вы увидите текст лицензионного соглашения. Для продолжения установки щелкните мышью клавишу I agree.
На следующем этапе выберите диск. Щелкнув кнопку Options, выберите тип файловой системы и размер дискового пространства, выделенного для Proxmox (рис. 2).
Рис. 2. Выбор файловой системы
В том случае, когда ваш сервер оборудован контроллером диска, способным создать дисковый массив RAID, выберите файловую систему ext4 (используется по умолчанию). При этом будет использован менеджер логических томов Logical Volume Manager (LVM).
В том случае, если нужно создать программный дисковый массив RAID, можно остановиться на файловой системе ZFS или BTRFS.
Далее щелкните кнопку Next, выберите из списков страну, временную зону и раскладку клавиатуры (рис. 3).
Рис. 3. Выбор страны, временной зоны и раскладки клавиатуры
На следующем экране вам будет предложено ввести пароль и адрес электронной почты администратора (рис. 4).
Рис. 4. Ввод пароля и адреса электронной почты администратора
После ввода пароля и адреса электронной почты укажите сетевые настройки для вашего сервера Proxmox VE (рис. 5).
Рис. 5. Сетевые настройки сервера Proxmox VE
Используйте здесь данные, полученные от службы поддержки дата-центра, в котором размещен сервер.
И, наконец, непосредственно перед запуском установки вы сможете проверить все введенные параметры и при необходимости вернуться назад для их редактирования (рис. 6).
Рис. 6. Проверка параметров установки
Если параметры правильные, щелкните мышью кнопку Install. После установки сервер будет перезагружен автоматически. За ходом процесса установки можно наблюдать на консоли (рис. 7).
Рис. 7. Ход процесса установки Proxmox VE
После завершения установки появится приглашение для входа в консоль с адресом панели управления Proxmox VE (рис. 8).
Рис. 8. Приглашение для входа с адресом панели
Этот адрес нужно использовать для входа через браузер. Зайдите на страницу https://192.168.0.21:8006/ (у вас будет другой IP), введите там логин root и пароль, который вы задали на этапе установки (рис. 9).
Рис. 9. Вход в панель управления Proxmox VE через браузер
После входа вы увидите сообщение об отсутствии подписки. Вы можете его проигнорировать, щелкнув кнопку OK.
Чтобы подключить некоммерческий репозиторий для обновления бесплатной системы Proxmox VE, удалите файл коммерческого репозитория из источников apt:
# rm -f /etc/apt/sources.list.d/pve-enterprise.list
Далее создайте файл pve-no-subscription.list:
# touch /etc/apt/sources.list.d/pve-no-subscription.list
Добавьте в него адрес некоммерческого источника:
# deb http://download.proxmox.com/debian/pve buster pve-no-subscription
Этот способ мы нашли в данной статье.
На странице https://www.proxmox.com/en/downloads/category/documentation-pve находится документация по установке, настройке и использованию Proxmox. Помимо официальной документации вы можете воспользоваться статьями с описанием установки и начальной настройки Proxmox VE:
Кроме того, можно попросить сотрудников дата-центра установить на арендованный сервер систему Proxmox VE и предоставить вам доступ к панели управления.
Подготовка к переезду
Итак, полагаем, что на данный момент у вас есть серверы с VMmanager, а также серверы с Proxmox VE. Вы ознакомились с документацией на Proxmox VE и статьями, посвященными этой платформе виртуализации, а также научились создавать виртуальные машины.
Теперь пришло время подумать над планом переезда и выбрать способ миграции для каждой виртуальной машины, а также оценить необходимые ресурсы на серверах с Proxmox VE.
Два способа миграции виртуальных машин
Первый способ миграции виртуальной машины (VM) заключается в том, что вы создаете на сервере Proxmox VE новую VM, устанавливаете на нее ПО, аналогичное установленному на исходной VM, а затем переносите файлы и базы данных проектов со старой VM на новую.
Преимущество такого способа заключается в том, что у вас есть возможность обновления ПО в процессе миграции без остановки работы проекта. После переноса файлов и баз данных вы все проверяете, а затем настраиваете переадресацию (например, с помощью nginx) и далее вносите изменения в DNS.
С другой стороны, обновление ПО на VM может привести к необходимости внесения изменений в исходные коды проектов. Иногда это может быть довольно сложно, особенно если проекты старые и давно не обновлялись.
Второй способ предполагает, что вы копируете двоичный файл образа VM с сервера VMmanager на сервер Proxmox VE, а затем импортируете его в новую VM, созданную специально для такого импорта. Этот способ позволяет перенести всю среду выполнения проектов и потребует лишь изменения сетевых настроек как в ОС, так и, возможно, в самом проекте.
Оценка свободного места на дисках сервера Proxmox VE
Как правило, размеры дисков виртуальных машин составляют десятки Гбайт, поэтому, прежде чем приступать к переносу, необходимо оценить свободное пространство на дисках ваших серверов Proxmox VE.
При установке Proxmox VE требуется определить формат хранилища для файлов образов VM. На рис. 10 показана ситуация, когда для размещения файлов образов VM использована система управления дисковым пространством LVM-Thing.
Рис. 10. Для хранения VM используется хранилище LVM-Thin (доменные имена приведены только для примера)
Здесь диски сервера объединены в зеркало RAID-1 с помощью аппаратного контроллера, поэтому Proxmox VE видит этот массив как один диск.
Если в дереве, показанном слева на рис. 10, выделить строку local-lvm, то справа на вкладке Summary появится график использования дисковой памяти (рис. 11).
Рис. 11 Использование дисковой памяти в хранилище LVM-Thin
На рис. 11 видно, что используется 266,33 Гбайт памяти из доступных на сервере 429,14 Гбайт.
Другой способ узнать распределение памяти в хранилище заключается в использовании команды lvs из командной строки:
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- 429.14g 62.06 3.29
root pve -wi-ao---- 96.00g
swap pve -wi-ao---- 8.00g
vm-100-disk-0 pve Vwi-aotz-- 120.00g data 18.06
vm-105-disk-0 pve Vwi-aotz-- 10.00g data 53.83
vm-106-disk-0 pve Vwi-aotz-- 10.00g data 52.21
vm-107-disk-0 pve Vwi-a-tz-- 32.00g data 20.60
vm-107-disk-1 pve Vwi-aotz-- 32.00g data 39.41
vm-108-disk-0 pve Vwi-aotz-- 50.00g data 76.65
vm-111-disk-0 pve Vwi-aotz-- 50.00g data 80.61
vm-200-disk-0 pve Vwi-aotz-- 80.00g data 99.89
vm-401-disk-0 pve Vwi-aotz-- <48.83g data 95.69
vm-501-disk-0 pve Vwi-aotz-- 39.06g data 24.47
На консоль выводится доступный объем памяти data в хранилище LVM-Thin, а также распределение этой памяти по VM. Для каждой VM также выводится процент использования дисковой памяти.
Панель управления Proxmox VE позволить вам создавать виртуальные машины в хранилище LVM-Thin даже в том случае, когда общий объем созданных для них дисков превышает размер хранилища. И все это будет работать, но только до тех пор, пока диски всех виртуальных машин не используются на сто процентов.
В примере, приведенном выше, для всех виртуальных машин было выделено 471,92 Гбайт дисковой памяти, однако размер хранилища составляет только 429,14 Гбайт. Избыток составляет 42,78 Гбайт. В данном случае требуется удалить какую-то из VM или уменьшить занимаемое ей дисковое пространство.
Объемы дисковой памяти, выделенной для VM, можно увидеть на вкладке Content (рис. 12).
Рис. 12. Дисковая память, выделенная для VM
Здесь, однако, не показан процент использования этой памяти.
На рис. 13 мы показали использование хранилища ZFS, созданного на обычном настольном компьютере с двумя дисками объемом 1 Тбайт.
Рис. 13. Для хранения VM используется хранилище ZFS (доменные имена приведены только для примера)
График использования дисковой памяти, а также ее распределение для виртуальных машин можно посмотреть в панели управления Proxmox VE аналогично тому, как мы это делали для хранилища LVM-Thin.
Что касается командной строки сервера Proxmox VE с хранилищем ZFS, то вы можете использовать несколько команд для определения состояния хранилища и его распределения виртуальным машинам.
Команда zpool status покажет на консоли состояние массива:
# zpool status
pool: rpool
state: ONLINE
scan: scrub repaired 0B in 0 days 01:14:21 with 0 errors on Sun Feb 13 01:38:22 2022
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST1000DM003-9YN162_S1D1T1BB-part3 ONLINE 0 0 0
ata-ST1000DM003-9YN162_Z1D047K4-part3 ONLINE 0 0 0
errors: No known data errors
В данном случае хранилище представляет собой исправный массив, состоящий из двух дисков.
Команда zpool list покажет общий объем пространства SIZE, а также размеры занятого ALLOC и свободного FREE пространства:
# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
rpool 928G 594G 334G - - 17% 64% 1.00x ONLINE -
С помощью команды zfs list можно узнать размеры выделенного пространства для каждой виртуальной машины:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 594G 305G 44.9G /rpool
rpool/ROOT 49.3G 305G 96K /rpool/ROOT
rpool/ROOT/pve-1 49.3G 305G 49.3G /
rpool/data 500G 305G 96K /rpool/data
rpool/data/vm-100-disk-0 12.7G 305G 12.7G -
rpool/data/vm-101-disk-0 2.55G 305G 2.55G -
…
rpool/data/vm-108-disk-0 5.06G 305G 5.06G -
rpool/data/vm-401-disk-0 44.0G 305G 44.0G -
rpool/data/vm-501-disk-0 6.92G 305G 6.92G -
rpool/data/vm-701-disk-0 20.1G 305G 20.1G -
…
rpool/data/vm-709-disk-0 8.64G 305G 8.64G -
rpool/data/vm-800-disk-0 1.67G 305G 1.67G -
…
rpool/data/vm-903-disk-0 72.9G 305G 72.9G -
Здесь вы можете узнать общий объем использованного и доступного пространства (594 Гбайт и 305 Гбайт, соответственно), а также объем пространства, распределенного для каждой VM.
Вся эта информация позволит вам контролировать использование дискового пространства на сервере Proxmox VE перед переносом в него виртуальной машины из VMmanager или другой платформы виртуализации.
Ревизия доступных адресов IP
Приступая к переносу VM на сервер Proxmox VE, убедитесь, что дата-центр выделил вам достаточное количество адресов IP, а также необходимые сетевые настройки, такие как маска сети, адрес шлюза и адреса серверов DNS.
Вам потребуется как минимум один адрес IP на каждую виртуальную машину, плюс еще один адрес для сервера Proxmox VE.
Копирование образа виртуальной машины
Убедившись в наличии необходимых ресурсов, можно приступать к процедуре переноса VM с сервера VMmanager на сервер Proxmox VE.
Поиск файлов с образами виртуальных машин
Подключитесь к серверу VMmanager как root через SSH и найдите каталог с файлами образов виртуальных машин.
Если речь идет о VMmanager версии 5, то эти файлы находятся в каталоге /home. Что же касается VMmanager версии 6, то, согласно документации, файлы образов виртуальных машин находятся в каталоге /vm.
Вы можете найти каталог с файлом по имени виртуальной машины, например:
# find / -name gitlab
/home/gitlab
Здесь мы определили, что файл виртуальной машины gitlab находится в каталоге /home/gitlab. При этом размер файла составляет 49 Гбайт:
# ls -lh /home/gitlab
-rw------- 1 root root 49G Oct 26 16:32 /home/gitlab
При необходимости задайте вопрос службе сопровождения VMmanager о расположении файлов образов для вашей версии VMmanager.
Определение и преобразование формата образа виртуальной машины
После того как вы нашли каталог с файлами образов виртуальных машин, определите формат файла с помощью команды file:
# file /home/gitlab
/home/gitlab: QEMU QCOW Image (v2), 52428800000 bytes
Для импорта образа виртуальной машины в Proxmox VE нужно, чтобы формат файла был QCOW2. В нашем случае VMmanager версии 5 использовал именно этот формат.
Если файл виртуальной машины находится в необработанном формате RAW, то его несложно конвертировать в формат QCOW2. Для конвертации можно использовать программу qemu-img. Она уже установлена на серверах Proxmox VE и VMmanager.
Чтобы преобразовать RAW в QCOW2, используйте такую команду:
# qemu-img convert -f raw -O qcow2 vm.raw vm.qcow2
Обратное преобразование выполняется следующим образом:
# qemu-img convert -f qcow2 -O raw vm.qcow2 vm.raw
Настройка правил брандмауэра
Перед тем как начинать копирование, убедитесь, что настройки брандмауэра на сервере VMmanager разрешают подключение через SSH на порту 22 с сервера Proxmox VE. Инструкцию можно найти в документации.
Завершение работы виртуальной машины
Перед копированием файла образа VM нужно полностью завершить ее работу. Для этого лучше всего подключиться к VM через консоль, завершить основные процессы командой systemctl stop, а затем завершить работу ОС:
# shutdown -h now
Ход процесса завершения наблюдайте через консоль VM, доступную в панели управления VMmanager.
Как только работа ОС будет полностью завершена, выключите VM через консоль VMmanager.
Мы не рекомендуем завершать работу VM из панели управления VMmanager, не остановив предварительно запущенные сервисы через консоль ОС. У нас были случаи, когда такая попытка для VM с работающим сервисом GitLab приводила к тому, что образ VM получился непригодным для запуска после импорта в Proxmox VE.
Копирование файла образа VM на сервер Proxmox
Файл образа VM можно скопировать, например, при помощи программы sftp. Для этого найдите на сервере Proxmox VE каталог раздела, в котором достаточно свободного места для загрузки образа VM. Далее сделайте этот каталог текущим и подключитесь через SSH к серверу Proxmox VE.
После этого введите следующие команды:
# cd /rpool
# sftp root@xxx.xxx.xxx.xxx
sftp> cd /home/
sftp> ls
gitlab
sftp> get gitlab
Здесь мы сделали текущим каталог /rpool, подключились к серверу VMmanager, перешли в каталог с образами виртуальных машин и запустили загрузку предварительно остановленной VM сервиса Gitlab.
Проверим, что файл был успешно загружен:
# ls -lh
total 41G
drwxr-xr-x 2 root root 2 Oct 13 2020 data
-rw------- 1 root root 49G Oct 26 19:11 gitlab
drwxr-xr-x 3 root root 3 Oct 13 2020 ROO
Создание VM для импорта загруженного файла
Теперь нашей задачей будет создание VM, импорт и подключение к ней скопированного образа диска.
Прежде всего, создайте в управляющей панели Proxmox VE виртуальную машину без ОС с любым размером диска (рис. 14).
Рис. 14. Создаем VM без ОС
После создания VM запускать ее не нужно.
Откройте для новой VM вкладку Hardware и запомните параметры диска. На рис. 15 эти параметры выделены рамкой красного цвета.
Рис. 15. Параметры диска VM в хранилище local-zfs
Нам потребуется идентификатор созданной машины (в нашем случае 607), а также название хранилища (у нас local-zfs).
На другом сервере используется хранилище local-lvm, при этом идентификатор VM равен 401 (рис. 16).
Рис. 16. Параметры диска VM в хранилище local-lvm
После создания VM нужно отключить и удалить диск. Для отключения диска выделите строку Hard Disk (scsi0) мышью, а затем щелкните кнопку Detach.
Отключенный диск будет обозначен как «Unused Disk 0». Удалите его кнопкой Remove.
Импорт файла образа виртуальной машины
Далее импортируем загруженный с сервера VMmanager файл образа VM с помощью программы qm с параметром importdisk. Для импорта в хранилище local-zfs диска виртуальной машины 401 команда выглядит так:
# qm importdisk 401 /rpool/gitlab local-zfs
В случае хранилища local-lvm и VM с идентификатором 607 используйте следующую команду:
# qm importdisk 607 /rpool/gitlab local-lvs
Здесь в параметрах мы указываем программе qm идентификатор машины, путь к файлу образа VM, а также название хранилища.
В консоли наблюдаем процесс импорта:
importing disk '/rpool/gitlab' to VM 401 ...
transferred: 0 bytes remaining: 52428800000 bytes total: 52428800000 bytes progression: 0.00 %
transferred: 524288000 bytes remaining: 51904512000 bytes total: 52428800000 bytes progression: 1.00 %
...
transferred: 52014612480 bytes remaining: 414187520 bytes total: 52428800000 bytes progression: 99.21 %
transferred: 52428800000 bytes remaining: 0 bytes total: 52428800000 bytes progression: 100.00 %
Successfully imported disk as 'unused0:local-zfs:vm-401-disk-0'
После успешного импорта нужно добавить импортированный диск к виртуальной машине. Для этого выделите его мышью, щелкните кнопку Edit, а затем кнопку добавления Add (рис. 17).
Рис. 17. Добавление импортированного диска к виртуальной машине
Запуск импортированной виртуальной машины
На данном этапе можно приступать к запуску импортированной виртуальной машины. Единственное, что имеет смысл сделать перед запуском, это проверить порядок загрузки. Для этого выберите мышью строку Options в свойствах VM и убедитесь, что в первую очередь загрузка будет выполняться с диска (рис. 18).
Рис. 18. Проверка порядка загрузки виртуальной машины
При необходимости измените порядок загрузки.
Теперь запустите VM и подключитесь к ней с помощью консоли Proxmox VE. Если все сделано правильно, вы увидите в консоли приглашение для входа (рис. 19).
Рис. 19. Приглашение для входа в импортированную VM
Изменение настроек сетевого интерфейса
Импортированная виртуальная машина запустилась, однако у нее старые сетевые настройки, предназначенные для работы под управлением VMmanager на старом сервере. Эти настройки необходимо изменить.
При изменении настроек руководствуйтесь документацией на ОС, установленной в виртуальной машине. Для Debian зайдите через консоль (рис. 19) пользователем root и отредактируйте содержимое файла /etc/network/interfaces:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.73
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
Здесь нужно указать правильные значения для полей address, netmask, gateway и dns-nameservers. Эти значения вы должны получить в дата-центре, который разместил ваш сервер или предоставил вам сервер в аренду.
Далее отредактируйте файл /etc/resolv.conf:
nameserver 192.168.0.1
В нем нужно добавить строки для каждого сервера DNS, предоставленного дата-центром, указав правильные адреса IP.
После редактирования файлов /etc/network/interfaces и /etc/resolv.conf перезагрузите ОС виртуальной машины, а затем убедитесь, что она доступна через SSH с вашей рабочей станции.
Замена адреса IP в приложениях
Чтобы приложения, установленные на импортированной VM, продолжили свою работу, необходимо отыскать в файлах конфигурации этих приложений старый адрес IP и заменить его новым. В этом вам помогут знания архитектуры приложений, а также команда grep.
Ниже мы привели пример команды, которая ищет адрес 192.168.0.73 в файлах конфигурации, расположенных в каталоге /etc:
# grep -r "192.168.0.73" /etc/
Если в импортированной VM был установлен брандмауэр, то его конфигурацию также следует отредактировать.
Например, если конфигурация хранится в файле /etc/iptable/iptable.conf, измените его, а затем загрузите правила следующей командой:
# iptables-restore < /etc/iptable/iptable.conf
Автор статьи: Александр Фролов.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.