Acasă / Recenzii / Instalare de virtualizare Kvm. O prezentare generală a software-ului util pentru gestionarea virtualizării. Crearea de mașini virtuale KVM

Instalare de virtualizare Kvm. O prezentare generală a software-ului util pentru gestionarea virtualizării. Crearea de mașini virtuale KVM

Am încercat multe interfețe de management bazate pe web și niciuna dintre ele nu a fost suficient de bună ca virt-manager.

Știi, sunt unul dintre acei tipi care aveau VMware unde 90% din controale sunt făcute clic.

Intrebarile mele:

1) Există vreun utilitar CLI „interactiv”, cum ar fi mc (comandant la miezul nopții) sau ceva care să controleze KVM? (ON/OFF VM, măriți memoria, reporniți VM-urile, adăugați hardware virtual, adăugați noi discuri etc.)

2) Îmi puteți recomanda o interfață de management bazată pe web pentru KVM pe Debian squeeze? Ați văzut VMware Server 2? Există un control web. Știu că a fost lent, dar este normal când ești undeva fără terminal. (de exemplu, pe Android cu un browser web) Am încercat multe dintre ele, dar nimic din ce am încercat nu a funcționat.

5) Cum să îmbunătățiți securitatea KVM? Poate o interfață web să rezolve această problemă? (de exemplu, contabilitate, managementul utilizatorilor?)

Știu că există google, wiki, există o listă lungă de interfețe cu utilizatorul pentru kvm, dar am nevoie de păreri, experiență de la experți sau utilizatori care folosesc KVM. Sper că aceasta nu este o întrebare stupidă. Mulțumesc tuturor pentru răspunsurile la întrebările mele.

5 soluții colectează formulare web pentru „KVM – Ce management bazat pe web ar trebui să folosesc?”

Pentru un manager web KVM, puteți încerca Proxmox. Instrucțiunile pentru Debian Squeeze sunt aici.

Are instrumente de linie de comandă, dar nu există un meniu de bază de text.

Ar trebui să configurați un mediu mic și să îl încercați. Apoi precizați obiectivul și implementați-l.

Nu există un răspuns/tutorial exact pentru aceasta. Cât de reconfigurabil un server/client KVM depinde într-adevăr de cât de multe resurse (cpu/ram/stocare) sunt disponibile.

Din nou, acest lucru depinde de mediul dvs. și acestea sunt multi-strat/dispozitive, de exemplu. routere, firewall, tabele IP, politică de parole, politică de acces etc. Nu cunosc nicio ghi, bază web sau nu, care să poată gestiona toate acestea, inclusiv KVM. (OK, există un nor, dar nu am deloc experiență cu el)

Ai incercat kimchi? este cea mai ușor de utilizat open source pe KVM și este sponsorizat de IBM.

Disclaimer: Nu sunt deloc afiliat cu Kimchi. Îmi place pur și simplu prietenia lui.

Experții folosesc CLI. Nu GUI. Acest lucru este valabil chiar și pentru administratorii Windows experimentați.

Nu, GUI-urile sunt încă din ce în ce mai bune, dar scripturile de auto-scriere sunt mai rapide și fac ceea ce doriți.

Îmbunătățiți performanța în KVM? Aruncă.

Acesta este doar un indiciu de la expertul XEN-PV. Numai LXC (sau alte containere) sau soluțiile bazate pe chroot sunt mai rapide.

Ghidul de instalare KVM poate să nu fie foarte detaliat, dar cel puțin oferă sau oferă idei despre procesul de instalare și configurare.

Există un nou sistem de management KVM și AV/IT la nivel de întreprindere numit Boxilla, care are un centru de comandă cuprinzător și centralizat care asigură performanță maximă, ușurință în utilizare și securitate.

