Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Fier
  • Server de mașină virtuală pe ubuntu. Nu vă mai temeți de virtualizare folosind KVM

Server de mașină virtuală pe ubuntu. Nu vă mai temeți de virtualizare folosind KVM

În Ubuntu, se recomandă utilizarea hypervisorului (manager mașini virtuale) KVM și biblioteca libvirt ca instrumente pentru gestionarea acesteia. Libvirt include un set de API-uri software și aplicații personalizate management mașini virtuale(VM) virt-manager ( GUI, GUI) sau virsh ( Linie de comanda,CLI). Ca manageri alternativi, puteți utiliza convirt (GUI) sau convirt2 (interfață WEB).

În prezent, numai hypervisorul KVM este acceptat oficial pe Ubuntu. Acest hypervisor face parte din codul nucleului de operare sisteme Linux. Spre deosebire de Xen, KVM nu acceptă paravirtualizarea, adică pentru a o utiliza, procesorul tău trebuie să accepte tehnologii VT. Puteți verifica dacă procesorul dvs. acceptă această tehnologie rulând comanda în terminal:

Dacă primiți următorul mesaj ca rezultat:

INFORMAȚII: /dev/kvm există Accelerația KVM poate fi utilizată

Aceasta înseamnă că KVM va funcționa fără probleme.

Dacă ați primit următorul mesaj la ieșire:

CPU nu acceptă extensii KVM. Accelerarea KVM NU poate fi utilizată

atunci puteți folosi în continuare mașina virtuală, dar va fi mult mai lent.

    Instalați sisteme pe 64 de biți ca invitați

    Alocați mai mult de 2 GB de RAM sistemelor invitate

Instalare

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Aceasta este o instalare pe un server fără X, adică nu include o interfață grafică. Îl poți instala cu comanda

Sudo apt-get install virt-manager

După aceasta, elementul „Virtual Machine Manager” va apărea în meniu și, cu un grad ridicat de probabilitate, totul va funcționa. Dacă mai apar probleme, va trebui să citiți instrucțiunile din wiki-ul în limba engleză.

Crearea unui sistem invitat

Procedura de creare a unui sistem invitat folosind GUI este destul de simplă.

Si aici modul text poate fi descris.

qcow2

Când creați un sistem folosind interfața grafică ca hard disk, vi se solicită fie să selectați un fișier imagine existent sau să blocați dispozitivul, fie să creați fișier nou cu date brute (RAW). Cu toate acestea, acesta este departe de a fi singurul format disponibil fișiere. Dintre toate tipurile de discuri enumerate în man qemu-img, cel mai flexibil și modern este qcow2. Acceptă instantanee, criptare și compresie. Trebuie creat înainte de a crea un nou invitat.

Qemu-img create -o preallocation=metadata -f qcow2 qcow2.img 20G

Potrivit aceluiași om qemu-img, prealocarea metadatelor (-o preallocation=metadata) face discul inițial puțin mai mare, dar oferă performanță mai bunăîn acele momente când imaginea trebuie să crească. De fapt, în în acest caz, Această opțiune vă permite să evitați o eroare neplăcută. Imagine creată inițial ocupă mai puțin de un megaoctet de spațiu și crește la dimensiunea specificată după cum este necesar. Sistemul oaspeților ar trebui să vadă imediat această finală dimensiunea specificată, cu toate acestea, în timpul fazei de instalare ea poate vedea dimensiunea reală fişier. Desigur, va refuza instalarea pe un hard disk de 200 KB. Bug-ul nu este specific Ubuntu; cel puțin apare în RHEL.

Pe lângă tipul de imagine, puteți alege ulterior metoda de conectare - IDE, SCSI sau Virtio Disk. Performanța va depinde de această alegere subsistem disc. Nu există un răspuns corect precis; trebuie să alegeți în funcție de sarcina care va fi atribuită sistemului invitat. Dacă sistem invitat este creată „pentru a privi”, atunci orice metodă va funcționa. În general, de obicei I/O este blocaj mașină virtuală, așa că atunci când se creează un sistem foarte încărcat, această problemă trebuie abordată cât mai responsabil posibil.

Scriu această notă pentru a demonstra instalare pas cu pasși configurarea unei mașini virtuale bazate pe KVM în Linux. Am scris anterior despre virtualizare, unde am folosit minunatul .

Acum mă confrunt cu o problemă de închiriere. server bun cu volum mare memorie cu acces aleatorși volumetrice hard disk. Dar nu vreau să rulez proiecte direct pe mașina gazdă, așa că le voi separa în servere virtuale mici separate care rulează containere Linux sau Docker (voi vorbi despre ele într-un alt articol).

Toate găzduirile cloud moderne funcționează pe același principiu, adică. hoster pe glandă bună ridică o grămadă de servere virtuale, pe care le numim VPS/VDS, și le distribuie utilizatorilor sau automatizează acest proces (bună ziua, DigitalOcean).

KVM (mașină virtuală bazată pe kernel) este un software pentru Linux care utilizează hardware-ul procesoarelor compatibile x86 pentru a lucra cu tehnologia de virtualizare Intel VT/AMD SVM.

Instalarea KVM

Voi efectua toate mașinațiunile de a crea o mașină virtuală pe Ubuntu 16.04.1 LTS OS. Pentru a verifica dacă procesele dvs. acceptă virtualizarea hardware activată Bazat pe Intel VT/AMD SVM, executați:

Grep -E "(vmx|svm)" /proc/cpuinfo

Dacă terminalul nu este gol, atunci totul este în ordine și KVM poate fi instalat. Ubuntu acceptă oficial doar hypervisorul KVM (inclus cu Kernel-urile Linux) și recomandă utilizarea bibliotecii libvirt ca instrument pentru gestionarea acesteia, ceea ce vom face în continuare.

De asemenea, puteți verifica suportul pentru virtualizarea hardware în Ubuntu folosind comanda:

Dacă aveți succes, veți vedea ceva de genul acesta:

INFORMAȚII: /dev/kvm există Accelerația KVM poate fi utilizată

Instalați pachete pentru lucrul cu KVM:

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Dacă aveți acces la înveliș grafic sistem, puteți instala libvirt GUI manager:

Sudo apt-get install virt-manager

Utilizarea virt-manager este destul de simplă (nu mai dificilă decât VirtualBox), așa că în acest articol vom vorbi despre opțiunea de consolă pentru instalarea și configurarea unui server virtual.

Instalarea și configurarea unui server virtual

În versiunea de consolă de instalare, configurare și gestionare a sistemului, un instrument indispensabil este utilitarul virsh (un add-on la biblioteca libvirt). Ea are un numar mare de opțiuni și parametri, descriere detaliata se poate obtine astfel:

Omul virsh

sau apelați standardul „ajutor”:

Virsh ajutor

Mă țin mereu de urmând reguli atunci când lucrați cu servere virtuale:

  1. Stochez imagini ISO OS în directorul /var/lib/libvirt/boot
  2. Stochez imagini de mașină virtuală în directorul /var/lib/libvirt/images
  3. Asignez în mod explicit fiecărei noi mașini virtuale propria sa adresă IP statică prin Server DHCP hipervizor.

Să începem să instalăm prima mașină virtuală (server pe 64 de biți Ubuntu 16.04 LTS):

Cd /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

După descărcarea imaginii, începeți instalarea:

Sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/ubuntu1604. img,size=20,bus=virtio

Traducerea tuturor acestor parametri în „ limbajul uman„, se dovedește că creăm o mașină virtuală cu OS Ubuntu 16.04, 1024 MB RAM, 1 procesor, o placă de rețea standard (mașina virtuală va accesa Internetul ca datorită NAT), HDD de 20 GB.

Merită să acordați atenție parametrului --os-variant, îi spune hypervisorului la ce sistem de operare ar trebui să fie adaptate setările.
Listă Optiuni Disponibile Sistemul de operare poate fi obținut rulând comanda:

Osinfo-query os

Dacă un astfel de utilitar nu este pe sistemul dvs., atunci instalați:

Sudo apt-get install libosinfo-bin

După pornirea instalării, în consolă va apărea următorul mesaj:

Instalarea domeniului este încă în curs. Vă puteți reconecta la consolă pentru a finaliza procesul de instalare.

Aceasta este o situație normală, vom continua instalarea prin VNC.
Să ne uităm la ce port a fost creat pe mașina noastră virtuală (în următorul terminal, de exemplu):

Virsh dumpxml ubuntu1604... ...

Portul 5900, activat adresa locala 127.0.0.1. Pentru a vă conecta la VNC, trebuie să utilizați Port Forwarding prin ssh. Înainte de a face acest lucru, asigurați-vă că redirecționarea tcp este activată în demonul ssh. Pentru a face acest lucru, accesați setările sshd:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Dacă nu s-a găsit nimic sau vedeți:

AllowTcpForwarding nr

Apoi edităm configurația la

AllowTcpForwarding da

și reporniți sshd.

Configurarea redirecționării portului

Executăm comanda pe mașina locală:

Ssh -fN -l autentificare -L 127.0.0.1:5900:localhost:5900 server_ip

Aici am configurat ssh port forwarding Cu port local 5900 la portul server 5900. Acum vă puteți conecta la VNC folosind orice client VNC. Prefer UltraVNC datorită simplității și comoditatii sale.

După conectarea cu succes, se va afișa ecranul fereastra standard salutări pentru pornirea instalării Ubuntu:

După finalizarea instalării și repornirea obișnuită, va apărea fereastra de autentificare. După conectare, determinăm adresa IP a mașinii virtuale nou create pentru a o face ulterior statică:

Ifconfig

Ne amintim și mergem la mașina gazdă. Scoatem adresa mac a cartelei de „rețea” a mașinii virtuale:

Virsh dumpxml ubuntu1604 | grep "adresa mac"

Să ne amintim adresa noastră mac:

Editare setari de retea hypervisor:

Sudo virsh net-edit implicit

Căutăm DHCP și adăugăm asta:

Ar trebui să arate cam așa:

Pentru ca setările să aibă efect, trebuie să reporniți serverul DHCP al hypervisorului:

Sudo virsh net-destroy default sudo virsh net-start implicit sudo service libvirt-bin restart

După aceasta, repornim mașina virtuală, acum va avea întotdeauna adresa IP atribuită - 192.168.122.131.

Există și alte modalități de a seta un IP static pentru o mașină virtuală, de exemplu, prin editarea directă a setărilor de rețea în interiorul sistemului invitat, dar aici este orice dorește inima ta. Tocmai am arătat opțiunea pe care prefer să o folosesc.

Pentru a vă conecta la terminalul mașinii virtuale, rulați:

Ssh 192.168.122.131

Mașina este gata de luptă.

Virsh: lista de comenzi

Să văd alergând gazde virtuale(toate cele disponibile pot fi obținute adăugând --all):

Sudo virsh list

Puteți reporni gazda:

Sudo virsh reporniți $VM_NAME

Opriți o mașină virtuală:

Sudo virsh stop $VM_NAME

Executați oprirea:

Sudo virsh distruge $VM_NAME

Sudo virsh start $VM_NAME

Dezactivați:

Închiderea Sudo virsh $VM_NAME

Adăugați la rulare automată:

Sudo virsh pornire automată $VM_NAME

De foarte multe ori este necesară clonarea unui sistem pentru a-l utiliza în viitor ca cadru pentru alte sisteme de operare virtuale; pentru aceasta se folosește utilitarul virt-clone.

Virt-clone --ajutor

Clonează o mașină virtuală existentă și modifică datele sensibile la gazdă, de exemplu, adresa mac. Parolele, fișierele și alte informații specifice utilizatorului din clonă rămân aceleași. Dacă adresa IP de pe mașina virtuală clonată a fost înregistrată manual, atunci pot apărea probleme cu accesul SSH la clonă din cauza unui conflict (2 gazde cu același IP).

