Кіріспе

Операциялық жүйе деңгейіндегі виртуализациялық технология OpenVZ (Open Virtuozzo) - Linux үшін операциялық жүйе деңгейіндегі виртуализациялық технология. Ол физикалық серверге контейнерлер, виртуалды жеке серверлер (VPS) немесе виртуалды орталар (VEs) деп аталатын бірнеше оқшауланған операциялық жүйелік инстанцияларды жүргізуге мүмкіндік береді. OpenVZ Solaris Containers және LXC-ге ұқсас.

OpenVZ басқа виртуализациялық технологиялармен салыстырғанда

VMware, Xen және KVM сияқты виртуализациялық технологиялар толық виртуализацияны қамтамасыз етіп, бірнеше операциялық жүйелерді және әр түрлі өзек нұсқаларын орындай алады, ал OpenVZ бір Linux өзегін пайдаланады, сондықтан тек Linux-ты ғана орындай алады. Барлық OpenVZ контейнерлері бірдей архитектура мен өзек нұсқасын пайдаланады. Бұл қонақтарға хосттың ядросының нұсқасынан басқа нұсқалар қажет болған жағдайларда кемшілік болуы мүмкін. Алайда, ол шынайы гипервизордың үстіне емес, өте жылдам және тиімді. OpenVZ-мен жадты бөлу бір виртуалды ортада пайдаланылмаған жадты басқалар немесе дискідегі кэшке пайдалану үшін жұмсақ. OpenVZ-дің ескі нұсқалары ортақ файл жүйесін қолданған кезде (әрбір виртуалды орта chroot арқылы оқшауланған файлдар каталогы ғана), OpenVZ-дің қазіргі нұсқалары әр контейнердің өз файл жүйесіне ие болуына мүмкіндік береді.

Жәндіктер

OpenVZ ядросы - OpenVZ контейнерлерін қолдау үшін өзгертілген Linux ядросы. Өзгертілген ядро виртуализация, оқшаулау, ресурстарды басқару және бақылау пункттерін қамтамасыз етеді. vzctl 4.0-дан бастап OpenVZ жаңылмаған Linux 3.x ядроларымен жұмыс істей алады, функциялар жиынтығы азайтылады.

Виртуализация және оқшаулау

Әрбір контейнер жеке тұлға болып табылады және физикалық сервер сияқты әрекет етеді. Әрқайсысының өз файлдары бар: файлдар, жүйелік кітапханалар, қолданбалар, виртуалды /proc және /sys, виртуалды құлыптар және т.б. Пайдаланушылар мен топтар Әр контейнердің өзінің түбір пайдаланушысы, сондай-ақ басқа пайдаланушылар мен топтар бар. Процестер ағашы Контейнер тек өзінің процестерін (init-тен басталатын) көреді . PID-тер виртуалды түрде, сондықтан init PID-і 1 болуы керек. Желі Виртуалды желі құрылғысы, ол контейнерге өзінің жеке IP-адрестеріне, сондай-ақ желілік сүзгілер (iptables) мен маршруттау ережелерінің жиынтығына ие болуға мүмкіндік береді. Құрылғылар Қажет болған жағдайда, кез келген контейнерге желілік интерфейстер, сериялық порттар, дискілік бөлімдер және т.б. сияқты нақты құрылғыларға қол жеткізу мүмкіндігі берілуі мүмкін. IPC нысандары Ортақ жады, семафорлар, хабарламалар.

Ресурстарды басқару

OpenVZ ресурстарын басқару төрт компоненттен тұрады: екі деңгейлі диск квотасы, әділ CPU жоспарлаушысы, диск I / O жоспарлаушысы және пайдаланушы тұқым санағы (төменде қараңыз). Бұл ресурстарды контейнерді орындау кезінде өзгертуге болады, қайта жүктеудің қажеті жоқ. Екі деңгейлі диск квотасы Әр контейнерде диск блоктары мен инодтар (файлдардың шамамен саны) бойынша өлшенетін өзінің диск квоталары болуы мүмкін. Контейнерде UNIX-тің бір пайдаланушы мен бір топқа арналған дискілік квоталарын орнату үшін стандартты құралдарды пайдалану мүмкін. CPU жоспарлаушысы OpenVZ-дегі CPU жоспарлаушысы әділ үлесті жоспарлау стратегиясының екі деңгейлі іске асырылуы болып табылады. Бірінші деңгейде жоспарлаушы контейнердің cpuunits мәндеріне негізделген CPU уақыт кесіндісін қай контейнерге беру керектігін шешеді. Екінші деңгейде стандартты Linux жоспарлаушысы стандартты Linux процестерінің басымдықтарын пайдалана отырып, сол контейнерде қай процесті орындау керектігін шешеді. Әрбір контейнердегі процессорларға әр түрлі мәндерді орнату мүмкін. Нақты CPU уақыты осы мәндерге пропорционалды түрде бөлінеді. Сонымен қатар, OpenVZ-де CPU-ның қатаң шектерін белгілеудің жолдары бар, мысалы, жалпы CPU уақытының 10% -ы (cpulimit), контейнерге қол жетімді CPU өзектерінің саны (cpus) және контейнерді CPU-лардың белгілі бір жиынтығына (cpumask) байлау. I/O жоспарлаушы Жоғарыда сипатталған CPU жоспарлаушысына ұқсас, OpenVZ-дегі I/O жоспарлаушы да екі деңгейлі, екінші деңгейінде Jens Axboe-дің CFQ I/O жоспарлаушысын пайдаланады. Әрбір контейнерге I/O басымдығы беріледі, ал жоспарлаушы I/O жолағын берілген басымдықтарға сәйкес бөледі. Осылайша, бір контейнер I/O арнасын қанықтыра алмайды. Пайдаланушыны бақылау - бір контейнердің жүйелік ресурстарды монополиялауына жол бермеу үшін контейнерге арналған бақылаулардың, шектеулердің және кепілдіктердің жиынтығы. Қазіргі OpenVZ ядроларында (RHEL6 негізделген 042stab*) екі негізгі параметр бар, ал басқалары ерікті. Басқа ресурстар негізінен жад және әр түрлі ядролық объектілер, мысалы процестер арасындағы байланыс, ортақ жад сегменттері және желілік буферлер. Әрбір ресурсты /proc/user beancounters-тен көруге болады және оған бес мән қосылады: ағымдағы пайдалану, максималды пайдалану (контейнердің өмір сүру мерзімі үшін), кедергі, шек және сәтсіздік санағышы. Кедергі мен лимитінің мағынасы параметрге тәуелді; қысқаша айтқанда, оларды жұмсақ шек және қатты шек деп қарастыруға болады. Егер ресурстың бір бөлігі шекті шамаға жетсе, оның ақаулық санағы көбейеді. Бұл иесіне контейнердегі /proc/user beancounters бақылауымен проблемаларды анықтауға мүмкіндік береді.

Бақылау пункттері мен тірі көші-қон

2006 жылдың сәуір айының ортасында OpenVZ үшін тірі көшіру және бақылау нүктелері функциясы шығарылды. Бұл контейнерді бір физикалық серверден екіншісіне контейнерді сөндірусіз жылжытуға мүмкіндік береді. Процесс бақылау нүктесі деп аталады: контейнер тоңазытылады және оның бүкіл жағдайы дискідегі файлға сақталады. Бұл файл басқа машинаға көшірілуі мүмкін және контейнерді мұздату (қайта қалпына келтіру) мүмкін; кідіріс шамамен бірнеше секунд. Қалыптылық әдетте толық сақталғандықтан, бұл үзіліс қарапайым есептеу кешіктірімі болып көрінуі мүмкін.

Шектеулер

Әдетте OpenVZ контейнерге қол жеткізуді нақты физикалық құрылғыларға шектеуді (осылайша контейнерлік аппаратты тәуелсіз етеді). OpenVZ әкімшісі әр түрлі нақты құрылғыларға контейнерлік қол жеткізуді, мысалы диск дисктері, USB порттары, PCI құрылғылары немесе физикалық желілік карталар сияқты мүмкіндік береді. /dev/loopN жиі таратылымдарда шектеледі (бұрау құрылғылары ядролық желілерді қолданады, бұл қауіпсіздік мәселесі болуы мүмкін), бұл диск кескіндерін орнату мүмкіндігін шектейді. FUSE-ді қолдану арқылы. OpenVZ тек PPP (PPTP/L2TP сияқты) және TUN/TAP негізделген кейбір VPN технологиясын ұсынумен шектеледі. IPsec 2.6.32 ядросынан бастап контейнерлердің ішінде қолдайды. EasyVZ деп аталатын графикалық пайдаланушы интерфейсі 2007 жылы сыналды, бірақ ол 0.1 нұсқасынан асып кетпеді. 3.4 нұсқасына дейін Proxmox VE OpenVZ негізделген GUI-мен серверлік виртуализациялық орта ретінде қолданылуы мүмкін, бірақ кейінгі нұсқалар LXC-ге ауысты.