Миграция OpenVZ контейнера с CentOS 6.6 в VMWare ESXi 5.5


Создаем пустой образ (16Gb):

# dd if=/dev/zero of=/var/lib/vz/root/vz.img bs=1024 count=16777216

Делаем две партиции, 500Мб на boot и остальное:

# fdisk /var/lib/vz/root/vz.img

Результат:

# fdisk -l /var/lib/vz/root/vz.img

Disk vz.img: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders, total 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x43c72ebd

Device       Boot                               Start      End      Blocks     Id    System
vz.img1         *                                2048   1026047 512000     83    Linux
vz.img2                                     1026048 33554431 16264192 8e    Linux LVM

 

Создаем файловую систему на корневой партиции, offset равен количеству байт перед началом партиции, что в нашем случае = 1026048 * 512 (start sector * sector size):

# losetup -o 525336576 /dev/loop0 /var/lib/vz/root/vz.img
# pvcreate /dev/loop0
# vgcreate vg_main /dev/loop0
# lvcreate -L 4G -n lv_swap vg_main
# lvcreate -l 100%FREE -n lv_root vg_main
# mke2fs -t ext4 /dev/mapper/vg_main-lv_root
# mkswap /dev/mapper/vg_main-lv_swap

Монтируем образ:

# mkdir -p /mnt/vz && mount /dev/vg_main/lv_root /mnt/vz

Копируем содержимое openvz контейнера на образ:

# cp -av /var/lib/vz/private/[vz_id]/* /mnt/vz/

Размонтируем и сконвертим в vmdk:

# umount /mnt/vz
# qemu-img convert -f raw /var/lib/vz/root/vz.img -O vmdk /var/lib/vz/root/vz.vmdk

На ESXi хосте создаем виртуальную машину без HDD. Копируем полученный vmdk файл на ESXi хост и конвертируем в thin формат:

# vmkfstools -i vz.vmdk -d thin vz-thin.vmdk

Подключаем полученный диск к виртуальной системе, загружаемся с какого-нить rescue CD (например SystemRescueCD).
Загрузившись, сделаем файловую систему для boot партиции:

# mke2fs -t ext4 /dev/sda1

Монтируем наш раздел и переходим в него по chroot:

# mkdir -p /mnt/vz && mount /dev/vg_main/lv_root /mnt/vz
# mount /dev/sda1 /mnt/vz/boot
# mount --bind /dev /mnt/vz/dev
# mount -t proc none /mnt/vz/proc
# mount -t sysfs none /mnt/vz/sys
# chroot /mnt/vz  /bin/bash

Редактируем то, что нужно:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart
# vi /etc/fstab
# cat /etc/fstab

/dev/mapper/vg_main-lv_root / ext4 defaults 1 1
/dev/mapper/vg_main-lv_swap swap swap defaults 0 0
/dev/sda1 /boot ext4 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

# echo "SELINUX=disabled" > /etc/selinux/config

Удаляем лишнее и устанавливаем недостающее:

# yum remove vzdummy-init* vzdummy-glibc
# yum reinstall @Base kernel device-mapper-multipath lvm2 device-mapper-event grub glibc glibc-common libgcc tzdata grep pcre libstdc++ ncurses ethtool pam mcstrans chkconfig python db4 openssl gdbm krb5-libs initscripts centos-release iproute sysfsutils module-init-tools e2fsprogs e2fsprogs-libs psmisc procps libsysfs iputils
# yum reinstall *init*

 

Конфиг grub:

# vi /boot/grub/grub.conf
# cat /boot/grub/grub.conf

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-573.7.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-573.7.1.el6.x86_64 ro root=/dev/mapper/vg_main-lv_root rd_LVM_LV=vg_main/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_main/lv_swap rd_NO_DM
initrd /initramfs-2.6.32-573.7.1.el6.x86_64.img

Устанавливаем загрузчик:

# grub-install /dev/sda

Перезагружаем виртуальную машину в обычном режиме. Готово.

 

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *