Гид по технологиям

Конвертация физических систем и Xen VM в контейнеры OpenVZ (Debian Etch)

• 5 min read • Инфраструктура • Обновлено 27 Nov 2025
Конвертация в OpenVZ (Debian Etch)
Конвертация в OpenVZ (Debian Etch)

Коротко: копируйте корневой каталог исходной машины в директорию контейнера с помощью rsync, настройте основные параметры через vzctl, выполните несколько OpenVZ-специфичных исправлений и запустите контейнер. Подготовьте второй сервер с установленным OpenVZ, убедитесь, что исходная система выключена при использовании того же IP, и проверьте сетевые/служебные конфигурации внутри контейнера.

Важно: инструкция написана для Debian Etch и OpenVZ; для других дистрибутивов или более новых версий потребуются небольшие изменения.

Введение

Автор: Falko Timme

Эта инструкция описывает, как конвертировать физическую систему (Debian Etch) или Xen domU (также Debian Etch) в контейнер OpenVZ. Она также применима к другим виртуальным машинам (VMware, VirtualBox, KVM) с незначительными правками. Я не даю гарантии, что всё сработает в вашей среде.

Кратко о терминах:

  • OpenVZ — контейнерная виртуализация для Linux.
  • domU — гостевая виртуальная машина Xen.

Основная идея и модель мышления

Ментальная модель: контейнер — это просто корневой файловый набор и набор параметров ядра. Мы переносим файловую систему (за исключением псевдофайловых систем) в директорию контейнера, настраиваем параметры OpenVZ и корректируем файлы, которые конфликтуют с работой внутри контейнера (например, getty, mtab, устройства).

Когда этот метод применим:

  • Идеально для простых серверов с типичной Linux-структурой (/etc, /var, /home).
  • Может потребовать дополнительных шагов для сложных конфигураций (RAID, LVM, собственные init-скрипты, нестандартные ядра).

Предварительная заметка

В примере будем конвертировать server1.example.com (IP 192.168.0.100) в контейнер VEID 211 на сервере server2.example.com, где уже установлен OpenVZ. В статье предполагается, что каталог OpenVZ — /vz, который является символьной ссылкой на /var/lib/vz.

server2:

ln -s /var/lib/vz /vz

Примерные требования:

  • root-доступ на обоих хостах;
  • установлен OpenVZ на сервере назначения;
  • сетевой доступ по SSH между машинами.

1. Создание структуры контейнера и базовая конфигурация

На сервере назначения создайте директории для VEID 211 и стандартный конфиг:

server2:

mkdir /vz/root/211 /vz/private/211
cat /etc/vz/conf/ve-vps.basic.conf-sample > /etc/vz/conf/211.conf

Установка rsync на обоих серверах (будем копировать файлы):

server1/server2:

apt-get install rsync

2. Копирование файлов с помощью rsync

Переносим содержимое корневой файловой системы исходного сервера в директорию контейнера. Исключаем псевдофайловые системы и временные файлы.

server2:

rsync -arvpz --numeric-ids --exclude dev --exclude proc --exclude tmp -e "ssh -l [email protected]" [email protected]:/ /vz/private/211/

Примечание: ключ –numeric-ids сохраняет UID/GID. Перенос может занять от нескольких минут до часов в зависимости от объёма данных.

Альтернативы rsync:

  • tar по SSH: более простой потоковый перенос, но сложнее восстанавливать прерванные копирования.
  • локальное подключение диска: монтирование и копирование файлов напрямую.

3. Настройка параметров OpenVZ

Указываем шаблон ОС (OSTEMPLATE) — OpenVZ должен знать, какое окружение внутри контейнера ожидается:

server2:

vzctl set 211 --ostemplate debian-4.0-i386-minimal --save

Настроим автозапуск, hostname, IP, лимиты и DNS:

server2:

vzctl set 211 --onboot yes --save
vzctl set 211 --hostname server1.example.com --save
vzctl set 211 --ipadd 192.168.0.100 --save
vzctl set 211 --numothersock 120 --save
vzctl set 211 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save

Настройка дискового пространства (пример: soft 10GB, hard 11GB):

server2:

vzctl set 211 --diskspace 10000000:11000000 --save

Совет: если вы будете назначать контейнеру новый IP, заранее продумайте изменение конфигураций сервисов (Apache, базы данных и т. п.). Если оставляете тот же IP — обязательно выключите исходную систему перед запуском контейнера.

4. OpenVZ-специфичные исправления в файловой системе контейнера

Перед первым запуском нужно удалить/изменить файлы, которые конфликтуют с окружением контейнера, и создать необходимые устройства:

server2:

sed -i -e '/getty/d' /vz/private/211/etc/inittab
rm -f /vz/private/211/etc/mtab
ln -s /proc/mounts /vz/private/211/etc/mtab
cp /vz/private/211/etc/fstab /vz/private/211/etc/fstab.old
grep devpts /vz/private/211/etc/fstab.old > /vz/private/211/etc/fstab
mkdir /vz/private/211/dev
mknod --mode 666 /vz/private/211/dev/ptmx c 5 2
mkdir /vz/private/211/dev/pts
cp -a /dev/ttyp* /dev/ptyp* /vz/private/211/dev/
rm -f /vz/private/211/dev/null
mknod --mode 666 /vz/private/211/dev/null c 1 3
mknod --mode 444 /vz/private/211/dev/urandom c 1 9
mkdir /vz/private/211/proc
cat /dev/null > /vz/private/211/etc/network/interfaces

Пояснение: мы убираем getty-запуски (не нужны для контейнера), связываем mtab с /proc/mounts, создаём специальные файлы устройств и очищаем сетевой интерфейс, чтобы не возник конфликтов с сетевой конфигурацией хоста.

5. Запуск контейнера и начальная проверка

Запускаем контейнер и задаём пароль для root внутри контейнера:

server2:

vzctl start 211

Установка пароля:

vzctl exec 211 passwd

После запуска проверьте:

  • журнал контейнера: vzctl exec 211 dmesg, /var/log/* внутри контейнера;
  • сетевые настройки: ip addr show внутри контейнера;
  • службы: systemctl / init скрипты (в Debian Etch — init).

Критерии приёмки

  • Контейнер успешно стартует без критических ошибок в логах.
  • Сеть отвечает на ping/SSH (если назначен IP).
  • Основные сервисы приложения работают корректно.

Когда этот метод может не сработать

  • Система использует нестандартный init или собственное ядро.
  • В контейнере требуются специфичные модули ядра, отсутствующие на хосте.
  • Если система использует LVM/RAID и сервисы завязаны на устройствах — потребуется дополнительная адаптация.

Отладка и распространённые проблемы

  • Проблема: контейнер не стартует — проверьте /vz/private/211/root/var/log/syslog и vzctl status 211.
  • Сеть не поднимается — убедитесь, что /etc/network/interfaces внутри контейнера корректен и IP не конфликтует.
  • Сервисы падают с ошибкой о доступе к устройству — возможно, требуется создать дополнительные dev-узлы или включить соответствующие параметры в конфиге OpenVZ.

Рекомендуемые команды для диагностики:

vzctl status 211
vzctl exec 211 /bin/bash -l
vzlist -a

Роль-based чеклисты

Для администратора (подготовка хоста):

  • Установить OpenVZ и проверить совместимость ядра.
  • Создать /vz и конфигурации.
  • Настроить резервное копирование.

Для оператора (перенос контейнера):

  • Установить rsync, выполнить перенос.
  • Настроить vzctl параметры, проверить логи.
  • Убедиться в отсутствии IP-конфликта.

Безопасность и приватность

  • Проверьте, что внутри контейнера не остались секретные ключи, которые не должны дублироваться.
  • При переносе персональных данных соблюдайте локальные законы о защите данных (GDPR/локальные аналоги). Удалите ненужные логи/журналы перед публикацией контейнера.

Миграционные советы и совместимость

  • Тестируйте на временной сети, прежде чем менять IP продакшн-сервера.
  • Для других дистрибутивов: путь сетевых конфигураций может отличаться (например, NetworkManager, /etc/sysconfig/network-scripts и т.д.).
  • Если переносите 64‑бит систему в 32‑бит шаблон — это несовместимо.

Быстрые шаблоны и чеклисты

Мини-SOP для переноса в 7 шагов:

  1. Подготовить host2 с OpenVZ.
  2. Создать директории и конфиг VEID.
  3. Установить rsync на обоих хостах.
  4. Скопировать корень с помощью rsync.
  5. Установить OSTEMPLATE и сетевые параметры.
  6. Выполнить OpenVZ-специфичные исправления.
  7. Запустить контейнер и проверить сервисы.

Краткий план восстановления при ошибке

Если контейнер не работает после запуска:

  1. Остановите контейнер: vzctl stop 211
  2. Восстановите оригинальные файлы из /vz/private/211/etc/fstab.old
  3. Проверьте прав доступов и ownership в корне контейнера
  4. Повторите запуск и проверьте логи

Дополнительные ресурсы

Резюме

Метод основан на копировании корневой файловой системы и последующей настройке контейнера OpenVZ. Это быстрый путь миграции для стандартных Debian-серверов, но требует внимания к устройствам, сетевым настройкам и специфичным сервисам. Всегда тестируйте на отдельной изолированной сети и имейте резервные копии.

Важно

Перед тем как переводить продакшн-сервер: сделайте полный бэкап и протестируйте контейнер в отдельной среде.

1-строчный словарь

  • VEID — идентификатор виртуального окружения (контейнера) в OpenVZ.

Социальный анонс

Коротко: пошаговое руководство по преобразованию Debian Etch (физической машины или Xen domU) в контейнер OpenVZ с примерами команд и списком распространённых проблем.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро