Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

Операция [ править ]

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

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

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

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

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

Использует [ редактировать ]

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

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

Накладные расходы [ править ]

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

Гибкость [ править ]

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

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

Хранилище [ править ]

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

Реализации [ править ]

См. Также [ править ]

  • Контейнерная оркестровка
  • Пространства имен Linux
  • cgroups
  • Песочница (разработка программного обеспечения)
  • CoreOS
  • Гипервизор
  • Создатели портативных приложений
  • runC
  • Ядро разделения
  • Бессерверные вычисления
  • Гипервизор хранилища
  • Виртуальный частный сервер (VPS)
  • Разделение виртуальных ресурсов

Заметки [ править ]

  1. ^ Пользователь root может легко выйти из chroot. Chroot никогда не предполагалось использовать в качестве механизма безопасности. [7]
  2. ^ a b При использовании планировщика CFQ для каждого гостя создается отдельная очередь.
  3. ^ a b Сеть основана на изоляции, а не на виртуализации.
  4. ^ a b В контейнере безопасными считаются 14 пользовательских возможностей. Остальное не может быть предоставлено процессам в этом контейнере, не позволяя этому процессу потенциально мешать вещам за пределами этого контейнера. [12]
  5. ^ Дисковые квоты на контейнер возможны при использовании отдельных разделов для каждого контейнера с помощью LVM или когда базовая файловая система хоста - btrfs, и в этом случае автоматически используются подтомы btrfs.
  6. ^ Ограничение скорости ввода-вывода поддерживается при использовании Btrfs .
  7. ^ Доступно, начиная с ядра Linux 2.6.18-028stable021. Реализация основана на планировщике дискового ввода-вывода CFQ, но это двухуровневая схема, поэтому приоритет ввода-вывода определяется не для каждого процесса, а для каждого контейнера. [18]
  8. ^ a b Каждый контейнер может иметь свои собственные IP-адреса, правила брандмауэра, таблицы маршрутизации и так далее. Возможны три различные сетевые схемы: на основе маршрутов, на основе моста и с назначением реального сетевого устройства ( NIC ) контейнеру.
  9. ^ Контейнеры Docker могут работать внутри контейнеров OpenVZ. [19]
  10. ^ Каждый контейнер может иметь root-доступ, не затрагивая другие контейнеры. [20]
  11. ^ Доступно с версии 4.0, январь 2008 г.
  12. ^ Контейнеры Docker могут работать внутри контейнеров ПК Р- Виртуализация. [22]
  13. ^ Да, с иллюминаторами [23]
  14. ^ См. Дополнительные сведения в разделе « Виртуализация сети и управление ресурсами OpenSolaris» .
  15. ^ Только когда верхним уровнем является зона KVM (illumos) или зона kz (Oracle).
  16. ^ Начиная с бета-версии Solaris 11.3, зоны ядра Solaris могут использовать динамическую миграцию.
  17. ^ Реализована холодная миграция (выключение-перемещение-перезапуск).
  18. ^ Неглобальные зоны ограничены, поэтому они не могут влиять на другие зоны посредством подхода, ограничивающего возможности. Глобальная зона может управлять неглобальными зонами. [26]
  19. ^ Проверьте опцию "allow.quotas" и раздел "Jails and File Systems" на странице руководства FreeBSD jail для подробностей.
  20. ^ Доступно с 02 TL. [37]

