Acasă - Setări
Să nu ne mai temem de virtualizare folosind KVM. Revizuirea software-ului util pentru gestionarea virtualizării Instalarea virtualizării 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 de utilizator pentru gestionarea mașinilor virtuale (VM) virt-manager (interfață grafică, GUI) sau virsh (linie de comandă, 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ă primiți 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ă.

Dar 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 singurul format de fișier disponibil. 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 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 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, instalați pe hard disk 200 kB în dimensiune va refuza. 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 subsistemului de disc va depinde de această alegere. Nu există un răspuns corect cert, pe care trebuie să îl alegeți în funcție de sarcina care va fi atribuită sistemului invitat. Dacă sistemul 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.

Cred că mulți oameni au întâlnit comutatoare KVM obișnuite. Abrevierea „KVM” înseamnă „Keyboard Video Mouse”. Un dispozitiv KVM vă permite, având un singur set de tastatură + monitor + mouse (K.M.M.), să controlați mai multe computere ( unități de sistem). Cu alte cuvinte, luăm N unități de sistem, le conectăm ieșirile de la K.M.M. într-un dispozitiv KVM și conectați un monitor real, o tastatură și un mouse la dispozitivul însuși. Prin comutarea î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 acesta.

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, economisește mult spațiu - monitoarele, chiar și cele LCD, ocupă destul de mult spațiu pe masă. Da, și costă destul de mult. Și într-o grămadă de tastaturi și șoareci de pe masă te poți încurca rapid...

Cititorii avansați vor obiecta - de ce această complexitate dacă computerele sunt cel mai probabil conectate la unul retea localași puteți utiliza programe de acces la distanță încorporate în sistemul de operare (sau extern), de exemplu Terminal Services sau Radmin pentru Windows, VNC, ssh pentru sisteme de operare asemănătoare *nix. Totul este corect, dar ce ar trebui să faceți dacă aveți nevoie, de exemplu, să intrați în BIOS-ul computerului sau sistem de operare am oprit încărcarea pentru că am instalat un driver sau un program greșit? Sau avem mai multe sisteme de operare instalate pe computerul nostru și a trebuit să alegem unul diferit de cel 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 funcț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 care folosesc dispozitive fabricate de companie ca exemplu.

Specificațiile dispozitivului

CN-6000 acceptă împărțirea 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 cu dispozitivul simultan. Dispozitivul are o interfață de administrare WEB încorporată și aceasta dimensiuni mici vă permit să-l așezați pe o masă sau să-l montați (folosind o bandă specială inclusă în kit) pe suportul lateral al rack-ului (montabil în rack 0U). CN-6000 acceptă actualizări de firmware printr-o conexiune Ethernet (de la interfața web sau utilitarul nativ). Rezoluția video maximă pe care o acceptă dispozitivul este de 1600x1200 pixeli.

Tabel rezumat al specificațiilor:

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

Să trecem la teste.

Pe CD-ul inclus puteți găsi patru utilitare:

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

În plus, comutatorul KVM are un server WEB încorporat, 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 ne vom uita la utilitățile individuale.

Configurarea CN-6000 prin utilitarul Admin Tool.

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

Când a fost lansat, a fost un lucru amuzant:

Prima dată când lansați toate utilitarele de pe discul furnizat, vi se cere să introduceți numărul 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 în partea de jos a carcasei CN-6000. Și există într-adevăr un fel de număr de serie tipărit acolo, doar că este mult mai scurt decât ceea ce solicită programele. În general, după ce am suferit puțin, am introdus într-un fel și în altul numărul de serie găsit, i-am adăugat zerouri sau spații și nu am reușit nimic mai mult decât fereastra „Număr de serie invalid”, deja am vrut să termin de testat dispozitivul în acea zi. După ce am scos CD-ul de pe CD-ROM (am introdus mai întâi în unitatea CD - a trebuit să instalez software-ul), am descoperit un autocolant ciudat pe disc - acesta s-a dovedit a fi numărul de serie prețuit.

Desigur, teoretic, o persoană poate fi atentă la ceea ce este scris sau lipit pe un CD atunci când îl introduce în unitate. Dar câți oameni acordă imediat atenție acestui lucru? :) Și, s-ar putea întreba, de ce a fost necesar să scrieți informații în mod deliberat false în documentație? Repet - sunt mai multe pe site noua versiune documentație și această „greșeală” nu este corectată acolo. Observ că aceasta nu este ultima inexactitate care apare în 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ă ne permite să găsim un dispozitiv în rețea, chiar dacă adresa lui IP nu aparține subrețelei în care ne aflăm, este suficient ca noi (calculatorul de pe care încercăm să acces la CN-6000) se aflau în același segment de rețea locală ca și comutatorul KVM.

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

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

In sectiunea Reţea adresa IP a dispozitivului este configurată, porturile sunt setate pentru accesul de la distanță la computerele controlate de CN-6000. Și aici puteți specifica și 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 o specificați, jurnalele vor fi stocate pe KVM în sine și le puteți vizualiza din interfața web). Această mașină (pentru serverul Log) poate fi orice computer care rulează Windows și rulează programul în discuție. Singura problemă este că computerul trebuie să fie în același segment de rețea (în general, conectat la același comutator) ca și KVM CN-6000, deci utilitatea acestei „funcții” este discutabilă.

Marcat Securitate filtrele sunt configurate (prin adrese MAC și/sau IP) pentru acces la ecran de la distanță computere administrate, precum și un filtru pentru administrarea CN-6000 în sine.

Următoarea filă specifică numele de utilizator și parolele, precum și drepturile acestora. Ceea ce este de remarcat este că puteți limita autentificarea pentru configurarea CN-6000 și utilizarea clientului JAVA. Lungimea minimă a parolei pe care o acceptă utilitarul de configurare este de opt caractere. Este 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 mai multor persoane să se conecteze simultan la un computer de la distanță (deși mouse-ul și tastatura sunt încă aceleași, din punctul de vedere al computerului controlat, deci unul controlează, odihnește-te de ceas... sau interferează unul cu celălalt trăgând mouse-ul în direcții diferite) . Aici puteți configura reacția la un proces de autentificare incorect, precum și activați moduri diferite„ascunderea” CN-6000 (lipsa de răspuns la ping și interzicerea de a se arăta 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 resetarea setărilor la implicite, dar în acest caz implică repornirea dispozitivului la ieșirea din utilitarul de configurare. În caz contrar (dacă nu îl reporniți), deși noile setări vor fi reținute, acestea nu vor fi aplicate (până la o 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ă trecem la interfața web.

Configurare prin interfata WEB

Pentru a ajunge la interfața web a dispozitivului, trebuie doar să introduceți adresa IP care este instalată pe CN-6000 în orice browser.

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

După ce ați introdus datele de conectare și parola, pictogramele din stânga și de sus ale 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 din interfața utilitarului Windows Instrument de administrare, dar există unele diferențe. De exemplu, în această fereastră (configurarea adrese de rețea) putem specifica doar adresa IP a dispozitivului, dar nu putem specifica masca de subrețea și gateway. În plus, setarea adresei IP funcționează oarecum strâmb - nu am reușit niciodată să schimb adresa IP a dispozitivului din interfața web (a fost schimbată fără probleme folosind utilitarul Instrumente de administrare).

Acesta este ceea ce puteți observa î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 adresa 192.168.0.1 timp de 5 secunde, apoi începe să răspundă la 10.0.0.9 (uită complet). aproximativ 192.168.0.1). Acesta poate fi o eroare în versiunea actuală de 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ă o secțiune similară în utilitarul Admin Tool.

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

...si sectiunea Personalizare.

Pictogramă Jurnal, 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 când dispozitivul a fost testat de programul 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).

Astăzi, multe sarcini care în mod tradițional necesitau mai multe servere fizice sunt mutate în medii virtuale. Tehnologiile de virtualizare sunt, de asemenea, solicitate de dezvoltatorii de software, deoarece permit testarea cuprinzătoare a aplicațiilor în diferite sisteme de operare. În același timp, în timp ce simplifică multe probleme, sistemele de virtualizare în sine trebuie gestionate, iar acest lucru nu se poate face fără soluții speciale.

Vagabond

Virtual mașină VirtualBox se bucură pe bună dreptate de popularitate în rândul administratorilor și dezvoltatorilor, permițându-vă să creați rapid mediile dorite folosind o interfață sau o interfață grafică linie de comandă. Dacă numărul de VM nu depășește trei, nu apar dificultăți în implementare și management, dar proiectele moderne tind să devină supraîncărcate de configurații, iar rezultatul este o infrastructură foarte complexă, care devine greu de făcut față. Aceasta este problema pe care managerul de mediu virtual Vagrant este proiectat să o rezolve, permițându-vă să creați copii ale mașinilor virtuale cu o configurație predeterminată și să redistribuiți dinamic resursele VM (provizionare) după cum este necesar. În pachetul de bază, Vagrant funcționează cu VirtualBox, dar sistemul de pluginuri vă permite să conectați un alt sistem de virtualizare. Astăzi, codul de plugin pentru AWS și Rackspace Cloud este deschis un plugin pentru a suporta VMware Fusion/Workstation este disponibil pentru un abonament comercial.

Vagrant nu creează o mașină virtuală de la zero. Pentru comoditate, proiectul oferă mai multe imagini de bază (cutii), care sunt importate și utilizate ulterior pentru implementarea rapidă a sistemului, un sistem de operare invitat cu configurația necesară este asamblat pe baza casetelor.

Pentru a simplifica implementarea aplicației, cutiile vin preinstalate cu Chef și Puppet. În plus, setările necesare pot fi specificate folosind shell. Mediile includ un set complet pentru lansarea și dezvoltarea aplicațiilor în Ruby. SSH este utilizat pentru a accesa VM-ul prin intermediul unui director partajat este posibil.

Vagrant este scris folosind Ruby și poate fi instalat pe orice platformă care are componente VirtualBox și Ruby. Pachetele pentru Windows, Linux (deb și rpm) și OS X sunt disponibile pe pagina de descărcare.

Procesul de instalare și utilizare pe Ubuntu este simplu. Descărcați pachetele VirtualBox și Vagrant și instalați:

$ sudo dpkg -i virtualbox-4.2.10_amd64.deb $ sudo dpkg -i vagrant_1.2.2_x86_64.deb

La momentul scrierii, cea mai recentă versiune actuală a VirtualBox 4.2.14 a avut probleme la rularea Vagrant, așa că deocamdată este mai bine să utilizați 4.2.12 sau să testați 4.2.15. Alternativ, puteți face:

$ cd ~/.vagrant.d/boxes/BoxName/virtualbox $ openssl sha1 *.vmdk *.ovf > box.mf

Iată o opțiune alternativă pentru instalarea Vagrant - folosind Ruby:

$ sudo apt-get install ruby1.8 ruby1.8-dev rubygems1.8 $ sudo gem install vagrant

Toate setările proiectului sunt făcute într-un Vagrantfile special. Pentru a evita crearea manuală a șablonului, îl puteți genera după cum urmează:

$ proiect mkdir $ proiect cd $ vagrant init

Acum puteți căuta în fișierul de setări creat și completați: Setări VM (config.vm. ), opțiuni de conexiune SSH (config.ssh.), parametrii lui Vagrant însuși (config.vagrant). Toate sunt bine documentate, semnificația unora este clară fără explicații.

De fapt, la pornire sunt folosite mai multe astfel de fișiere, fiecare ulterioar suprascriind pe cel precedent: încorporat în Vagrant (nu poate fi schimbat), furnizat cu casete (ambalate folosind comutatorul „--vagrantfile”), situate în ~/.vagrant .d și fișierul de proiect . Această abordare vă permite să utilizați setările implicite, suprascriind doar ceea ce este necesar într-un anumit proiect.


Toate instalările sunt efectuate folosind comanda vagrant; lista cheilor disponibile poate fi vizualizată folosind „-h”. După instalare, nu avem o singură imagine, se va afișa lista de casete vagabonde care rulează lista goala. Caseta terminată poate fi localizată în sistemul de fișiere local sau pe server la distanță, numele său este setat ca parametru, prin care ne vom referi în proiecte. De exemplu, folosim Box Ubuntu 12.04 LTS oficial, oferit de dezvoltatorii Vagrant.

$ vagrant box adauga precise64 http://files.vagrantup.com/precise64.box

Acum poate fi accesat din Vagrantfile:

Config.vm.box = „precise64”

Deși este mai ușor să îl specificați imediat atunci când inițializați proiectul:

$vagrant init precise64

Cea mai ușoară modalitate, care nu necesită învățarea Chef și Puppet, este să utilizați comenzi standard de shell pentru a configura VM, care pot fi scrise direct în Vagrantfile sau, și mai bine, combinate într-un script care este conectat astfel:

Vagrant.configure("2") face |config|

config.vm.provision:shell, :inline => "script.sh" final

$ VBoxManage import /home/user/.vagrant.d/boxes/precise64/virtualbox/box.ovf Sistem virtual 0: 0: Tip de sistem de operare sugerat: „Ubuntu_64” (schimbat cu „--vsys 0 --ostype "; utilizați „list ostypes” pentru a lista toate valorile posibile) 1: Numele VM sugerat „precise64” (schimbați cu „--vsys 0 --vmname ") 2: Număr de procesoare: 2 (schimbați cu "--vsys 0 --cpus ") 3: memorie pentru invitați: 384 MB (schimbați cu „--vsys 0 --memory ")

Ele nu îndeplinesc întotdeauna condițiile specificate, dar folosind setările furnizorului, puteți modifica cu ușurință setările unui anumit VM (consultați sfaturile „schimbați cu...”):

Config.vm.provider:virtualbox face |vb|

vb.customize ["modifyvm", :id, "--memory", "1024"] end

Lansați și conectați-vă la sistem prin SSH:

$vagrant sus $vagrant ssh

Pentru a opri VM, utilizați parametrul stop sau destroy (al doilea - cu ștergerea tuturor fișierelor, data viitoare toate operațiunile vor fi efectuate de la început), dacă trebuie să îl trimiteți în hibernare - vagrant suspend , return - vagrant resume . Pentru un exemplu de lucru cu Chef, puteți utiliza o rețetă gata făcută pentru a configura APT și Apache2:

Config.vm.provision:chef_solo face |chef|

chef.recipe_url = "http://files.vagrantup.com/getting_started/cookbooks.tar.gz" chef.add_recipe("vagrant_main") end

Pentru a accesa VM „din exterior”, va trebui să configurați redirecționarea portului. În mod implicit, redirecționarea este 22 -> 2222, permițându-vă să vă conectați prin SSH. Adăugați la Vagrantfile:

Vagrant::Config.run do |config|

config.vm.forward_port 80, 1111 end Serverul web poate fi acum accesat accesând http://127.0.0.1:1111/. Pentru a nu configura mediul de fiecare dată, este mai bine să asamblați un pachet gata făcut pe baza acestuia.$ pachet vagrant --vagrantfile Vagrantfile --output project.box

Fișierul project.box poate fi acum distribuit altor administratori, dezvoltatori sau

utilizatori obișnuiți , care îl va conecta folosind comanda vagrant box add project.box ., care este adesea interpretat nu în favoarea lor. Cu toate acestea, această deficiență este ușor de depășit. ConVirt vă permite să implementați mașini virtuale pe mai multe servere Xen și KVM cu un singur clic, folosind o interfață ușor de utilizat. Sunt disponibile toate operațiunile necesare cu mașinile virtuale: pornirea, oprirea, crearea de instantanee, controlul și redistribuirea resurselor, conectarea la o VM prin VNC, automatizarea sarcinilor de administrare. Tehnologia Ajax face interfața interactivă și similară cu o aplicație desktop. De exemplu, puteți pur și simplu să glisați și să plasați o VM de la un server la altul. Interfața nu este localizată, dar comenzile sunt intuitive.


Punerea în comun a serverelor face posibilă configurarea și controlul mașinilor și resurselor virtuale la nivel de pool de servere, mai degrabă decât la nivel de server individual. Nu sunt instalați agenți pe sistemele virtuale, aveți nevoie doar de pachetul convirt-tool pe serverul fizic. Acest lucru simplifică administrarea și implementarea.

Odată ce este adăugat un nou server, ConVirt își va colecta automat datele de configurare și performanță, oferind informații rezumative la mai multe niveluri - de la mașina virtuală individuală, serverul fizic, până la întregul pool. Datele colectate sunt folosite pentru plasare automată sisteme noi pentru oaspeți. Aceste informații sunt afișate și sub formă de grafice vizuale.

Pentru a crea mașini virtuale, se folosesc șabloane - descrieri ale setărilor mașinii virtuale, care conțin date despre resursele alocate, calea către fișierele OS și setări suplimentare. După instalare, sunt disponibile mai multe șabloane gata făcute, dar dacă este necesar, le puteți crea cu ușurință singur.

Toate tehnologiile sunt acceptate: echilibrarea încărcăturii, migrarea la cald, discuri virtuale cu o capacitate în creștere, permițându-vă să utilizați resursele după cum este necesar și multe alte caracteristici implementate în Xen și KVM. VM-ul nu trebuie oprit pentru a realoca resurse.

A implementat capacitatea de a gestiona un mediu virtual pentru mai mulți administratori cu capacitatea de a audita și controla acțiunile acestora.

ConVirt este dezvoltat de compania Convirture și folosește conceptul de bază deschis, când doar un set de bază de funcții este distribuit gratuit împreună cu codul sursă, restul este disponibil într-o versiune comercială. Versiunea open source nu are suport pentru High Availability, integrare VLAN, backup și recuperare, management al liniei de comandă, notificări și suport oficial.

În timpul dezvoltării, s-au folosit cadrul TurboGears2, bibliotecile ExtJs și FLOT, MySQL a fost folosit pentru stocarea informațiilor, dnsmasq a fost folosit ca server DHCP și DNS. Pachetul necesar poate fi găsit în depozitele populare distribuții Linux.

Karesansui

Au fost implementate toate caracteristicile pentru gestionarea mediilor virtuale: instalarea sistemului de operare, crearea configurațiilor subsistemului de disc și virtual plăci de rețea, gestionarea cotelor, replicare, înghețarea VM, crearea de instantanee, vizualizarea statisticilor detaliate și a datelor de jurnal, monitorizarea încărcării. De la o singură consolă puteți gestiona mai multe servere fizice și mașini virtuale găzduite pe acestea. Este posibilă lucrul cu mai mulți utilizatori cu drepturi partajate. Drept urmare, dezvoltatorii au reușit să implementeze un mediu virtual în browser care le permite să gestioneze pe deplin sistemele.

Scris de Karesansui în Python, SQLite este folosit ca DBMS pentru un sistem cu un singur nod. Dacă intenționați să gestionați instalațiile Karesansui găzduite pe mai multe servere fizice, ar trebui să utilizați MySQL sau PostgreSQL.

Puteți implementa Karesansui pe orice Linux. Dezvoltatorii înșiși preferă CentOS (pentru care site-ul are instrucțiuni detaliate), deși Karesansui funcționează bine atât pe Debian, cât și pe Ubuntu. Înainte de instalare, trebuie să completați toate dependențele specificate în documentație. Apoi, scriptul de instalare este lansat și baza de date este inițializată. Dacă este utilizată o configurație cu mai multe servere, atunci trebuie doar să specificați baza de date externă.

Lucrările ulterioare vor compensa pe deplin inconvenientul instalării. Toate setările sunt împărțite în șapte file, al căror scop este clar din nume: Guest, Settings, Job, Network, Storage, Report and Log. În funcție de rolul utilizatorului, nu toate îi vor fi disponibile.

Puteți crea un nou VM dintr-un fișier ISO local sau specificând o resursă HTTP/FTP cu imagini de instalare. De asemenea, va trebui să setați alte atribute: numele sistemului, care va fi afișat în listă, numele rețelei(nume gazdă), tehnologie de virtualizare (Xen sau KVM), dimensiunea RAM și hard disk(Mărimea memoriei și dimensiunea discului) - și selectați o imagine care va corespunde sistemului de operare virtual, simplificând selecția vizuală rapidă a acestuia în consolă.

WebVirtMgr

Capacitățile soluțiilor descrise sunt adesea redundante, iar instalarea lor nu este întotdeauna clară pentru un administrator cu puțină experiență. Dar există și o cale de ieșire aici. Serviciu management centralizat mașini virtuale WebVirtMgr a fost creat ca un înlocuitor simplu pentru virt-manager, care va oferi o muncă confortabilă cu mașinile virtuale folosind un browser cu un plug-in Java instalat. Gestionarea setărilor KVM este acceptată: crearea, instalarea, configurarea, lansarea de VM, instantanee și backup pentru mașini virtuale. Oferă gestionarea pool-ului de rețea și a pool-ului de stocare, lucrul cu ISO, clonarea imaginilor, vizualizarea încărcării CPU și RAM. Mașina virtuală este accesată prin VNC. Toate tranzacțiile sunt înregistrate în jurnal. Puteți gestiona mai multe servere KVM cu o singură instalare a WebVirtMgr. Pentru a vă conecta la ele, utilizați RPC libvirt (TCP/16509) sau SSH.


Interfața este scrisă în Python/Django. Pentru instalare veți avea nevoie de un server sub control Linux. Distribuit în cod sursă și pachete RPM pentru CentOS, RHEL, Fedora și Oracle Linux 6. Procesul de implementare în sine este simplu și bine descris în documentația proiectului (în rusă), trebuie doar să configurați libvirt și să instalați webvirtmgr. Întregul proces durează cinci minute. După conectarea la Dashboard, selectați Add Connection și specificați parametrii nodului, apoi putem configura VM-ul.

Să scriem scripturi pentru crearea unui VM

Cel mai simplu script pentru crearea și lansarea unei mașini virtuale folosind VirtualBox:

#!/bin/bash vmname="debian01" VBoxManage createvm --name $(vmname) --ostype "Debian" --register VBoxManage modifyvm $(vmname) --memory 512 --acpi pe --boot1 dvd VBoxManage createhd - -filename "$(vmname).vdi" --size 10000 --variant Fixed VBoxManage storagectl $(vmname) --name "IDE Controller" --add ide --controller PIIX4 VBoxManage storageattach $(vmname) --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "$(vmname).vdi" VBoxManage storageattach $(vmname) --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /iso/debian-7.1.0-i386-netinst.iso VBoxManage modifyvm $(vmname) --nic1 bridged --bridgeadapter1 eth0 --cableconnected1 pe VBoxManage modifyvm $(vmname) --vrde pe ecran VBoxHeadless --startvm $(vmname)

Proxmox VE

Soluțiile anterioare sunt bune pentru situațiile în care există deja o anumită infrastructură. Dar dacă trebuie doar să-l implementați, merită să vă gândiți la platformele specializate care vă permit să obțineți rapid rezultatul dorit. Un exemplu aici este Proxmox Virtual Environment, care este o distribuție Linux (bazată pe Debian 7.0 Wheezy) care vă permite să construiți rapid o infrastructură servere virtuale folosind OpenVZ și KVM și practic nu este inferioară unor produse precum VMware vSphere, MS Hyper-V și Citrix XenServer.


De fapt, sistemul trebuie doar instalat (câțiva pași simpli), totul funcționează deja din cutie. Puteți crea apoi un VM folosind interfața web. În acest scop, cel mai simplu mod este să utilizați șabloane și containere OpenVZ, care sunt încărcate din resurse externe direct din interfață cu un singur clic (dacă este manual, copiați în directorul /var/lib/vz/template). Dar șabloanele pot fi create și prin clonarea sistemelor deja create în modul de conectare. Această opțiune vă permite să salvați spațiu pe disc, deoarece toate mediile asociate folosesc o singură copie comună a datelor șablonului de referință fără a duplica informații. Interfața este localizată și ușor de înțeles, nu întâmpinați niciun inconvenient special când lucrați cu ea.

Există suport pentru clustere, instrumente pentru backup medii virtuale, este posibilă migrarea VM-urilor între noduri fără a opri munca. Controlul accesului la obiectele existente (VM, stocare, noduri) este implementat pe baza unor roluri, sunt acceptate diverse mecanisme de autentificare (AD, LDAP, Linux PAM, Proxmox VE încorporat). Interfața web vă permite să accesați VM folosind console VNC și SSH, puteți vizualiza starea jobului, jurnalele, datele de monitorizare și multe altele. Adevărat, unele operațiuni specifice sistemelor HA vor trebui în continuare efectuate în mod vechi în consolă, de exemplu, crearea unei conexiuni iSCSI autorizate, crearea unui cluster, crearea unei căi multiple și alte operațiuni.

Cerințele de sistem sunt mici: CPU x64 (de preferință cu Intel VT/AMD-V), 1+ GB RAM. Proiectul oferă o imagine ISO gata făcută și un depozit pentru Debian.

Concluzie

Toate soluțiile descrise sunt bune în felul lor și fac față bine sarcinilor atribuite. Trebuie doar să-l alegi pe cel care se potrivește cel mai bine situației tale specifice.

Kimchi este o interfață web bazată pe HTML5 pentru KVM. Oferă o interfață ușoară și flexibilă pentru a crea și gestiona mașinile virtuale invitate. Kimchi este instalat și rulează ca un daemon pe gazda KVM. Gestionează invitații KVM cu ajutorul libvirt. Interfața Kimchi acceptă toate cele mai recente versiuni ale browserelor cu versiunea -1, acceptă și browserele mobile.

Kimchi poate fi instalat pe cea mai recentă versiune de RHEL, Fedora, openSUSE și Ubuntu. În acest ghid, am folosit Ubuntu 14.10 ca gazdă KVM.

Înainte de a configura kimchi, trebuie să instalați următoarele pachete dependente.

$ sudo apt-get install gcc make autoconf automake gettext git python-cherrypy3 python-cheetah python-libvirt libvirt-bin python-imaging python-pam python-m2crypto python-jsonschema qemu-kvm libtool python-putilpython-ippr python-ldap python-lxml nfs-common open-iscsi lvm2 xsltproc python-parted nginx firewalld python-guestfs libguestfs-tools python-requests websockify novnc spice-html5 wget

Sistemul vă va cere următoarele detalii în timpul instalării pachetelor.

1. OK la configurarea Postfix.

2. Selectați Site Internet pe tipul general de configurație de e-mail.

3. Introduceți FQDN-ul dvs. și apoi selectați OK.

Odată instalat, descărcați cea mai recentă versiune de kimchi de pe github.

$ wget https://github.com/kimchi-project/kimchi/archive/master.zip

Dezarhivați fișierul descărcat.

$ unzip master.zip $ cd kimchi-master/

Construiți kimchi folosind următoarea comandă.

$ ./autogen.sh --system

$make$sudo face instalarea# Opțional dacă rulează din arborele sursă

$ sudo kimchid --host=0.0.0.0

Accesați kimchi folosind browserul web, https://localhost:8001. Vi se va cere să vă autentificați, să utilizați acreditările de sistem pe care le utilizați în mod normal pentru autentificarea la sistem.


După ce te-ai autentificat, vei primi o pagină ca mai jos. Aceasta arată lista de mașini virtuale invitate care rulează pe gazda curentă, aveți butoane pentru a efectua oprirea, repornirea și conectarea la consolă făcând clic pe acțiune.


Pentru a crea o nouă mașină pentru oaspeți, faceți clic pe semnul + din colțul din dreapta. Dacă utilizați această opțiune pentru a crea o mașină, aceasta se va face prin șabloane.


Puteți gestiona șabloanele vizitând meniul de șabloane. Pentru a crea un șablon nou, faceți clic pe semnul + din colțul din dreapta. Puteți crea un șablon folosind imagini ISO, puteți plasa imagini ISO pe /var/lib/kimchi/isos sau puteți utiliza unul la distanță.


Puteți gestiona pool-ul de stocare accesând meniul de stocare, acolo puteți adăuga un nou spațiu de stocare făcând clic pe semnul +. Acceptă adăugarea de stocare NFS, iSCSI și SCSI pe canal de fibră.


Rețeaua poate fi gestionată accesând meniul de rețea, puteți crea o nouă rețea cu rețea izolată, NAT și prin punte.


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ăzduiri 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.

Nota: Pașii descriși mai jos au fost testați de mine pe Ubuntu Linux 14.04, dar, în teorie, acestea vor fi în mare măsură valabile atât pentru alte versiuni de Ubuntu, cât și pentru alte 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 oaspeți;
  • /var/log/libvirt/ - aici ar trebui să căutați toate jurnalele;
  • /etc/libvirt/ - director 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 o anumită rețea (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

Puteți vedea:

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

Cele mai complete informații sunt furnizate aici. Aceasta include, de exemplu, o adresă MAC, de care vom avea nevoie mai târziu. Deocamdată găsim informații despre VNC. In cazul meu:

Folosind clientul meu 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 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

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 caz, 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.

Setări de rețea

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[„adresă”]
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 lua în considerare 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 asta:

>



>

După efectuarea acestor modificări


>

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




>

Repornim sistemul oaspete și verificăm că acesta 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 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 ce port VNC rulează 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 intensivă a fișierelor XML și, în unele cazuri, executarea unor comenzi suplimentare. De exemplu, redenumirea mașinilor virtuale, setarea 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 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ă sudo /sbin/rcvboxdrv setup după fiecare actualizare a nucleului, funcționează adecvat cu Unity și, în general, vă permite să ascundeți toate ferestrele.



 


Citire:



Procesul de repornire a browserului Firefox

Procesul de repornire a browserului Firefox

Cele mai multe probleme cu Firefox pot fi rezolvate urmând metodele de depanare descrise mai jos. Încercați acești pași în ordine. Daca unul nu merge,...

Resetare gratuită a nivelului de cerneală în imprimantele Epson L100, L110, L210, L300, L350, L355, L550, L555, L800

Resetare gratuită a nivelului de cerneală în imprimantele Epson L100, L110, L210, L300, L350, L355, L550, L555, L800

Resetare gratuită a nivelurilor de cerneală în imprimantele Epson L110, L210, L300, L350, L355, L550, L555.

VK versiunea rusă pagina mea

VK versiunea rusă pagina mea

Instrucțiuni pentru reumplerea recipientelor cu cerneală și...

Formatarea cardurilor de memorie SD și microSD: de ce este nevoie și cum se face

Formatarea cardurilor de memorie SD și microSD: de ce este nevoie și cum se face

Rețeaua de socializare Vkontakte pagina mea de astăzi este una dintre cele mai populare resurse de internet din lume, ca să nu mai vorbim de Rusia și Ucraina. Ea...

Un utilitar rapid și sigur pentru formatarea cardurilor de memorie SD, SDHC și SDXC.  Programul acceptă, de asemenea, lucrul cu alte tipuri de... imagine-alimentare