Virtualizare la nivel de sistem de operare - OS-level virtualization

Virtualizarea la nivel de sistem de operare este o paradigmă a sistemului de operare în care nucleul permite existența mai multor instanțe izolate ale spațiului utilizatorului . Astfel de cazuri, numite containere ( LXC , containere Solaris , Docker ), zone ( containere Solaris ), servere private virtuale ( OpenVZ ), partiții , medii virtuale (VEs), nuclee virtuale ( DragonFly BSD ) sau închisori ( închisoare FreeBSD sau închisoare chroot ), poate arăta ca niște computere reale din punctul de vedere al programelor care rulează în ele. Un program de calculator care rulează pe un sistem de operare obișnuit poate vedea toate resursele (dispozitive conectate, fișiere și foldere, partajări de rețea , putere CPU, capacități hardware cuantificabile) ale acelui computer. Cu toate acestea, programele care rulează în interiorul unui container pot vedea numai conținutul containerului și dispozitivele alocate containerului.

Pe sistemele de operare asemănătoare Unix , această caracteristică poate fi văzută ca o implementare avansată a mecanismului chroot standard , care schimbă folderul rădăcină aparent pentru procesul curent de rulare și copiii săi. În plus față de mecanismele de izolare, nucleul oferă adesea caracteristici de gestionare a resurselor pentru a limita impactul activităților unui container pe alte containere.

Termenul de container , deși cel mai popular se referă la sistemele de virtualizare la nivel de sistem de operare, este uneori folosit în mod ambiguu pentru a se referi la medii de mașini virtuale mai complete care funcționează în diferite grade de concert cu sistemul de operare gazdă, de exemplu , containerele Hyper-V ale Microsoft .

Operațiune

Pe sistemele de operare obișnuite pentru computerele personale, un program de computer poate vedea (chiar dacă s-ar putea să nu poată accesa) toate resursele sistemului. Ei includ:

  1. Capabilități hardware care pot fi utilizate, cum ar fi procesorul și conexiunea la rețea
  2. Date care pot fi citite sau scrise, cum ar fi fișiere, foldere și partajări de rețea
  3. Periferice conectate cu care poate interacționa, cum ar fi camera web , imprimanta, scanerul sau faxul

Sistemul de operare poate fi capabil să permită sau să refuze accesul la astfel de resurse în funcție de programul care le solicită și de contul de utilizator în contextul căruia rulează. De asemenea, sistemul de operare poate ascunde aceste resurse, astfel încât atunci când programul de computer le enumeră, acestea să nu apară în rezultatele enumerării. Cu toate acestea, din punct de vedere al programării, programul de calculator a interacționat cu resursele respective și sistemul de operare a gestionat un act de interacțiune.

Cu virtualizarea sistemului de operare sau containerizarea, este posibil să rulați programe în containere, cărora le sunt alocate doar părți din aceste resurse. Un program care așteaptă să vadă întregul computer, odată rulat într-un container, poate vedea doar resursele alocate și crede că acestea sunt tot ceea ce este disponibil. Pe fiecare sistem de operare pot fi create mai multe containere, cărora li se alocă un subset de resurse ale computerului. Fiecare container poate conține orice număr de programe de calculator. Aceste programe pot rula simultan sau separat și pot chiar interacționa între ele.

Containerizarea are similitudini cu virtualizarea aplicației : în aceasta din urmă, doar un singur program de computer este plasat într-un container izolat, iar izolarea se aplică doar sistemului de fișiere.

Utilizări

Virtualizarea la nivel de sistem de operare este utilizată în mod obișnuit în mediile de găzduire virtuală , unde este utilă pentru alocarea în siguranță a resurselor hardware finite unui număr mare de utilizatori care nu se încred în reciprocitate. Administratorii de sistem îl pot folosi, de asemenea, pentru consolidarea hardware-ului serverului prin mutarea serviciilor pe gazde separate în containere pe un singur server.

Alte scenarii tipice includ separarea mai multor programe în containere separate pentru securitate îmbunătățită, independență hardware și caracteristici de gestionare a resurselor adăugate. Cu toate acestea, securitatea îmbunătățită oferită de utilizarea unui mecanism chroot nu este aproape neagră. Implementările de virtualizare la nivel de sistem de operare capabile de migrare live pot fi, de asemenea, utilizate pentru echilibrarea dinamică a încărcăturii containerelor între noduri dintr-un cluster.

Deasupra capului

Virtualizarea la nivel de sistem de operare impune, de obicei, mai puțină cheltuială decât virtualizarea completă, deoarece programele din partițiile virtuale la nivel de sistem de operare utilizează interfața normală de apel a sistemului de operare și nu trebuie să fie supuse emulației sau să fie rulate într-o mașină virtuală intermediară , așa cum este caz cu virtualizare completă (cum ar fi VMware ESXi , QEMU sau Hyper-V ) și paravirtualizare (cum ar fi Xen sau Linux în modul utilizator ). Această formă de virtualizare nu necesită, de asemenea, suport hardware pentru performanțe eficiente.

Flexibilitate

Virtualizarea la nivel de sistem de operare nu este la fel de flexibilă ca alte abordări de virtualizare, deoarece nu poate găzdui un sistem de operare invitat diferit de cel gazdă sau un kernel de oaspeți diferit. De exemplu, cu Linux , diferite distribuții sunt bune, dar alte sisteme de operare, cum ar fi Windows, nu pot fi găzduite. Sistemele de operare care utilizează sistematică de intrare variabilă sunt supuse limitărilor în cadrul arhitecturii virtualizate. Metodele de adaptare, inclusiv analiza de releu a serverului cloud, mențin mediul virtual la nivel de sistem de operare în cadrul acestor aplicații.

Solaris depășește parțial limitarea descrisă mai sus cu caracteristica sa de zone de marcă , care oferă posibilitatea de a rula un mediu într-un container care emulează o versiune mai veche Solaris 8 sau 9 într-o gazdă Solaris 10. Zonele de marcă Linux (denumite zone de marcă "lx") sunt, de asemenea, disponibile pe sistemele Solaris bazate pe x86 , oferind un spațiu utilizator Linux complet și suport pentru executarea aplicațiilor Linux; în plus, Solaris oferă utilități necesare pentru instalarea distribuțiilor Red Hat Enterprise Linux  3.x sau CentOS  3.x Linux în zonele „lx”. Cu toate acestea, în 2010, zonele marca Linux au fost eliminate din Solaris; în 2014 au fost reintroduse în Illumos , care este furca open source Solaris, acceptând nucleele Linux pe 32 de biți .

Depozitare

Unele implementări oferă mecanisme de copiere la scriere la nivel de fișier (CoW). (Cel mai frecvent, un sistem de fișiere standard este partajat între partiții, iar acele partiții care schimbă fișierele își creează automat propriile copii.) Acest lucru este mai ușor de realizat, mai eficient din punct de vedere spațial și mai simplu de memorat în cache decât copierea la nivel de bloc. -scrieri de scriere comune pe virtualizatoarele întregului sistem. Cu toate acestea, virtualizatorii de sistem întreg pot funcționa cu sisteme de fișiere non-native și pot crea și reda instantanee ale întregii stări a sistemului.

Implementări

Mecanism Sistem de operare Licență Dezvoltat activ de la sau între Caracteristici
Izolarea sistemului de fișiere Copie pe scriere Cote de disc Limitarea ratei I / O Limite de memorie Cote CPU Izolarea rețelei Virtualizare imbricată Puncte de control partiție și migrare live Izolarea privilegiului rădăcinii
chroot Majoritatea sistemelor de operare asemănătoare UNIX Variază în funcție de sistemul de operare 1982 Parțial Nu Nu Nu Nu Nu Nu da Nu Nu
Docher Linux , FreeBSD , Windows x64 (Pro, Enterprise și Education) macOS Licență Apache 2.0 2013 da da Nu direct Da (de la 1.10) da da da da Numai în modul experimental cu CRIU [1] Da (de la 1.10)
Linux-VServer
(context de securitate)
Linux , Windows Server 2016 GNU GPLv2 2001 da da da da da da Parțial ? Nu Parțial
lmctfy Linux Licență Apache 2.0 2013–2015 da da da da da da Parțial ? Nu Parțial
LXC Linux GNU GPLv2 2008 da da Parțial Parțial da da da da da da
Singularitate Linux Licență BSD 2015 da da da Nu Nu Nu Nu Nu Nu da
OpenVZ Linux GNU GPLv2 2005 da da da da da da da Parțial da da
Virtuozzo Linux , Windows Trialware 2000 da da da da da da da Parțial da da
Containere Solaris (zone) illumos ( OpenSolaris ),
Solaris
CDDL ,
proprietară
2004 da Da (ZFS) da Parțial da da da Parțial Parțial da
Închisoarea FreeBSD FreeBSD , DragonFly BSD Licență BSD 2000 da Da (ZFS) da da da da da da Parțial da
vkernel DragonFly BSD Licență BSD 2006 da da N / A ? da da da ? ? da
sysjail OpenBSD , NetBSD Licență BSD 2006–2009 da Nu Nu Nu Nu Nu da Nu Nu ?
WPAR AIX Software proprietar comercial 2007 da Nu da da da da da Nu da ?
Conturi virtuale iCore Windows XP Freeware 2008 da Nu da Nu Nu Nu Nu ? Nu ?
Sandboxie Windows GNU GPLv3 2004 da da Parțial Nu Nu Nu Parțial Nu Nu da
systemd-nspawn Linux GNU LGPLv2.1 + 2010 da da da da da da da ? ? da
Turbo Windows Freemium 2012 da Nu Nu Nu Nu Nu da Nu Nu da
rkt Linux Licență Apache 2.0 2014–2018 da da da da da da da ? ? da

Vezi si

Note

Referințe

linkuri externe