Oferă capacitatea de a gestiona KVM de înaltă performanță, KVM prin IP, puncte terminale virtualizate și diverse dispozitive AV/IT într-un singur centru de comandă centralizat, permite administratorilor să gestioneze implementări KVM și AV/IT pe mai multe niveluri folosind un web puternic și comun. interfața cu utilizatorul. Puteți găsi mai multe despre el aici: https://www.blackbox.co.uk/gb-gb/page/37929/Solutions-Industries/Technology-Products/KVM-Switching-and-Extension/Centralised-KVM-AV- Manager -boxilla

Cu comutatoarele KVM obișnuite, cred că multe au întâlnit. Abrevierea „KVM” înseamnă „Keyboard Video Mouse”. Un dispozitiv KVM permite, având un singur set de tastatură + monitor + mouse (K.M.M.), să controleze mai multe computere ( blocuri de sistem). Cu alte cuvinte, luăm N blocuri de sistem, le conectăm ieșirile de la K.M.M. la dispozitivul KVM și deja la dispozitivul însuși conectăm un monitor real, tastatură și mouse. Comutând între computere folosind KVM, putem vedea ce se întâmplă pe ecranul computerului selectat, precum și să-l controlăm ca și cum am fi conectați direct la el.

Acest lucru este convenabil dacă avem nevoie de mai multe mașini pentru lucru, dar accesul la ele în același timp nu este necesar. În plus, spațiul este economisit mult - monitoarele, chiar și cele cu cristale lichide, ocupă o cantitate destul de mare de spațiu pe masă. Da, și nu costă mult. Și într-o grămadă de tastaturi și șoareci de pe masă, puteți deveni rapid confuz...

Cititorii avansați vor obiecta - de ce astfel de dificultăți dacă computerele sunt cel mai probabil conectate la unul retea localași puteți utiliza sistemul de operare încorporat (sau programele externe). acces de la distanță, cum ar fi Terminal Services sau Radmin sub Windows, VNC, ssh sub sisteme de operare *nix-like. Totul este corect, dar ce ar trebui să facem dacă, de exemplu, trebuie să intri în BIOS-ul computerului sau sistemul de operare s-a oprit din încărcat pentru că am instalat vreun driver sau program greșit? Sau avem mai multe sisteme de operare instalate pe computer și a trebuit să-l alegem pe cel greșit care pornește implicit? În general, toate aceste programe sunt foarte bune, dar până la anumite limite - atâta timp cât sistemul de operare al computerului este operațional și avem nevoie de acces la computer doar după ce acest sistem de operare pornește.

De exemplu, să ne uităm la câteva comutatoare KVM tipice folosind exemplul dispozitivelor fabricate de companie.

Specificațiile dispozitivului

CN-6000 acceptă separarea puterilor între utilizatori și vă permite să creați până la 64 de conturi administrative sau de utilizator, dintre care până la 16 conturi pot funcționa simultan cu dispozitivul. Dispozitivul are o interfață WEB încorporată pentru administrare, iar dimensiunile reduse îi permit să fie amplasat pe o masă sau montat (folosind un suport special inclus în kit) pe un suport lateral al unui rack (montabil în rack 0U). CN-6000 acceptă upgrade de firmware prin conexiune Ethernet (interfață web sau utilitar nativ). Rezoluția video maximă acceptată de dispozitiv este de 1600x1200 pixeli.

Tabel rezumat al specificațiilor:

Cerințe hardware (client la distanță)Pentium III 1Ghz
Interfețeconsola localaTastatură1 × Mini-DIN-6 F (violet)
Video1 × HDB-15 F (albastru)
Mouse1 × HDB-15 F (verde)
Sistem (KVM)1 × SPHD-15F (galben)
Port LAN1 x RJ-45(F)
Alimentare pe net (rezervat)1 × DB9(M)
Interfață de alimentare1
Butoane/întrerupătoareResetare KVM1 × semi-ascuns, față
Indicatorinutriție1 × portocaliu
conexiune utilizator de la distanță1 x verde
LAN 10/100 Mbps1 × verde/portocaliu
Protocoale acceptate10baseT Ethernet și 100baseTX Fast Ethernet. TCP/IP
Permisiuni videoPână la 1600×1200 60Hz
Cadrumetal
Dimensiuni (lungime × latime × inaltime)200×80×25mm

