Przenoszenie fizycznej maszyny do kontenera OpenVZ
Witam. W moim pierwszym poście chce przedstawić sposób przeniesienia serwera fizycznego lub wirtualnego (xen, vmware, etc..) do kontenera OpenVZ.
Jako system wykorzystałem dystrybucje Proxmox, a pokaże jak przenieść Debiana oraz CentOS’a. Jedynym problemem jaki spotkałem to to ze w CentOS’ie musiałem zmienić ustawienia startowe a w obu przypadkach musiałem ręcznie dokopiować /dev z stworzonej na boku tymczasowej maszyny.
Na początku musimy pobrać interesujący nas template i zainstalować taka maszynę aby przegrać sobie gotowy plik konfiguracyjny i mieć poprawny katalog /dev
Umownie nowa maszyna ma VMID 1000 a maszyna tymczasowa VMID 103
Tworzymy sobie linka symbolicznego i zakładamy katalog dla nowej maszyny
ln -s /var/lib/vz /vzmkdir /vz/root/1000 /vz/private/1000
Wykorzystujemy konfiguracje maszyny którą juz mamy:
cat /etc/vz/conf/103.conf > /etc/vz/conf/1000.conf
Instalujemy rsynca i screen’a na obu maszynach
apt-get install rsync screen
lub jeżeli na starej maszynie mamy CentOS’a
yum install rsync screen
Następnie odpalamy dla wygody screena na maszynie z Proxmoxem i przerzucamy stary serwer do kontenera. Oczywiście to chwile zajmie. Wszystko zalezy od tego ile GB zajmuje stary system.
rsync -Parvpz --numeric-ids --exclude dev --exclude proc --exclude tmp \
-e 'ssh -l root@ip_serwera_starego' [email protected]_serwera_starego:/ /vz/private/1000/
Gdy juz całosć się przegrała należy skonfigurować kontener
vzctl set 1000 --ostemplate debian-4.0-i386-minimal --save
vzctl set 1000 --onboot yes --save
vzctl set 1000 --hostname server1.example.com --save
vzctl set 1000 --ipadd 192.168.0.100 --save
vzctl set 1000 --numothersock 120 --save
vzctl set 1000 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save
vzctl set 1000 --diskspace 100GB:100GB --save
I tak mam [b]–ostemplate[/b] tutaj podajemy nazwę starego systemu, uprzednio pobieramy template i wrzucamy do [b]/vz/template/cache[/b]. Parametr [b]–onboot yes[/b] mowi nam o tym aby maszyna startowała automatycznie po restarcie Proxmoxa. W dalszej części ustawiamy nazwę hosta, ip maszyny dnsy oraz ile ma mieć GB miejsca na dysku maszyna.
Teraz wykonujemy to co poniżej. Jest to konfiguracja deva proca fstaba i innych ważnych elementów:
sed -i -e '/getty/d' /vz/private/1000/etc/inittab
rm -f /vz/private/1000/etc/mtab
ln -s /proc/mounts /vz/private/1000/etc/mtab
cp /vz/private/1000/etc/fstab /vz/private/1000/etc/fstab.old
grep devpts /vz/private/1000/etc/fstab.old > /vz/private/1000/etc/fstab
mkdir /vz/private/1000/dev
cp -a vz/private/103/dev /vz/private/1000/dev/
mknod --mode 666 /vz/private/1000/dev/ptmx c 5 2
mkdir /vz/private/1000/dev/pts
rm -f /vz/private/1000/dev/null
mknod --mode 666 /vz/private/1000/dev/null c 1 3
mknod --mode 444 /vz/private/1000/dev/urandom c 1 9
mkdir /vz/private/1000/proc
Musimy usunąć stare śmieci związane z siecią:
Debian
cat /dev/null > /vz/private/1000/etc/network/interfaces
CentOS
mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.old
I to praktycznie wszystko poza jednym. W CentOS’ie zmieniamy plik:
/etc/rc.d/rc.sysinit
Szykamy w nim:
/sbin/start_udev
Tą linijkę za komentujemy i dorzucamy 2 polecenia (niby dev jest ale inaczej maszyna się kaszani). Wiec powinno to być tak:
#/sbin/start_udev
/sbin/MAKEDEV tty
/sbin/MAKEDEV pty
Startujemy maszynę :) i już korzystamy
vzctl start 1000
vzclt enter 1000
Ja w opisany sposób przerzuciłem CentOS’a 5 64bit z qmail’em do kontenera oraz Debiana 4 32bit z sambą i serwerem wydruku.