Кіріспе

Linux VServer — Linux ядросына операциялық жүйе деңгейіндегі виртуализация мүмкіндіктерін қосу арқылы құрылған виртуалды жеке серверді іске асыру болып табылады. Ол ашық кодты бағдарламалық жасақтама ретінде әзірленеді және таратылады.

Егжей-тегжейлер

Жобаны Жак Гелинас бастады. Қазір оны Герберт Пёцл күтіп ұстайды. Ол желілік жүктемені теңестіретін Linux Virtual Server жобасымен байланысты емес. Linux VServer – бұл компьютер жүйесіндегі ресурстарды (файл жүйесі, процессор уақыты, желілік мекенжайлар және жад) процестердің бөліністерінен тысқары нәрселерге қызметтен бас тарту шабуылдарын жасауына жол бермейтіндей етіп, қауіпсіз бөлуге арналған түрме механизмі. Әр бөлім қауіпсіздік контексі деп аталады, ал оның ішіндегі виртуалды жүйе – виртуалды жеке сервер. Қауіпсіздік контексіне ену үшін chroot сияқты құрал қарастырылған. Виртуалды жеке серверді іске қосу жаңа қауіпсіздік контексінде init-ті бастау арқылы жүзеге асырылады, ал оны өшіру – сол қауіпсіздік контексіндегі барлық процестерді тоқтатуды білдіреді. Контекстер көптеген Linux дистрибутивтерін, соның ішінде Debian және Fedora-ны өзгеріссіз іске қосуға жеткілікті деңгейде сенімді. Виртуалды жеке серверлер веб-хостинг қызметтерінде кеңінен қолданылады, олар клиенттердің шоттарын бөлуге, ресурстарды біріктіруге және кез келген қауіпсіздік бұзушылықтарын шектеуге көмектеседі. Мұндай орналымдарда орынды үнемдеу үшін әрбір виртуалды сервердің файлдық жүйесі «үлгі» файлдық жүйесіне жазуға болатын қатты сілтемелер ағашы ретінде құрылуы мүмкін. Қатты сілтеме арнайы файлдық жүйе атрибутымен белгіленеді және өзгертілген кезде файлдың нақты көшірмесімен қауіпсіз және түсінікті түрде алмастырылады. Linux VServer 2.6 сериялы ядролар үшін екі тармақ – тұрақты (2.2.x) және devel (2.3.x), сондай-ақ 2.4 сериялы ядролар үшін бір тұрақты тармақ ұсынады. Grsecurity патч жиынтығын интеграциялаған жеке тұрақты тармақ та қолжетімді.

Артықшылықтар

Виртуалды серверлер бірдей жүйелік шақыру интерфейсін бөліседі және эмуляцияның қосымша шығындары жоқ. Виртуалды серверлерге міндетті түрде түсініксіз дискілік бейнелер қажет емес, олар ортақ файлдық жүйемен және файлдардың ортақ жиынтығымен (жазу кезіндегі қатты сілтемелер арқылы) бөлісе алады. Бұл жүйенің сақтық көшірмесін жасауды және виртуалды серверлер арасында дискілік кеңістікті біріктіруді жеңілдетеді. Виртуалды сервердегі процестер хост жүйесіндегі қалыпты процестер ретінде жұмыс істейді. Бұл толық жүйелік эмуляцияға қарағанда жадты тиімдірек және I/O тиімдірек пайдалануды қамтамасыз етеді, бірақ жадты кеңейту және қазіргі заманғы виртуалды машиналар пайдаланылмаған жадты қайтаруға және хостпен және басқа виртуалды серверлермен дискілік кэшті бөлісуге мүмкіндік береді. Виртуалды сервердегі процестер хосттағы сияқты бір реттегішке кезекке қойылады, бұл қонақ процестерінің SMP жүйелерінде бір уақытта жұмыс істеуіне мүмкіндік береді. Мұны толық жүйелік эмуляциямен іске асыру оңай емес. Желілік байланыс виртуализация емес, оқшаулау негізінде құрылған, сондықтан пакеттер үшін қосымша шығын болмайды. Қауіпсіздік қатері азайтылған. 2+ ядроға және олар арасындағы үлкен интерфейстерге қарағанда аз қосымша код базасы бар бір ядро ғана. Linux-тың нақты уақыттық басымдықтары сияқты жоспарлау мүмкіндіктері.

Кемшіліктер

Хост ядросының түзету қажеттілігі бар. Кластерлеу немесе процестерді көшіру мүмкіндігі қарастырылмаған, сондықтан хост ядросы мен хост компьютері барлық виртуалды серверлер үшін жалғыз сәтсіздік нүктесі болып қалады. Желілік байланыс виртуалдандыруға емес, оқшаулауға негізделген. Бұл әр виртуалды серверге өз ішкі маршрутизациясын немесе қабырға өртін (firewall) орнатуға мүмкіндік бермейді. Кейбір жүйелік шақырулар (көбінесе аппараттық құралдармен байланысты, мысалы, нақты уақыт сағаты) және /proc және /sys файлдық жүйелерінің бөліктері виртуалданбаған күйде қалады. Әр виртуалды сервер үшін дискіге I/O өткізу қабілетін бөлуге рұқсат етілмейді.