LINUX.ORG.RU

Перенос системы из контейнера VZ в KVM

 ,


0

1

Есть необходимость перенести систему их контейнера VZ в KVM. Существуют описания; например здесь https://lintut.com/how-to-migrate-openvz-to-kvmvmware/ так и говорится «Trust me.. it works!».

У меня ситуация гораздо лучше чем у автора статьи: есть возможность остановить исходную систему. Монтирую контейнер и делаю архив корня исходной системы. Затем монтирую образ рабочей (остановленной) виртуальной машины, создаю подкаталог default.system/ и переношу туда текущее содержимое, после чего разворачиваю в корень архив.

Сначала меняю только fstab, сразу пробую запустить но grub падает в grub shell. В общем ожидаемо. Останавливаю, заменяю /boot на исходный (из default.system/). Может было бы достаточно только конфига но системы вроде полностью идентичны (centos 6) поэтому заменяю весь каталог. В описании сказано что нужно поставить пакет mingetty, но он вроде уже установлен. Там же рекомендуется добавить в inittab соотв. вызовы, но в заготовке (куда копируется) этого нет: добавил.

Система загружается, но логин не работает: набираешь текст, ввод, снова текст — просто всё выводится на экран без видимого результата.

Также, нет IP адреса который должен подняться. Но логи в смонтированной ФС из образа показывают что система вроде жива. Общаюсь с ней через crontab, создаю задание и смотрю результат. Результат показывает что сетевая карта существует

00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
Но сетевой интерфейс — нет:
Device eth0 does not seem to be present, delaying initialization.

Как можно понять что мешает сети и логину?

★★★★★

Последнее исправление: sin_a (всего исправлений: 1)

что мешает сети

/etc/udev/rules.d/70-persistent-net.rules

Вообще, на дворе век автоматизации, а ты все со снежинками играешься. Ставишь в виртуалке систему с нуля, описываешь всю конфигурацию в ansible/chief/puppet/etc, забываешь пердолинг с переносом как страшный сон.

Deleted
()
Ответ на: комментарий от Deleted

/etc/udev/rules.d/70-persistent-net.rules

Пробовал, увы...

Ставишь в виртуалке систему с нуля, описываешь всю конфигурацию

Мне тоже так нравится, но внутри ПО которое настраивает поставщик. И они, похоже, до такого ещё не дозрели. А заставлять их повторять пердолинг с настройкой с нуля (и с перерывом сервиса) я пока не созрел.

sin_a ★★★★★
() автор топика

Настрой spice / vnc доступ к виртуальной машине, раз не можешь сразу настроиться запуск с сетью.

Device eth0 does not seem to be present, delaying initialization.

Смотря какая у тебя там версия Linux, у тебя либо в udev в файле 70-persistent-net.rules стоит привазка имени сетевого интерфейса к мак адресу, а также в /etc/sysconfig/network-scripts/ifcfg-eth0 указать другой mac адрес.

Если же у тебя там systemd или новый udev, то вообще имена интерфейсов будут «уникальными».

В общем, сейчас поднимай spice / vnc доступ к виртуалке, авторизуйся в консоли и настрой там всё.

anonymous
()
Ответ на: комментарий от sin_a

Пробовал что? У тебя похоже имя интерфейса поехало, удали это файл, и ребутнись. Если не поможет, то дописывай в опции загрузки init=/bin/bash, и смотри как там у тебя интерфейс называется, и правь конфиги.

Deleted
()
Ответ на: комментарий от anonymous

VNC работает через virt-manager, но не работает:

логин не работает: набираешь текст, ввод, снова текст — просто всё выводится на экран без видимого результата.

Systemd нет, там CentOS 6. Файл 70-persistent-net.rules пустой. В каталоге /sys/class/net только lo.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от sin_a

Значит пробуй поставить систему в виртуалку обычным способом, а потом накатить поверх неё твою систему из vz.

anonymous
()
Ответ на: комментарий от Deleted

Файл пуст (комментарии), строго говоря его даже не было, я добавил на всякий случай.

С init=/bin/bash загружается, ip a говорит одно слово: lo.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Наверно я криво рассказал. Собственно так и было: в kvm создал работающий экземпляр такой же CentOS, затем остановил, смонтировал и заменил файлы.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от sin_a

У тебя ядро от какой системы-то грузится, от утсановленной в kvm, или от ovz? Видимо модулей ядра нет на сетевуху, вот и нет ни одного интерфейса.

Вообще, сделал бы по инструкции из твоего же поста, такой фигни бы не было.

Deleted
()
Ответ на: комментарий от sin_a

Потому что у тебя не подгружаются модули. Когда ты грузишься через init=/bin/bash по сути успевает отработать только стартовая система в Initramfs, а в нём у тебя нет модуля для virtio сетевой карты. Удостоверься, что модули присутствую в системе и настрой подгрузку модуля, либо помести его в Initramfs.

Если нет, то поставь, видимо через chroot.

Потому, когда модуль будет загружаться напили сценарии поднятия сетевых интерфейсов и включи их запуск.

anonymous
()
Ответ на: комментарий от Deleted

Та инстрцукция очень кратка: поставьте mingetty (присутствует), добавьте respawn:/sbin/mingetty в inittab, скопируйте файлы пропуская список (...), перезагрузитесь.

Ядро от той же CentOS, та же версия.

Может быть это скорее udev какой нибудь сломался.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В запущенной системе загружены следующие модули:

Module                  Size  Used by
ext4                  381488  2
jbd2                   93380  1 ext4
mbcache                 8193  1 ext4
virtio_blk              7164  5
sr_mod                 15049  0
cdrom                  39533  1 sr_mod
virtio_pci              7544  0
virtio_ring             8891  2 virtio_blk,virtio_pci
virtio                  5671  2 virtio_blk,virtio_pci
pata_acpi               3701  0
ata_generic             3837  0
ata_piix               24409  0
dm_mirror              14864  0
dm_region_hash         12181  1 dm_mirror
dm_log                  9930  2 dm_mirror,dm_region_hash
dm_mod                102791  2 dm_mirror,dm_log
sin_a ★★★★★
() автор топика

Device eth0 does not seem to be present,

где то другое именование сетевого интерфейса)

darkenshvein ★★★★★
()
Ответ на: комментарий от anonymous

Да, в переносимой системе каталог с модулями присутствовал но почти пустой. Положил тот что пришёл с установленной системой в kvm — сеть появилась. Правда я об этом узнал когда посмотрел лог диагностики, потому что в vnc логина так и не появилось.

С сетью работать уже можно, а с логином ещё попробую завтра подумать.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Инструкция не совсем точна. Во первых установка mingetty: оно уже установлено. Во вторых respawn:/sbin/mingetty в inittab: в работающих системах этого нет. В третьих /etc/udev: в переезжающей системе там даже больше чем в пустой. А в /lib/udev вообще исполняемые бинарники лежат. А портить тоже не хочется.

Вот за всем этим /lib/modules и пропустил. Впрочем, ещё логин остался.

sin_a ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.