Să trecem la teste.

Există patru utilitare pe CD-ul care vine cu kit-ul:

  • CN6000 Client este un program client Windows care vă permite să vă conectați la un computer la distanță
  • un program client similar scris în Java (în format jar)
  • CN6000 Admin Tool - manager de configurare a dispozitivului (sub Windows)
  • server de jurnal - un program care poate fi configurat pentru a primi și stoca fișiere jurnal de la CN-6000

În plus, în comutatorul KVM este încorporat un server WEB, astfel încât dispozitivul poate fi accesat printr-un browser WEB. Dar vom reveni la interfața web puțin mai târziu, mai întâi vom lua în considerare utilitățile individuale.

Configurarea CN-6000 prin Admin Tool.

Programul este conceput pentru a configura dispozitivul, a seta parole de acces, securitate etc.

Când a fost lansat, nu a fost lipsit de curiozitate:

Prima dată când rulați toate utilitățile de pe discul inclus, vi se cere să introduceți un număr de serie. În documentație (chiar ultima versiune, care se află pe site-ul producătorului) se spune că numărul de serie este tipărit pe partea de jos a carcasei CN-6000. Și un fel de număr de serie este într-adevăr tipărit acolo, doar că este mult mai scurt decât necesită programele. În general, după ce am suferit puțin, introducerea numărului de serie s-a găsit într-un fel și în altul, adăugându-i zerouri sau spații și neatingând nimic mai mult decât fereastra „Număr de serie invalid”, deja am vrut să termin de testat dispozitivul în acea zi. Scotând CD-ul din CD-ROM (am introdus în primul rând în unitatea CD - a trebuit să instalez software-ul), am găsit un autocolant ciudat pe disc - acesta s-a dovedit a fi numărul de serie râvnit.

Desigur, teoretic, o persoană poate fi atentă la ceea ce este scris sau lipit pe CD atunci când îl introduce în unitate. Dar câți acordă imediat atenție acestui lucru? :) Și, cineva se întreabă, de ce a fost necesar să scrieți informații în mod deliberat false în documentație? Repet - site-ul conține mai multe o noua versiune Documentația și acolo această „greșeală” nu este corectată. Observ că aceasta nu este ultima inexactitate care se strecoară prin documentație, așa că uneori trebuie să acționați conform zicalului „nu vă credeți ochilor”.

Utilitarul de administrare CN-6000 este util prin faptul că vă permite să găsiți un dispozitiv în rețea, chiar dacă adresa IP a acestuia nu aparține subrețelei în care ne aflăm, doar atât cât noi (calculatorul de pe care încercăm să accesăm CN-6000) erau pe același segment LAN ca și comutatorul KVM.

După introducerea numelui de utilizator și a parolei, ajungem la meniul de configurare a dispozitivului:

ATEN a adoptat o abordare bună a problemei securității dispozitivelor. Când intrați pentru prima dată în configurația dispozitivului, suntem avertizați că ar fi bine să schimbați autentificarea și parola standard...

In sectiune reţea Adresarea IP a dispozitivului este configurată, porturile pentru accesul de la distanță la computerele controlate de CN-6000 sunt setate. Și, de asemenea, aici puteți specifica adresa MAC a mașinii pe care se află programul „Log Server”, care stochează fișierele jurnal (evenimente) trimise de la comutatorul KVM (dacă nu este setat, jurnalele vor fi stocate pe KVM în sine și le puteți vedea din interfața web). Această mașină (pentru Log-server) poate fi orice computer pe care este instalat Windows și programul în discuție rulează. Singura problemă este că computerul trebuie să fie în același segment de rețea (în linii mari, conectat la același switch) ca și KVM CN-6000 în sine, deci utilitatea acestei „funcții” este discutabilă.

Marcat Securitate sunt configurate filtre (dupa adrese MAC si/sau IP) pentru accesul la ecranul de la distanta al calculatoarelor administrate, precum si un filtru pentru administrarea propriului CN-6000.

