Erinevus lehekülje "KVM kasutamine Ubuntu 10.04 operatsioonisüsteemiga" redaktsioonide vahel
(→Virtuaalne riistvara) |
|||
210. rida: | 210. rida: | ||
virsh # attach-disk arvuti /dev/serverid/arvuti_vdb vdb | virsh # attach-disk arvuti /dev/serverid/arvuti_vdb vdb | ||
− | + | ===Virtuaalne riistvara=== | |
Guest saab kasutada rohkem või vähem virtualiseeritud riistvara | Guest saab kasutada rohkem või vähem virtualiseeritud riistvara |
Redaktsioon: 17. november 2009, kell 01:00
Sisukord
- 1 Sissejuhatus
- 2 KVM hosti ettevalmistamine
- 3 Guestide kasutamine virt-manager abil
- 4 Guestide kasutamine virsh utiliidi abil
- 5 Virtuaalne riistvara
- 6 Guesti kirjelduse haldamine
- 7 Guesti serial konsooli kasutamine
- 8 Guesti kloonimine
- 9 Mittegraafiliste vahenditega guesti paigaldamine
- 10 OpenBSD guesti kasutamine
- 11 Guesti alglaadimine CD tõmmiselt
- 12 Guesti migreerimine
- 13 Märkused
- 14 Kasulikud lisamaterjalid
Sissejuhatus
KVM (Kernel-based Virual Machine, ingl. k. tuumapõhine virtuaalmasin) on Linuxi kernelis asuv virtualiseerimise tugi, mis toetab nn native virtualization'it st töötab näiteks AMD-V ja Intel-VT protsessoritega.
KVM tekitab /dev/kvm seadme, mida kasutab modifitseeritud kasutajaprogramm (ingl. k. user-space program) QEMU selleks, et korraldada virtuaalsetele arvutitele aadressruumi, I/O, video jms ressursside kasutamist.
Seda operatsioonisüsteemi eksemplari, kus asub /dev/kvm seade nimetatakse host'iks (ingl. k. majutaja) ja virtuaalseid arvuteid nimetatakse guest'ideks (ingl. k. külaline).
KVMi iseloomustavad sellised asjaolud
- nn kernel.org tuumas on kasutatav KVM tugi
- kvm tehnoloogiat saab 2008 aasta suvel kasutada x86 arhitektuuriga arvutitest AMD-V ja Intel-VT toega protsessoritega, st praktiliselt viimastel aastatel toodetud uuemate mudelitega
- guest operatsioonisüsteemina saab kasutada suurt hulka erinevaid operatsioonisüsteeme, muu hulgas Linux, OpenBSD, Windows
KVM arendamist korraldab Avi Kivity.
KVM hostis ei töötavad seoses guestidega kahte tüüpi protsessid
- libvirtd - libvirt teekide vahendusel töötav KVM guestide haldusliides
- kvm - üks või enam töötavad kvm protsesse, mis vastavad virtuaalsetele arvutitele
KVM hosti ettevalmistamine
Kui hostiks kasutatakse x86 riistvara ja mis iseenesest sisaldab Intel-VT või AMD-V tehnoloogia tuge peab veenduma, et see on ka kasutuses (nt sisselülitatud arvuti BIOS'est). Kui käsk väljastab midagi, ju siis on
# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
KVM tarkvara ja halduse abivahendite paigaldamine
Ubuntu paketihaldusest tuleb paigaldada tarkvara öeldes
# apt-get install ubuntu-virt-server ubuntu-virt-mgmt
Lisaks on abiks vnc server ning koos sellega window manager, nt wmaker
# apt-get install tightvncserver wmaker xterm xfonts-base
Ettevalmistused KVM guestis võrgu kasutamiseks
Selleks, et KVM guest saaks pöörduda võrku, tuleb kirjeldada KVM hostis sobivad sillad. Nt olgu hostis kaks füüsilist võrgukaart
- eth0 - teenuse pakkumisega seotud liiklus
- eth1 - hosti haldusega seotud liiklus
Sellisel juhul võiks kasutada nt sellist /etc/network/interfaces faili
# The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet manual bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 auto eth1 iface eth1 inet static address 192.168.2.122 netmask 255.255.255.0 gateway 192.168.2.245
kus
- hosti operatsioonisüsteem ei kasuta br0 võrguseadet ip liikluse jaoks ja seetõttu ei ole seadistatud seal ip aadressi
- bridge_stp off - spanning tree protocol tugi on br0 sillal välja lülitatud
Ettevalmistused KVM guestis plokkseadme kasutamiseks
KVM guesti plokseadmele võib vastata hostis
- fail - nt /srv/kvm/arvuti-1.img
- füüsiline ketas - nt /dev/sdc
- LVM köide - nt /dev/serverid/arvuti_1
Muude eelistuste puudumisel võib olla LVM hea valik kuna võimaldab plokkseadmeid mugavalt provisioneerida.
Guestide kasutamine virt-manager abil
Üldiselt saab KVM guestide kasutamist juhtida libvirt liidese abil kahe haldusprogrammiga
- virsh - konsoolis kasutamiseks shell
- virt-manager - graafiline haldusliides
virt-manager tuleb käivitada selliselt, et tal oleks nö kuhugi graafilist pilti näidata, nt hostis töötavas VNC serveris, käivitamine toimub öeldes juurkasutajana
# virt-manager -c qemu:///system
ning avaneb sarane pilt
virt-manger abil saab
- guest moodustada
- guest käivitada
- guest seisata
- guest kustutada
- gusti seadistusi muuta
Käivitatud KVM guest konsool paistab selline
- virt-manager graafilise kasutajaliidese abil
virt-manager kasutamine on suhteliselt intuitiivne, KVM tehnikaga tutvumiseks on tõenäoliselt sobiv alustada graafilisest kasutajaliidesest.
Guestide kasutamine virsh utiliidi abil
virsh utiliide abil saab kontrollida kohalikus ning üle võrgu ssh'ga ligipääsetavat kvm süsteemi tekstiterminali kaudu, kusjuures virsh utiliiti tuleb kasutada juurkasutajana. virsh võimaldab
- guesti moodustada
- guesti kävitada
- guesti seisata
- guesti kustutada
- guesti seadistusi uurida ja muuta
KVM kasutamise tundmaõppimiseks võiks olla efektiivne tegevuste järjekord selline, et esmalt moodustada virt-manager abil mõned guestid ning seejärel püüda neid virsh abil juhtida ja tutvuda nende omadustega; ning seejärel katsetada gueste moodustada otsekohesemalt kui virt-manager abil.
virsh abil samas arvutis töötava KVM hüperviisoriga ühendumiseks sobib öelda, jõutakse nö virsh prompti
# virsh -c qemu:///system Connecting to uri: qemu:///system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit # virsh
Näitena küsides süsteemi omadusi öeldakse nt
virsh # nodeinfo CPU model: x86_64 CPU(s): 16 CPU frequency: 2261 MHz CPU socket(s): 4 Core(s) per socket: 4 Thread(s) per core: 1 NUMA cell(s): 1 Memory size: 12318924 kB
Teise arvutis töötava hüperviisori kasutamiseks sobib öelda, tavaliselt korraldatakse seejuures, et ühest arvutist saab teise sisse logida ssh võtmega
# virsh -c qemu+ssh://192.168.2.121/system
- Guesti omaduste küsimiseks sobib öelda
virsh # dominfo openbsd Id: 1 Name: openbsd_1 UUID: 2b91444a-4cec-ec49-7098-7795ebeecb21 OS Type: hvm State: running CPU(s): 1 CPU time: 3042.3s Max memory: 1048576 kB Used memory: 1048576 kB Autostart: disable Security model: apparmor Security DOI: 0 Security label: libvirt-2b91444a-4cec-ec49-7098-7795ebeecb21 (enforcing)
Guestide käivitamine ja seiskamine
- Kõigi KVM kontrolli all olevate guestide nimekiri
virsh # list --all Id Name State ---------------------------------- 1 openbsd running 2 debian shut off
- Domeenide käivitamine ja seiskamine
virsh # start debian Domain debian started
ja seiskamiseks
virsh # shutdown debian Domain debian is being shutdown
Nö voolu eemaldamisega on samväärne öelda
virsh # destroy debian Domain debian destroyed
Mitmete käskude andmisel tuleb arvestada, sündmuste toimumiseks kulub aeg, nt tasub peale shutdown ütlemist jälgida list abil, kas soovitud tulemus on saavutatud.
Guesti kirjelduse lisamine süsteemi
- Domeeni kirjelduse kustutamiseks sobib öelda
virsh # undefine arvuti Domain arvuti has been undefined
- Selleks, aga hosti alglaadimise käigus guest käivituks, tuleb öelda
virsh # autostart arvuti
Misc
- Plokkseadme lisamine, reboot kehtestab lisa
virsh # attach-disk arvuti /dev/serverid/arvuti_vdb vdb
Virtuaalne riistvara
Guest saab kasutada rohkem või vähem virtualiseeritud riistvara
- protsessor
- plokkseade
- mälu
- võrk
kusjuures sama ressurssi saab kasutada kasutades erinevaid draivereid, nt plokkseadme puhul saab valida scsi, ide või virtio draiverite vahel.
Plokkseade
TODO
Võrk
TODO
Guesti kirjelduse haldamine
Guesti kirjeldused asuvad kataloogis /etc/libvirt/qemu, aktiivsed kataloogis /var/run/libvirt/qemu ja nt selleks, et täpsustada guesti võrguseadme mudelit, tuleb sooritada selline järgnevus
# virsh dumpxml virt-arvuti > /tmp/virt-arvuti.xml
Libvirt KVM guesti seadistusfail näeb välja üldiselt selline, seda sobib kasutada nt mujalt kopeeritud operatsioonisüsteemi failisüsteemi KVM all käivitamiseks
<domain type='kvm'> <name>template</name> <uuid></uuid> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>2</vcpu> <os> <type arch='x86_64' machine='pc-0.11'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='block' device='disk'>
<target dev='sda' bus='sda'/> </disk> <interface type='bridge'> <mac address='70:00:00:01:00:01'/>
<model type='e1000'/> </interface> <interface type='bridge'> <mac address='70:01:68:00:00:01'/>
<model type='e1000'/> </interface> <serial type='pty'>
<target port='0'/> </serial> <console type='pty' tty='/dev/pts/2'>
<target port='0'/> </console> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' autoport='yes' keymap='en-us'/> <video> <model type='cirrus' vram='9216' heads='1'/> </video> </devices> </domain>
kus tuleb jälgida, et unikaalsed väljad ei läheks omavahel konflikti süsteemis juba eksisteerivate guestiga
- uuid - jätta tühjas, süsteem täitab ta ise sobiva väärtusega
- graphics on vajalik selleks, et virt-manager pilti näitaks
- kettaseadme bus väärtus on scsi mis nö süntaksiliselt väljendub selles, et plokkseadme nimi on guestis kujul /dev/sda; alternatiivideks oleks vastavalt ide -> hda ja virtio -> vda
- võrgukaardi tüüp on valitud e1000, alternatiiv võiks olla samuti nt virtio, aga ka mitmed muud tuntud riistvaralised mudelid
- mac aadressid on kaval kirjutada teisendatud vastavate ip aadressidena, antud juhul vastavalt
10.0.10.1 -> 70:00:00:10:00:01 192.168.0.1 -> 70:01:68:00:00:01
Võrguseadme lisamine
Lisada tekstiredaktoris /tmp/virt-arvuti.xml faili sektsiooni
<interface type='bridge'> <mac address='70:00:00:10:02:54'/>
</interface>
juurde rida
<model type='e1000'/>
ning öelda
# virsh define /tmp/virt-arvuti.xml
Guesti serial konsooli kasutamine
- virsh abil ilma kasutades tekstiterminali kusjuures guesti jaoks toimub ühendus üle tema serial konsooli, st peab olema seadistatud kuulama nt getty serialile failist /etc/inittab reaga
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
Guesti kloonimine
Kloonimise teel saab moodustada olemasoleva guesti alusel uue virtuaalse arvuti, süsteem tagab, et need uue arvuti omadused, mis peavad olema on unikaalsed, nt UUID väärtus. Kloonida saab olemasolevat guesti, mis parasjagu ei tööta nt selliselt
# virt-clone --connect qemu:///system -o arvuti_1 -n arvuti_2 -f /dev/serverid/arvuti_2 -m 54:52:00:32:d7:21 This will overwrite the existing path '/dev/serverid/arvuti_2'! Do you really want to use this disk (yes or no)? yes Cloning /var/lib/libvirt/ 100% |=========================| 7.0 GB 00:56 Clone 'arvuti_2' created successfully.
kus
- -o arvuti_1 - originaal mida kloonitakse
- -n arvuti_2 - uue tekitatava arvuti nimi
- -f /dev/serverid/arvuti_2 - uus arvuti asub LVM köitel
- -m - uue arvuti mac aadress, vastasel korral kasutatakse juhuslikku väärtust
Mittegraafiliste vahenditega guesti paigaldamine
Tundub, et KVM kasutamine üldiselt eeldab vähemalt guest operatsioonisüsteemi paigaldamisel graafilise kasutajaliidese kasutamist. Esitatud järgnevus on üks viis paigaldada Debian Lenny operatsioonisüsteem kasutades selleks vaid tekstiterminali
- moodutada guesti plokkseadmele vastav LVM köide
# lvcreate -L2G -n arvuti serverid
- moodustada plokkseadmele fdisk partitsioonitabel
# fdisk /dev/serverid/arvuti ...
- ühendada plokkseade külge
# kpartx /dev/serverid/arvuti # mount /dev/serverid/arvuti1 /mnt/arvuti
- debootstrap abil paigaldada sinna operatsioonisüsteemi failisüsteem
# debootstrap lenny /mnt/arvuti http://ftp.ee.debian.org/debian
- paigaldada udev ja openssh-server paketid
# chroot /mnt/arvuti # apt-get install udev openssh-server
- kohendada /etc/fstab, /etc/network/interfaces
...
- paigaldada alglaadur
# grub-install --recheck --no-floppy --root-directory=/mnt/arvuti
Guesti moodutamiseks tuleb kasutada sobivat seadistusfaili, nt eelmise punkti alusel moodustatud guesti definitsioonist ning öelda
# virsh define arvutinimi.xml
Ning seejärel guest käivitada
# virsh start arvutinimi
OpenBSD guesti kasutamine
OpenBSD guesti kasutamisel tuleb arvestada, et suhteliselt igasugune tegevus ajab arvuti koormuse kiiresti üles, iseenesest küll süsteem töötab, kui ei sobi praktiliselt peale manuaalide lugemise eriti muuks.
OpenBSD võrk töötab normaalsemalt e1000 seadmega kuid kõvaketta kiirus on ca 2-3 MBait/s ja koormab süsteemi. 4.6 ei boodi ilma kui UKC abil mpbios välja lülitada
boot> bsd -c ... UKC> disable mpbios 54 mpbios0 disabled UKC> quit
ning süsteemis öelda näiteks, et salvestada muudatus tuuma binaari
# config -ef /bsd ... ukc> disable mpbios 54 mpbios0 disabled ukc> quit Saving modified kernel.
Guesti alglaadimine CD tõmmiselt
Guesti alglaadimiseks CD tõmmiselt tuleb seadistusfaili juure defineerida nt selline seade RIPLinux puhul
<disk type='file' device='cdrom'>
<target dev='hdc' bus='ide'/> <readonly/> </disk>
ning alguses peab olema kirja, et alglaadida cdrom seadmelt
<os> <type arch='x86_64' machine='pc-0.11'>hvm</type> <boot dev='cdrom'/> </os>
RIPLinuxi abil on lisaks muude haldusprotseduuride tegemisele võimalik paigaldada kõvakettale GRUB alglaadur.
Guesti migreerimine
TODO
Märkused
- kvm programmi saab käivitada privilegeerimata kasutaja eeldusel, et ta /dev/kvm seadmele lugeda ja kirjutada saab, reeglida kvm gruppi lisamisest kasutajale piisab.
- Selleks, et VNC sessiooni sees käivitatud kvm (või qemu) saaks aru klaviatuurist, sobib kasutada lisaks muudele käsurea parameetritele võtit -k, nt '-k en-us'
- Tundub, et vähemalt Debian Lenny guest käitub scsi plokkseadmega ebastabiilselt, virtio toimib.
Kasulikud lisamaterjalid
- KVM kodulehekülg - http://kvm.qumranet.com/kvmwiki
- käsu 'kvm --help' väljund
- http://en.wikipedia.org/wiki/X86_virtualization
- http://kvm.qumranet.com/kvmwiki/Guest_Support_Status
- KVM kasutamine Debian Lenniga
- http://wiki.libvirt.org/page/Main_Page
- https://help.ubuntu.com/community/KVM
- http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/index.html