Перенос виртуального сервера OpenVZ на физический сервер

Столкнулся с задачей по переносу сервера OpenVZ 6-й версии на физический сервер. Дано: виртуальный сервер с simfs и довольно старой ОС Ubuntu 14.04.5. Нужно перенести его с минимальным простоем на физический сервер. В общем случае список действий в данной ситуации простой:

  1. Запускаем на приемнике любой LiveCD и конфигурируем на нем сеть и ssh-сервер.
  2. С помощью rsync копируем содержимое образа на сервер-приемник данные.
  3. Выполняем chroot внутрь скопированного образа, ставим ядро, загрузчик и конфигурирем файл устройств хранения fstab и сетевое подключение.
  4. Загружаемся в новый сервер, проверяем работу и при необходимости исправляем все, что требует ручного вмешательства.

Вышеназванный план — это идеальный случай, который конечно разбивается о реальность. Нюансы борьбы с ней — под катом.

Первое с чем я столкнулся — слишком новое ПО на LiveCD. В результате — форматирование диска прошло с опциями по-умолчанию, которые не поддерживаются старыми ядрами. Простое решение в данном случае — пользоваться LiveCD той же версии ОС, над которой идет работа.

Второе: при установке ядра вызывается хук, исправляющий баг для отсутствующего на сервере оборудования. В моем случае это /usr/share/initramfs-tools/hooks/fixrtc. Самое простое решение этой проблемы — убрать права исполнения на этот скрипт, после чего ядро устанавливается без проблем.

Третье: grub по-умолчанию ставится с опциями, которые скрывают лог загрузки по которому удобно отлавливать возникающие в процессе загрузки проблемы. Исправляем это и в файле /etc/default/grub меняем строку GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" на GRUB_CMDLINE_LINUX_DEFAULT="nomodeset". Это отключает подавление вывода и рисование сплешскрина, а опция nomodeset отключает автоопределение текущего разрешение экрана, которое часто блокирует загрузку.

Четвертое: оказалось, что в составе ОС нету инструментов проверки файловой системы fsck (что логично для виртуального сервера), что тоже может блокировать загрузку сервере при первом запуске, когда ОС принудительно проверяет целостность файловой системы.

Пятое: поскольку сервер был виртуальный, то внутри присутствует несколько инструментов позволяющих работать этому серверу в виртуальном окружении. Один из них — скрипт генерирующий файл mtab из которого некоторые программы берут информацию о точках монтирования ФС и применяющий квоты диска. Этот скрипт, находящийся по пути /etc/init.d/vzquota достаточно удалить или переместить.

Из всякого разного с чем пришлось столкнуться после загрузки: для некоторых программ нужен инструмент логирования, входящий в состав bsdutils, который тоже отсутствует в исходной ОС и его желательно установить тоже.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.