Ссылки [ править ]

  1. ^ Хогг, Скотт (2014-05-26). «Программные контейнеры: используются чаще, чем думают» . Сетевой мир . Network World, Inc . Проверено 9 июля 2015 . Существует множество других систем виртуализации на уровне ОС, таких как: Linux OpenVZ, Linux-VServer, FreeBSD Jails, разделы рабочей нагрузки AIX (WPAR), контейнеры HP-UX (SRP), контейнеры Solaris и другие.
  2. ^ Корфф, Янек; Надежда, Пако; Поттер, Брюс (2005). Освоение FreeBSD и OpenBSD Security . Серия О'Рейли. O'Reilly Media, Inc. стр. 59. ISBN 0596006268.
  3. Перейти ↑ Huang, D (2015). «Опыт использования виртуализации на уровне ОС для блочного ввода-вывода». Материалы 10-го семинара по параллельному хранению данных .
  4. ^ «Руководство системного администратора: Oracle Solaris Containers-Resource Management и Oracle Solaris Zones, Глава 16: Введение в зоны Solaris» . Корпорация Oracle . 2010 . Проверено 2 сентября 2014 .
  5. ^ «Руководство системного администратора: Oracle Solaris Containers-Resource Management и Oracle Solaris Zones, Глава 31: О типовых зонах и типовых зонах Linux» . Корпорация Oracle . 2010 . Проверено 2 сентября 2014 .
  6. ^ Брайан Кантрилл (2014-09-28). «Мечта жива! Запуск контейнеров Linux на ядре illumos» . slideshare.net . Проверено 10 октября 2014 .
  7. ^ «3.5. Ограничение среды вашей программы» . freebsd.org .
  8. ^ «Docker отбрасывает LXC как среду исполнения по умолчанию» . InfoQ .
  9. ^ «Докер приходит во FreeBSD» . FreeBSDNews.com . 9 июля 2015 года.
  10. ^ «Начало работы с Docker для Windows» . Докер .
  11. ^ «Начните работу с Docker Desktop для Mac» . Документация Docker . 6 декабря 2019.
  12. ^ «Бумага - Linux-VServer» . linux-vserver.org .
  13. ^ a b Грабер, Стефан (1 января 2014 г.). «LXC 1.0: Функции безопасности [6/10]» . Проверено 12 февраля 2014 . LXC теперь поддерживает пространства имен пользователей. [...] LXC больше не работает как root, поэтому даже если злоумышленнику удастся покинуть контейнер, он обнаружит, что имеет привилегии обычного пользователя на хосте.
  14. ^ "Sylabs приносит контейнеры сингулярности в коммерческие узлы суперкомпьютеров HPC | TOP500" . www.top500.org .
  15. ^ «Перенаправление…» . www.sylabs.io .
  16. ^ Курцер, Грегори М .; Сочат, Ванесса; Бауэр, Майкл В. (11 мая 2017 г.). «Сингулярность: научные контейнеры для мобильности вычислений» . PLOS ONE . 12 (5): e0177459. DOI : 10.1371 / journal.pone.0177459 . PMC 5426675 . PMID 28494014 - через журналы PLoS.  
  17. Бронников, Сергей. «Сравнение на вики-странице OpenVZ» . OpenVZ Wiki . OpenVZ . Проверено 28 декабря 2018 .
  18. ^ «Приоритеты ввода-вывода для контейнеров» . OpenVZ Virtuozzo Containers Wiki .
  19. ^ «Докер внутри CT» .
  20. ^ «Контейнер» . OpenVZ Virtuozzo Containers Wiki .
  21. ^ «Первоначальный публичный предварительный выпуск Virtuozzo (в то время он назывался завершенным ASP)» .
  22. ^ «Parallels Virtuozzo теперь обеспечивает встроенную поддержку Docker» .
  23. ^ Пиевски, Билл. «Наш дроссель ввода-вывода ZFS» .
  24. ^ Часто задаваемые вопросы о сетевой виртуализации и контроле ресурсов (арбалет) Архивировано 1 июня 2008 г. на Wayback Machine
  25. ^ «Управление виртуализацией сети и сетевыми ресурсами в Oracle® Solaris 11.2» . docs.oracle.com .
  26. ^ Администрирование Oracle Solaris 11.1, Oracle Solaris Zones, Oracle Solaris 10 Zones and Resource Management E29024.pdf, стр. 356–360. Доступно в архиве .
  27. ^ «Сдерживайте свой энтузиазм - Часть вторая: тюрьмы, зоны, OpenVZ и LXC» . Тюрьмы были впервые представлены во FreeBSD 4.0 в 2000 году.
  28. ^ «Иерархические_Ресурсы_Пределы - FreeBSD Wiki» . Wiki.freebsd.org. 2012-10-27 . Проверено 15 января 2014 .
  29. ^ «Реализация клонируемого сетевого стека в ядре FreeBSD» (PDF) . usenix.org. 13 июня 2003 г.
  30. ^ "VPS для FreeBSD" . Проверено 20 февраля 2016 .
  31. ^ "[Объявление] VPS // Виртуализация ОС // альфа-версия" . Проверено 20 февраля 2016 .
  32. ^ «3.5. Ограничение среды вашей программы» . Freebsd.org . Проверено 15 января 2014 .
  33. ^ Мэттью Диллон (2006). "sys / vkernel.h" . Перекрестная ссылка BSD . DragonFly BSD .
  34. ^ a b "vkd (4) - Диск виртуального ядра" . DragonFly BSD . обрабатывает образ диска как копирование при записи.
  35. ^ a b Саша Вильднер (2007-01-08). «vkernel, vcd, vkd, vke - архитектура виртуального ядра» . Руководство по разной информации DragonFly . DragonFly BSD . Выложите резюме .
  36. ^ "vke (4) - Виртуальное ядро ​​Ethernet" . DragonFly BSD .
  37. ^ «Информация о пакете исправлений IBM для: Изоляция сети WPAR - США» . ibm.com .
  38. ^ «Мобильность приложений в реальном времени в AIX 6.1» . www.ibm.com . 3 июня 2008 г.
  39. ^ a b c d "systemd-nspawn" . www.freedesktop.org .
  40. ^ a b c d «2.3. Изменение групп управления Red Hat Enterprise Linux 7» . Портал для клиентов Red Hat .
  41. ^ Полви, Алекс. «CoreOS создает среду выполнения контейнера, rkt» . Блог CoreOS . Проверено 12 марта 2019 .

Внешние ссылки [ править ]

  • Введение в виртуализацию
  • Краткое введение в три различных метода виртуализации
  • Виртуализация и контейнеризация инфраструктуры приложений: сравнение , 22 июня 2015 г., Mathijs Jeroen Scheepers
  • Контейнеры и постоянные данные , LWN.net , 28 мая 2015 г., Джош Беркус.