Linux жүйесіндегі виртуализация: UML – ядроны өз интерфейсіне порттау арқылы бірнеше Linux жүйесін қауіпсіз түрде іске қосуға мүмкіндік береді. Жеңіл, тұрақты!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Виртуализациялау бағдарламалық жасақтамасы
Virtualisation software
Пайдаланушы режимі Linux (UML) – Linux операциялық жүйесі үшін, Linux ядросының архитектуралық түрлендіріліміне және өзіндік жүйелік шақыру интерфейсіне негізделген виртуализациялау жүйесі. Ол бірнеше виртуалды Linux ядросына негізделген операциялық жүйелерді (қонақтар деп аталады) қалыпты Linux жүйесінде (хост деп аталады) қосымша ретінде іске қосуға мүмкіндік береді. UM архитектурасы үшін компиляцияланған Linux ядросы, басқа Linux ядросының астында процесс ретінде, пайдаланушы кеңістігінде, хост ортасының конфигурациясына немесе тұрақтылығына әсер етпей, іске қосылуы мүмкін. Бұл әдіс пайдаланушыға бір аппараттық құралда көптеген виртуалды Linux машиналарын іске қосуға мүмкіндік береді, бұл әдетте хост ортасының конфигурациясын немесе тұрақтылығын өзгертпей, белгілі бір деңгейде оқшаулауды қамтамасыз етеді, себебі әрбір қонақ – пайдаланушы кеңістігінде процесс ретінде іске қосылатын қарапайым қосымша.
User mode Linux (UML) is a virtualization system for the Linux operating system based on an architectural port of the Linux kernel to its own system call interface, which enables multiple virtual Linux kernel based operating systems (known as guests) to run as an application within a normal Linux system (known as the host). A Linux kernel compiled for the um architecture can then boot as a process under another Linux kernel, entirely in user space, without affecting the host environment's configuration or stability. This method gives the user a way to run many virtual Linux machines on a single piece of hardware, allowing some isolation, typically without changing the configuration or stability of the host environment because each guest is just a regular application running as a process in user space.
Қолданбалар
UML-ді пайдалану арқылы көптеген мүмкіндіктер ашылады. UML ортасынан желілік қызметтерді іске қосуға болады және UML ортасы жұмыс істейтін негізгі Linux жүйесінен толыққанды оқшауланады. Әкімшілер UML-ді өз компьютерлерінің немесе желілерінің қауіпсіздігін сынауға мүмкіндік беретін honeypots орнату үшін пайдалана алады. UML хост жүйесіне зиян келтірмей жаңа бағдарламалық жасақтаманы сынау және түзету үшін қолданылады. UML сондай-ақ оқыту және зерттеу мақсатында да қолданылуы мүмкін, бұл жоғары деңгейдегі қауіпсіздікпен нақты Linux желілік ортасын ұсынады. UML ортасында хост және қонақ ядроларының нұсқалары сәйкес келуі міндетті емес, сондықтан Linux-тың ең соңғы нұсқасын (bleeding edge) пайдаланушы режимінде, ескі ядросы бар жүйеде сынауға болады. UML ядроны түзетуді бір машинада орындауға да мүмкіндік береді, ал басқа ядроны түзету құралдары (мысалы, kgdb) нөлдік модем кабелімен қосылған екі машинаны талап етеді. Кейбір веб-хостинг провайдерлері нақты арналған серверлерге қарағанда төмен бағамен UML-мен қуатталған виртуалды серверлерді ұсынады. Әрбір клиент өзінің жеке жүйесі сияқты түбірлік (root) кіруге ие, бірақ шындығында бір физикалық компьютер көптеген пайдаланушылар арасында бөліседі. libguestfs 1.24 нұсқасынан бастап QEMU немесе KVM-ді пайдаланудың орнына UML бэкенді қолдайды.
Numerous things become possible through the use of UML. One can run network services from a UML environment and remain totally sequestered from the main Linux system in which the UML environment runs. Administrators can use UML to set up honeypots, which allow one to test the security of one's computers or network. UML can serve to test and debug new software without adversely affecting the host system. UML can also be used for teaching and research, providing a realistic Linux networked environment with a high degree of safety. In UML environments, host and guest kernel versions don't need to match, so it is entirely possible to test a "bleeding edge" version of Linux in User mode on a system running a much older kernel. UML also allows kernel debugging to be performed on one machine, where other kernel debugging tools (such as kgdb) require two machines connected with a null modem cable. Some web hosting providers offer UML powered virtual servers for lower prices than true dedicated servers. Each customer has root access on what appears to be their own system, while in reality one physical computer is shared between many people. libguestfs has supported a UML backend since version 1.24 as an alternative to using QEMU or KVM.
Linux ядросына интеграциялау
UML қонақ қолданбасы (Linux екілік ELF) бастапқыда 2.2.x нұсқасынан жоғары кейбір ядро нұсқаларына жаңырту ретінде қолжетімді болды, ал 2.2.x нұсқасынан жоғары кез келген ядросы бар хост оны желілік режимде (яғни SKAS3 емес) оңай қолдады. Linux 2.6.0 нұсқасынан бастап ол негізгі ядроның бастапқы кодына енгізілді. Хост ядросын жаңартуды қажет етпейтін жеке ядролық адрес кеңістігін (SKAS) іске асыру әдісі пайда болды. Бұл бұрынғы Traced Thread тәсілімен салыстырғанда өнімділікті және қауіпсіздікті арттырады, онда UML-де іске қосылған процестер хосттың көзқарасы бойынша бірдей адрес кеңістігін бөліседі, нәтижесінде UML ішіндегі жад жадты басқару бірлігімен қорғалмайды. Қазіргі SKAS қолданатын UML-ден айырмашылығы, SKAS емес хостта іске қосылған UML-дегі қателік немесе қауіпті бағдарламалық құрал басқа UML процестерінің жадын немесе тіпті UML ядросының жадын оқи алады.
The UML guest application (a Linux binary ELF) was originally available as a patch for some Kernel versions above 2.2. x, and the host with any kernel version above 2.2. x supported it easily in the thread mode (i. e., non SKAS3). As of Linux 2.6.0, it is integrated into the main kernel source tree. A method of running a separate kernel address space (SKAS) that does not require host kernel patching has been implemented. This improves performance and security over the old Traced Thread approach, in which processes running in the UML share the same address space from the host's point of view, which leads the memory inside the UML to not be protected by the memory management unit. Unlike the current UML using SKAS, buggy or malicious software inside a UML running on a non SKAS host could be able to read the memory space of other UML processes or even the UML kernel memory.
Басқа технологиялармен салыстыру
Пайдаланушы режимі Linux кейбір бәсекелес технологияларға, мысалы Xen және OpenVZ қарағанда нашар өнімділікке ие деп есептеледі. UML-ге x86 виртуализациясын қосу жөніндегі болашақ жұмыстар осы кемшілікті азайтуы мүмкін. Xen-нің (бәсекелес технология) артықшылығы ретінде жиі айтылатыны – жиекке орналасқан жергілікті сақтауды (TLS) қолдауы. Қазіргі кезде соңғы UML ядроларында да бұл мүмкіндік қолдалады. Xen бүкіл машинаны виртуалдыландыруға бағытталған, сондықтан Xen машинасының үстінде жұмыс істейтін барлық жүйелер нағыз виртуалды машиналар болып табылады. UML-де хост машинасы ешқандай жолмен виртуалды емес, тек қонақ жүйелер ғана нағыз виртуалды машиналар болып табылады. Бұл UML қонақтарына хост файлдық жүйелері мен аппараттық құралдарға тікелей қол жеткізуге мүмкіндік береді, мұнда хост каталогын бейнелеу кең таралған (мысалы, →).
User mode Linux is generally considered to have lower performance than some competing technologies, such as Xen and OpenVZ. Future work in adding support for x86 virtualization to UML may reduce this disadvantage. Often cited as a strength of Xen (a competing technology) is support for thread local storage (TLS). This is now also supported in the latest UML kernels. Xen concentrates on virtualizing the whole machine, and thus all systems running on a Xen machine are really virtual machines. In UML, the host machine is not virtualized in any way, and only guest systems are true virtual machines. This allows UML guest direct access to host filesystems and hardware, where it is common to map a host directory (e. g., → ).
Қолдауы бар платформалар
UML бастапқыда x86 процессорлар жиынтығы үшін жасалған, бірақ IA 64 және PowerPC сияқты басқа процессорларға да көшірілген.
UML was originally designed for the x86 instruction set, but has also been ported to others including IA 64 and PowerPC.