În fila următoare, sunt setate numele de utilizator și parolele, precum și drepturile acestora. În mod remarcabil, puteți restricționa autentificarea pentru configurarea CN-6000 și utilizarea clientului JAVA. Lungimea minimă a parolei pe care o acceptă utilitarul de configurare este de opt caractere. Păcat, desigur, că parola nu este verificată pentru „simplitate”, dar chiar și verificarea lungimii parolei indică faptul că ATEN acordă atenție securității.

Ultima filă vă permite să actualizați firmware-ul dispozitivului, să permiteți posibilitatea conectării simultane la un computer la distanță de către mai multe persoane (deși mouse-ul și tastatura sunt în continuare aceleași, din punctul de vedere al computerului controlat, deci unul controlează , restul arată... sau interferează unul cu celălalt trăgând mouse-ul la laturi diferite). Reacția la un proces de autentificare incorect este configurată imediat, precum și includerea diferitelor moduri „ascunse” ale CN-6000 (niciun răspuns la ping și interdicția de a se afișa atunci când căutare automată dispozitive din rețeaua locală prin utilitarul client sau utilitarul de administrare).

În aceeași filă există un alt articol - Resetați la Ieșire. Aș presupune că aceasta este o resetare la setările implicite, dar în acest caz aceasta implică repornirea dispozitivului la ieșirea din utilitarul de configurare. În caz contrar (dacă nu este repornit), noile setări, deși vor fi reținute, nu vor fi aplicate (până la repornire).

În acest moment, luarea în considerare a utilitarului de configurare poate fi considerată completă (un alt aspect va fi discutat în secțiunea despre clientul Java).

Să mergem la interfața web.

Configurare prin interfață WEB

Pentru a intra în interfața web a dispozitivului, este suficient să tastați adresa IP care este setată pe CN-6000 în orice browser.

Este de remarcat faptul că browserul redirecționează imediat clientul către o conexiune prin HTTPS://, adică. toate lucrările ulterioare au loc printr-o conexiune SSL securizată.

După introducerea login-ului și a parolei, pictogramele din stânga și din partea de sus a interfeței web devin active (puteți face clic pe ele).

Pictogramele de sus deschid secțiuni legate de configurarea CN-6000. În cea mai mare parte, toate opțiunile de acolo repetă opțiunile interfeței utilitarului Windows. Admin Tool, dar există unele diferențe. De exemplu, în această fereastră (configurarea adreselor de rețea), putem seta doar adresa IP a dispozitivului, dar nu putem specifica masca de subrețea și gateway-ul. În plus, setarea adresei IP funcționează cumva strâmb - nu am reușit să schimb adresa IP a dispozitivului din interfața web (folosind utilitarul Admin Tools, s-a schimbat fără probleme).

Iată ce puteți vedea în utilitarul Admin Tool când încercați să schimbați adresa prin interfața web de la 10.0.0.9 la 192.168.0.1. Din anumite motive, masca de subrețea s-a schimbat de la standardul 255.255.255.0 la 10.0.0.9, iar dispozitivul (după o repornire) răspunde la 192.168.0.1 timp de 5 secunde, apoi începe să răspundă la 10.0.0.9 (uită complet despre 1892.16.16). .0.1). Poate că acesta este un bug Versiune curentă firmware (1.5.141), dar această versiune, la momentul testării, era cea mai nouă care putea fi găsită pe site-ul companiei.

Nu au mai fost găsite erori legate de interfața web în timpul testării.

Capitol Securitate repetă aceeași secțiune în Instrumentul de administrare.

O situație similară cu secția Manager de utilizatori

... si sectiunea personalizare.

Pictogramă Buturuga, situat în partea stângă a interfeței web, vă permite să vizualizați evenimentele care au avut loc în timpul funcționării dispozitivului. În acest caz, captura de ecran reflectă jurnalele care au apărut în momentul în care dispozitivul a fost testat de Nessus.

După cum sa menționat mai sus, jurnalele pot fi aruncate pe un server de jurnal extern (dar cu anumite restricții privind locația acestuia).

Scriu această notă pentru a demonstra instalare pas cu pasși configurarea unei mașini virtuale Linux bazată pe KVM. Mai devreme, am scris deja despre virtualizare, unde am folosit minunatul .

Acum am o întrebare de a închiria un server bun cu un volum mare memorie cu acces aleatorși hard disk mare. Dar nu vreau să rulez proiecte direct pe mașina gazdă, așa că le voi separa în servere virtuale mici separate cu sistem de operare Linux sau containere docker (voi vorbi despre ele într-un alt articol).

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

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

Instalare KVM

Voi efectua toate mașinațiunile pentru crearea unei mașini virtuale pe Ubuntu 16.04.1 LTS OS. Pentru a verifica dacă procesele dvs. acceptă virtualizarea hardware bazată pe Intel VT/AMD SVM, rulați:

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

Dacă terminalul nu este gol, atunci totul este în ordine și KVM poate fi instalat. Ubuntu acceptă doar în mod oficial hypervisorul KVM (parte a nucleului Linux) și recomandă utilizarea bibliotecii libvirt ca instrument de gestionare, ceea ce vom face în continuare.

De asemenea, puteți verifica suportul pentru virtualizarea hardware în Ubuntu prin 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 shell-ul grafic al sistemului, atunci 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ă acest articol se va concentra pe versiunea de consolă a instalării și configurării unui server virtual.

Instalarea și configurarea unui server virtual

În versiunea de consolă de instalare, configurare și gestionare a sistemului, utilitarul virsh (un add-on pentru biblioteca libvirt) este un instrument indispensabil. Are un număr mare de opțiuni și parametri, o descriere detaliată poate fi obținută după cum urmează:

bărbat virsh

sau apelați standardul „ajutor”:

Virsh ajutor

Întotdeauna respect următoarele reguli atunci când lucrez 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 o adresă IP statică fiecărei mașini virtuale noi prin serverul DHCP al hypervisorului.

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, rulaț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

Traducând toți acești parametri în „limbaj 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 merge la Internet ca și cum din cauza NAT), HDD de 20 GB.

Merită să acordați atenție parametrului --os-variant, îi spune hypervisorului sub ce sistem de operare trebuie adaptate setările.
O listă cu opțiunile disponibile ale sistemului de operare poate fi obținută prin rularea comenzii:

interogare osinfo os

Dacă nu există un astfel de utilitar 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.
Ne uităm la ce port a fost creat de la mașina noastră virtuală (într-un terminal din apropiere, de exemplu):

Virsh dumpxml ubuntu1604 ... ...

Portul 5900, la adresa locală 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ă pe 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 pentru

AllowTcpForwarding da

și reporniți sshd.

Configurarea redirecționării portului

Rulați comanda pe mașina locală:

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

Aici am configurat redirecționarea portului ssh de la portul 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ă o conexiune reușită, pe ecran va fi afișată fereastra standard de întâmpinare a instalării Ubuntu:

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

ifconfig

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

Virsh dumpxml ubuntu1604 | grep "adresa mac"

Amintiți-vă 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ă obțineți ceva de genul acesta:

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

sudo virsh net-destroy implicit sudo virsh net-start serviciu sudo implicit libvirt-bin restart

După aceea, 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 depinde de conținutul inimii tale. Tocmai am arătat opțiunea pe care eu 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

Pentru a vedea gazdele virtuale care rulează (toate disponibile pot fi obținute adăugând --all):

sudo virsh list

Puteți reporni gazda:

Sudo virsh repornește $VM_NAME

Opriți mașina virtuală:

sudo virsh stop $VM_NAME

Executați oprirea:

sudo virsh distruge $VM_NAME

sudo virsh start $VM_NAME

Închide:

sudo virsh oprire $VM_NAME

Adăugați la rulare automată:

sudo virsh autostart $VM_NAME

Foarte des este necesară clonarea sistemului pentru a-l utiliza ca cadru pentru alte sisteme de operare virtuale în viitor; pentru aceasta, se folosește utilitarul virt-clone.

