Version 1.0
Auhor:
Falko Timme <ft [at] falkotimme [dot] com>
Naposledy
editované 10.12.2008
Prekladateľ: Miroslav Nadhajský
Pôvodný text: http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-8.10
Táto príručka vysvetľuje ako nainštalovať a používať KVM na vytváranie a beh VM (virtuálnych počítačov, mašín) na Ubuntu 8.10 server. Ukážeme si ako vytvárať image-based(založené na obraze disku) virtálne počítače a tiež virtálne počítače ktoré používajú logický oddiel disku (LVM-based). KVM je skratka pre Kernel-based Virtual Machine a používa hardvévovú virtualizáciu, to znamená že potrebuješ CPU ktoré podporuje hardvérovú virtualizáciu, napr. Intel VT alebo AMD-V.
Nedávam žiadnu garanciu, že ti toto bude fungovať!
Používam tu ako KVM hostiteľa počítač s hostname server1.example.com a IP adresou 192.168.0.100.
Pretože všetky kroky tohto tutoriálu budeme robiť s root-ovskými právami, môžme predstierať, že všetky príkazy v tomto tutoriále začínajú s reťazcom sudo alebo sa staneme rootom hneď, keď napíšeme
sudo su
Najskôr skontrolujeme či tvoje CPU podporuje virtualizáciu- v tomto prípade príkaz
egrep '(vmx|svm)' --color=always /proc/cpuinfo
malo by ti zobraziť niečo ako:
root@server1:~# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
root@server1:~#
Ak sa ti nič nezobrazilo, potom tovj procesor nepodporuje hardvérovú virtualizáciu, a tu musíš skončiť.
Na nainštalovanie KVM a vmbuilder-a (skriptu na vytvorenie Ubuntu-založených virtuálnych počítačov) spustíme
apt-get install ubuntu-virt-server python-vm-builder
Potom musíme pridať používateľa, tak ako sme teraz prihlásený (root) do skupiny libvirtd:
adduser 'id -un' libvirtd
Musíš sa odhlásiť a znova prihlásiť, aby nové členstvo v skupine malo účinok.
Pre kontrolu, či bolo KVM úspešne nainštalované, spusti
virsh -c qemu:///system list
Malo by to zobraziť niečo podobné ako toto:
root@server1:~# virsh -c qemu:///system list
Connecting to uri: qemu:///system
Id Name State
----------------------------------
root@server1:~#
Ak ti zobrazilo namiesto toho chybu, tak niečo nie je v poriadku.
Ďalej potrebujeme nastaviť sieťový most (network bridge) na náš server, takže, naše virtuálne mašiny budú môcť byť prístupné od ostatných hostov, ako keby boli fyzickými systémami v sieti.
Na to ideme inštalovať balíček bridge-utils...
apt-get install bridge-utils
... a nakonfigurujeme most. Otvor /etc/network/interfaces:
vi /etc/network/interfaces
Pred modifikáciou môj súbor vyzeral nasledovne:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Zmenil som ho aby vyzeral takto:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.0.100 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
(Uisti sa že používaš správne nastavenia siete!)
Reštartuj sieť...
/etc/init.d/networking restart
... a spusti
ifconfig
Teraz by to malo zobraziť sieťový most (br0):
root@server1:~# ifconfig
br0 Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1580 (1.5 KB) TX bytes:2356 (2.3 KB)
eth0 Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13539 errors:0 dropped:0 overruns:0 frame:0
TX packets:7684 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:19476849 (19.4 MB) TX bytes:647692 (647.6 KB)
Interrupt:251 Base address:0xe000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vnet0 Link encap:Ethernet HWaddr 3e:7c:6f:ab:0e:8c
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::3c7c:6fff:feab:e8c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:468 (468.0 B)
root@server1:~#
Teraz môžme vytvoriť našu prvú VM - image-based VM (ak očakávaš veľkú zátaž a veľa čítacích a zapisovacích operácií, namiesto nej použi LVM-based VM, ako je ukázané v kapitole 6 - image-based VM sú namáhavé na hard disk IO(vstup-výstup) ).
Vytvoríme novú zložku pre každú VM, takže chceme vytvoriť napr. ~/vm1, ~/vm2, ~/vm3, a tak ďalej, pretože každá VM bude mať podzložku nazvanú ubuntu-kvm, tak zrejme bude len jedna v zložke ~/vm1, napríklad. Ak sa pokúsiš vytvoriť druhú VM v ~/vm1, napríklad, dostaneš chybovú hlášku, že ubuntu-kvm už existuje (iba ak nespustíš vmbuilder s parametrom --dest=CIELOVAZLOZKA):
root@server1:~/vm1# vmbuilder kvm ubuntu -c vm2.cfg
2008-12-10 16:32:44,185 INFO Cleaning up
ubuntu-kvm already exists
root@server1:~/vm1#
Použijeme nástroj vmbuilder na vytvorenie VM. (Tu sa môžeš dozvedieť viac.) vmbuilder používa šablóny na vytváranie VM - táto šablóna sa nachádza v zložke /etc/vmbuilder/libvirt/. Pretože ju musíme zmeniť, spravíme si kópiu a zmeníme tú:
mkdir -p ~/vm1/mytemplates/libvirt
cp
/etc/vmbuilder/libvirt/* ~/vm1/mytemplates/libvirt/
Teraz otvoríme ~/vm1/mytemplates/libvirt/libvirtxml.tmpl...
vi ~/vm1/mytemplates/libvirt/libvirtxml.tmpl
... a zmeníme sekciu network z:
[...] <interface type='network'> <source network='default'/> </interface> [...]
na:
[...] <interface type='bridge'> <source bridge='br0'/> </interface> [...]
pretože chceme aby VM používala náš sieťový most (network bridge).
Teraz prichádzame ku vytváraniu partícií(diskovému oddielu) našej VM. Vytvoríme súbor s názvom vmbuilder.partition...
vi ~/vm1/vmbuilder.partition
... a definujeme si požadované partície nasledovne:
root 8000 swap 4000 --- /var 20000
Toto definuje koreňovú(root) partíciu (/) s veľkosťou 8000MB, swapovacou partíciou so 4000MB, a -var partíciou s 20000MB. Riadok --- spraví, že nasledujúca partícia (/var napríklad) je na samostatnom obraze disku (napríklad, toto vytvorí dva diskové obrazy, jeden na root a swap a jednu pre /var). Samozrejme, môžeš si definovať partície aké len chceš (pokiaľ si tiež definoval root a swap), a tiež môžu byť na jednom diskovom obraze - toto je len príklad.
Chcem nainštalovať openssh-server vo VM. Aby sme sa uistili, že každá VM dostane unikátny OpenSSH kľúč, nemôžme nainštalovať openssh-server keď vytvoríme VM. Preto si vytvoríme skript s názvom boot.sh, ktorý bude spustený keď VM nabootuje prvý krát. Nainštaluje to openssh-server (s unikátnym kľúčom) a tiež prinúti používateľa (pre moje VM použijem predvolené používateľské meno administrator a predvolené heslo howtoforge) aby si zmenil heslo keď sa prvý krát pripojí:
vi ~/vm1/boot.sh
# This script will run the first time the virtual machine boots # It is ran as root. # Expire the user account passwd -e administrator # Install openssh-server apt-get update apt-get install -qqy --force-yes openssh-server
Určite však zmeň používateľské meno administrator so svojim predvoleným menom.
(Tu o tom nájdeš viac: https://help.ubuntu.com/community/JeOSVMBuilder#First%20boot)
(Tiež si môžeš definovať "first login"(prvé prihlásenie) skript: https://help.ubuntu.com/community/JeOSVMBuilder#First%20login)
Vždy, keď vmbuilder vytvorí novú VM, musí stiahnuť balíčky z Ubuntu mirror (zrkadlený server), čo môže nejaký čas trvať. Aby sme toto zrýchlili, nainštalujeme apt-proxy...
apt-get install apt-proxy
... na cachovanie (vyrovnávacie ukladanie) stiahnutých balíčkov, takže nasledujúce inštalácie VM budú oveľa rýchlejšie.
Teraz otvoríme /etc/apt-proxy/apt-proxy-v2.conf...
vi /etc/apt-proxy/apt-proxy-v2.conf
... a zmeníme predvolený Ubuntu mirror, s mirror-om ktorý je blízko teba(napríklad http://de.archive.ubuntu.com/ubuntu ak si v Nemecku):
[...] [ubuntu] ;; Ubuntu archive backends = http://de.archive.ubuntu.com/ubuntu min_refresh_delay = 15m [...]
Potom reštartujeme apt-proxy:
/etc/init.d/apt-proxy restart
apt-proxy počúva na porte 9999, takže môžme posunúť náš lokálny apt-proxy "mirror" ako argument vmbuilder skriptu.
Teraz sa pozri na toto:
vmbuilder kvm ubuntu --help
aby si sa naučil o možných nastaveniach.
Na vytvorenie našej prvej VM, vm1, ideme do zložky VM...
cd ~/vm1/
... a spustíme vmbuilder, napríklad nasledovne:
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual --arch=amd64 --mirror=http://192.168.0.100:9999/ubuntu -o --libvirt=qemu:///system --tmpfs=- --ip=192.168.0.101 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=boot.sh --mem=256 --hostname=vm1
Veľa z tých nastavení sú sebavysvetľujúce. --part špecifikuje súbor s detailami partícií, relatívne k nášmu pracovnému adresáru (preto sme museli najskôr vojsť do zložky VM pred spustením vmbuilder-a), --templates špecifikuje zložku v ktorej je uložený súbor šablóny (znova relatívne k nášmu pracovnému adresáru), a -firstboot špecifikuje skript spustený po prvom spustení. --libvirt=qemu:///system hovorí pre KVM, že má túto VM pridať do zoznamu dostupných VM. --addpkg ti umožní špecifikovať Ubuntu balíčky, ktoré chceš mať nainštalované počas vytvárania VM (pozri vyššie, prečo sme nemali pridať openssh-server do tohto zoznamu a namiesto toto sme použili skript po prvom spustení).
V riadku kde sa nachádza --mirror som uviedol môj lokálny apt-proxy mirror (http://192.168.0.100:9999/ubuntu) - Použil som moju verejne dostupnú IP adresu, namiesto localhost alebo 127.0.0.1, pretože tento mirror bude použitý vo VM v súbore /etc/apt/sources.list, a samozrejme VM by sa nemohla pripojiť na 127.0.0.1 hostiteľa. A samozrejme si môžeš uviesť oficiálny Ubuntu repozitár v nastavení --mirror, napríklad http://de.archive.ubuntu.com/ubuntu. Ak vynecháš nastavenie --mirror, potom bude použitý prednastavený Ubuntu repozitár (http://archive.ubuntu.com/ubuntu).
Proces vytvárania môže trvať zopár minút.
Potom, môžeš nájsť konfiguračný XML súbor pre VM v /etc/libvirt/qemu/ (=> /etc/libvirt/qemu/vm1.xml):
ls -l /etc/libvirt/qemu/
root@server1:~/vm1# ls -l /etc/libvirt/qemu/
total 8
drwxr-xr-x 3 root root 4096 2008-12-10 15:26 networks
-rw------- 1 root root 963 2008-12-10 16:25 vm1.xml
root@server1:~/vm1#
Obrazy diskov sú umiestnené v podadresári ubuntu-kvm/ adresára našej VM:
ls -l ~/vm1/ubuntu-kvm/
root@server1:~/vm1# ls -l ~/vm1/ubuntu-kvm/
total 402804
-rw-r--r-- 1 root root 240963584 2008-12-10 16:37 disk0.qcow2
-rw-r--r-- 1 root root 171094016 2008-12-10 16:37 disk1.qcow2
root@server1:~/vm1#
Ak chceš vytvoriť druhú VM (vm2), tu je krátke zhrnutie príkazov:
mkdir -p ~/vm2/mytemplates/libvirt
cp
/etc/vmbuilder/libvirt/* ~/vm2/mytemplates/libvirt/
vi ~/vm2/mytemplates/libvirt/libvirtxml.tmpl
vi ~/vm2/vmbuilder.partition
vi ~/vm2/boot.sh
cd
~/vm2/
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual
--arch=amd64 --mirror=http://192.168.0.100:9999/ubuntu -o
--libvirt=qemu:///system --tmpfs=- --ip=192.168.0.102
--part=vmbuilder.partition --templates=mytemplates
--user=administrator --name=Administrator --pass=howtoforge
--addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid
--firstboot=boot.sh --mem=256 --hostname=vm2
(Všimni si že nemusíš vytvoriť novú zložku pre VM (~/vm2), ak posunieš --dest=DESTDIR argument príkazu vmbuilder - dovolí ti to vytvoriť VM v zložke, kde už je vytvorená iná VM. V tom prípade, nemusíš vytvárať nové vmbuilder.partition a boot.sh súbory a nemusíš meniť šablónu, ale jednoducho použiť existujúce súbory:
cd
~/vm1/
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual
--arch=amd64 --mirror=http://192.168.0.100:9999/ubuntu -o
--libvirt=qemu:///system --tmpfs=- --ip=192.168.0.102
--part=vmbuilder.partition --templates=mytemplates
--user=administrator --name=Administrator --pass=howtoforge
--addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid
--firstboot=boot.sh --mem=256 --hostname=vm2 --destdir=vm2-kvm
)
Virtálne mašiny môžu byť spravované cez virsh, "virtuálny shell". Na pripojenie k virtuálnemu shell-u, spusti
virsh --connect qemu:///system
Takto vyzerá virtuálny shell:
root@server1:~/vm1/ubuntu-kvm# virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #
Teraz môžeš písať príkazy do virtuálneho shell-u na spravovanie svojich VM. Spusti
help
aby si získal zoznam príkazov:
virsh # help
Commands:
help print help
attach-device attach device from an XML file
attach-disk attach disk device
attach-interface attach network interface
autostart autostart a domain
capabilities capabilities
connect (re)connect to hypervisor
console connect to the guest console
create create a domain from an XML file
start start a (previously defined) inactive domain
destroy destroy a domain
detach-device detach device from an XML file
detach-disk detach disk device
detach-interface detach network interface
define define (but don't start) a domain from an XML file
domid convert a domain name or UUID to domain id
domuuid convert a domain name or id to domain UUID
dominfo domain information
domname convert a domain id or UUID to domain name
domstate domain state
domblkstat get device block stats for a domain
domifstat get network interface stats for a domain
dumpxml domain information in XML
freecell NUMA free memory
hostname print the hypervisor hostname
list list domains
migrate migrate domain to another host
net-autostart autostart a network
net-create create a network from an XML file
net-define define (but don't start) a network from an XML file
net-destroy destroy a network
net-dumpxml network information in XML
net-list list networks
net-name convert a network UUID to network name
net-start start a (previously defined) inactive network
net-undefine undefine an inactive network
net-uuid convert a network name to network UUID
nodeinfo node information
pool-autostart autostart a pool
pool-build build a pool
pool-create create a pool from an XML file
pool-create-as create a pool from a set of args
pool-define define (but don't start) a pool from an XML file
pool-define-as define a pool from a set of args
pool-destroy destroy a pool
pool-delete delete a pool
pool-dumpxml pool information in XML
pool-info storage pool information
pool-list list pools
pool-name convert a pool UUID to pool name
pool-refresh refresh a pool
pool-start start a (previously defined) inactive pool
pool-undefine undefine an inactive pool
pool-uuid convert a pool name to pool UUID
quit quit this interactive terminal
reboot reboot a domain
restore restore a domain from a saved state in a file
resume resume a domain
save save a domain state to a file
schedinfo show/set scheduler parameters
dump dump the core of a domain to a file for analysis
shutdown gracefully shutdown a domain
setmem change memory allocation
setmaxmem change maximum memory limit
setvcpus change number of virtual CPUs
suspend suspend a domain
ttyconsole tty console
undefine undefine an inactive domain
uri print the hypervisor canonical URI
vol-create create a vol from an XML file
vol-create-as create a volume from a set of args
vol-delete delete a vol
vol-dumpxml vol information in XML
vol-info storage vol information
vol-list list vols
vol-path convert a vol UUID to vol path
vol-name convert a vol UUID to vol name
vol-key convert a vol UUID to vol key
vcpuinfo domain vcpu information
vcpupin control domain vcpu affinity
version show version
vncdisplay vnc display
virsh #
list
ukáže všetky bežiace VM;
list --all
ukáže všetkyVM, bežiace aj neaktívne:
virsh # list --all
Id Name State
----------------------------------
- vm1 shut off
virsh #
Pred tym ako naštartuješ svoju VM po prvý krát, musíš ju definovať z jej xml súboru (umiestneného v zložke /ect/libvirt/qemu/):
define /etc/libvirt/qemu/vm1.xml
Všimni si že kedykoľvek zmeníš xml súbor pre VM v /etc/libvirt/qemu/, musíš spustiť príkaz define znova!
Teraz môžeš naštartovať VM:
start vm1
Za chvíľu by si už mal mať možnosť príhlásiť sa na VM s SSH klientom napríklad ako PuTTY; prihlás sa s predvoleným používateľským menom a heslom. Po prvom prihlásení budeš vyzvaný na zmenu hesla.
list
by teraz mal zobraziť VM ako bežiacu:
virsh # list
Id Name State
----------------------------------
1 vm1 running
virsh #
Pre zastavenie VM spusti
shutdown vm1
Pre okamžité zastavenie (napr. odpojenie zo zasuvky), spusti
destroy vm1
Suspendovanie (pozastavenie) VM:
suspend vm1
Pokračovanie VM:
resume vm1
Toto sú najdôležitejšie príkazy.
Napíš
quit
pre opustenie virtuálneho shell-u.
LVM-based VM majú pár výhod oproti image-based VM. Nie sú také náročné na hard disk IO, a ľahšie sa zálohujú (použitím LVM snapshot).
Na použitie LVM-based VM, potrebuješ skupinu oddielov, ktorá má voľné miesto, a ktoré nie je pridelené žiadnemu logickému oddielu. V tomto príklade, použijem skupinu oddielov /dev/vg01 s veľkosťou približne 454GB...
vgdisplay
root@server1:~# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 454.67 GB
PE Size 4.00 MB
Total PE 116396
Alloc PE / Size 75000 / 292.97 GB
Free PE / Size 41396 / 161.70 GB
VG UUID q3xIiX-LDlm-IbMu-2PK2-WVoc-zHb8-8ibb32
root@server1:~#
...ktorá obsahuje logický oddiel /dev/vg01/root s veľkosťou približne 292GB - zvyšok nie je pridelený a môže byť použitý pre virtuálne mašiny:
lvdisplay
root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg01/root
VG Name vg01
LV UUID f9W43z-RC1i-9JE8-CvOS-Qa89-0STq-q1M71e
LV Write Access read/write
LV Status available
# open 1
LV Size 292.97 GB
Current LE 75000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
root@server1:~#
Teraz vytvorím virtálnu mašinu vm5 ako LVM-based VM. Môžme znova použiť príkaz vmbuilder. vmbuilder pozná --raw nastavenie, ktoré dovoľuje zapísať VM do blokového zariadenia (napr. /dev/vg01/vm5) - vyskúšal som to, nevrátilo mi žiadne chyby, ale aj tak sa mi nepodarilo nabootovať VM (start vm5 tiež neukázalo žiadne chyby, ale nemal som prístup do VM). Preto vytvorím vm5 najskôr ako image-based VM a potom ju konvertujem do LVM-based VM.
mkdir -p ~/vm5/mytemplates/libvirt
cp
/etc/vmbuilder/libvirt/* ~/vm5/mytemplates/libvirt/
vi ~/vm5/mytemplates/libvirt/libvirtxml.tmpl
Uisti sa že si vytvoril všetky partície v jednom obrazovom (image) súbore, čiže nepoužívaj --- v súbore vmbuilder.partition:
vi ~/vm5/vmbuilder.partition
root 8000 swap 2000 /var 10000
vi ~/vm5/boot.sh
cd
~/vm5/
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual
--arch=amd64 --mirror=http://192.168.0.100:9999/ubuntu -o
--libvirt=qemu:///system --tmpfs=- --ip=192.168.0.105
--part=vmbuilder.partition --templates=mytemplates
--user=administrator --name=Administrator --pass=howtoforge
--addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid
--firstboot=boot.sh --mem=256 --hostname=vm5
V súbore vmbuilder.partition vidíš že VM môze použit najviac 20GB, takže vytvoríme logický oddiel nazvaný /dev/vg01/vm5 s veľkosťou 20GB:
lvcreate -L20G -n vm5 vg01
Nevytváraj súborový systém v novom logickom oddieli!
Použijeme qemu-img príkaz na konvertovanie obrazu do LVM-based VM. qemu-img príkaz je časť balíčku qemu, ktorú musíme nainštalovať:
apt-get install qemu
Potom pôjdeme do ubuntu-kvm/ zložky našej VM...
cd ~/vm5/ubuntu-kvm/
... a skonvertujeme obraz nasledovne:
qemu-img convert disk0.qcow2 -O raw /dev/vg01/vm5
Potom môžeš vymazať obraz disku:
rm -f disk0.qcow2
Teraz musíme otvoriť xml konfiguračný súbor našej VM, /etclibvirt/qemu/vm5.xml...
vi /etc/libvirt/qemu/vm5.xml
... a zmeniť nasledujúcu sekciu...
[...] <disk type='file' device='disk'> <source file='/root/vm5/ubuntu-kvm/disk0.qcow2'/> <target dev='hda' bus='ide'/> </disk> [...]
... tak, že vyzerá nasledovne:
[...] <disk type='file' device='disk'> <source file='/dev/vg01/vm5'/> <target dev='hda' bus='ide'/> </disk> [...]
To je všetko! Teraz môžeš použiť virsh na správu VM.
KVM (Ubuntu Community Documentation): https://help.ubuntu.com/community/KVM
JeOS a vmbuilder: http://doc.ubuntu.com/ubuntu/serverguide/C/jeos-and-vmbuilder.html
Ubuntu: http://www.ubuntu.com/
Copyright © 2008
Falko Timme
All Rights Reserved.