WikiDer > Виртуализация на уровне ОС
эта статья нужны дополнительные цитаты для проверка. (Ноябрь 2020) (Узнайте, как и когда удалить этот шаблон сообщения) |
Виртуализация на уровне ОС является Операционная система парадигма, в которой ядро допускает существование нескольких изолированных пространство пользователя экземпляры. Такие экземпляры, называемые контейнеры (LXC, Контейнеры Solaris, Докер), Зоны (Контейнеры Solaris), виртуальные частные серверы (OpenVZ), перегородки, виртуальные среды (VEs), виртуальные ядра (DragonFly BSD), или тюрьмы (FreeBSD тюрьма или chroot jail),[1] могут выглядеть как настоящие компьютеры с точки зрения запущенных на них программ. Компьютерная программа, работающая в обычной операционной системе, может видеть все ресурсы (подключенные устройства, файлы и папки, сетевые ресурсы, Мощность процессора, поддающиеся количественной оценке аппаратные возможности) этого компьютера. Однако программы, работающие внутри контейнера, могут видеть только содержимое контейнера и устройства, назначенные ему.
На Unix-подобный операционных систем, эту функцию можно рассматривать как расширенную реализацию стандарта chroot механизм, который изменяет видимую корневую папку для текущего запущенного процесса и его дочерних элементов. Помимо механизмов изоляции, ядро часто предоставляет Управление ресурсами функции, чтобы ограничить влияние действий одного контейнера на другие контейнеры.
Период, термин контейнер, хотя чаще всего относится к системам виртуализации на уровне ОС, иногда неоднозначно используется для обозначения более полного виртуальная машина среды, работающие в различной степени согласованно с ОС хоста, например Microsoft Hyper-V контейнеры.
Операция
В обычных операционных системах для персональных компьютеров компьютерная программа может видеть (даже если она может не иметь доступа) все ресурсы системы. Они включают:
- Возможности оборудования, которые можно использовать, например ЦПУ и сетевое подключение
- Данные, которые можно читать или записывать, например файлы, папки и сетевые ресурсы
- Связанный периферийные устройства он может взаимодействовать, например ВЭБ-камера, принтер, сканер или факс
Операционная система может разрешать или запрещать доступ к таким ресурсам в зависимости от того, какая программа их запрашивает, и учетная запись пользователя в контексте которого он работает. Операционная система может также скрывать эти ресурсы, так что когда компьютерная программа перечисляет их, они не появляются в результатах перечисления. Тем не менее, с точки зрения программирования, компьютерная программа взаимодействовала с этими ресурсами, а операционная система управляла актом взаимодействия.
С помощью виртуализации операционной системы или контейнеризации можно запускать программы в контейнерах, которым выделяются только части этих ресурсов. Программа, ожидающая увидеть весь компьютер после запуска внутри контейнера, может видеть только выделенные ресурсы и полагает, что это все, что доступно. В каждой операционной системе может быть создано несколько контейнеров, для каждой из которых выделяется подмножество ресурсов компьютера. Каждый контейнер может содержать любое количество компьютерных программ. Эти программы могут работать одновременно или по отдельности и даже могут взаимодействовать друг с другом.
Контейнеризация имеет сходство с виртуализация приложений: В последнем случае только одна компьютерная программа помещается в изолированный контейнер, и изоляция применяется только к файловой системе.
Использует
Виртуализация на уровне операционной системы обычно используется в виртуальный хостинг среды, в которых это полезно для безопасного распределения ограниченных аппаратных ресурсов среди большого числа пользователей, которые не доверяют друг другу. Системные администраторы также могут использовать его для консолидации серверного оборудования, перемещая службы на отдельных хостах в контейнеры на одном сервере.
Другие типичные сценарии включают разделение нескольких программ на отдельные контейнеры для повышения безопасности, независимости оборудования и дополнительных функций управления ресурсами. Однако улучшенная безопасность, обеспечиваемая использованием механизма chroot, далека от надежной.[2] Реализации виртуализации на уровне операционной системы, способные живая миграция также может использоваться для динамической балансировки нагрузки контейнеров между узлами в кластере.
Накладные расходы
Виртуализация на уровне операционной системы обычно требует меньше накладных расходов, чем полная виртуализация потому что программы в виртуальных разделах уровня ОС используют обычные системный вызов интерфейс и не нужно подвергать подражание или работать в промежуточном виртуальная машина, как и в случае с полной виртуализацией (например, VMware ESXi, QEMU, или Hyper-V) и паравиртуализация (такие как Xen или Пользовательский режим Linux). Эта форма виртуализации также не требует аппаратной поддержки для повышения производительности.
Гибкость
Виртуализация на уровне операционной системы не такая гибкая, как другие подходы к виртуализации, поскольку она не может размещать гостевую операционную систему, отличную от хоста, или другое гостевое ядро. Например, с Linux, разные дистрибутивы подходят, но другие операционные системы, такие как Windows, не могут быть размещены. Операционные системы, использующие систематику ввода переменных, имеют ограничения в рамках виртуализированной архитектуры. Методы адаптации, включая аналитику ретрансляции облачных серверов, поддерживают виртуальную среду на уровне ОС в этих приложениях.[3]
Солярис частично преодолевает ограничение, описанное выше, с его брендовые зоны функция, которая дает возможность запускать среду в контейнере, которая имитирует более старую Solaris 8 или 9 версии на хосте Solaris 10. Фирменные зоны Linux (называемые фирменными зонами "lx") также доступны на x86-системы Solaris, обеспечивающие полный Linux пространство пользователя и поддержка выполнения приложений Linux; кроме того, Solaris предоставляет утилиты, необходимые для установки Red Hat Enterprise Linux 3.x или CentOS 3.x Дистрибутивы Linux внутри зон "lx".[4][5] Однако в 2010 году фирменные зоны Linux были удалены из Solaris; в 2014 году они были повторно представлены в Иллюмос, это форк Solaris с открытым исходным кодом, поддерживающий 32-разрядную версию Ядра Linux.[6]
Место хранения
Некоторые реализации предоставляют файловый уровень копирование при записи (CoW) механизмы. (Чаще всего стандартная файловая система используется совместно между разделами, и те разделы, которые изменяют файлы, автоматически создают свои собственные копии.) Это легче выполнять резервное копирование, более эффективно использовать пространство и проще кэшировать, чем копирование на уровне блоков. -записать схемы, общие для виртуализаторов всей системы. Однако виртуализаторы всей системы могут работать с неродными файловыми системами и создавать и откатывать моментальные снимки всего состояния системы.
Реализации
Механизм | Операционная система | Лицензия | Активно развивается с или между | особенности | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Изоляция файловой системы | Копирование при записи | Дисковые квоты | Ограничение скорости ввода / вывода | Ограничения памяти | Квоты ЦП | Сетевая изоляция | Вложенная виртуализация | Контрольные точки раздела и живая миграция | Изоляция привилегий root | ||||
chroot | Наиболее UNIX-подобный операционные системы | Зависит от операционной системы | 1982 | Частичное[а] | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет |
Докер | Linux,[8] FreeBSD,[9] Windows x64 (Pro, Enterprise и Education)[10] macOS [11] | Лицензия Apache 2.0 | 2013 | да | да | Не прямо | да (с 1.10) | да | да | да | да | Только в экспериментальном режиме с CRIU [1] | да (с 1.10) |
Linux-VServer (контекст безопасности) | Linux, Windows Server 2016 | GNU GPLv2 | 2001 | да | да | да | да[b] | да | да | Частичное[c] | ? | Нет | Частичное[d] |
lmctfy | Linux | Лицензия Apache 2.0 | 2013–2015 | да | да | да | да[b] | да | да | Частичное[c] | ? | Нет | Частичное[d] |
LXC | Linux | GNU GPLv2 | 2008 | да[13] | да | Частичное[e] | Частичное[f] | да | да | да | да | да | да[13] |
Сингулярность | Linux | Лицензия BSD | 2015[14] | да[15] | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да[16] |
OpenVZ | Linux | GNU GPLv2 | 2005 | да | да [17] | да | да[г] | да | да | да[час] | Частичное[я] | да | да[j] |
Виртуоззо | Linux, Windows | Пробная версия | 2000[21] | да | да | да | да[k] | да | да | да[час] | Частичное[l] | да | да |
Контейнеры Solaris (Зоны) | иллюзия (OpenSolaris), Солярис | CDDL, Проприетарный | 2004 | да | Да (ZFS) | да | Частичное[м] | да | да | да[n][24][25] | Частичное[o] | Частичное[п][q] | да[р] |
FreeBSD тюрьма | FreeBSD, DragonFly BSD | Лицензия BSD | 2000[27] | да | Да (ZFS) | да[s] | да | да[28] | да | да[29] | да | Частичное[30][31] | да[32] |
vkernel | DragonFly BSD | Лицензия BSD | 2006[33] | да[34] | да[34] | Нет данных | ? | да[35] | да[35] | да[36] | ? | ? | да |
sysjail | OpenBSD, NetBSD | Лицензия BSD | 2006–2009 | да | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет | ? |
WPAR | AIX | Коммерческий проприетарное программное обеспечение | 2007 | да | Нет | да | да | да | да | да[т] | Нет | да[38] | ? |
Виртуальные учетные записи iCore | Windows XP | Бесплатное ПО | 2008 | да | Нет | да | Нет | Нет | Нет | Нет | ? | Нет | ? |
Песочница | Windows | GNU GPLv3 | 2004 | да | да | Частичное | Нет | Нет | Нет | Частичное | Нет | Нет | да |
systemd-nspawn | Linux | GNU LGPLv2.1 + | 2010 | да | да | да[39][40] | да[39][40] | да[39][40] | да[39][40] | да | ? | ? | да |
Турбо | Windows | Freemium | 2012 | да | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет | да |
РКТ | Linux | Лицензия Apache 2.0 | 2014[41] | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Смотрите также
- Контейнерная оркестровка
- Пространства имен Linux
- cgroups
- Песочница (разработка программного обеспечения)
- CoreOS
- Гипервизор
- Создатели портативных приложений
- runC
- Ядро разделения
- Бессерверные вычисления
- Гипервизор хранилища
- Виртуальный частный сервер (VPS)
- Разделение виртуальных ресурсов
Заметки
- ^ Пользователь root может легко выйти из chroot. Chroot никогда не предполагалось использовать в качестве механизма безопасности.[7]
- ^ а б Используя CFQ планировщик, для каждого гостя отдельная очередь.
- ^ а б Сеть основана на изоляции, а не на виртуализации.
- ^ а б В контейнере безопасными считаются 14 пользовательских возможностей. Остальное не может быть предоставлено процессам в этом контейнере, не позволяя этому процессу потенциально мешать вещам за пределами этого контейнера.[12]
- ^ Дисковые квоты на контейнер возможны при использовании отдельных разделов для каждого контейнера с помощью LVM, или когда базовая файловая система хоста - btrfs, и в этом случае автоматически используются подтомы btrfs.
- ^ Ограничение скорости ввода-вывода поддерживается при использовании Btrfs.
- ^ Доступно, начиная с ядра Linux 2.6.18-028stable021. Реализация основана на планировщике дискового ввода-вывода CFQ, но это двухуровневая схема, поэтому приоритет ввода-вывода определяется не для каждого процесса, а для каждого контейнера.[18]
- ^ а б Каждый контейнер может иметь свои собственные IP-адреса, правила брандмауэра, таблицы маршрутизации и т. Д. Возможны три различных сетевых схемы: на основе маршрутов, на основе моста и с назначением реального сетевого устройства (NIC) в контейнер.
- ^ Контейнеры Docker могут работать внутри контейнеров OpenVZ.[19]
- ^ Каждый контейнер может иметь root-доступ, не затрагивая другие контейнеры.[20]
- ^ Доступно с версии 4.0, январь 2008 г.
- ^ Контейнеры Docker могут работать внутри контейнеров Virtuozzo.[22]
- ^ Да с иллюминами[23]
- ^ Увидеть Виртуализация сети OpenSolaris и управление ресурсами Больше подробностей.
- ^ Только когда верхним уровнем является зона KVM (illumos) или зона kz (Oracle).
- ^ Начиная с бета-версии Solaris 11.3, зоны ядра Solaris могут использовать динамическую миграцию.
- ^ Реализована холодная миграция (выключение-перемещение-перезапуск).
- ^ Неглобальные зоны ограничены, поэтому они не могут влиять на другие зоны посредством подхода, ограничивающего возможности. Глобальная зона может управлять неглобальными зонами.[26]
- ^ Установите флажок "allow.quotas" и раздел "Jails и файловые системы" на Справочная страница FreeBSD jail для подробностей.
- ^ Доступно с TL 02.[37]
использованная литература
- ^ Хогг, Скотт (26 мая 2014 г.). «Программные контейнеры: используются чаще, чем можно себе представить». Сетевой мир. Network World, Inc. Получено 2015-07-09.
Существует множество других систем виртуализации на уровне ОС, таких как Linux OpenVZ, Linux-VServer, FreeBSD Jails, разделы рабочей нагрузки AIX (WPAR), контейнеры HP-UX (SRP), контейнеры Solaris и другие.
- ^ Корф, Янек; Надежда, Пако; Поттер, Брюс (2005). Освоение безопасности FreeBSD и OpenBSD. Серия О'Рейли. O'Reilly Media, Inc. стр. 59. ISBN 0596006268.
- ^ Хуанг, Д. (2015). «Опыт использования виртуализации на уровне ОС для блочного ввода-вывода». Материалы 10-го семинара по параллельному хранению данных.
- ^ «Руководство системного администратора: Oracle Solaris Containers-Resource Management и Oracle Solaris Zones, Глава 16: Введение в зоны Solaris». Корпорация Oracle. 2010. Получено 2014-09-02.
- ^ «Руководство системного администратора: Oracle Solaris Containers-Resource Management и Oracle Solaris Zones, Глава 31: О типовых зонах и типизированной зоне Linux». Корпорация Oracle. 2010. Получено 2014-09-02.
- ^ Брайан Кэнтрилл (28 сентября 2014 г.). «Мечта жива! Запуск контейнеров Linux на ядре illumos». slideshare.net. Получено 2014-10-10.
- ^ «3.5. Ограничение среды вашей программы». freebsd.org.
- ^ «Docker отказывается от LXC в качестве среды выполнения по умолчанию». InfoQ.
- ^ «Докер приходит во FreeBSD». FreeBSDNews.com. 9 июля 2015 года.
- ^ «Начните работу с Docker для Windows». Докер.
- ^ «Начните работу с Docker Desktop для Mac». Документация Docker. 6 декабря 2019.
- ^ «Бумага - Linux-VServer». linux-vserver.org.
- ^ а б Грабер, Стефан (1 января 2014 г.). «LXC 1.0: Функции безопасности [6/10]». Получено 12 февраля 2014.
LXC теперь поддерживает пространства имен пользователей. [...] LXC больше не работает с правами root, поэтому, даже если злоумышленнику удастся покинуть контейнер, он обнаружит, что имеет привилегии обычного пользователя на хосте.
- ^ "Sylabs переносит контейнеры Singularity на коммерческие сайты суперкомпьютеров HPC | TOP500". www.top500.org.
- ^ «Перенаправление…». www.sylabs.io.
- ^ Курцер, Грегори М .; Сочат, Ванесса; Бауэр, Майкл В. (11 мая 2017 г.). «Сингулярность: научные контейнеры для мобильности вычислений». PLOS ONE. 12 (5): e0177459. Дои:10.1371 / journal.pone.0177459. ЧВК 5426675. PMID 28494014 - через журналы PLoS.
- ^ Бронников, Сергей. «Сравнение на вики-странице OpenVZ». OpenVZ вики. OpenVZ. Получено 28 декабря 2018.
- ^ «Приоритеты ввода-вывода для контейнеров». OpenVZ Virtuozzo Containers вики.
- ^ «Докер внутри CT».
- ^ "Контейнер". OpenVZ Virtuozzo Containers вики.
- ^ «Первоначальный публичный пререлиз Virtuozzo (в то время он назывался завершенным ASP)».
- ^ «Parallels Virtuozzo теперь обеспечивает встроенную поддержку Docker».
- ^ Пиевский, Билл. "Наш дроссель ввода-вывода ZFS".
- ^ Виртуализация сети и управление ресурсами (арбалет): часто задаваемые вопросы В архиве 2008-06-01 на Wayback Machine
- ^ «Управление виртуализацией сети и сетевыми ресурсами в Oracle® Solaris 11.2». docs.oracle.com.
- ^ Администрирование Oracle Solaris 11.1, Oracle Solaris Zones, Oracle Solaris 10 Zones and Resource Management E29024.pdf, стр. 356–360. Имеется в наличии в архиве.
- ^ «Сдерживайте энтузиазм - Часть вторая: тюрьмы, зоны, OpenVZ и LXC».
Тюрьмы были впервые представлены во FreeBSD 4.0 в 2000 году.
- ^ "Hierarchical_Resource_Limits - FreeBSD Wiki". Wiki.freebsd.org. 2012-10-27. Получено 2014-01-15.
- ^ «Реализация клонируемого сетевого стека в ядре FreeBSD» (PDF). usenix.org. 13 июня 2003 г.
- ^ «VPS для FreeBSD». Получено 2016-02-20.
- ^ "[Объявление] VPS // Виртуализация ОС // альфа-версия". Получено 2016-02-20.
- ^ «3.5. Ограничение среды вашей программы». Freebsd.org. Получено 2014-01-15.
- ^ Мэтью Диллон (2006). "sys / vkernel.h". Перекрестная ссылка BSD. DragonFly BSD.
- ^ а б "vkd (4) - Диск виртуального ядра". DragonFly BSD.
обрабатывает образ диска как копирование при записи.
- ^ а б Саша Вильднер (2007-01-08). "vkernel, vcd, vkd, vke - архитектура виртуального ядра". Руководство по разной информации DragonFly. DragonFly BSD. Сложить резюме.
- ^ "vke (4) - Виртуальное ядро Ethernet". DragonFly BSD.
- ^ "Информация о пакете исправлений IBM для: Изоляция сети WPAR - США". ibm.com.
- ^ «Мобильность приложений в реальном времени в AIX 6.1». www.ibm.com. 3 июня 2008 г.
- ^ а б c d "systemd-nspawn". www.freedesktop.org.
- ^ а б c d «2.3. Изменение групп управления Red Hat Enterprise Linux 7». Портал для клиентов Red Hat.
- ^ Полви, Алекс. "CoreOS создает среду выполнения контейнера, rkt". Блог CoreOS. Получено 12 марта 2019.
внешние ссылки
- Введение в виртуализацию
- Краткое введение в три различных метода виртуализации
- Виртуализация и контейнеризация инфраструктуры приложений: сравнение, 22 июня 2015 г., Матис Йерун Шиперс
- Контейнеры и постоянные данные, LWN.net, 28 мая, 2015, Джош Беркус