Extras din cartea mea: Învățați-vă virtualizarea Linux și disponibilitate ridicată: pregătiți-vă pentru examenul de certificare LPIC-3 304– disponibil și de la Site-ul Bootstrap-IT.
În ciuda accesului la hardware din ce în ce mai eficient și mai puternic, operațiunile care sunt executate direct pe servere tradiționale fizice (sau bare-metal) se confruntă inevitabil cu limite practice semnificative. Costul și complexitatea construirii și lansării unui singur server fizic înseamnă că adăugarea sau eliminarea eficientă a resurselor pentru a satisface rapid cererea în schimbare este dificilă sau, în unele cazuri, imposibilă. Testarea în siguranță a noilor configurații sau a aplicațiilor complete înainte de lansarea lor poate fi, de asemenea, complicată, costisitoare și consumatoare de timp.
După cum au prevăzut cercetătorii pionieri Gerald J. Popek și Robert P. Goldberg într-o lucrare din 1974 („Cerințe formale pentru arhitecturi virtualizabile de a treia generație” – Comunicări ale ACM 17 (7): 412–421), virtualizarea de succes trebuie să ofere un mediu acea:
- Este echivalent cu cel al unei mașini fizice, astfel încât accesul software-ului la resurse hardware și drivere ar trebui să nu se distingă de o experiență non-virtualizată.
- Permite controlul complet al clientului asupra hardware-ului sistemului virtualizat.
- Ori de câte ori este posibil, execută în mod eficient operațiuni direct pe resursele hardware subiacente, inclusiv procesoare.
Virtualizarea permite împărțirea resurselor de calcul fizic, memorie, rețea și stocare („nucleul patru”) între mai multe entități virtuale. Fiecare dispozitiv virtual este reprezentat în mediul său software și utilizator ca o entitate reală, independentă. Configurate corespunzător, resursele practic izolate pot oferi aplicații mai sigure, fără conectivitate vizibilă între medii. Virtualizarea permite, de asemenea, aprovizionarea și rularea mașinilor virtuale aproape instantaneu și apoi distrugerea de îndată ce nu mai sunt necesare.
Pentru aplicațiile mari care susțin nevoile de afaceri în continuă schimbare, capacitatea de a scări rapid în sus și în jos poate determina diferența dintre supraviețuire și eșec. Tipul de adaptabilitate oferit de virtualizare permite scripturilor să adauge sau să elimine mașini virtuale în câteva secunde … mai degrabă decât în săptămânile necesare pentru a cumpăra, furniza și implementa un server fizic.
Cum funcționează virtualizarea
În condiții non-virtuale, arhitecturile x86 controlează strict procesele care pot funcționa în cadrul fiecăruia dintre cele patru straturi de privilegii atent definite (descrise ca Ring 0 până la Ring 3).
În mod normal, doar nucleul sistemului de operare gazdă are șanse să acceseze instrucțiunile păstrate în Ring 0. Cu toate acestea, deoarece nu puteți oferi mai multor mașini virtuale care rulează pe un singur computer fizic acces egal la sunetul 0 fără a cere mari probleme, trebuie să existe un manager de mașini virtuale (sau „hipervizor”) a cărui sarcină este de a redirecționa în mod eficient solicitările de resurse precum memoria și stocarea către echivalenții lor virtualizați.
Când lucrați într-un mediu hardware fără virtualizare SVM sau VT-x, acest lucru se face printr-un proces cunoscut sub numele de capcană și emulare și traducere binară. Pe hardware-ul virtualizat, astfel de solicitări pot fi de obicei surprinse de către hipervizor, adaptate la mediul virtual și transmise înapoi la mașina virtuală.

Simpla adăugare a unui nou strat software pentru a oferi acest nivel de coordonare va adăuga o latență semnificativă la aproape fiecare aspect al performanței sistemului. O soluție foarte reușită a fost introducerea unor noi seturi de instrucțiuni în procesoare care creează așa-numitul „Ring -1” care va acționa ca Ring 0 și va permite unui sistem de operare invitat să funcționeze fără a avea niciun impact asupra altor operații fără legătură.
De fapt, atunci când este implementată bine, virtualizarea permite ca majoritatea codului software să ruleze exact așa cum ar fi în mod normal, fără a fi nevoie de captare.
Deși joacă adesea un rol de sprijin în implementările de virtualizare – emularea funcționează destul de diferit. În timp ce virtualizarea încearcă să împartă resursele hardware existente între mai mulți utilizatori, scopul emulării este de a crea un anumit mediu hardware / software imita una care de fapt nu există, astfel încât utilizatorii să poată lansa procese care nu ar fi posibile în mod nativ. Acest lucru necesită un cod software care simulează mediul hardware de bază dorit pentru a păcăli software-ul dvs. să creadă că rulează de fapt în altă parte.
Emularea poate fi relativ simplă de implementat, dar va veni aproape întotdeauna cu o penalizare de performanță serioasă.
În mod tradițional, au existat două clase de hipervizor: Tipul 1 și Tipul 2.
- Hipervizori metalici goi (tip-1) sunt pornite ca sistem de operare al unei mașini și – uneori printr-o mașină virtuală privilegiată primară (VM) – mențin controlul complet asupra hardware-ului gazdă, rulând fiecare sistem de operare invitat ca proces de sistem. XenServer și VMWare ESXi sunt exemple moderne proeminente de tip-1. În ultimii ani, utilizarea populară a termenului „hipervizor” s-a răspândit pentru a include toate tehnologiile de virtualizare a gazdei, dar odată, ar fi fost folosit pentru a descrie doar sistemele de tip 1. Termenul mai general care acoperă toate tipurile ar fi fost inițial „Monitoare de mașini virtuale”. În măsura în care oamenii folosesc termenul Monitoare de mașini virtuale în toate aceste zile, bănuiesc că înseamnă „hipervizor” în toate iterațiile sale.

- Hipervizori găzduiți (tip 2) sunt ele însele pur și simplu procese care rulează deasupra unei stive normale de sistem de operare. Hipervizorii de tip 2 (care includ VirtualBox și, în unele moduri, KVM) abstractizează resursele sistemului gazdă pentru sistemele de operare invitate, oferind iluzia unui mediu hardware privat.

Virtualizare: PV vs HVM
Mașinile virtuale (VM) sunt complet virtualizate. Sau, cu alte cuvinte, ei cred că sunt implementări regulate de sisteme de operare care duc o viață fericită pe propriul lor hardware privat. Deoarece nu trebuie să interacționeze cu mediul lor în mod diferit față de un sistem de operare independent, pot rula cu stive de software nemodificate de la raft. În trecut, însă, această compatibilitate avea un cost, deoarece traducerea semnalelor hardware printr-un strat de emulare a necesitat timp și cicluri suplimentare.
Oaspeții Paravirtual (PV) sunt, pe de altă parte, cel puțin parțial conștienți de mediul lor virtual, inclusiv faptul că partajează resurse hardware cu alte mașini virtuale. Această conștientizare înseamnă că nu este nevoie ca gazdele PV să emuleze stocarea și hardware-ul de rețea și face disponibile drivere I / O eficiente. Din punct de vedere istoric, acest lucru a permis hipervizorilor PV să obțină performanțe mai bune pentru acele operațiuni care necesită conectivitate la componentele hardware.
Cu toate acestea, pentru a oferi acces oaspeților la un inel virtual 0 (adică, un inel -1), platformele hardware moderne – și în special arhitectura Intel Ivy Bridge – au introdus o nouă bibliotecă de seturi de instrucțiuni CPU care permitea mașină virtuală hardware (HVM) virtualizare pentru a trece peste blocajul de capcană și emulare și pentru a profita din plin de extensiile hardware și de operațiunile de kernel software nemodificate.
Recenta tehnologie Intel, Extended Page Tables (EPT), poate, de asemenea, crește semnificativ performanța virtualizării.
Prin urmare, pentru majoritatea cazurilor de utilizare, veți găsi acum că HVM oferă performanțe, portabilitate și compatibilitate mai mari.
Compatibilitate hardware
Cel puțin unele caracteristici de virtualizare necesită suport hardware – în special de la CPU-ul gazdei. Prin urmare, ar trebui să vă asigurați că serverul dvs. are tot ce aveți nevoie pentru sarcina pe care o veți da. Majoritatea a ceea ce va trebui să știți este păstrat în / proc / cpuinfo fișier și, în special, în secțiunea „steaguri” a fiecărui procesor. Din moment ce vor exista atât de multe steaguri, va trebui să știți ce să căutați.
Alerga
$ grep flags / proc / cpuinfo
… să văd ce ai sub capotă.
Virtualizarea containerelor
După cum am văzut, un hypervisor VM este un sistem de operare complet, a cărui relație cu resursele hardware Core Four este complet virtualizată: crede că rulează pe propriul computer.
Un hipervizor instalează o VM din aceeași imagine ISO pe care ați descărca-o și ați utiliza-o pentru a instala un sistem de operare direct pe un hard disk fizic gol.
Un container, pe de altă parte, este, efectiv, o aplicație, lansată dintr-un șablon de tip script, care crede că este un sistem de operare. În tehnologiile de containere (cum ar fi LXC și Docker), containerele nu sunt altceva decât abstracții de software și resurse (fișiere, procese, utilizatori) care se bazează pe nucleul gazdă și o reprezentare a resurselor hardware „de bază patru” (de exemplu, CPU, RAM, rețea și stocare) pentru tot ceea ce fac.

Desigur, deoarece containerele sunt, în mod efectiv, extensii izolate ale nucleului gazdă, virtualizarea Windows (sau chiar versiuni Linux mai vechi sau mai noi care rulează versiuni incompatibile ale libc) pe, să zicem, o gazdă Ubuntu 16.04, este imposibilă. Dar tehnologia permite oportunități de calcul incredibil de ușoare și versatile.
Migrația
Modelul de virtualizare permite, de asemenea, o gamă foarte largă de operațiuni de migrare, copiere de rezervă și clonare – chiar și din sisteme în execuție (V2V). Deoarece resursele software care definesc și conduc o mașină virtuală sunt atât de ușor de identificat, de obicei nu este nevoie de prea mult efort pentru a dubla medii întregi de server în mai multe locații și în mai multe scopuri.
Uneori nu este mai complicat decât crearea unei arhive a unui sistem de fișiere virtuale pe o singură gazdă, despachetarea acesteia în aceeași cale pe o altă gazdă, verificarea setărilor de bază ale rețelei și declanșarea acesteia. Majoritatea platformelor oferă o singură operațiune pe linia de comandă pentru a muta oaspeții între gazde.
Migrarea implementărilor de la servere fizice la medii virtualizate (P2V) poate fi uneori puțin mai dificilă. Chiar și crearea unei imagini clonate a unui server fizic simplu și importarea acesteia într-o mașină virtuală goală pot implica o oarecare complexitate. Și odată ce ați terminat, poate fi necesar să faceți ajustări considerabile la design pentru a profita din plin de toate funcționalitățile pe care le oferă virtualizarea. În funcție de sistemul de operare pe care îl migrați, este posibil să fie nevoie să încorporați drivere paravirtualizate în proces pentru a permite sistemului de operare să ruleze corect în noua sa casă.
La fel ca în orice altceva în gestionarea serverelor: planificați cu atenție în avans.
Extras din cartea mea: Învățați-vă virtualizarea Linux și disponibilitate ridicată: pregătiți-vă pentru examenul de certificare LPIC-3 304.
Vrei să înveți să implementezi proiecte practice de administrare Linux? Verificați cartea Manning, Linux în acțiune.
Sau, puteți încerca un curs hibrid numit Linux în mișcare este format din mai mult de două ore de videoclip și aproximativ 40% din textul Linux în acțiune.