Tehnică virtuală

În mod normal, utilizatorii Linux, după o mulțime de descărcări înapoi la Windows, începe să se gândească la ce să pună virtualizatorul: VirtualBox, VMWare sau altceva? Nu te grăbi. Instalând Linux și, cel mai probabil, Ubuntu, este posibil să fi instalat și o mașină virtuală. Totul depinde de "fier" și de la. tu!

Despre ceea ce o mașină virtuală (VM), care are propriul sistem de operare, "Vesti" a scris în mod repetat. Dintre utilizatori, cea mai mare motivație pentru instalarea unui VM într-un computer este o simplă curiozitate pentru noul sistem de operare sau, dimpotrivă, dorința de a reporni aplicațiile "Windows" fără repornire după instalarea sistemului de operare Linux. Dar aceasta nu este singura virtute a VM. Personal, îmi place foarte mult "extravaganța" VP; VM pe un mediu extern este partea superioară a confidențialității și izolației. A scos transportatorul - și niciun expert nu va crește nimic.

Cu toate acestea, trebuie să plătiți pentru tot: fiecare VM ocupă resursele calculatorului. Și, așa cum se va arăta, este necesar ca procesorul să susțină hardware-ul VM. Însă utilizatorii cumpără deja computere cu 4 nuclee și majoritatea nucleelor ​​cu două nuclee au intrat deja în istorie, iar unele procesoare cu un singur nucleu au și astfel de procesoare! Prin urmare, vom continua.

Toate metodele de organizare a VM se bazează pe dualism hardware-software: calculele hardware pot fi efectuate programabil și invers.

Cea mai universală modalitate de a crea un VM este de a emula hardware-ul hardware-ului real cu software-ul. În același timp, imaginea procesorului real cu toate registrele și alte atribute este recreată în memoria mașinii gazdă ("host" pe slang), iar gazda oferă VM o parte din memoria și spațiul pe disc. Dacă dispozitivele I / O sunt emulate, atunci aceasta este "virtualizare pură". Funcționează extrem de încet. Un exemplu este emulatorul QEMU, la care vom reveni.

Și de ce sistemul de operare pentru clienți nu poate funcționa pe un procesor real și să utilizeze dispozitive fizice reale (acesta din urmă pe slang se numește dispozitive de "aruncare")? Din păcate, pe un computer bazat pe x86, nu puteți face ca două sisteme de operare să funcționeze simultan. I / O este inițial conceput pentru utilizarea exclusivă a unui singur sistem de operare și cum funcționează procesorul virtual în a treia rundă de privilegii execută instrucțiunile de nivel de kernel OS? Ieșirea: este necesar să se folosească în bucla nulă ceva care ar intercepta excepțiile aruncate atunci când încearcă să execute instrucțiuni "rele" și să le execute ca în numele principalului sistem de operare. Acest "ceva" este numit "hypervisor". El este cel care efectuează transferul I / O în stratul fizic. Dar în codul de kernel al OS-ului oaspete există și instrucțiuni non-privilegiate care se comportă diferit în funcție de contextul de execuție și nu pot fi interceptate, deoarece excepțiile nu sunt generate. Și din nou hypervisor ajută. îl puteți forța să vizualizeze codul clienților "în zbor" înainte de execuție și să înlocuiască instrucțiunile "rele" cu un set de "bun". Această metodă de virtualizare se numește "virtualizare completă". Acesta, ca cel "curat", este inițial protejat: codul clienților este executat în spațiul utilizatorilor și nu poate deteriora sistemul de operare gazdă. Dar chiar și aici VM este mai lent decât prototipul real: deoarece codul executabil este corectat, timpul este pierdut. Există două moduri de a evita editarea codului în zbor.

Al doilea mod este mai eficient și se numește "virtualizare hardware". Cu această metodă, activitatea hypervisorului privind urmărirea "instrucțiunilor necorespunzătoare" este efectuată de hardware pe procesorul gazdă în sine (dualism!) Într-un mod special de oaspeți. Acest lucru este posibil pentru procesoarele care suportă tehnologiile Intel VT sau AMD SVM. Viteza lucrărilor VM nu este mult mai mică decât viteza mașinii originale. Este adevărat că Intel VT și AMD SVM nu sunt același lucru. În abordarea Intel, sunt introduse în procesor 10 instrucțiuni noi pentru gestionarea modului de găzduire și accesarea VMCS (structura de control, în memorie), unde sunt introduse preliminar "corecțiile". La AMD, totul este implementat chiar mai mult. În ambele sisteme, instrucțiunea "rea" este prinsă prin decriptarea acesteia în modul guest (pentru mai multe detalii, consultați xakep.ru/post/51718/default.asp). Există două tipuri de virtualizare hardware: cu suport pentru instrucțiunile I / O "VT-d plus VT-x" și fără aceasta - numai VT-x. Este clar că sprijinul mai profund dă o creștere a vitezei de schimb cu VM.

Pentru a afla dacă procesorul calculatorului dvs. acceptă virtualizarea hardware, introduceți următoarea comandă în terminal:

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

KVM necesită un emulator QEMU, dar QEMU funcționează fără KVM. Ferestrele sub un QEMU curat, pe o durată medie de două cai rulează ca și cum ar fi rulat pe niște vechi P2-350. Dar lista de computere emulate de QEMU este foarte largă. Când sistemul KVM + QEMU pornește, sistemul de operare invitat este accelerat de mai multe ori, dar numai computerele Intel VT și AMD SVN sunt emulate, dar lista de OS-uri gazdă este încă mai extinsă decât în ​​cazul altor virtualizatori.

În QEMU, puteți instala aproape orice sistem de operare care "vede" procesorul emulat, discurile care sunt de fapt un fișier mare în gazdă, "vede" o cartela de rețea emulată etc. După oprirea VM, toate acestea rămân în gazdă ca un fișier mare, numit imaginea OS oaspete. Se mai numește și un disc virtual. Acest fișier are extensia img. QEMU este instalat din depozit prin comanda trivială sudo apt-get install qemu. Pentru QEMU pur, au fost dezvoltate mai multe GUI: QtEMU, KQEMU și altele, dar sunt depășite și nu funcționează cu KVM. În cazul în care comenzile terminale deprimă, atunci mergeți imediat la următoarea secțiune a articolului, vom examina pe scurt pe cele ale echipelor care sunt cele mai importante pentru înțelegerea ideologiei QEMU. În general, documentația detaliată în limba engleză despre comenzile terminale pentru QEMU poate fi găsită aici: wiki.qemu.org/download/qemu-doc.html.

Pentru a instala o imagine a sistemului de operare al noului VM către gazdă, acesta pregătește mai întâi pentru oaspeți un loc sub forma unei imagini goale a discului virtual pe care va fi postat invitatul. Pentru a crea imagini virtuale și a le gestiona, QEMU are o comandă qemu-img care acceptă diferite formate de discuri virtuale. Dacă nu specificați în mod specific ce format să creați, atunci în mod implicit QEMU va funcționa cu fișierul în așa-numitul format brut brut. Aici este sintaxa comenzii terminalului qemu-img create, care creează o imagine a unui disc virtual gol:

qemu-img creați-mi myimage.img mysize

qemu-img creare -f qcow2 winxp.img 10GB

După ce imaginea goală a discului este pregătită pentru sistemul de operare gazdă, acesta este instalat pe acest sistem de operare dintr-o imagine ISO înregistrată pe un CD, DVD, unitate flash sau pe un hard disk. Imaginea non-empty * .img a mașinii de oaspeți poate fi utilizată în mod repetat și imaginea ISO originală a sistemului de operare gazdă devine superfluă. De asemenea, aveți posibilitatea să instalați sistemul de operare gazdă de pe Internet. Internetul este plin de ISO-imagini din diferite sisteme de operare, puteți descărca dumneavoastră preferat și a stabilit ca un oaspete, nu arde prin CD-ul, luând imaginea, de exemplu, aici: wiki.qemu.org/Download #QEMU_disk_images. Desigur, puteți instala OS-ul de pe un disc de boot care conține, de exemplu, fișierul WinXPSP3.iso. Pentru a accelera instalarea, imaginea ISO este scrisă pe un alt CD conținut în fișiere. După ce imaginea ISO este introdusă în unitatea CD și CD-ul este montat automat, instalarea Windows poate fi pornită de o astfel de linie în terminal:

qemu -m 696 -hda winxp.img -cdrom /media/WinXPSP3/WinXPSP3.iso-boot d

Deci, începe instalarea sistemului de operare: Deschideți fereastra QEMU a fost martor winxp.img imagine aspect sub NTFS, fișierele sunt copiate, inițializate la configurația Windows a viitorului, sistemul solicită repornirea, dar butoanele reporniți mașina virtuală nu are, și-l atârnă în așteptare. Acum trebuie să porniți descărcarea clienților de pe discul virtual C: (a fost creat!), Dar păstrând accesul la sursă, adică la unitatea CD-ROM, altfel pachetul service SP3 va fi invizibil. Prin urmare, închideți fereastra QEMU, modificați unitatea ISO pe un CD cu fișiere de instalare normale în unitatea CD și dați comanda în terminal:

qemu -m 696 -hda winxp.img - boot c -cdrom / dev / cdrom

La momentul instalării, ar trebui să aveți răbdare: fiecare minut virtual este egal cu câteva dintre cele reale - emulatorul este încă acolo. Dacă există 2 ecrane, este recomandabil să mutați fereastra QEMU pe alt ecran pentru a avea grijă de instalarea oaspetelui și de a-și face propria afacere pe primul ecran. Pe un computer modern va dura o oră și jumătate. În cele din urmă, OS-ul de oaspeți sa ridicat! Aveți posibilitatea să reporniți-l în interiorul "Linux", care se face prin următoarea linie terminală:

qemu -m 696 -bug c

KVM este configurat în același mod ca QEMU, dar cuvântul qemu este înlocuit cu cuvântul kvm. CLI e teribil, nu-i așa?

Din fericire pentru QEMU și KVM, există un GUI minunat scris în QT4 de experți de la Nokia; se numește AQEMU, se află în depozit, este instalat trivial: sudo apt-get install aqemu sau cu mouse-ul utilizând Centrul de aplicații Ubuntu. În AQEMU, tot ceea ce este configurat de comenzile terminale este configurat de mouse. Pentru a lucra cu AQEMU, calculatorul dvs. trebuie să aibă anterior o versiune Qt 4.4.2 sau o versiune ulterioară și o versiune de QEMU emulator 0.9.0 sau o versiune ulterioară. documentația rusă este aici: sourceforge.net/projects/aqemu/files/AQEMU%20Russian%20Documentation/0.7.3/AQEMU-Documentation-0.7.3.tar.bz2/download. AQEMU este în prezent și rusificată. În plus, AQEMU are un expert pentru prima rulare care vă permite să găsiți toate emulatorii instalați pe computer: "File> First Run Wizard> Next> Next> Search".

Dezavantajele KVM, desigur, sunt. Prima rocă subacvatică: dacă ați actualizat nucleul mașinii gazdă, veți afla brusc că oaspetele de la KVM refuză să lucreze. Deci ar trebui să fie: oaspetele folosește nucleul vechi, care nu mai există. Prin urmare, după upgrade-ul pensiunii, hostessul trebuie fie să creeze din nou imaginea oaspete, fie, folosind meniul de boot al gazdei, să încarce hostessul cu vechiul kernel. Totuși, acest dezavantaj este inerent în emulatorii compleți. A doua rocă subacvatică: nu încercați să porniți un alt virtualizator, să zicem, VirtualBox, dacă există un modul KVM în memorie. Acesta trebuie mai întâi să fie descărcat din memorie de către comenzile sudo rmmod kvm și sudo rmmod kvm-intel (sau sudo rmmod kvm-amd, dacă calculatorul este cu un procesor AMD). În cele din urmă, KVM, împreună cu QEMU, permite emularea "nedreaptă", în care VM necesită mai multe resurse decât computerul dvs., de exemplu, procesorul VM conține mai multe nuclee. În loc să accelerați, veți avea o încetinire puternică.

Rezultatele comparării testelor KVM vs VirtualBox pot fi găsite în phoronix.com/scan.php?page=articleitem=linux_kvm_virtualbox4num=1. În acest caz, VirtualBox a folosit și virtualizarea hardware. În testele sintetice, KVM depășește în mod clar VirtualBox. În același timp, rezultatele votului "care VM este mai bun" spun opusul, aceste rezultate sunt date aici: ubuntuforums.org/showthread.php?t=1145462. Câștigați VirtualBox. Paradoxul? Nu, nu este. Faptul este că votarea reflectă mai mult nivelul de avansare a ubuntoidelor concrete decât virtuțile reale ale unui VM particular. Dar acest vot este valabil pentru că pozițiile participanților sunt argumentate într-un fel, în timp ce utilizatorii adesea mărturisesc: "KVM nu a încercat". Deci încercați la fel!

Versiune imprimabilă

Articole similare