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
Szablony systemów:
Pobieramy szablon:
Tworzymy maszynę tymczasową:
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 /vz mkdir /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' root@ip_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 -‑ostemplate tutaj podajemy nazwę starego systemu, uprzednio pobieramy template i wrzucamy do /vz/template/cache. Parametr -‑onboot yes 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.