Jump to content

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

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

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

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

Операция

[ редактировать ]

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

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

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

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

Использование

[ редактировать ]

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

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

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

[ редактировать ]

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

Гибкость

[ редактировать ]

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

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

Хранилище

[ редактировать ]

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

Реализации

[ редактировать ]
Механизм Операционная система Лицензия Активно разрабатывается с или между Функции
Изоляция файловой системы Копировать при записи Дисковые квоты Ограничение скорости ввода-вывода Ограничения памяти Квоты процессора Сетевая изоляция Вложенная виртуализация Контрольная точка раздела и живая миграция Изоляция корневых привилегий
chroot Большинство UNIX-подобных операционных систем Зависит от операционной системы 1982 Частичный [а] Нет Нет Нет Нет Нет Нет Да Нет Нет
Докер Линукс , [10] Windows х64 [11] macOS [12] Лицензия Apache 2.0 2013 Да Да Не напрямую Да (с версии 1.10) Да Да Да Да Только в экспериментальном режиме с ЦНИИУ [1] Да (с версии 1.10)
Linux-VServer
(контекст безопасности)
Линукс , Виндовс Сервер 2016. GNU GPLv2 2001 Да Да Да Да [б] Да Да Частичный [с] ? Нет Частичный [д]
lmctfy Линукс Лицензия Apache 2.0 2013–2015 Да Да Да Да [б] Да Да Частичный [с] ? Нет Частичный [д]
ЛХС Линукс GNU GPLv2 2008 Да [14] Да Частичный [и] Частичный [ф] Да Да Да Да Да Да [14]
Сингулярность Линукс Лицензия БСД 2015 [15] Да [16] Да Да Нет Нет Нет Нет Нет Нет Да [17]
ОпенВЗ Линукс GNU GPLv2 2005 Да Да [18] Да Да [г] Да Да Да [час] Частичный [я] Да Да [Дж]
Виртуозо Линукс , Винда Пробная версия 2000 [22] Да Да Да Да [к] Да Да Да [час] Частичный [л] Да Да
Контейнеры Solaris (зоны) иллюзии ( OpenSolaris ),
Солярис
CDDL ,
Собственный
2004 Да Да (ЗФС) Да Частичный [м] Да Да Да [н] [25] [26] Частичный [the] Частичный [п] [д] Да [р]
Тюрьма FreeBSD FreeBSD , DragonFly BSD Лицензия БСД 2000 [28] Да Да (ЗФС) Да [с] Да Да [29] Да Да [30] Да Частичный [31] [32] Да [33]
vkernel Стрекоза БСД Лицензия БСД 2006 [34] Да [35] Да [35] ? Да [36] Да [36] Да [37] ? ? Да
шить тюрьму OpenBSD , NetBSD Лицензия БСД 2006–2009 Да Нет Нет Нет Нет Нет Да Нет Нет ?
разделы WPAR ЭКС Коммерческое проприетарное программное обеспечение 2007 Да Нет Да Да Да Да Да [т] Нет Да [39] ?
Виртуальные учетные записи iCore Windows ХР Бесплатное ПО 2008 Да Нет Да Нет Нет Нет Нет ? Нет ?
Песочница Окна GNU GPLv3 2004 Да Да Частичный Нет Нет Нет Частичный Нет Нет Да
Systemd-nspawn Линукс GNU LGPLv2.1+ 2010 Да Да Да [40] [41] Да [40] [41] Да [40] [41] Да [40] [41] Да ? ? Да
Турбо Окна Фримиум 2012 Да Нет Нет Нет Нет Нет Да Нет Нет Да
ркт ( ракета ) Линукс Лицензия Apache 2.0 2014 [42] –2018 Да Да Да Да Да Да Да ? ? Да

