Введение

Парадигма операционной системы, позволяющая создавать несколько изолированных инстанций пользовательского пространства.

Виртуализация на уровне ОС – это парадигма виртуализации операционной системы (ОС), в которой ядро позволяет создавать несколько изолированных инстанций пользовательского пространства, называемых контейнерами (LXC, Solaris Containers, AIX WPARs, HP UX SRP Containers, Docker, Podman), зонами (Solaris Containers), виртуальными частными серверами (OpenVZ), разделами, виртуальными средами (VEs), виртуальными ядрами (DragonFly BSD) или джейлами (FreeBSD jail или chroot jail). Эти инстанции могут выглядеть как реальные компьютеры с точки зрения программ, работающих в них. Компьютерная программа, работающая в обычной операционной системе, может видеть все ресурсы (подключенные устройства, файлы и папки, сетевые ресурсы, вычислительную мощность процессора, количественно определяемые аппаратные возможности) этого компьютера. Однако программы, работающие внутри контейнера, видят только содержимое контейнера и устройства, назначенные этому контейнеру. В Unix-подобных операционных системах эта функция может рассматриваться как расширенная реализация стандартного механизма chroot, который изменяет видимую корневую директорию для текущего выполняемого процесса и его дочерних процессов. Помимо механизмов изоляции, ядро часто предоставляет функции управления ресурсами для ограничения влияния активности одного контейнера на другие контейнеры. Linux-контейнеры основаны на механизмах виртуализации, изоляции и управления ресурсами, предоставляемых ядром Linux, в частности, пространствах имен Linux и cgroups. Термин «контейнер», хотя и чаще всего относится к системам виртуализации уровня ОС, иногда неоднозначно используется для обозначения полноценных сред виртуальных машин, работающих в различной степени взаимодействия с хост-ОС, например, контейнеров Hyper-V от Microsoft. Более подробный исторический обзор виртуализации в целом с 1960 года можно найти в Хронологии развития виртуализации.

Применение

Виртуализация на уровне операционной системы широко используется в средах виртуального хостинга, где она позволяет безопасно распределять ограниченные аппаратные ресурсы между большим количеством пользователей, не доверяющих друг другу. Системные администраторы также могут использовать её для консолидации серверного оборудования, перемещая службы с отдельных хостов в контейнеры на одном сервере. Другие типичные сценарии включают разделение нескольких программ по отдельным контейнерам для повышения безопасности, аппаратной независимости и расширенных возможностей управления ресурсами. Однако усиленная безопасность, обеспечиваемая механизмом chroot, не является абсолютной. Реализации виртуализации на уровне операционной системы, поддерживающие живую миграцию, также могут использоваться для динамической балансировки нагрузки между контейнерами в кластере.

Навес

Виртуализация на уровне операционной системы обычно требует меньше накладных расходов, чем полная виртуализация, поскольку программы в виртуальных разделах уровня ОС используют стандартный системный интерфейс операционной системы и не нуждаются в эмуляции или запуске в промежуточной виртуальной машине, как это происходит при полной виртуализации (например, VMware ESXi, QEMU или Hyper-V) и паравиртуализации (например, Xen или User Mode Linux). Для эффективной работы эта форма виртуализации также не требует аппаратной поддержки.

Гибкость

Виртуализация на уровне операционной системы не так гибка, как другие подходы к виртуализации, поскольку она не позволяет запускать гостевую операционную систему, отличную от хост-системы, или другое гостевое ядро. Например, в случае Linux различные дистрибутивы допустимы, но другие операционные системы, такие как Windows, разместить нельзя. Операционные системы, использующие переменные механизмы ввода, подвержены ограничениям в виртуализированной архитектуре. Методы адаптации, включая аналитику ретрансляции данных с облачных серверов, поддерживают виртуальную среду на уровне ОС в этих приложениях. Solaris частично решает описанную выше проблему благодаря фирменной функции зон, которая позволяет запускать окружение в контейнере, эмулирующем более старые версии Solaris 8 или 9 на хосте Solaris 10. Фирменные зоны Linux (именуемые "lx" зонами) также доступны на x86-системах Solaris, предоставляя полное пользовательское пространство Linux и поддержку выполнения приложений Linux; кроме того, Solaris предоставляет утилиты, необходимые для установки дистрибутивов Red Hat Enterprise Linux 3.x или CentOS 3.x Linux внутри "lx" зон. Однако в 2010 году зоны Linux были удалены из Solaris; в 2014 году они были вновь внедрены в Illumos – форк Solaris с открытым исходным кодом, поддерживающий 32-битные ядра Linux.

Хранение

Некоторые реализации предоставляют механизмы копирования на уровне файлов при записи (CoW). (Как правило, стандартная файловая система используется совместно несколькими разделами, и разделы, вносящие изменения в файлы, автоматически создают собственные копии.) Это упрощает резервное копирование, более эффективно использует дисковое пространство и позволяет проще организовать кэширование, чем схемы копирования на уровне блоков, часто используемые в виртуализаторах всей системы. Однако виртуализаторы всей системы могут работать с файловыми системами, отличными от родных, и создавать снимки состояния всей системы с возможностью отката.