В данной статье мы расскажем, как своими силами перенести виртуальные машины с 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
Рис. 1. Приглашение для установки Proxmox VE

Здесь с помощью клавиш перемещения курсора нужно выбрать строку Install Proxmox VE, а затем нажать клавишу Enter. Строка Advanced Options позволит вам запустить проверку оперативной памяти сервера, а также выполнить установку в отладочном режиме.

Через некоторое время после запуска установки вы увидите текст лицензионного соглашения. Для продолжения установки щелкните мышью клавишу I agree.

На следующем этапе выберите диск. Щелкнув кнопку Options, выберите тип файловой системы и размер дискового пространства, выделенного для Proxmox (рис. 2).

Рис. 2. Выбор файловой системы
Рис. 2. Выбор файловой системы

В том случае, когда ваш сервер оборудован контроллером диска, способным создать дисковый массив RAID, выберите файловую систему ext4 (используется по умолчанию). При этом будет использован менеджер логических томов Logical Volume Manager (LVM).

В том случае, если нужно создать программный дисковый массив RAID, можно остановиться на файловой системе ZFS или BTRFS.

Далее щелкните кнопку Next, выберите из списков страну, временную зону и раскладку клавиатуры (рис. 3).

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

На следующем экране вам будет предложено ввести пароль и адрес электронной почты администратора (рис. 4).

Рис. 4. Ввод пароля и адреса электронной почты администратора
Рис. 4. Ввод пароля и адреса электронной почты администратора

После ввода пароля и адреса электронной почты укажите сетевые настройки для вашего сервера Proxmox VE (рис. 5).

Рис. 5. Сетевые настройки сервера Proxmox VE
Рис. 5. Сетевые настройки сервера Proxmox VE

Используйте здесь данные, полученные от службы поддержки дата-центра, в котором размещен сервер. 

И, наконец, непосредственно перед запуском установки вы сможете проверить все введенные параметры и при необходимости вернуться назад для их редактирования (рис. 6).

Рис. 6. Проверка параметров установки
Рис. 6. Проверка параметров установки

Если параметры правильные, щелкните мышью кнопку Install. После установки сервер будет перезагружен автоматически. За ходом процесса установки можно наблюдать на консоли (рис. 7).

Рис. 7. Ход процесса установки Proxmox VE
Рис. 7. Ход процесса установки Proxmox VE

После завершения установки появится приглашение для входа в консоль с адресом панели управления Proxmox VE (рис. 8).

Рис. 8. Приглашение для входа с адресом панели
Рис. 8. Приглашение для входа с адресом панели

Этот адрес нужно использовать для входа через браузер. Зайдите на страницу https://192.168.0.21:8006/ (у вас будет другой IP), введите там логин root и пароль, который вы задали на этапе установки (рис. 9).

Рис. 9. Вход в панель управления Proxmox VE через браузер
Рис. 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 (доменные имена приведены только для примера)
Рис. 10. Для хранения VM используется хранилище LVM-Thin (доменные имена приведены только для примера)

Здесь диски сервера объединены в зеркало RAID-1 с помощью аппаратного контроллера, поэтому Proxmox VE видит этот массив как один диск.

Если в дереве, показанном слева на рис. 10, выделить строку local-lvm, то справа на вкладке Summary появится график использования дисковой памяти (рис. 11).

Рис. 11 Использование дисковой памяти в хранилище LVM-Thin
Рис. 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
Рис. 12. Дисковая память, выделенная для VM

Здесь, однако, не показан процент использования этой памяти.

На рис. 13 мы показали использование хранилища ZFS, созданного на обычном настольном компьютере с двумя дисками объемом 1 Тбайт.

Рис. 13. Для хранения VM используется хранилище ZFS (доменные имена приведены только для примера)
Рис. 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 без ОС
Рис. 14. Создаем VM без ОС

После создания VM запускать ее не нужно. 

Откройте для новой VM вкладку Hardware и запомните параметры диска. На рис. 15 эти параметры выделены рамкой красного цвета.

Рис. 15. Параметры диска VM в хранилище local-zfs
Рис. 15. Параметры диска VM в хранилище local-zfs

Нам потребуется идентификатор созданной машины (в нашем случае 607), а также название хранилища (у нас local-zfs).

На другом сервере используется хранилище local-lvm, при этом идентификатор VM равен 401 (рис. 16).

Рис. 16. Параметры диска VM в хранилище local-lvm
Рис. 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. Добавление импортированного диска к виртуальной машине
Рис. 17. Добавление импортированного диска к виртуальной машине

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

На данном этапе можно приступать к запуску импортированной виртуальной машины. Единственное, что имеет смысл сделать перед запуском, это проверить порядок загрузки. Для этого выберите мышью строку Options в свойствах VM и убедитесь, что в первую очередь загрузка будет выполняться с диска (рис. 18).

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

При необходимости измените порядок загрузки.

Теперь запустите VM и подключитесь к ней с помощью консоли Proxmox VE. Если все сделано правильно, вы увидите в консоли приглашение для входа (рис. 19). 

Рис. 19. Приглашение для входа в импортированную VM
Рис. 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.

Комментарии (1)


  1. serega404
    07.11.2022 11:45

    Хорошая статья, как раз некоторым моим друзьям нужна была эта информация, хотелось бы ещё узнать про то как работает репликация и миграция в proxmox