Virt-clone --ajutor

Clonează o mașină virtuală existentă și modifică datele sensibile la gazdă, cum ar fi adresa mac. Parolele, fișierele și alte informații specifice utilizatorului din clonă rămân aceleași. Dacă pe mașina virtuală clonată adresa IP a fost introdusă 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 posibil să utilizați și X11Forwarding prin utilitarul virt-manager. Pe Windows, de exemplu, Xming și PuTTY pot fi folosite pentru aceasta.

Pe Ubuntu, este recomandat să utilizați hypervisorul KVM (managerul mașinii virtuale) și biblioteca libvirt ca instrument de gestionare. Libvirt include un set de API-uri software și aplicații personalizate de gestionare a mașinilor virtuale (VM) virt-manager (interfață grafică, 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 în Ubuntu. Acest hypervisor face parte din codul kernelului sistem de operare linux. Spre deosebire de Xen, KVM nu acceptă paravirtualizarea, ceea ce înseamnă că 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ă rezultatul este un mesaj:

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

deci KVM va funcționa fără probleme.

Dacă rezultatul este un mesaj:

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 ca sisteme invitate pe 64 de biți

    Alocați oaspeților mai mult de 2 GB de memorie RAM

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ă aceea, 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ă.

Creați un sistem pentru oaspeți

Procedura de creare a unui sistem invitat folosind interfața grafică este destul de simplă.

Dar modul text poate fi descris.

qcow2

La crearea unui sistem folosind o interfață 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 un fișier nou cu date brute (RAW). Cu toate acestea, acesta este departe de singurul format de fișier disponibil. Dintre toate tipurile de discuri enumerate în man qemu-img, qcow2 este cel mai flexibil și mai actualizat. Acceptă instantanee, criptare și compresie. Acesta trebuie creat înainte de a crea un nou sistem invitat.

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

Potrivit aceluiași om qemu-img , prealocarea metadatelor (-o preallocation=metadata) face discul puțin mai mare inițial, dar oferă performanțe mai bune atunci când imaginea trebuie să crească. De fapt, în acest caz, această opțiune evită o eroare neplăcută. Imaginea creată ocupă inițial mai puțin de un megaoctet de spațiu și crește la dimensiunea specificată, după cum este necesar. Sistemul oaspete ar trebui să vadă imediat această dimensiune finală specificată, totuși, în timpul fazei de instalare, poate vedea dimensiunea reală a fișierului. Desigur, setat la HDD 200 kb în dimensiune, va refuza. Bug-ul nu este specific Ubuntu, apare și în RHEL, cel puțin.

Pe lângă tipul de imagine, puteți alege ulterior cum să o conectați - IDE, SCSI sau Virtio Disk. Performanța subsistemului de disc va depinde de această alegere. Nu există un răspuns corect fără ambiguitate, trebuie să alegeți în funcție de sarcina care va fi atribuită sistemului oaspeților. Dacă sistemul invitat este creat „pentru a vedea”, atunci orice metodă va funcționa. În general, I/O este de obicei blocajul unei mașini virtuale, prin urmare, atunci când se creează un sistem foarte încărcat, această problemă ar trebui luată cât mai responsabil posibil.

Personal, este cel mai ușor pentru mine să mă gândesc la KVM (Mașină virtuală bazată pe kernel) ca la un astfel de 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, punem Linux pe această mașină, instalăm KVM în Linux și, ca urmare, avem posibilitatea de a crea mașini virtuale. Acesta este modul în care funcționează serviciile de găzduire în cloud, de exemplu, Amazon Web Services. Alături de KVM, Xen este de asemenea folosit uneori, dar o discuție despre această tehnologie depășește scopul acestei postări. Spre deosebire de tehnologiile de virtualizare a containerelor, de exemplu, același Docker, KVM vă permite să rulați orice sistem de operare ca sistem invitat, dar are și despre Suplimentar mai mare pentru virtualizare.

Notă: Pașii de mai jos au fost testați de mine pe Ubuntu Linux 14.04, dar, teoretic, vor fi valabili în mare măsură pentru alte versiuni de Ubuntu și alte distribuții Linux. Totul ar trebui să funcționeze atât pe desktop, cât și pe server, care este accesat prin SSH.

Instalare KVM

Verificați dacă Intel VT-x sau AMD-V este acceptat de procesorul nostru:

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

Dacă ceva se încălzește, atunci este acceptat și puteți continua.

Instalați KVM:

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

Unde se obișnuiește să se depoziteze:

  • /var/lib/libvirt/boot/ - imagini ISO pentru instalarea sistemelor guest;
  • /var/lib/libvirt/images/ - imagini de hard disk ale sistemelor invitate;
  • /var/log/libvirt/ - aici ar trebui să cauț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

În cele mai multe cazuri, mașinile virtuale sunt gestionate folosind utilitarul virsh:

sudo virsh --help

Înainte de a porni mașina virtuală, trebuie 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 o anumită rețea (numită implicită):

sudo virsh net-info implicit

Ne uităm la lista de optimizări disponibile pentru sistemul de operare invitat:

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.

E în regulă, așa ar trebui să fie.

Apoi ne uităm la proprietățile mașinii virtuale în format XML:

sudo virsh dumpxml freebsd10

Iată cele mai complete informații. Inclusiv, de exemplu, există și o adresă MAC, de care vom avea nevoie în continuare. Până acum, găsim informații despre VNC. În cazul meu:

Cu ajutorul clientului meu preferat (eu personal folosesc Rammina), mergem prin VNC, folosind SSH port forwarding 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 comenzile 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

Porniți mașina virtuală:

sudo virsh start freebsd10

Opriți mașina virtuală:

sudo virsh oprire freebsd10

Greu de învins 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

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

sudovirsh

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, cel mai probabil, nu va plăcea faptul că discul a devenit brusc mai mare sau mai mic. În cel mai bun caz, va porni în modul de urgență cu o sugestie de repartiție a discului. Probabil că nu vrei să faci asta. Poate fi mult mai ușor să porniț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 discului și apoi să le restaurați. Pe Youtube am gasit un videoclip cu o demonstrație a acestui proces, totul este cu adevărat ușor.

Setari de retea

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

#!/usr/bin/env python3

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

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

def print(str) :
imprimare (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: trebuie 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" )
imprimare( „Sugestie: rulați `sudo apt-get install arping`”)
sys.exit(1)

Domeniu = sys.argv [ 1 ]

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

Domout = subproces .check_output ("virsh dumpxml " +domeniu+" || adevărat" ,
shell=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) ,
shell=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 discuta 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 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 oaspete să aibă o adresă IP statică, aceasta este configurată ca de obicei în cadrul sistemului oaspete.

programul virt-manager

Te-ar putea interesa și 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 acesta, puteți gestiona mașinile virtuale care rulează pe alte gazde, precum și puteți privi o grafică frumoasă în timp real. Personal, mi se pare deosebit de convenabil în virt-manager că nu trebuie să vă uitați prin configurațiile pe care port rulează VNC-ul unui anumit sistem invitat. Doar găsiți mașina virtuală în listă, faceți dublu clic și obțineți acces la monitor.

De asemenea, este foarte convenabil să faci lucruri cu virt-manager care altfel ar necesita editarea laborioasă a fișierelor XML și, în unele cazuri, executarea unor comenzi suplimentare. De exemplu, redenumirea mașinilor virtuale, configurarea afinității CPU și lucruri similare. Apropo, utilizarea afinității CPU reduce semnificativ efectul vecinilor zgomotoși și influența mașinilor virtuale asupra sistemului gazdă. Folosiți-l întotdeauna ori de câte ori este posibil.

Dacă decideți să utilizați KVM ca înlocuitor pentru VirtualBox, rețineți că aceștia nu pot partaja virtualizarea hardware. 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 comanda setare sudo /sbin/rcvboxdrv după fiecare actualizare a nucleului, funcționează adecvat cu Unity și, în general, vă permite să ascundeți toate ferestrele.