- 1 Sissejuhatus
- 2 KVM ja teiste virtualiseerimistehnoloogiate võrdlus
- 3 KVM-i keskkonna seadistamine Ubuntus [Installatsioon ja esmane seadistamine]
- 4 Virtuaalmasinate loomine ja põhilised toimingud
- 5 Võrgu seadistamine ja laiendused
- 6 Salvestusruumi haldus ja kettatoimingud
- 7 Külalisoperatsioonisüsteemi installimine ja haldus
- 8 Praktilised kasutusnäited ja automatiseerimise nipid
- 9 Tõrkeotsing ja levinud vigade lahendused
- 10 Turvalisus ja jõudluse optimeerimine
- 11 Kokkuvõte ja edasised õppeallikad
- 12 Käskude spikker ja tüüpilised näited (cheat sheet)
- 13 KKK (Korduma kippuvad küsimused)
- 13.1 K1: Mis vahe on KVM-il, VirtualBoxil ja VMware’il?
- 13.2 K2: Kuidas varundada ja taastada virtuaalmasinaid?
- 13.3 K3: Kuidas kasutada USB-seadmeid virtuaalmasinas?
- 13.4 K4: Kuidas käivitada virtuaalmasin automaatselt koos hostiga?
- 13.5 K5: Mida teha, kui virtuaalmasin on aeglane?
- 13.6 K6: Võrgu seadistamine ei õnnestu, mida teha?
- 13.7 K7: Kas KVM-iga saab luua klastrit või HA lahendusi?
Sissejuhatus
Ubuntu on üks maailma populaarsemaid Linuxi distributsioone. Seda kasutatakse laialdaselt nii era- kui ka ärikasutuses ning see sobib suurepäraselt serverite ehitamiseks ja arenduskeskkondadeks. Kui soovite Ubuntus rakendada tõsist virtualiseerimist, siis üks võimsamaid lahendusi on KVM (Kernel-based Virtual Machine).
KVM on Linuxi kerneli sisseehitatud hüperviisoripõhine virtualiseerimistehnoloogia, mis kasutab riistvara virtualiseerimise tuge (nt Intel VT või AMD-V) kõrge jõudluse ja stabiilsuse saavutamiseks. Kuna KVM on avatud lähtekoodiga, on võimalik luua professionaalne virtualiseerimiskeskkond väikeste kuludega.
Virtualiseerimistehnoloogiad võivad tunduda keerulised, kuid Ubuntu ja KVM kombinatsiooniga saavad isegi algajad suhteliselt lihtsalt virtuaalmasinaid luua ja hallata. Loomulikult sobib see lahendus ka edasijõudnutele, kes tahavad serverite ressursse tõhusalt ära kasutada või oma ärirakendusi virtualiseerida.
Selles artiklis selgitatakse samm-sammult, kuidas Ubuntus KVM-iga virtualiseerimiskeskkonda üles seada, põhitõdesid ning praktilisi nõuandeid ja probleemide lahendamist. Kui soovite KVM-i kasutama hakata või Ubuntu virtualiseerimist mugavamalt kasutada, lugege kindlasti lõpuni.
KVM ja teiste virtualiseerimistehnoloogiate võrdlus
Virtualiseerimiseks on mitmeid tehnoloogiaid, kuid Ubuntu puhul kasutatakse sageli KVM-i, VirtualBoxi ja VMware’i. Allpool selgitame iga lahenduse omadusi ning KVM-i eeliseid ja puudusi.
Peamised virtualiseerimistehnoloogiate tüübid
- KVM (Kernel-based Virtual Machine)
KVM on Linuxi kerneli sisseehitatud virtualiseerimisfunktsioon, mis töötab ainult Linuxi hostidel. Tänu riistvara virtualiseerimise toele (Intel VT, AMD-V) on virtuaalmasinate jõudlus väga kõrge ja sobib ka tootmiskeskkondadesse. Halduseks saab kasutada käsurea tööriistu või graafilisi vahendeid nagu virt-manager. - VirtualBox
VirtualBox on Oracle’i pakutav töölauakasutuseks mõeldud virtualiseerimistarkvara, mis töötab Windowsis, Macis ja Linuxis. Selle kasutajaliides on lihtne ja sobib hästi õppeotstarbeliseks või koduseks kasutamiseks. Küll aga pole see võrreldes KVM-iga nii sobiv kõrge koormusega või ärikeskkondadesse. - VMware (VMware Workstation/ESXi jne)
VMware on ärikasutuses populaarne tasuline virtualiseerimislahendus. Sellel on palju funktsioone ja põhjalik tugi, kuid litsentsitasud on suuremad. Seda kasutatakse tihti suurtes ettevõtetes, kuid sellega kaasneb ka suurem kulu.
KVM-i eelised
- Kõrge jõudlus ja stabiilsus
KVM töötab otse Linuxi kernelis, mistõttu on ressursikasutus tõhus ja võimalik on täpselt määrata CPU ja mälu jaotust igale virtuaalmasinale. See tagab töökindluse ka ärikriitilistes süsteemides. - Avatud lähtekoodiga ja tasuta
KVM on täiesti tasuta ja ei nõua litsentsitasusid, seega sobib hästi madalate kuludega virtualiseerimiskeskkondade loomiseks. - Rikkalikud haldustööriistad ja automatiseerimine
Käsurea tööriistad (nt virsh, virt-install) ja GUI tööriistad (virt-manager) võimaldavad paindlikku haldust. Automatiseerimine ja skriptimine on lihtne, sobides hästi DevOps-i ja infrastruktuurihalduseks.
KVM-i puudused
- Töötab ainult Linuxi hostidel
KVM vajab Linuxi kerneli, seega ei saa seda kasutada Windowsi ega Maci hostides. - Esialgne seadistamine ja probleemide lahendamine eeldab Linuxi tundmist
Kuigi olemas on ka graafilised tööriistad, nõuab võrgu- ja detailne seadistamine sageli käsurea kasutamist ja Linuxi tundmist.
Millal valida KVM?
- Kui soovite kasutada serveri ressursse maksimaalselt tõhusalt
- Kui soovite virtualiseerida ärikriitilisi süsteeme või servereid
- Kui soovite madalate kuludega luua professionaalse virtualiseerimiskeskkonna
- Kui soovite Linuxi serverite haldust või infrastruktuuri automatiseerida
KVM sobib eriti hästi Linuxi tundvatele kasutajatele ja neile, kes soovivad serverihalduses järgmisele tasemele jõuda.
KVM-i keskkonna seadistamine Ubuntus [Installatsioon ja esmane seadistamine]
KVM-i kasutamiseks Ubuntus tuleb täita mõned eeltingimused ja teha vajalikud ettevalmistused ning installatsioon. Selles peatükis selgitatakse samme, mis on vajalikud KVM-i kasutuselevõtuks. Selgitused on detailsed, et ka algajad saaksid edukalt virtualiseerimiskeskkonna üles seada.
Nõuded ja eelkontroll
KVM-i kasutamiseks peab sinu arvuti või serveri protsessor toetama virtualiseerimist (Intel VT või AMD-V).
Kontrolli virtualiseerimistoe olemasolu järgmise käsuga:
egrep -c '(vmx|svm)' /proc/cpuinfo
Kui tagastatud väärtus on vähemalt 1, on virtualiseerimine toetatud.
Lisaks peab kasutusel olema 64-bitine Ubuntu.
KVM-i ja vajalike pakettide installatsioon
Paigalda KVM-i põhipakett ning vajalikud tööriistad (libvirt, virt-manager jm).
Tee seda järgmiste käskudega:
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm
: KVM-i virtualiseerimise tuumpakettlibvirt-daemon-system
,libvirt-clients
: Virtuaalmasinate haldusteenusedbridge-utils
: Võrgu sillatööriistadvirt-manager
: Graafiline haldustööriist virtuaalmasinate jaoks
Kasutaja grupi seadistamine ja õiguste andmine
Pärast installatsiooni lisa oma kasutaja KVM-i ja libvirt’i gruppidesse. See võimaldab virtuaalmasinaid hallata ilma administraatoriõigusteta.
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
Muudatuste rakendamiseks logi välja ja sisse või taaskäivita süsteem.
KVM-teenuse töö kontrollimine
Kontrolli, kas KVM on õigesti paigaldatud ja teenus töötab:
sudo systemctl status libvirtd
Kui näed „active (running)“, on kõik korras.
Lisaks saad kontrollida KVM-i olekut käsuga:
virsh list --all
Kui virtuaalmasinate nimekiri (ka tühjana) kuvatakse, on KVM-i keskkond õigesti seadistatud.
Virtuaalmasinate loomine ja põhilised toimingud
Kui KVM-i keskkond on valmis, saad hakata virtuaalmasinaid looma ja haldama. KVM võimaldab kasutada nii graafilist tööriista (virt-manager) kui ka käsurea käske (virt-install, virsh). Allpool selgitame mõlemat lähenemist.
Virtuaalmasina loomine virt-manageriga (GUI)
Virt-manager võimaldab virtuaalmasinaid luua ja hallata mugava graafilise liidese kaudu. Kui kasutad Linuxi töölauakeskkonda, on see eriti mugav.
- Käivita
virt-manager
rakendus menüüst või käsurealt. - Klõpsa vasakus ülanurgas „Uus“ (New) nuppu.
- Määra installatsioonimeedia (nt ISO-fail), vali külalis-OS-i tüüp (nt Ubuntu, Windows).
- Määra virtuaalmasina CPU, mälu ja ketta suurus.
- Kontrolli seadeid ning klõpsa „Lõpeta“ (Finish), et virtuaalmasin luua ja installatsioon alustada.
Virt-manager võimaldab ka virtuaalmasina käivitamist, peatamist, taaskäivitust, hetktõmmiste loomist ja võrgu- või kettaseadete muutmist.
Virtuaalmasina loomine käsurealt (virt-install)
Serverikasutuseks või kaugkeskkondades on mugav kasutada käsurea tööriistu. Allpool näide virt-install
käsu kasutamisest:
sudo virt-install
--name ubuntu-vm
--memory 2048
--vcpus 2
--disk size=20
--cdrom /path/to/ubuntu.iso
--os-type linux
--os-variant ubuntu20.04
--network network=default
--graphics vnc
--name
: Virtuaalmasina nimi--memory
: Mälumaht (MB)--vcpus
: Protsessori tuumade arv--disk size=20
: Virtuaalketta maht (GB)--cdrom
: Installatsiooni ISO-faili asukoht--os-type
,--os-variant
: OS-i tüüp ja versioon--network
: Võrguühenduse määramine--graphics
: Graafikarežiim (VNC jne)
Pärast käsu käivitamist käivitatakse virtuaalmasin automaatselt ja installatsioonikuvaga (nt VNC kaudu).
Virtuaalmasina käivitamine, peatamine, kustutamine, hetktõmmiste loomine
KVM-iga on virtuaalmasinaid lihtne hallata. Peamised käsud:
- Virtuaalmasina käivitamine
virsh start <virtuaalmasina_nimi>
- Virtuaalmasina peatamine
virsh shutdown <virtuaalmasina_nimi>
- Virtuaalmasina sundpeatamine
virsh destroy <virtuaalmasina_nimi>
- Virtuaalmasina kustutamine (ka ketta kustutamisel ole ettevaatlik)
virsh undefine <virtuaalmasina_nimi>
- Hetktõmmise (snapshot) loomine
virsh snapshot-create-as <virtuaalmasina_nimi> <snapshot_nimi>
Neid toiminguid saab teha ka virt-manageri graafilise liidese kaudu.
Võrgu seadistamine ja laiendused
KVM-iga virtuaalmasinate haldamisel on võrgu seadistused väga olulised. Vaikeseadistus sobib paljudeks otstarveteks, kuid ärikasutuses või tõsisematel serverijuhtudel on vaja sageli täpsemat seadistust. Selles peatükis selgitame KVM-i võrgu põhialuseid ja levinumaid laiendatud seadistusi.
Vaikimisi NAT (virbr0) ja silla võrgu erinevused
KVM-i installimisel luuakse automaatselt virtuaalne sillavõrk nimega „virbr0“. See kasutab NAT-i (Network Address Translation) ja sellel on järgmised omadused:
- virbr0 (NAT) omadused
- Virtuaalmasinad pääsevad internetti
- Kuid hostist või teistest võrkudest virtuaalmasinasse ligipääsuks on vaja seadistada portide suunamine (port forwarding)
- Sobib kodu, arenduse või testkeskkondadesse
Sillavõrk („bridge network“) annab virtuaalmasinale sama võrgu nagu füüsilisel võrgukaardil.
- Sillavõrgu omadused
- Virtuaalmasinad saavad sama IP-aadressiruumi nagu host
- Virtuaalmasinad on kättesaadavad ka teistest füüsilistest arvutitest
- Ideaalne ettevõttesisesteks serveriteks ja teenuste pakkumiseks
Kohandatud silla loomine (LAN-i ligipääsuks)
Kui soovid virtuaalmasinat otse muudest arvutitest kasutada, loo sillaühendus (bridge). Tüüpilised sammud (eeldades, et füüsiline võrguliides on eth0
):
- Paigalda bridge-utils (kui pole veel olemas)
sudo apt install bridge-utils
- Muuda võrgu seadistusfaili
Ubuntu 18.04 ja uuemates kasutatakse Netplani.
Redigeeri nt faili/etc/netplan/01-netcfg.yaml
. Näide:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
interfaces: [eth0]
dhcp4: yes
- Rakenda seadistused
sudo netplan apply
- Lisa uus sild (br0) KVM-is virtuaalmasina võrguadapterina
Muuda virt-manageris või virsh abil virtuaalmasina võrguadapter br0 peale.
Virtuaalmasina IP-aadressi fikseerimine ja portide suunamine
- IP-aadressi fikseerimine
Määra statiline IP virtuaalmasina sees või kasuta DHCP-serverit MAC-aadressi põhise fikseeritud aadressi jaoks. - Portide suunamine (NAT puhul)
Kasuta virsh käsku või libvirt XML-faili, et suunata kindel port (nt SSH või veebiserver) hostist virtuaalmasinasse. Näide (SSH port 22):
virsh nat-forward --network default --add-port tcp:2222:22
* Täpsemat seadistust saab teha ka libvirti XML-failides või firewalld kaudu.
Salvestusruumi haldus ja kettatoimingud
KVM-i kasutamisel on oluline planeerida salvestusruumi ja ketaste haldus. Selles peatükis tutvustame virtuaalketaste tüüpe, salvestusruumide haldust ja ketta suurendamist ning hetktõmmiste kasutamist.
Virtuaalketta tüübid (qcow2, raw) ja kasutusalad
KVM toetab peamiselt kahte tüüpi virtuaalkettaid:
- qcow2 formaat
- Standardne KVM-i virtuaalketta formaat
- Toetab hetktõmmiseid, tihendust ja ruumisäästu
- Sobib paindlikuks kasutamiseks ja testkeskkondadeks
- raw formaat
- Lihtne formaat ilma tihenduse või teisendamiseta
- Sobib maksimaalse jõudluse jaoks või kui tähtis on kiire ketta I/O
Tavaliselt soovitatakse qcow2, kuid vajadusel vali sobiv formaat.
Salvestusruumi loomine ja haldus
KVM-is kasutatakse salvestusruumide (storage pools) kontseptsiooni virtuaalmasinate ketaste haldamiseks.
- Vaikimisi salvestusruum
Pärast installatsiooni on vaikimisi salvestusruum/var/lib/libvirt/images/
.
Virtuaalkettad luuakse sinna kataloogi. - Uue salvestusruumi loomine (näide)
- Loo kataloog
sudo mkdir /data/kvm-images && sudo chown libvirt-qemu:kvm /data/kvm-images
- Lisa salvestusruum virt-manageri või virsh abil. Virshi näide:
virsh pool-define-as --name mypool --type dir --target /data/kvm-images
virsh pool-autostart mypool
virsh pool-start mypool
Virtuaalketta laiendamine ja hetktõmmised
- Virtuaalketta laiendamine
Kui soovid suurendada ketta mahtu, kasutaqemu-img
käsku (toetab nii qcow2 kui raw):
sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
Pärast seda tuleb virtuaalmasina sees partitsioon või failisüsteem käsitsi laiendada.
- Hetktõmmiste (snapshot) kasutamine
qcow2 ketastel saab luua hetktõmmiseid, mis salvestavad oleku teatud ajahetkel.
virsh snapshot-create-as <virtuaalmasina_nimi> <snapshot_nimi>
Hetktõmmiseid on mugav kasutada enne muudatusi või testimiseks, et vajadusel kiiresti taastada eelnev olek.
Külalisoperatsioonisüsteemi installimine ja haldus
Selles peatükis selgitatakse, kuidas paigaldada tegelik operatsioonisüsteem (guest OS) KVM-i virtuaalmasinasse ning kuidas tagada selle sujuv töö. Tutvustame levinumate süsteemide installatsiooni, ISO-failidega töötamist ja jõudluse optimeerimist.
Tüüpilised külalis-OS-ide installatsiooni sammud
KVM võimaldab kasutada erinevaid operatsioonisüsteeme (nt Ubuntu, CentOS, Windows) virtuaalmasinatena. Allpool on toodud Ubuntu ja Windowsi paigaldamise näited.
- Ubuntu näide
- Laadi Ubuntu ametlik ISO-pilt alla.
- Virt-manageri kasutades vali „Uue virtuaalmasina loomine“, vali „Lokaalne installatsioonimeedia“ ja määra allalaaditud ISO-fail.
- Määra virtuaalmasina CPU, mälu ja ketta suurus ning alusta installatsiooni.
- Järgi ekraanil kuvatavaid juhiseid Ubuntu paigaldamiseks nagu füüsilisse masinasse.
- Windowsi näide
- Laadi alla Windowsi ametlik ISO-pilt või prooviversioon Microsofti kodulehelt.
- Loo uus virtuaalmasin virt-manageri või virt-install abil ja vali ISO-fail.
- Windowsi puhul paigalda „virtio draiverid“, et parandada ketta ja võrgu jõudlust. Lisa virtio ISO virtuaalse CD-draivina ja kasuta seda seadistamisel.
ISO-piltide hankimine ja kasutamine
- Laadi külalis-OS-i ametlik ISO alla selle kodulehelt.
- Virtuaalmasina loomisel määra ISO-faili asukoht – see lisatakse virtuaalse CD/DVD-na.
- Vajadusel võid lisada mitu ISO-d (nt OS ja draiverid korraga).
Külalis-OS-i halduse nipid ja jõudluse parandamine
- Ressursside jaotuse optimeerimine
Määra igale virtuaalmasinale sobiv kogus CPU-d ja mälu. Liiga suured ressursid võivad mõjutada hosti või teisi virtuaalmasinaid. - Virtio draiverite paigaldamine
Windowsile või vanemale Linuxile paigalda virtio draiverid, et parandada ketta ja võrgu jõudlust. - Mittevajalike teenuste väljalülitamine
Keela külalis-OS-is teenused ja taustaprogrammid, mida ei kasuta, et ressursse optimeerida. - KVM-i külalistööriistade kasutamine
QEMU Guest Agent võimaldab saada täpsemat infot virtuaalmasina kohta ning võimaldab paremat juhtimist (nt korralik väljalülitamine).
Praktilised kasutusnäited ja automatiseerimise nipid
KVM-i saab kasutada palju enama kui ainult virtuaalmasinate loomiseks – seda kasutatakse laialdaselt arenduses, testimises ja ettevõtete serverites. Samuti saab paljusid haldustoiminguid automatiseerida skriptide või tööriistadega. Allpool mõned praktilised näited.
Serverikasutuse näited
- Arendus- ja testkeskkondade eraldamine
Iga projekti jaoks saab luua eraldi virtuaalmasina ning katsetada erinevaid tarkvaraversioone või konfiguratsioone, mõjutamata tootmiskeskkonda. Samuti on võimalik kiiresti taastada eelmise seisu tänu hetktõmmistele. - Ettevõttesisesed teenused
Failiserver, veebiserver, andmebaas – iga teenus võib töötada eraldi virtuaalmasinas, mis muudab halduse paindlikuks ja piirab võimalike rikete mõju. Virtuaalmasinate varundamine ja hetktõmmiste loomine on lihtne.
Automaatne loomine CLI ja Ansible’iga
- Virtuaalmasinate automaatne loomine käsurealt
Kirjutades skripte, mis kasutavadvirt-install
javirsh
käske, saad kiiresti korraga luua ja hallata mitut virtuaalmasinat. Näide:
for i in {1..5}
do
virt-install --name test-vm-$i --memory 1024 --vcpus 1
--disk size=10 --cdrom /path/to/ubuntu.iso
--os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole
done
- Automaatne seadistamine Ansible’iga
Kasutades infrastruktuuri automatiseerimise tööriista Ansible, saad kirjutada playbook’e, mis loovad virtuaalmasinad, seadistavad algparameetrid ja paigaldavad tarkvara – kõik ühe käsuga. See on eriti tõhus, kui haldad mitut serverit või soovid tagada ühtlase seadistuse.
Pilvelaadne haldus ja integratsioon
- Virtuaalmasinate mallide (template) kasutamine
Loo standardne mall virtuaalmasinast, mida on võimalik kiiresti kloonida uute serverite loomiseks. - API ja veebihaldustööriistade kasutamine
Libvirt pakub API-d, mida saab ühendada teiste tööriistade või haldussüsteemidega. Suuremas keskkonnas kasuta veebipõhiseid haldustööriistu (nt Cockpit), et virtuaalmasinaid visuaalselt hallata.
Tõrkeotsing ja levinud vigade lahendused
KVM-i kasutamisel võib ette tulla erinevaid probleeme, näiteks virtuaalmasin ei käivitu või võrk ei tööta. Selles peatükis selgitame levinumaid probleemitüüpe, nende lahendusi, logide vaatamist ja toetusressursside kasutamist.

