Dedizierten Server in eine OpenVZ-VE migrieren

Vor geraumer Zeit habe ich meinen Server auf Basis von CentOS 6 und OpenVZ neu aufgesetzt um die Hardware insgesamt flexibler nutzen zu können und auch zukünftige Umzüge einfacher zu bewerkstelligen. Da ich allerdings zum faulen Teil der Menschheit gehöre und nicht alles neu einrichten wollte, habe ich kurzerhand das gesamte System in eine VE auf meinem KS2G von OVH umgezogen und zum Schluss einfach mittels vzmigrate umgezogen. Wenn euer System mit dem Template eures Hosters installiert wurde, könnte es passieren, dass ihr ggf in die ein oder andere von ihm vorgenommene Anpassung rennt. Muss aber nicht zwingend passieren.

Zuerst sollten wir uns überlegen, welche bestehenden Files wir nach der Migration nicht mehr brauchen und diese in eine für rsync lesbare Datei packen.

cat << EOF > /tmp/exclude.txt
/initrd*
/vmlinuz*
/proc/*
/dev/*
/tmp/*
/boot
/lib/modules
/etc/blkid
/etc/lvm
/etc/udev
EOF

Anschließend legen wir auf dem OpenVZ-Host eine leere VE an

mkdir /vz/root/123 /vz/private/123
cat /etc/vz/conf/ve-vswap-2g.conf-sample > /etc/vz/conf/123.conf

convertieren diese ins Ploop-Format (optional, aber empfohlen)

vzctl convert 123

mounten diese

vzctl mount 123

und starten den ersten Sync

rsync -avz -H -X --one-file-system --numeric-ids --exclude-from=/tmp/exclude.txt root@alter.server:/ /vz/root/123

nachdem der Sync durch ist, ist es Zeit auf dem alten Server Dienste wie MySQL zu beenden und den Sync noch mals zu starten.

Sobald das erledigt ist, müssen noch ein paar Kleinigkeiten angepasst werden

sed -i -e '/getty/d' /vz/root/123/etc/inittab
ln -sf /proc/mounts /vz/root/123/etc/mtab

cat << EOF > /vz/root/123/etc/fstab
proc  /proc       proc    defaults    0    0
none  /dev/pts    devpts  rw,gid=5,mode=620    0    0
none  /run/shm    tmpfs   defaults    0    0
EOF

mknod --mode 666 /vz/root/123/dev/ptmx c 5 2
mknod --mode 666 /vz/root/123/dev/null c 1 3
mknod --mode 444 /vz/root/123/dev/urandom c 1 9

Damit OpenVZ weiß, wie es mit der VE umgehen muss, sollte man mit einem

vzctl set 123 --ostemplate debian-7.0-x86_64 --save

angeben, dass es sich bei der gerade gebauten VE bspw um ein Debian handelt.

Um die alte IP durch die neue zu ersetzen, empfiehlt sich bspw ein einfaches

find /vz/root/123/etc -type f -exec sed -i 's/alte.ip/neue.ip/g' {} \;

Das restliche Feintuning eurer VE überlasse ich ab hier euch :)