Pe lângă instalarea unei mașini virtuale prin VNC, este și posibil să utilizați X11Forwarding prin utilitarul virt-manager. Pe Windows, de exemplu, puteți folosi Xming și PuTTY pentru asta.

KVM sau Kernel Virtual Module este un modul de virtualizare pentru nucleul Linux care vă permite să vă transformați computerul într-un hypervisor pentru gestionarea mașinilor virtuale. Acest modul funcționează la nivel de kernel și acceptă tehnologii de accelerare hardware, cum ar fi Intel VT și AMD SVM.

De la sine software KVM în spațiul utilizatorului nu virtualizează nimic. În schimb, folosește fișierul /dev/kvm pentru a configura spațiile de adrese virtuale pentru oaspete în kernel. Fiecare aparat pentru oaspeți va avea propria sa placa video, retea si placa de sunet, HDDși alte echipamente.

De asemenea, sistemul guest nu va avea acces la componentele realului sistem de operare. Mașina virtuală rulează într-un spațiu complet izolat. Puteți utiliza kvm atât pe un sistem GUI, cât și pe servere. În acest articol ne vom uita la cum să instalați kvm Ubuntu 16.04

Înainte de a trece la instalarea KVM în sine, trebuie să verificați dacă procesorul dvs. acceptă accelerare hardware virtualizare de la Intel-VT sau AMD-V. Pentru a face acest lucru, rulați următoarea comandă:

egrep -c "(vmx|svm)" /proc/cpuinfo

Dacă rezultatul returnează 0, atunci procesorul dumneavoastră nu acceptă virtualizarea hardware, dacă este 1 sau mai mult, atunci puteți utiliza KVM pe mașina dvs.

Acum putem trece la instalarea KVM, un set de programe poate fi obținut direct din depozitele oficiale:

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

Am instalat nu numai utilitarul kvm, ci și biblioteca libvirt, precum și managerul de mașini virtuale. Odată ce instalarea este finalizată, trebuie să adăugați utilizatorul în grupul libvirtd, deoarece numai root și utilizatorii din acest grup pot folosi mașinile virtuale KVM:

sudo gpasswd -a USER libvirtd

După ce rulați această comandă, deconectați-vă și conectați-vă din nou. Apoi, să verificăm dacă totul a fost instalat corect. Pentru a face acest lucru, utilizați comanda kvm-ok:

INFORMAȚII: /dev/kvm există
Se poate folosi accelerația KVM

Dacă totul a fost făcut corect, veți vedea același mesaj.

Utilizarea KVM pe Ubuntu 16.04

Ați finalizat sarcina de a instala kvm în Ubuntu, dar încă nu puteți utiliza acest mediu de virtualizare, dar încă trebuie configurat. În continuare, ne vom uita la modul în care este configurat kvm Ubuntu. Mai întâi trebuie să vă configurați rețeaua. Trebuie să creăm o punte cu care mașina virtuală se va conecta la rețeaua computerului.

Configurarea unui bridge în NetworkManager

Acest lucru se poate face în mai multe moduri, de exemplu, puteți utiliza programul de configurare a rețelei NetworkManager.

Faceți clic pe pictograma NetworkManager din panou, apoi selectați schimba conexiunile, apoi faceți clic pe butonul Adăuga:

Apoi selectați tipul de conexiune Podși apăsați Crea:

În fereastra care se deschide, faceți clic pe butonul Adăuga, pentru a conecta puntea noastră la conexiunea la internet:

Din listă, selectați Ethernetși apăsați Crea:

În fereastra următoare, selectați în câmp dispozitiv, interfata retea, cu care ar trebui conectat podul nostru:

Acum pe listă conexiuni de retea iti vei vedea podul. Tot ce rămâne este să reporniți rețeaua pentru a aplica complet modificările, pentru a face acest lucru, rulați:

Configurare manuală a podului

Mai întâi trebuie să instalați setul de utilitare bridge-utils dacă nu ați făcut deja acest lucru:

sudo apt install bridge-utils

Apoi, folosind programul brctl, putem crea puntea de care avem nevoie. Pentru a face acest lucru, utilizați următoarele comenzi:

sudo brctl addbr bridge0
$ sudo ip addr show
$ sudo addif bridge0 eth0

Prima comandă adaugă dispozitivul bridge br0, cu a doua trebuie să determinați care interfață de rețea este conexiunea principală la care rețea externă, în cazul meu este eth0. Și cu ultima comandă conectăm bridge-ul br0 la eth0.

Acum trebuie să adăugați câteva linii la setările de rețea, astfel încât totul să pornească automat după pornirea sistemului. Pentru a face acest lucru, deschideți fișierul /etc/network/interfaces și adăugați următoarele linii acolo:

sudo gedit /etc/network/interfaces

loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

Când setările sunt adăugate, reporniți rețeaua:

sudo systemctl reporniți rețeaua

Acum instalarea și configurarea KVM sunt complet finalizate și vă puteți crea prima mașină virtuală. După aceasta, puteți vizualiza podurile disponibile folosind comanda:

Crearea de mașini virtuale KVM

Setări KVM Ubuntu finalizat și acum putem trece la folosirea lui. Mai întâi, să ne uităm la lista de mașini virtuale existente:

virsh -c qemu:///listă de sistem

E gol. Puteți crea o mașină virtuală prin terminal sau în interfața grafică. Pentru a crea prin terminal, utilizați comanda virt-install. Mai întâi să mergem la folderul libvirt:

cd /var/lib/libvirt/boot/

Pentru Instalări CentOS comanda va arăta astfel:

sudo virt-install\
--virt-type=kvm \
--name centos7\
--ram 2048\
--vcpus=2 \
--os-variant=rhel7 \
--hvm\
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,model=virtio \
--graphics vnc\
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

Să aruncăm o privire mai atentă la ceea ce înseamnă parametrii acestei comenzi:

  • tip virt- tip de virtualizare, în cazul nostru kvm;
  • Nume- Nume mașină nouă;
  • RAM- cantitatea de memorie în megabytes;
  • vcpus- numărul de nuclee de procesor;
  • varianta os- tip de sistem de operare;
  • CD ROM - imaginea de instalare sisteme;
  • punte-rețea- puntea de rețea pe care am configurat-o mai devreme;
  • grafică- o modalitate de a obține acces la interfața grafică;
  • calea discului- abordare nou hard disc pentru această mașină virtuală;

După finalizarea instalării mașinii virtuale, puteți afla parametrii conexiunii VNC folosind comanda:

sudo virsh vncdisplay centos7

Acum puteți introduce datele primite în clientul VNC și vă puteți conecta la mașina virtuală chiar și de la distanță. Pentru Debian comanda va fi ușor diferită, dar totul arată similar:

Accesați folderul pentru imagini:

cd /var/lib/libvirt/boot/

Puteți descărca imaginea de instalare de pe Internet dacă este necesar:

sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso

Apoi să creăm o mașină virtuală:

sudo virt-install\
--virt-type=kvm \
--name=debina8 \
--ram=2048\
--vcpus=2 \
--os-variant=debian8 \
--hvm\
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,model=virtio\
--graphics vnc\
--disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2

Acum să ne uităm din nou la lista de mașini disponibile:

virsh -c qemu:///listă de sistem

Pentru a porni mașina virtuală puteți folosi comanda:

sudo virsh start machinename

A opri:

sudo virsh shutdown machinename

Pentru a comuta în modul de repaus:

sudo virsh suspend nume mașină

Pentru a reporni:

sudo virsh reporniți nume mașină

sudo virsh resetează numele mașinii

Pentru îndepărtarea completă mașină virtuală:

sudo virsh distruge nume mașină

Crearea de mașini virtuale în GUI\

Dacă aveți acces la o interfață grafică, atunci nu este nevoie să utilizați un terminal, puteți utiliza interfața grafică completă a managerului virtual Mașini virtuale Administrator. Programul poate fi lansat din meniul principal:

Pentru a crea o mașină nouă, faceți clic pe pictograma cu pictograma monitorului. În continuare va trebui să selectați Imagine ISO sistemul dvs. De asemenea, puteți utiliza o unitate CD/DVD reală:

Pe ecranul următor, selectați cantitatea de memorie care va fi disponibilă pentru mașina virtuală, precum și numărul de nuclee de procesor:

Pe acest ecran trebuie să selectați o dimensiune hard disk, care va fi disponibil în mașina dvs.:

Pe ultimul pasÎn calitate de expert, va trebui să verificați dacă setările aparatului sunt corecte și să introduceți și numele acestuia. De asemenea, trebuie să specificați puntea de rețea prin care mașina se va conecta la rețea:

După aceasta, mașina va fi gata de utilizare și va apărea în listă. Îl puteți lansa folosind triunghiul verde din bara de instrumente manager.

concluzii

În acest articol, ne-am uitat la cum să instalăm KVM Ubuntu 16.04, ne-am uitat la cum să pregătim pe deplin acest mediu pentru lucru, precum și cum să creăm mașini virtuale și să le folosim. Dacă aveți întrebări, întrebați în comentarii!

Pentru a încheia, o prelegere de la Yandex despre ce este virtualizarea în Linux:

Personal, este cel mai ușor pentru mine să mă gândesc la KVM (Mașină virtuală bazată pe kernel) ca la un nivel de abstractizare față de tehnologiile de virtualizare hardware Intel VT-x și AMD-V. Luăm o mașină cu un procesor care acceptă una dintre aceste tehnologii și mizăm pe aceasta mașină Linux, în Linux instalăm KVM, ca urmare avem posibilitatea de a crea mașini virtuale. Cam așa funcționează găzduirea în cloud, de exemplu, Amazon Web Services. Alături de KVM, Xen este uneori folosit, dar o discuție despre această tehnologie depășește scopul acestei postări. Spre deosebire de tehnologiile de virtualizare a containerelor, de exemplu, Docker, KVM vă permite să rulați orice sistem de operare ca sistem invitat, dar are și O Suplimentar mai mare pentru virtualizare.

Notă: Pașii descriși mai jos au fost testați de mine pe Ubuntu Linux 14.04, dar în teorie vor fi în multe privințe la fel de adevărate ca și pentru altele versiuni Ubuntu, si altii distribuții Linux. Totul ar trebui să funcționeze atât pe desktop, cât și pe server, accesat prin SSH.

Instalarea KVM

Verificăm dacă Intel VT-x sau AMD-V este acceptat de procesorul nostru:

grep -E "(vmx|svm)" /proc/cpuinfo

Dacă ceva se încinge, înseamnă că este acceptat și poți continua.

Instalarea KVM:

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Ce este de obicei stocat unde:

  • /var/lib/libvirt/boot/ - imagini ISO pentru instalarea sistemelor guest;
  • /var/lib/libvirt/images/ - imagini hard disk-uri sisteme invitate;
  • /var/log/libvirt/ - aici ar trebui să căutați toate jurnalele;
  • /etc/libvirt/ - directorul cu fișierele de configurare;

Acum că KVM este instalat, să creăm prima noastră mașină virtuală.

Crearea primei mașini virtuale

Am ales FreeBSD ca sistem invitat. Descărcați imaginea ISO a sistemului:

cd /var/lib/libvirt/boot/
sudo wget http:// ftp.freebsd.org/ path/ to/ some-freebsd-disk.iso

Mașinile virtuale sunt gestionate în majoritatea cazurilor folosind utilitarul virsh:

sudo virsh --help

Înainte de a lansa mașina virtuală, va trebui să colectăm câteva informații suplimentare.

Ne uităm la lista de rețele disponibile:

sudo virsh net-list

Vizualizați informații despre rețea specifică(numit implicit):

sudo virsh net-info implicit

Să ne uităm la lista de optimizări disponibile pentru sistemele de operare invitate:

sudo virt-install --os-variant list

Deci, acum creăm o mașină virtuală cu 1 CPU, 1 GB RAM și 32 GB spațiu pe disc, conectată la rețeaua implicită:

sudo virt-install\
--virt-type =kvm\
--name freebsd10\
--ram 1024\
--vcpus=1\
--os-variant =freebsd8 \
--hvm\
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--network network =implicit,model =virtio\
--graphics vnc\
--disk path =/ var/ lib/ libvirt/ images/ freebsd10.img,size =32 ,bus =virtio

Poti sa vezi:

AVERTISMENT Nu se poate conecta la consola grafică: virt-viewer nu
instalat. Vă rugăm să instalați pachetul „virt-viewer”.

Instalarea domeniului este încă în curs. Vă puteți reconecta la consolă
pentru a finaliza procesul de instalare.

Este normal, așa ar trebui să fie.

Apoi uitați-vă la proprietățile mașinii virtuale în format XML:

sudo virsh dumpxml freebsd10

Aici sunt cele mai multe informatii complete. Aceasta include, de exemplu, o adresă MAC, de care vom avea nevoie mai târziu. Deocamdată găsim informații despre VNC. În cazul meu:

Folosind clientul tău preferat (eu personal folosesc Rammina), ne logăm prin VNC, folosind redirecționarea portului SSH dacă este necesar. Intrăm direct în programul de instalare FreeBSD. Apoi totul este ca de obicei - Next, Next, Next, obținem sistemul instalat.

Comenzi de bază

Să ne uităm acum la comenzi de bază pentru lucrul cu KVM.

Obținerea unei liste cu toate mașinile virtuale:

sudo virsh list --all

Obținerea de informații despre o anumită mașină virtuală:

sudo virsh dominfo freebsd10

Lansați mașina virtuală:

sudo virsh start freebsd10

Opriți mașina virtuală:

sudo virsh shutdown freebsd10

Cu greu dau în cuie mașina virtuală (în ciuda numelui, aceasta Nu stergere):

sudo virsh distruge freebsd10

Reporniți mașina virtuală:

sudo virsh reporniți freebsd10

Clonează mașina virtuală:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file /var/lib/libvirt/images/freebsd10-clone.img

Activați/dezactivați rularea automată:

sudo virsh autostart freebsd10
sudo virsh autostart --dezactivați freebsd10

Rularea virsh în modul dialog (toate comenzile în modul dialog - așa cum este descris mai sus):

sudo virsh

Editarea proprietăților mașinii virtuale în XML, inclusiv aici puteți modifica limita cantității de memorie etc.:

sudo virsh edit freebsd10

Important! Comentariile din XML-ul editat sunt, din păcate, eliminate.

Când mașina virtuală este oprită, discul poate fi, de asemenea, redimensionat:

sudo qemu-img resize /var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img info /var/lib/libvirt/images/freebsd10.img

Important! Sistemul dumneavoastră de operare invitat probabil că nu va plăcea că discul devine brusc mai mare sau mai mic. ÎN cel mai bun scenariu, va porni în modul de urgență cu o propunere de repartiție a discului. Probabil că nu ar trebui să vrei să faci asta. Poate fi mult mai ușor să creați o nouă mașină virtuală și să migrați toate datele către ea.

Backup și restaurare sunt destul de simple. Este suficient să salvați undeva ieșirea dumpxml, precum și imaginea de disc și apoi să le restaurați. Pe Youtube a reusit sa gasesc videoclipul Cu o demonstrație a acestui proces, totul nu este cu adevărat dificil.

Setari de retea

O întrebare interesantă - cum să determinați ce adresă IP a primit mașina virtuală după încărcare? KVM face acest lucru într-un mod inteligent. Am ajuns să scriu acest script în Python:

#!/usr/bin/env python3

# script virt-ip.py
# (c) 2016 Aleksander Alekseev
# http://site/

import sys
import re
import os
subproces de import
din xml .etree import ElementTree

def eprint(str) :
print(str, fișier = sys.stderr)

dacă len(sys.argv)< 2 :
eprint("UTILIZARE: " + sys .argv [ 0 ] + " " )
eprint("Exemplu: " + sys .argv [ 0 ] + " freebsd10 " )
sys.exit(1)