Levinumad KVM-i probleemid
- Virtuaalmasin ei käivitu või ei saa luua
- Protsessori virtualiseerimistugi (Intel VT, AMD-V) on keelatud
- Puudub piisavalt mälu või kettaruumi
- Vale salvestusruumi või ISO-faili tee
- Võrguühendus ei toimi
- Virtuaalmasina võrgukaart pole õigesti seadistatud
- Silla- või NAT-seadistuse viga, DHCP jaotuse probleemid
- Tulemüüri või turvasätete takistus
- Väga madal jõudlus
- Liiga palju või vähe ressursse määratud
- Virtio draiverid puuduvad (eriti Windowsi puhul)
- Ketta I/O on pudelikaelaks
Logide kontroll ja põhiline lahendusprotsess
Kui tekib probleem, alusta alati logide kontrollist.
- Süsteemilogide vaatamine
sudo journalctl -xe
Vaata, kas seal on KVM-i või libvirt’iga seotud veateateid.
- libvirt’i logid
Logid asuvad/var/log/libvirt/
kataloogis (nt libvirtd.log). - Virtuaalmasina logid
Virt-manageris või virsh käsuga vaata virtuaalmasina seisu ja logisid. - Võrgu oleku kontroll
ip a
brctl show
virsh net-list --all
Nendega saad kontrollida võrguühendust ja sildade seadistust.
Põhiline tõrkeotsingu protsess
- Määratle, millal probleem tekkis ja mis muutus
- Vaata ülaltoodud logisid ja seadistusi
- Vajadusel muuda seadistusi, taaskäivita teenus või loo virtuaalmasin uuesti
Ametlike juhendite ja kogukonna kasutamine
Probleemide korral on abiks järgmised ressursid:
- Ametlikud juhendid
Ubuntu KVM ametlik juhend
libvirt’i ametlik dokumentatsioon - Kogukonna foorumid ja Q&A lehed
- Ubuntu Foorumid
- Ask Ubuntu
- Stack Overflow
- Veateadete otsing
Otsi ilmnenud veateateid nii eesti, inglise kui ka vene keeles Google’is – sageli leidub lahendusi erinevates foorumites.
Turvalisus ja jõudluse optimeerimine
KVM-i ohutu ja efektiivne kasutamine eeldab turvameetmeid ja jõudluse optimeerimist. Selles peatükis toome välja olulisemad turvanipid ja jõudluse tõstmise nõuanded.
Virtualiseerimiskeskkonna turvamine
- Keela mittevajalikud teenused
Lülita välja teenused, mida virtuaalmasinas või hostis ei kasutata, et vähendada rünnakupinda. - Tulemüür ja juurdepääsupiirangud
Sea tulemüür (nt ufw või firewalld) nii hostis kui külalissüsteemides; piiritle SSH ligipääs ja kasuta võtmetega autentimist, vajadusel ka fail2ban-i. - Virtuaalmasinate isoleerimine
Tundlikud serverid paiguta eraldi virtuaalvõrkudesse või isegi füüsiliselt eraldi segmentidesse, et minimeerida turvariski. - Regulaarne tarkvarauuendus
Hoia nii host- kui külalissüsteemid värsked, paigaldades regulaarselt turvapaigad ja uuendused.
Ressursside (CPU/mälu/kettakasutus) optimeerimine
- Ressursside mõistlik jaotus
Määra igale virtuaalmasinale piisavalt CPU-d ja mälu, kuid jäta ka hostile ressurssi. Üleliigne jaotus võib kõigi süsteemide tööd aeglustada. - Ketta I/O optimeerimine
Ketta jõudlus on tihti pudelikaelaks. Tõsisemate virtuaalmasinate jaoks kasuta kiiret SSD-d. qcow2-formaadis ketastel võib liiga palju hetktõmmiseid jõudlust langetada – kasuta neid tasakaalukalt. - Virtio draiverite kasutamine
Virtuaalmasina sees paigalda virtio draiverid, et saavutada parim võimalik ketta- ja võrgukiirus.
Varundus ja hetktõmmiste automatiseerimine
- Regulaarsed hetktõmmised
Tootmiskeskkonna virtuaalmasinatele loo regulaarselt hetktõmmiseid, et tagada kiire taastumine rikke korral. - Virtuaalketaste ja seadistuste varundus
Tee koopiaid virtuaalkettafailidest (qcow2, raw) ja libvirt’i seadistusfailidest (XML). Varunda need teise serverisse või välisele andmekandjale. - Automatiseerimine
Kasuta cron’i või Ansible’t, et ajastada automaatset varundust ja hetktõmmiste loomist.
Kokkuvõte ja edasised õppeallikad
Selles artiklis selgitasime, kuidas seadistada ja hallata KVM-i virtualiseerimiskeskkonda Ubuntus – alates paigaldusest kuni praktilise kasutuse, tõrkeotsingu ning turva- ja jõudlusnippideni. Lõpetuseks teeme lühikokkuvõtte ning toome välja soovituslikud õppeallikad edasiseks arendamiseks.
Artikli kokkuvõte
- KVM-i ülevaade ja eelised
KVM on avatud lähtekoodiga ning suure jõudlusega virtualiseerimistehnoloogia, mida kasutatakse laialdaselt Ubuntu serverites ja teistes Linuxi keskkondades. - Paigaldusest halduseni
Käsitlesime, kuidas kontrollida protsessori virtualiseerimistuge, paigaldada vajalikud paketid, seadistada kasutajaõigused ning luua ja hallata virtuaalmasinaid. - Võrk, salvestusruum ja praktiline haldus
Tutvustasime NAT-i ja silla (bridge) võrke, salvestusruumi haldust, ketta laiendamist ja hetktõmmiste kasutamist vastavalt vajadusele. - Tõrkeotsing ja turvalisus
Selgitasime levinud vigade lahendusi, logide kontrolli ning turvalise ja tõhusa kasutamise põhinõuandeid.
Edasised sammud ja soovituslikud õppematerjalid
- Ametlikud juhendid
- Ubuntu ametlik KVM juhend
- libvirt’i ametlik dokumentatsioon
- Ask Ubuntu
- Qiita KVM märksõna (jaapani keeles)
- Stack Overflow (inglise keeles)
KVM on paindlik virtualiseerimislahendus, mis sobib nii üksikisikutele kui ettevõtetele. Kasuta seda artiklit stardipunktina ja arenda oma virtualiseerimisteadmisi veelgi edasi!
Käskude spikker ja tüüpilised näited (cheat sheet)
KVM-i ja libvirt’i haldamisel on mugav hoida käepärast sagedamini kasutatavad käsud ja seadistused. Allpool on toodud peamised käsud ja võrgu- ning kettaseadistuste näited.
KVM/virsh/virt-manager’i peamised käsud
- Virtuaalmasinate nimekirja kuvamine
virsh list --all
- Virtuaalmasina käivitamine
virsh start <virtuaalmasina_nimi>
- Virtuaalmasina sulgemine
virsh shutdown <virtuaalmasina_nimi>
- Virtuaalmasina sundpeatamine
virsh destroy <virtuaalmasina_nimi>
- Virtuaalmasina loomine (virt-install)
virt-install --name <nimi> --memory <MB> --vcpus <tuumade_arv>
--disk size=<GB> --cdrom <ISO_tee>
--os-type linux --os-variant ubuntu20.04
- Virtuaalmasina eemaldamine (ainult seadistus)
virsh undefine <virtuaalmasina_nimi>
Võrgu ja silla seadistamise näited
- Võrkude nimekirja kuvamine
virsh net-list --all
- Uue võrgu loomine (XML-näide)
Paiguta XML-fail kataloogi/etc/libvirt/qemu/networks/
, siis aktiveeri:virsh net-define <failinimi>
,virsh net-start <võrgu_nimi>
Salvestusruumi ja ketaste näited
- Salvestusruumide nimekiri
virsh pool-list --all
- Virtuaalketta laiendamine
sudo qemu-img resize /path/to/disk.qcow2 +10G
- Hetktõmmise loomine
virsh snapshot-create-as <virtuaalmasina_nimi> <snapshot_nimi>
Muud kasulikud nipid
- Virtuaalmasina automaatne käivitamine hosti buutimisel
virsh autostart <virtuaalmasina_nimi>
- Virtuaalmasina detailinfo
virsh dominfo <virtuaalmasina_nimi>
- virt-manager’i käivitamine (GUI)
virt-manager
KKK (Korduma kippuvad küsimused)
Siin on vastused sageli esitatud küsimustele seoses KVM-i ja Ubuntu virtualiseerimiskeskkonna seadistamise ning haldamisega.
K1: Mis vahe on KVM-il, VirtualBoxil ja VMware’il?
V1: KVM on Linuxi kernelisse integreeritud suure jõudlusega virtualiseerimiskeskkond, sobides eriti serveri ja tõsise kasutuse jaoks. VirtualBox on töölauale orienteeritud, VMware on tasuline, sobib suurtesse ettevõtetesse ja pakub laialdast tuge, kuid KVM annab tasuta väga hea jõudluse ja on paindlik.
K2: Kuidas varundada ja taastada virtuaalmasinaid?
V2: Kopeeri lihtsalt virtuaalketta failid (qcow2 või raw). Samuti tasub varundada virshi snapshot’id ja masinate XML-seadistusfailid – nii on taastamine kiire ja lihtne.
K3: Kuidas kasutada USB-seadmeid virtuaalmasinas?
V3: Lisa virt-manager’is „Uus riistvara” kaudu USB või seadista virsh’iga USB pass-through – nii saab virtuaalmasin kasutada näiteks USB-mälupulka, välist HDD-d või printerit.
K4: Kuidas käivitada virtuaalmasin automaatselt koos hostiga?
V4: Kasuta käsku virsh autostart <virtuaalmasina_nimi>
, et seada automaatne käivitamine hosti buutimisega.
K5: Mida teha, kui virtuaalmasin on aeglane?
V5: Vaata CPU ja mälu jaotust üle, optimeeri ketta I/O (kasuta kiiret SSD-d, vajadusel vaheta qcow2 → raw), paigalda virtio draiverid.
K6: Võrgu seadistamine ei õnnestu, mida teha?
V6: Kontrolli võrgu olekut virsh’i või brctl abil, vajadusel loo võrk uuesti või muuda Netplani/NetworkManageri seadistusi.
K7: Kas KVM-iga saab luua klastrit või HA lahendusi?
V7: Jah, kasutades näiteks Pacemakerit, Corosync’i ja jagatud salvestusruumi (NFS, iSCSI) on võimalik ehitada kõrgkäideldav klaster või kasutada live-migratsiooni. See nõuab aga lisateadmisi.