Контейнеры Linux, не перечисленные выше, включают:

  • LXD , альтернативная оболочка LXC, разработанная Canonical. [43]
  • Субман , [44] усовершенствованная, готовая к Kubernetes, безопасная замена Docker без root-доступа с поддержкой нескольких форматов образов контейнеров, включая образы OCI и Docker.
  • Charliecloud — набор контейнерных инструментов, используемых в системах HPC. [45]
  • Ката-контейнеры Платформа MicroVM [46]
  • Bottlerocket — это операционная система с открытым исходным кодом на базе Linux, специально созданная Amazon Web Services для запуска контейнеров на виртуальных машинах или хостах с «голым железом». [47]
  • Azure Linux — это дистрибутив Linux с открытым исходным кодом, специально созданный Microsoft Azure и похожий на Fedora CoreOS.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Пользователь root может легко выйти из chroot. Chroot никогда не предполагалось использовать в качестве механизма безопасности. [9]
  2. ^ Jump up to: а б При использовании планировщика CFQ для каждого гостя создается отдельная очередь.
  3. ^ Jump up to: а б Сеть основана на изоляции, а не на виртуализации.
  4. ^ Jump up to: а б Всего в контейнере безопасными считаются 14 пользовательских возможностей. Остальное нельзя предоставить процессам внутри этого контейнера, не позволяя этому процессу потенциально вмешиваться в дела за пределами этого контейнера. [13]
  5. ^ Дисковые квоты для каждого контейнера возможны при использовании отдельных разделов для каждого контейнера с помощью LVM или когда базовой файловой системой хоста является btrfs, и в этом случае подтома btrfs используются автоматически.
  6. ^ Ограничение скорости ввода-вывода поддерживается при использовании Btrfs .
  7. ^ Доступно начиная с ядра Linux 2.6.18-028stable021. Реализация основана на дисковом планировщике ввода-вывода CFQ, но это двухуровневая схема, поэтому приоритет ввода-вывода устанавливается не для каждого процесса, а для каждого контейнера. [19]
  8. ^ Jump up to: а б Каждый контейнер может иметь свои собственные IP-адреса, правила брандмауэра, таблицы маршрутизации и так далее. Возможны три различные сетевые схемы: на основе маршрута, на основе моста и назначение реального сетевого устройства ( NIC ) контейнеру.
  9. ^ Контейнеры Docker могут работать внутри контейнеров OpenVZ. [20]
  10. ^ Каждый контейнер может иметь root-доступ, не затрагивая другие контейнеры. [21]
  11. ^ Доступно с версии 4.0, январь 2008 г.
  12. ^ Контейнеры Docker могут работать внутри контейнеров Virtuozzo. [23]
  13. ^ Да, с иллюзиями [24]
  14. ^ см . в разделе «Виртуализация сети Solaris и управление ресурсами» . Дополнительные сведения
  15. ^ Только если верхний уровень — это зона KVM (иллюмо) или зона kz (Oracle).
  16. ^ Начиная с бета-версии Solaris 11.3, зоны ядра Solaris могут использовать динамическую миграцию.
  17. ^ Реализована холодная миграция (выключение-перемещение-перезапуск).
  18. ^ Неглобальные зоны ограничены, поэтому они не могут влиять на другие зоны с помощью подхода ограничения возможностей. Глобальная зона может управлять неглобальными зонами. [27]
  19. ^ проверьте параметр «allow.quotas» и раздел «Джейлы и файловые системы» на странице руководства по тюрьме FreeBSD . Подробности
  20. ^ Доступно с TL 02. [38]
  1. ^ Хогг, Скотт (26 мая 2014 г.). «Программные контейнеры: используются чаще, чем многие думают» . Сетевой мир . Сетевой мир, Inc. Проверено 9 июля 2015 г. Существует множество других систем виртуализации на уровне ОС, таких как: Linux OpenVZ, Linux-VServer, FreeBSD Jails, разделы рабочей нагрузки AIX (WPAR), контейнеры HP-UX (SRP), контейнеры Solaris и другие.
  2. ^ Рами, Розен. «Пространства имен и Cgroups, основа контейнеров Linux» (PDF) . Проверено 18 августа 2016 г.
  3. ^ «Безопасное развертывание Bottlerocket на Amazon EKS с помощью KubeArmor | Containers» . aws.amazon.com . 20 октября 2022 г. Проверено 20 июня 2023 г.
  4. ^ Корф, Янек; Надеюсь, Пако; Поттер, Брюс (2005). Освоение безопасности FreeBSD и OpenBSD . Серия О'Рейли. О'Рейли Медиа, Инк. с. 59. ИСБН  0596006268 .
  5. ^ Хуанг, Д. (2015). «Опыт использования виртуализации на уровне ОС для блочного ввода-вывода». Материалы 10-го семинара по параллельному хранению данных . стр. 13–18. дои : 10.1145/2834976.2834982 . ISBN  9781450340083 . S2CID   3867190 .
  6. ^ «Руководство по системному администрированию: управление ресурсами контейнеров Oracle Solaris и зоны Oracle Solaris, Глава 16: Введение в зоны Solaris» . Корпорация Оракл . 2010 . Проверено 2 сентября 2014 г.
  7. ^ «Руководство по системному администрированию: Управление контейнерами-ресурсами Oracle Solaris и зоны Oracle Solaris, Глава 31: О фирменных зонах и фирменной зоне Linux» . Корпорация Оракл . 2010 . Проверено 2 сентября 2014 г.
  8. ^ Брайан Кэнтрилл (28 сентября 2014 г.). «Мечта жива! Запуск контейнеров Linux на ядре Illumos» . SlideShare.net . Проверено 10 октября 2014 г.
  9. ^ «3.5. Ограничение среды вашей программы» . freebsd.org .
  10. ^ «Docker удаляет LXC как среду выполнения по умолчанию» . ИнфоQ .
  11. ^ «Установить рабочий стол Docker в Windows | Документация Docker» . Докер . 9 февраля 2023 г.
  12. ^ «Начало работы с Docker Desktop для Mac» . Документация по докеру . 6 декабря 2019 г.
  13. ^ «Бумага — Linux-VServer» . linux-vserver.org .
  14. ^ Jump up to: а б Грабер, Стефан (1 января 2014 г.). «LXC 1.0: Функции безопасности [6/10]» . Проверено 12 февраля 2014 г. LXC теперь поддерживает пространства имен пользователей. [...] LXC больше не работает от имени пользователя root, поэтому даже если злоумышленнику удастся выйти из контейнера, он обнаружит, что имеет привилегии обычного пользователя на хосте.
  15. ^ «Sylabs внедряет контейнеры Singularity в коммерческие высокопроизводительные вычисления | Топ-500 суперкомпьютерных сайтов» . www.top500.org .
  16. ^ «SIF — Содержимое ваших контейнеров» . www.sylabs.io . 14 марта 2018 г.
  17. ^ Курцер, Грегори М.; Сочат, Ванесса; Бауэр, Майкл В. (11 мая 2017 г.). «Сингулярность: научные контейнеры для мобильности вычислений» . ПЛОС ОДИН . 12 (5): e0177459. Бибкод : 2017PLoSO..1277459K . дои : 10.1371/journal.pone.0177459 . ПМЦ   5426675 . ПМИД   28494014 .
  18. ^ Бронников Сергей. «Сравнение на вики-странице OpenVZ» . ОпенВЗ Wiki . ОпенВЗ . Проверено 28 декабря 2018 г.
  19. ^ «Приоритеты ввода-вывода для контейнеров» . OpenVZ Virtuozzo Containers Wiki .
  20. ^ «Докер внутри CT» .
  21. ^ «Контейнер» . OpenVZ Virtuozzo Containers Wiki .
  22. ^ «Первоначальная публичная предварительная версия Virtuozzo (в то время называвшаяся ASPcomplete)» .
  23. ^ «Parallels Virtuozzo теперь обеспечивает встроенную поддержку Docker» .
  24. ^ Пиевски, Билл. «Наш дроссель ввода-вывода ZFS» .
  25. ^ Часто задаваемые вопросы по виртуализации сети и управлению ресурсами (Арбалет). Архивировано 1 июня 2008 г. на Wayback Machine.
  26. ^ «Управление сетевой виртуализацией и сетевыми ресурсами в Oracle® Solaris 11.2» . docs.oracle.com .
  27. ^ Администрирование Oracle Solaris 11.1, зоны Oracle Solaris, зоны Oracle Solaris 10 и управление ресурсами E29024.pdf, стр. 356–360. Доступен в архиве .
  28. ^ «Сдерживайте свой энтузиазм. Часть вторая: тюрьмы, зоны, OpenVZ и LXC» . Впервые тюрьмы были представлены во FreeBSD 4.0 в 2000 году.
  29. ^ «Иерархические ограничения ресурсов — FreeBSD Wiki» . Wiki.freebsd.org. 27 октября 2012 г. Проверено 15 января 2014 г.
  30. ^ «Реализация клонируемого сетевого стека в ядре FreeBSD» (PDF) . usenix.org. 13 июня 2003 г.
  31. ^ «VPS для FreeBSD» . Проверено 20 февраля 2016 г.
  32. ^ «[Объявление] VPS // Виртуализация ОС // альфа-релиз» . 31 августа 2012 года . Проверено 20 февраля 2016 г.
  33. ^ «3.5. Ограничение среды вашей программы» . Freebsd.org . Проверено 15 января 2014 г.
  34. ^ Мэтью Диллон (2006). "sys/vkernel.h" . Перекрестная ссылка BSD . Драгонфлай БСД .
  35. ^ Jump up to: а б «vkd(4) — Виртуальный диск ядра» . Драгонфлай БСД . рассматривает образ диска как копирование при записи.
  36. ^ Jump up to: а б Саша Вильднер (8 января 2007 г.). «vkernel, vcd, vkd, vke — архитектура виртуального ядра» . Прочее информационное руководство по DragonFly . Драгонфлай БСД .
  37. ^ «vkernel, vcd, vkd, vke — архитектура виртуального ядра» . Страницы онлайн-руководства DragonFly . Драгонфлай БСД .
  38. ^ «Информация о пакете исправлений IBM для: сетевой изоляции WPAR — США» . IBM.com . 21 июля 2011 г.
  39. ^ «Мобильность живых приложений в AIX 6.1» . www.ibm.com . 3 июня 2008 г.
  40. ^ Jump up to: а б с д «системд-нспаун» . www.freedesktop.org .
  41. ^ Jump up to: а б с д «2.3. Изменение групп управления Red Hat Enterprise Linux 7» . Портал для клиентов Red Hat .
  42. ^ Полви, Алекс. «CoreOS создает среду выполнения контейнера, rkt» . Блог CoreOS . Архивировано из оригинала 01 апреля 2019 г. Проверено 12 марта 2019 г.
  43. ^ «ЛХД» . linuxcontainers.org . Проверено 11 февраля 2021 г.
  44. Безкорневые контейнеры с Podman и накладками на предохранители , семинар ЦЕРН, 4 июня 2019 г.
  45. ^ «Обзор — документация Charliecloud 0.25» . Проверено 4 октября 2020 г.
  46. ^ "Дом" . katacontainers.io .
  47. ^ «Bottlerocket — это операционная система на базе Linux, специально созданная для запуска контейнеров» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 32c3b1dfefd6d6c49f8aceeddea2f23c__1717082340
URL1:https://arc.ask3.ru/arc/aa/32/3c/32c3b1dfefd6d6c49f8aceeddea2f23c.html
Заголовок, (Title) документа по адресу, URL1:
OS-level virtualization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)