URUCHAMIANIE KVM (ubuntu)
sudo apt-get install kvm
sudo apt-get install bridge-utils
Edycja
/etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
bridge_ports eth0
bridge_stp off
bridge_maxwait 5
Edycja /etc/qemu-ifup
#!/bin/sh
/sbin/ifconfig $1 0.0.0.0 promisc up
/usr/sbin/brctl addif br0 $1
sleep 2
Teraz musimy stworzyć virtualny dysk:
mamy 2 możliwości
1) tworzymy dysk o stałej wielkości 4GB (dysk fizycznie tyle zajmie na dysku)
dd if=/dev/zero of=disk01.img bs=1G count=4
2) tworzymy dysk o interesującej nas wielkości ale wielkość nie będzie alokowana (załóżmy ze chcemy dysk 10GB)
qemu-img create -f qcow2 disk01.qcow2 10G
Teraz instalujemy system na virtualnym dysku
1) z obrazu instalacyjnego w pliku
kvm -hda disk01.img -cdrom os.iso -m 512 -boot d -vnc IP:1
2) z dysku cdrom
kvm -cdrom /dev/cdrom -m 1024 -boot d -vnc IP:1 disk01.qcow2
(po instalacji)
Teraz mamy zamiar uruchomić maszynę wirtualną z obsługą sieci. Możemy przypisać do niej adresu MAC dla interfejsu sieciowego VM.
Jest to ważne, jeśli używamy więcej niż 1 VM. Każda maszyna wirtualna powinna mieć inny mac-address.
kvm -hda disk01.img -m 512 -boot c -net nic,vlan=0,macaddr=00:16:3e:00:00:01 -net tap -nographic -daemonize
powinniśmy mieć już możliwość podłączenia się po ssh do naszej maszyny , jeśli występują problemy można dołożyć podgląd vnc
(czasami gdy są problemy z dostepem do sieci możan sprobować tak)
kvm -hda disk01.img -m 512 -boot c -net nic,vlan=0,macaddr=00:16:3e:00:00:01,model=rtl8139 -net tap -nographic -daemonize
******
Konwertowanie obrazów:
virtualbox --> kvm
- najpierw konwersja na obraz typu IMG
VBoxManage clonehd /sciezka/do/obraz.vdi /sciezka/do/obraz.img --format raw
- teraz konwersja z obrazu IMG na format którego używa KVM
qemu-img convert -f raw obraz.img -O qcow2 obraz.qcow2
Przykłady uruchomień kvm:
kvm -hda /sciezka/disk1.qcow -hdb
/sciezka/disk2.qcow -m 2048 -vga none -usb -usbdevice tablet -net
nic -net user,hostfwd=tcp:192.168.1.2:2228-:22
*****************
Przenoszenie działających obrazów systemu pliku do KVM opartych na LVM.
1. chyba najlepsze rozwiązanie (po sieci)
Na maszynie docelowej:
iptables -I INPUT -p tcp --dport 9897 -s IP_ZRODLA -j ACCEPT
nc -l -p 9897 |dd of=/dev/mapper/vgname/lvname
Na maszynie źródła:
(wyłączamy bez błędów maszynę virtualną która chcemy skopiować.)
dd if=/dev/mapper/vgname/lvname | nc IP_DOCELOWEJ 9897
[Enter]
i czekamy w zależność od ilości danych i łącza, np. przy łączy 1,5Mbit i 40GB danych to czas około 1h
2. możemy użyć komendy rsync
na maszynie docelowej:
tworzymy partycje na naszym pustym wolumenie LVM identyczna jak na maszynie źródłowej (nie konieczne ale wskazane, nie trzeba zmieniać wówczas /etc/fstab)
fdisk /dev/mapper/vgname/lvname
używamy komendy kpartx aby zobaczyć stworzone partycje
kpartx -av /dev/mapper/vgname/lvname
teraz powinniśmy w /dev/mapper/ odnaleźć odnośniki do naszych partycji
dalej postępujemy już jak z urządzeniami blokowymi (dyskami)
tworzymy system plików
np.
mkfs.ext4 /dev/mapper/vgname/lvname-home
itd.
tworzymy jakiś punkt montowania np. nowy
mkdir /nowy/
cd nowy
tworzymy katalogi które będą montowane np. home , var
mkdir home var
na maszynie źródła (na działającym virtualu):
rsync -avz -e ssh root@IP_ZDALNEGOKOMPA:/ /nowy/
i czekamy aż się zrobi
następnie należy uruchomić kvm z butowaniem się cdrom z obrazem np. knoppixa i uaktualnić wpis w MBR dla grub'a lub lilo.
np.
qemu-system-x86_64 -cdrom knoppix.iso -m 1096 -vnc :1 -boot d -drive file=/dev/mapper/vgname/lvname
,cache=none,if=virtio -pidfile /home/test.pid
dla lilo wystarczy uruchomić komendę
lilo
dla grub uruchomić komendę
grub-install /dev/vda1 (podać poprawny dysk)