czwartek, 11 kwietnia 2013

Przenosimy fizycznego linuxa na wirtualną maszynę

Mamy fizyczną maszynę na której śmiga sobie serwerek na linuxie i zamarzyło nam się wykorzystać go w inny sposób i zamierzamy sam system zwirtualizować. Niestety nie dysponujemy odpowiednim softem i infrastrukturą Vmware, bądź HyperV. Wykorzystajmy do tego ogólnodostępne darmowe narzędzia. W pierwszej kolejności ściągnijmy sobie System Rescue CD (wielokrotnie nam się przyda) z http://www.sysresccd.org/Download. Możemy wypalić plik ISO na płycie, lub wykonać bootowalnego pendrive (polecam program Universal USB Installer do pobrania z http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/). Logujemy się na fizycznej maszynie i za pomocą polecenia:
df -h
sprawdzamy jakie dyski/partcje/LVM`y mamy do zarchiwizowania i zapisujemy to.
Następnie uruchamiamy System Rescue CD i  Podłączamy np. dysk zewnętrzny i mapujemy go za pomocą mount:
cd /
mkdir 1
ntfs-3g /dev/sdc1 /1
gdzie sdc1 to nasz dysk zewnętrzny.
Przystępujemy do zarchiwizowania naszego całego systemu:
fsarchiver savefs -v -o /scieżka/docelowa.fsa /dev/sda1
jeśli mamy lvmy to:
fsarchiver savefs -v -o /scieżka/docelowa.fsa /dev/sda1 /dev/scieżka/lvm1 /dev/scieżka/lvm2
Po zakończonej archiwizacji tworzymy wirtualna maszyna (np w vmplayer, lub Virtual Box) i wyposażamy ją w 2 dyski sda i sdb. Uruchamiamy wirtualna maszynę z System Rescue CD (montujemy ISO jako napęd CD) i tworzymy partycję za pomocą fdisk tworzymy na sda nowa partycje i robimy ją bootowalną, a
na dysku sdb tworzymy tylko nowa partycje oraz tworzymy system plików na obydwu dyskach:
mkfs -t ext3 /dev/sda1
mkfs -t ext3 /dev/sdb1
montujemy dysk sdb1 i wrzucamy na niego plik fsa z archiwum:
cd /
mkdir 1
mount -t /dev/sdb1 /1
 W jaki sposób plik umieścimy na sdb1 zalezy od tego czym dysponujemy (poprzez ftp najpierw trzeba sieć skonfigurować. W System Rescue CD służy do tego polecenie net-setup. możemy udostępnić port usb na fizycznej maszynie itp.)
Teraz rozpakowujemy plik fsa na sda1:
fsarchiver restfs -v /scieżka/docelowa.fsa id=0,dest=/dev/sda1
gdzie id to id partycji zarchiwizowanej dla:
fsarchiver savefs -v -o /scieżka/docelowa.fsa /dev/sda1 /dev/scieżka/lvm1 /dev/scieżka/lvm2
id=0 to /dev/sda1
id=1 to  /dev/scieżka/lvm1
id=2 to  /dev/scieżka/lvm1
czyli w tym przypadku wydajemy polecenie 3 razy za każdym razem na odpowiednią partycje jeśli korzystamy z więcej niż  z jednej. Pozostało zainstalować GRUB na dysku:
mkdir /mnt/sda1
mount /dev/sda5 /mnt/sda1
grub-install --root-directory=/mnt/sda1 /dev/sda
Teraz wystarczy (szczególnie jeśli mieliśmy lvm`a) sprawdzić i ew sprawdzić i poprawić dwa pliki:
/boot/grub/grub.conf (taki miałem w przypadku CentOS`a) i /etc/fstab. Resetujemy maszynę wirtualna i jeśli pojawią się jeszcze jakieś błędy eliminujemy je, jak nie cieszymy się wirtualką z fizycznej maszyny. Teraz wystarczy zaorać i wykorzystać fizyczny serwer. Może na serwer maszyn wirtualnych.