Виртуализация на уровне ОС

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

Виртуализация на уровне ОС - это операционная системная парадигма, в которой ядро ​​ допускает существование нескольких изолированных экземпляров пользовательского пространства. Такие экземпляры, называемые контейнерами (LXC, контейнерами Solaris, Docker ), зонами (Solaris контейнеры ), виртуальные частные серверы (OpenVZ ), разделы, виртуальные среды (VE), виртуальные ядра (DragonFly BSD ) или jail (FreeBSD jail или chroot jail ), могут выглядеть как настоящие компьютеры с точки зрения просмотра запущенных в них программ. Компьютерная программа, работающая в обычной операционной системе, может видеть все ресурсы (подключенные устройства, файлы и папки, общие сетевые ресурсы, мощность процессора, поддающиеся количественной оценке аппаратные возможности) этого компьютера. Однако программы, работающие внутри контейнера, могут видеть только содержимое контейнера и устройства, назначенные ему.

В Unix-подобных операционных системах эту функцию можно рассматривать как расширенную реализацию стандартного механизма chroot, который изменяет кажущуюся корневую папку для текущего запущенного процесс и его дочерние элементы. Помимо механизмов изоляции, ядро ​​часто предоставляет функции управления ресурсами, чтобы ограничить влияние действий одного контейнера на другие контейнеры.

Термин контейнер, хотя чаще всего относится к системам виртуализации на уровне ОС, иногда неоднозначно используется для обозначения более полных виртуальных машин сред, работающих в разной степени согласованно с ОС хоста, например Контейнеры Microsoft Hyper-V.

Содержание

  • 1 Операция
  • 2 Использование
    • 2.1 Накладные расходы
    • 2.2 Гибкость
    • 2.3 Хранение
  • 3 Реализации
  • 4 См. Также
  • 5 Примечания
  • 6 Ссылки
  • 7 Внешние ссылки

Операция

В обычных операционных системах для персональных компьютеров компьютерная программа может видеть (даже если она может не иметь доступа) все ресурсы системы. К ним относятся:

  1. Возможности оборудования, которые можно использовать, такие как ЦП и сетевое соединение
  2. Данные, которые можно читать или записывать, например файлы, папки и общие сетевые ресурсы
  3. Подключенные периферийные устройства, с которыми оно может взаимодействовать, например веб-камера, принтер, сканер или факс

. Операционная система может разрешать или запрещать доступ к таким ресурсы в зависимости от того, какая программа их запрашивает, и учетной записи пользователя , в контексте которой она выполняется. Операционная система может также скрывать эти ресурсы, так что когда компьютерная программа перечисляет их, они не появляются в результатах перечисления. Тем не менее, с точки зрения программирования, компьютерная программа взаимодействовала с этими ресурсами, а операционная система управляла актом взаимодействия.

С помощью виртуализации операционной системы или контейнеризации можно запускать программы в контейнерах, которым выделяются только части этих ресурсов. Программа, ожидающая увидеть весь компьютер после запуска внутри контейнера, может видеть только выделенные ресурсы и полагает, что это все, что доступно. В каждой операционной системе может быть создано несколько контейнеров, для каждой из которых выделяется подмножество ресурсов компьютера. Каждый контейнер может содержать любое количество компьютерных программ. Эти программы могут работать одновременно или по отдельности и даже могут взаимодействовать друг с другом.

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

Использует

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

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

Накладные расходы

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

Гибкость

Виртуализация на уровне операционной системы не такая гибкая, как другие подходы к виртуализации, поскольку она не может размещать гостевую операционную систему, отличную от хоста, или другое гостевое ядро. Например, для Linux другие дистрибутивы подходят, но другие операционные системы, такие как Windows, не могут быть размещены. Операционные системы, использующие систематику ввода переменных, имеют ограничения в рамках виртуализированной архитектуры. Методы адаптации, включая аналитику ретрансляции облачных серверов, поддерживают виртуальную среду на уровне ОС в этих приложениях.

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

Хранилище

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

Реализации

МеханизмОперационная системаЛицензияАктивно разрабатывается сВозможности
Изоляция файловой системы.Копирование при записи Дисковые квоты Ограничение скорости ввода-выводаОграничение памятиСетевая изоляцияВложенная виртуализацияКонтрольные точки раздела и в реальном времени миграцияИзоляция привилегий root
chroot Большинство UNIX-подобных операционных системЗависит от операционной системы1982ЧастичноНетНетНетНетНетНетДаНетНет
Docker Linux, FreeBSD, Windows x64 (Pro, Enterprise и Education) macOS Лицензия Apache 2.0 2013ДаДаНе напрямуюДа (с версии 1.10)ДаДаДаДаТолько в экспериментальном режиме с CRIU [1] Да (начиная с версии 1.10)
Linux-VServer. (контекст безопасности)Linux, Wi ndows Server 2016 GNU GPLv2 2001ДаДаДаДаДаДаЧастично?НетЧастично
lmctfy Linux Лицензия Apache 2.0 2013–2015 гг.ДаДаДаДаДаДаЧастично?НетЧастично
LXC Linux GNU GPLv2 2008ДаДаЧастичноЧастичноДаДаДаДаДаДа
Singularity Linux Лицензия BSD 2015ДаДаДаНетНетНетНетНетНетДа
OpenVZ Linux GNU GPLv2 2005ДаДаДаДаДаДаДаЧастичноДаДа
Virtuozzo Linux, Windows Пробная версия 2000ДаДаДаДаДаДаДаЧастичноДаДа
Сол Контейнеры aris (Зоны)illumos (OpenSolaris ),. Solaris CDDL,. Собственные 2004ДаДа (ZFS)ДаЧастичноДаДаДаЧастичноЧастичноДа
FreeBSD jail FreeBSD, DragonFly BSD Лицензия BSD 2000ДаДа (ZFS)ДаДаДаДаДаДаЧастичноДа
vkernel DragonFly BSD Лицензия BSD 2006ДаДаН / Д?ДаДаДа??Да
sysjail OpenBSD, NetBSD Лицензия BSD 2006–2009ДаНетНетНетНетНетДаНетНет?
WPARs AIX Коммерческое проприетарное программное обеспечение 2007ДаНетДаДаДаДаДаНетДа?
Виртуальные учетные записи iCore Windows XP Бесплатное ПО 2008ДаN oДаНетНетНетНет?Нет?
Sandboxie Windows GNU GPLv3 2004ДаДаЧастичноНетНетНетЧастичноНетНетДа
systemd-nspawn Linux GNU LGPLv2.1 + 2010ДаДаДаДаДаДаДа??Да
Turbo Windows Freemium 2012ДаНетНетНетНетНетДаНетНетДа
RKT Linux Apache Лицензия 2.0 2014??????????

См. Также

Примечания

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-01 06:37:24
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте