Содержание

Миграция из контейнера (openvz, lxc) в KVM

Подготовка к миграции

На целевом сервере следует создать виртуалку со схожими с контейнером параметрами и загрузиться в linux live CD (GRML). Размечаем диск одним разделом и создаем на нем файловую систему (рекомендуется ext3). Также следует настроить сеть на виртуалке.

Миграция

# Монтируем диск на сервере с KVM
mount /dev/sda1 /mnt
 
# Копируем данные из источника (с ноды openvz или из другого контейнера)
rsync -aAX --info=progress2 root@ovz_node:/vz/root/87999e47-d980-46a2-b446-af6edc8434af/ /mnt/
 
 
# После завершения копирования монтируем все, что требуется для работы
# и переходим в гостевую ОС системы
#
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /sys /mnt/sys
chroot /mnt bash
 
# Заменяем fstab
echo '/dev/sda1 /  root    defaults      0       0' > /etc/fstab
 
# resolv.conf
#
rm /etc/resolv.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
 
#
# Установка ядра - ищем самое свежее
# Для некоторых ОС ниже см. рабочие примеры установки ядра
#
 
# ubuntu 
apt search linux-image | grep generic | grep -v unsigned
 
# ubuntu 22.04
apt install -y linux-image-6.8.0-40-generic linux-headers-generic
 
# ubuntu 20.04
apt install -y linux-image-5.4.0-99-generic linux-headers-generic
 
# debian 11
apt update
apt install -y  linux-image-5.10.0-31-amd64 linux-headers-5.10.0-31-amd64 grub2
 
# Исправление GRUB
vi /etc/default/grub
 
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset consoleblank=0 elevator=noop"
GRUB_CMDLINE_LINUX="consoleblank=0 systemd.show_status=true net.ifnames=0 biosdevname=0"
 
###
# конфигурируем сеть. у меня виртуалка получает IP по   DHCP
##
 
echo '### https://vps-server.ru/vps
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp' > /etc/network/interfaces
 
grub-install /dev/sda
update-grub
 
update-initramfs -u

в непонятных случаях помогает скрипт в кроне:

#!/bin/bash
 
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
ifconfig eth0 inet 91.194.3.25  netmask 255.255.255.128  broadcast 91.194.3.127
ip r a default via 91.194.3.126 dev eth0
systemctl > /root/systemctl.txt
service ssh restart