dacă os .geteuid() != 0 :
eprint("EROARE: ar trebui să fii root" )
eprint("Sugestie: rulați `sudo " + sys .argv [ 0 ] + " ...`" ) ;
sys.exit(1)

dacă subproces .call ( „care arping 2>&1>/dev/null”, shell = True ) != 0 :
eprint("EROARE: arping nu a fost găsit" )
eprint( „Sugestie: rulați `sudo apt-get install arping`”)
sys.exit(1)

Domeniu = sys.argv[1]

dacă nu re .match ("^*$", domeniu):
eprint( „EROARE: caractere nevalide în numele domeniului”)
sys.exit(1)

Domout = subproces .check_output ("virsh dumpxml " +domeniu+" || adevărat" ,
coajă = adevărat)
domout = domout.decode("utf-8").strip()

if domout == "" :
# mesaj de eroare imprimat deja de dumpxml
sys.exit(1)

Doc = ElementTree.fromstring(domout)

# 1. enumerați toate interfețele de rețea
# 2. rulați `arping` pe fiecare interfață în paralel
#3.răspunsuri grep
cmd = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
„grep „octeți de la”) || adevărat”

pentru copil în doc.iter() :
dacă child.tag == „mac”:
macaddr = child.attrib[„adresa”]
macout = subproces .check_output (cmd .format (macaddr) ,
coajă = adevărat)
print(macout.decode("utf-8"))

Scriptul funcționează atât cu rețeaua implicită, cât și cu rețeaua în punte, a cărei configurație o vom analiza mai târziu. Cu toate acestea, în practică, este mult mai convenabil să configurați KVM astfel încât să atribuie întotdeauna aceleași adrese IP sistemelor oaspeților. Pentru a face acest lucru, editați setările de rețea:

sudo virsh net-edit implicit

... ceva de genul:

>



>

După efectuarea acestor modificări


>

... și înlocuiți-l cu ceva de genul:




>

Repornim sistemul oaspete și verificăm dacă a primit un IP prin DHCP de la router. Dacă doriți ca sistemul de invitați să aibă adresa IP statica, aceasta este configurată ca de obicei în sistemul oaspeților însuși.

programul virt-manager

Ați putea fi interesat și de programul virt-manager:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd NUME DE UTILIZATOR

Iată cum arată fereastra sa principală:

După cum puteți vedea, virt-manager nu este doar o interfață grafică pentru mașinile virtuale care rulează local. Cu ajutorul acestuia, puteți gestiona mașinile virtuale care rulează pe alte gazde, precum și să vă uitați la o grafică frumoasă în timp real. Personal, mi se pare deosebit de convenabil în virt-manager că nu trebuie să căutați prin configurații pentru a afla pe ce port rulează VNC pe un anumit sistem invitat. Doar găsiți mașina virtuală în listă, faceți dublu clic și obțineți acces la monitor.

Cu ajutorul virt-manager, este, de asemenea, foarte convenabil să faci lucruri care altfel ar necesita o editare laborioasă a fișierelor XML și, în unele cazuri, execuția comenzi suplimentare. De exemplu, redenumirea mașinilor virtuale, setări CPU afinitate și lucruri asemănătoare. Apropo, Utilizarea procesorului afinitatea reduce semnificativ efectul vecinilor zgomotoși și impactul mașinilor virtuale asupra sistemului gazdă. Folosiți-l întotdeauna dacă este posibil.

Dacă decideți să utilizați KVM ca înlocuitor pentru VirtualBox, rețineți că aceștia nu vor putea partaja virtualizarea hardware între ei. Pentru ca KVM să funcționeze pe desktop, nu numai că va trebui să opriți toate mașinile virtuale din VirtualBox și Vagrant, ci și să reporniți sistemul. Eu personal consider KVM mult mai convenabil decât VirtualBox, cel puțin pentru că nu necesită să rulați o comandă setare sudo /sbin/rcvboxdrv după fiecare actualizare a nucleului, funcționează adecvat cu Unity și, în general, vă permite să ascundeți toate ferestrele.

Cele mai bune articole pe această temă