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:
- Capabilități hardware care pot fi utilizate, cum ar fi procesorul și conexiunea la rețea
- Date care pot fi citite sau scrise, cum ar fi fișiere, foldere și partajări de rețea
- 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
- Orchestrarea containerelor
- Spații de nume Linux
- cgroups
- Sandbox (dezvoltare software)
- CoreOS
- Hipervizor
- Creatoare de aplicații portabile
- runC
- Kernel de separare
- Calcul fără server
- Hipervizor de depozitare
- Server privat virtual (VPS)
- Partiționarea resurselor virtuale
Note
Referințe
linkuri externe
- O introducere în virtualizare
- O scurtă prezentare a trei tehnici de virtualizare diferite
- Virtualizarea și containerizarea infrastructurii aplicațiilor: o comparație , 22 iunie 2015, de Mathijs Jeroen Scheepers
- Containere și date persistente , LWN.net , 28 mai 2015, de Josh Berkus