Кіріспе

Операциялық жүйе парадигмасы, бірнеше оқшауланған пайдаланушы кеңістігі инстанцияларын қолдануға мүмкіндік береді. ОЖ деңгейіндегі виртуализация – ядроның бірнеше оқшауланған пайдаланушы кеңістігі инстанцияларының болуына рұқсат беретін операциялық жүйе (ОЖ) виртуализация парадигмасы. Бұл контейнерлер (LXC, Solaris контейнерлері, AIX WPAR, HP UX SRP контейнерлері, Docker, Podman), аймақтар (Solaris контейнерлері), виртуалды жеке серверлер (OpenVZ), бөлімдер, виртуалды орталар (VEs), виртуалды ядролар (DragonFly BSD) немесе түрмелер (FreeBSD түрмесі немесе chroot түрмесі) түрінде болуы мүмкін. Мұндай инстанциялар ішінде жұмыс істейтін бағдарламалар тұрғысынан нақты компьютерлерге ұқсауы мүмкін. Қалыпты операциялық жүйеде жұмыс істейтін компьютерлік бағдарлама сол компьютердің барлық ресурстарын (қосылған құрылғылар, файлдар мен папкалар, желілік ресурстар, процессор қуаты, сандық түрде өлшенетін аппараттық мүмкіндіктер) көре алады. Дегенмен, контейнер ішінде жұмыс істейтін бағдарламалар тек контейнердің ішкі мазмұнын және контейнерге тағайындалған құрылғыларды ғана көреді. Unix сияқты операциялық жүйелерде бұл мүмкіндік стандартты chroot механизмінің жетілдірілген нұсқасы ретінде қарастырылады, ол ағымдағы процесс пен оның туынды процестері үшін көрінетін түбірлік папканы өзгертеді. Оқшаулау механизмдерімен қатар, ядро көбінесе ресурстарды басқару мүмкіндіктерін ұсынады, бұл бір контейнердің қызметінің басқа контейнерлерге тигізетін әсерін шектейді. Linux контейнерлері Linux ядросымен қамтамасыз етілетін виртуализация, оқшаулау және ресурстарды басқару механизмдеріне, атап айтқанда Linux кеңістіктері мен cgroups-қа негізделген. «Контейнер» термині көбінесе ОЖ деңгейіндегі виртуализация жүйелеріне қатысты болғанымен, кейде хост ОЖ-мен әртүрлі деңгейде өзара әрекеттесетін толыққанды виртуалды машиналар ортасын білдіру үшін екіұшты түрде қолданылады, мысалы, Microsoft-тың Hyper-V контейнерлері. Виртуализацияның 1960 жылдан бергі жалпы тарихи шолуын «Виртуализацияның дамуының уақыт жолы» бөлімінен табуға болады.

Қолданылуы

Операциялық жүйе деңгейіндегі виртуализация виртуалды хостинг орталарында кеңінен қолданылады, мұнда ол көптеген бір-біріне сенімсіз пайдаланушылар арасында шектеулі аппараттық ресурстарды қауіпсіз бөлу үшін пайдалы. Жүйе әкімшілері серверлік жабдықты біріктіру үшін де оны пайдалана алады, яғни жеке хосттардағы қызметтерді бір сервердегі контейнерлерге көшіру арқылы. Басқа да кең таралған жағдайларға қауіпсіздікті арттыру, аппараттық тәуелсіздік және қосымша ресурстарды басқару мүмкіндіктері үшін бірнеше бағдарламаны бөлек контейнерлерге оқшаулау кіреді. Дегенмен, chroot механизмін пайдалану арқылы қамтамасыз етілген қауіпсіздіктің күшеюі толыққанды емес. Тірі миграцияға қабілетті операциялық жүйе деңгейіндегі виртуализацияны жүзеге асыру кластердегі түйіндер арасында контейнерлердің жүктемесін динамикалық түрде теңестіру үшін де қолдануға болады.

Жоғары

Операциялық жүйе деңгейіндегі виртуализация, әдетте, толық виртуализацияға қарағанда аз жүктеме тудырады, себебі операциялық жүйе деңгейіндегі виртуалды бөлімдердегі бағдарламалар операциялық жүйенің стандартты жүйелік шақыру интерфейсін пайдаланады және толық виртуализациядағы (мысалы, VMware ESXi, QEMU немесе Hyper V) және паравиртуализациядағы (мысалы, Xen немесе User mode Linux) сияқты эмуляцияға түсуіне немесе аралық виртуалды машинада іске қосылуына қажеттілік жоқ. Осы типтегі виртуализация тиімді жұмыс істеу үшін аппараттық қолдауды талап етпейді.

Икемділік

Операциялық жүйе деңгейіндегі виртуализация басқа виртуализация тәсілдерімен салыстырғанда икемді емес, себебі ол хост операциялық жүйесінен өзге немесе басқа қонақ ядросымен үйлесімді қонақ операциялық жүйені іске қоса алмайды. Мысалы, Linux-та әртүрлі дистрибутивтер жарайды, бірақ Windows сияқты басқа операциялық жүйелерді орнату мүмкін емес. Өзгермелі кіріс жүйелерін пайдаланатын операциялық жүйелер виртуалданған архитектура шектеулеріне тап болады. Бұл қолданбалар ішіндегі бұлтты серверлердің релелік талдауы сияқты бейімделу әдістері, операциялық жүйе деңгейіндегі виртуалды ортаны сақтап тұрады. Solaris жоғарыда айтылған шектеулерді өзінің брендтік аймақтары мүмкіндігі арқылы ішінара жеңеді, ол Solaris 10 хостында ескі Solaris 8 немесе 9 нұсқасын эмуляциялайтын контейнерде ортаны іске қосуға мүмкіндік береді. Linux брендтік аймақтары (lx брендтік аймақтары деп аталады) x86 негізіндегі Solaris жүйелерінде де қолжетімді, олар Linux пайдаланушы кеңістігін және Linux қолданбаларын орындау үшін қолдау көрсетеді; сонымен қатар, Solaris Red Hat Enterprise Linux 3.x немесе CentOS 3.x Linux дистрибутивтерін "lx" аймақтарына орнату үшін қажетті құралдарды ұсынады. Дегенмен, 2010 жылы Linux брендтік аймақтары Solaris-тен алынып тасталды; 2014 жылы олар 32 биттік Linux ядроларын қолдайтын ашық кодты Solaris түйіндігі – Illumos-та қайта енгізілді.

Сақтау

Кейбір іске асырулар файл деңгейінде көшірме жазу (CoW) механизмдерін ұсынады. (Көбінесе, стандартты файл жүйесі бөлімдер арасында ортақ пайдаланылады, ал файлдарды өзгертетін бөлімдер өздерінің жеке көшірмелерін автоматты түрде жасайды.) Бұл, бүкіл жүйелік виртуализаторларда жиі қолданылатын блок деңгейіндегі көшірме жазу схемаларына қарағанда сақтық көшірме жасауды жеңілдетеді, жадты тиімдірек пайдаланады және кэштеуді жеңілдетеді. Дегенмен, бүкіл жүйелік виртуализаторлар түпкілікті емес файл жүйелерімен де жұмыс істей алады және жүйе күйінің толық көшірмелерін жасап, оларды кері қайтара алады.