(a következőkben a gépek hostnevei beszédesen lesznek elnevezve, hogy tudjuk hol vagyunk épp, szóval lesz benne chroot hostnév is :P)
Csattogjunk be az LXC host gépre és tájékozódjunk egy kicsit:
root@lxc:~# du -sh /var/lib/lxc/server1/rootfs/
1.9G /var/lib/lxc/server1/rootfs/
root@lxc:~# ifconfig
Most már tudjuk, mennyi helyre lesz szükség, illetve tudjuk, hogy mi az IP-je a gépnek, mi a MAC-címe. Ezeket azért jegyezzük föl.
A példa kedvéért most feltételezem, hogy az LXC és a KVM ugyanabban a subnetben lakik. Ha nem ugyanott, akkor vagy a KVM-ben készítünk egy virbr-et neki a megfelelő paraméterekkel, vagy a chroot résznél majd átírjuk hálózati paramétereket is a vendég gépben.
Irány a KVM host, készítsük elő a terepet (tételezzük fel, hogy van LVM):
root@kvm:~# lvcreate -L 3G -n imgtemp vg0
root@kvm:~# mkfs.ext3 /dev/vg0/imgtemp
root@kvm:~# mount /dev/vg0/imgtemp /mnt
Fájlrendszert ízlés szerint. Előállt tehát egy ideiglenes LV (de lehet akár végleges is, a későbbiekben kiderül, most miért ideigleneset készítünk).
Húzzuk át a fájlokat (a konténer ne fusson mindeközben).
root@kvm:~# rsync -avzr lxcserver:/var/lib/lxc/server1/rootfs/* /mnt/
root@kvm:~# umount /mnt
Most jön a kiderülés: jelen esetben a KVM qcow2 qemu image-eket használ (használhatna akármit, de itt most ez volt a standard). Konvertáljuk át.
root@kvm:~# qemu-img convert -O qcow2 /dev/vg0/imgtemp /storage/servers/server1.qcow2
A továbbiakban szükségünk lesz egy live disztróra, hogy tudjunk faragni kernelt és grubot.
Wget segítségével húzzunk le egyet (a példában a /storage alatt fognak lakni az image-ek mappákra bontva, az iso-t a /storage alá helyezem el). Én a Debian standard live iso-t használtam, használhatsz bármi mást is.
Ha ez megvan, akkor készítsük el a virtuális gépet. Ehhez készítünk egy XML-t.
root@kvm:~# mcedit ./server1.xml
(sajnos itt nem tudom beszúrni a példakonfigot, mert a Drupál állandóan lenyeli az XML tageket).
A konfigban adjuk meg, hogy a boot eszköz a cdrom legyen, és tegyük bele az iso-ra mutató bejegyzést is.
(itt egy példa rá)
Készítsük el a gépet.
A behúzott gépet nyissuk meg szerkesztésre, ellenőrizzük le, majd mentsük el (mindenképpen menteni kell, különben a gép leállítása után elvesztjük a beállításokat -> vi lesz, itt írjuk át a MAC-címet, mert ha nem adtuk már meg a konfban, akkor adott neki valami randomot, :wq)!
root@kvm:~# virsh create ./server1.xml
root@kvm:~# virsh edit server1
root@kvm:~# rm ./server1.xml
Meg is tarthatjuk az ideiglenes XML-t, ha további gépeket kell még migrálni, templatenek jó lesz.
root@kvm:~# virsh start server1
A következő lépéshez szükséges például a Virtual Machine Manager, hogy konzolt kapjunk.
Nyissuk meg a beindult live rendszert a fenti eszközzel, majd váltsunk root-ra (sudo su) és jöhet chroot mókázás.
root@live:~# mount /dev/sda /mnt
root@live:~# mount -o bind /dev /mnt/dev
root@live:~# mount -o bind /proc /mnt/proc
root@live:~# cp /etc/resolv.conf /mnt/etc/
root@live:~# chroot /mnt
Jelen esetben egy Debian volt hostolva az LXC-ben, így apt-get jön (nyílván egy CentOS esetén most yum jön).
Frissítsük le a listát, telepítsük a kernelt és a grubot.
root@chroot:~# apt-get update
root@chroot:~# apt-get install linux-image-amd64
root@chroot:~# apt-get install grub2
Grub2 majd jól megkérdi, hova menjen önmaga, sok lehetőséget elvileg nem fog adni, tehát /dev/sda.
Ha kész, lépjünk ki a chroot-ból, csatoljuk le, amit felcsatoltunk és lőjük le a gépet.
root@chroot:~# exit
root@live:~# umount /mnt/proc
root@live:~# umount /mnt/dev
root@live:~# umount /mnt
root@live:~# shutdown -h now
Szerkesszük át a konfot, hogy most már a diskről bootoljon.
root@kvm:~# virsh edit server1
- dev='cdrom'
+ dev='hd'
Ha mindent jól csináltunk, akkor a gép el fog indulni.
root@kvm:~# virsh start server1
Ha minden oké, akkor az ideiglenes LV-t törölhetjük is (már ha tényleg ideiglenesnek csináltuk).
Utólag is köszönöm a segítségeket!
- Névtelen blogja
- A hozzászóláshoz be kell jelentkezni
- 1020 megtekintés
Hozzászólások
subs :)
(BTW, engem a fordítottja is érdekelne, sok esetben overkill a kvm, az lxc "kevesebbet fogyaszt".)
- A hozzászóláshoz be kell jelentkezni
Engem is érdekelne visszafelé is.
De még inkább a KVM előnyei, amiért váltottál LXC-ről, hogy mire nem volt megfelelő az LXC.
Sakk-matt,
KaTT :)
- A hozzászóláshoz be kell jelentkezni
Amit megörököltem rendszert, azt migrálni kellett a régi szervereiről, mert azokat felmondták, a célhelyen meg KVM volt. Ezért a 4 alig terhelt virtuális gépért nem állítunk be egy új vasat, csak hogy LXC legyen rajta.
Én amúgy jobb szeretem a full virtualizációt, mint a konténeres hókabókát. Ahol közös a kernel, ott a ló .....sza is túrós. De ez csak az én berögződésem, mindenkinek vannak rigolyái.
- A hozzászóláshoz be kell jelentkezni
Google elég sok találatot adott, egy közülük:
http://www.tuxevara.de/2014/02/migrating-from-kvm-to-lxc/
- A hozzászóláshoz be kell jelentkezni
Blog necromancert játszom, hátha belefut más is (pár hónapja a fentihez hasonló módszerrel migráltam lxc-ről kvm-re néhány gépet és most unatkoztam annyira, hogy megjavítsam, ami eddig zavart :) ): ha rengeteg minden nem működik, miután debillányt LXC-ből átviszel KVM-be (úgy is, mint: ACPI alapú leállítás [minek az], qemu-guest-agent [minek az] és hasonlók), a systemd-udevd unmaskolása segíthet...
Ill. a fenti rsync parancsot még érdemes lehet az rsync-nek még egy -X (xattr) és -A (aclek) paramétert is adni, ha pl. samba megosztás is van a migrált gépen (samba konfigtól függően ott tárolja az ACL-eket)
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni