Феодор Варяг и сын его Иоанн
- 1 year ago
- 0
- 0
OpenVZ — реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux . OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых «виртуальные частные серверы» (Virtual Private Servers, VPS) или «виртуальные среды» (Virtual Environments, VE).
Поскольку OpenVZ базируется на ядре Linux, в отличие от виртуальных машин (например VMware , Parallels Desktop ) или паравиртуализационных технологий (например Xen ), в роли «гостевых» систем могут выступать только дистрибутивы Linux . Однако, виртуализация на уровне операционной системы в OpenVZ даёт лучшую производительность, масштабируемость, плотность размещения, динамическое управление ресурсами, а также лёгкость в администрировании, чем у альтернативных решений. Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами.
OpenVZ является базовой платформой для Virtuozzo — проприетарного продукта Parallels, Inc. OpenVZ распространяется на условиях лицензии GNU GPL v.2.
OpenVZ состоит из модифицированного ядра Linux и пользовательских утилит .
Ядро OpenVZ — это модифицированное ядро Linux, добавляющее концепцию виртуальной среды ( VE ). Ядро обеспечивает виртуализацию, изоляцию, управление ресурсами и чекпоинтинг (сохранение текущего состояния VE).
На данный момент поддерживается несколько веток OpenVZ-ядер. Ветки различаются по стабильности и по версии RHEL , на базе которой были основаны .
Версия ядра | Стабильная/Тестовая | Версия RHEL |
---|---|---|
vzkernel-2.6.32-042stab085.17 | Stable | 6 |
vzkernel-2.6.32-042stab084.17 | Testing | 6 |
ovzkernel-2.6.18-348.16.1.el5.028stab108.1 | Stable | 5.9 |
ovzkernel-2.6.18-371.3.1.el5.028stab110.1 | Testing | 5.10 |
Основными утилитами являются:
Также существует ряд утилит либо не поддерживаемых официально, либо «заброшенных»:
Каждая VE — это отдельная сущность, и с точки зрения владельца VE она выглядит практически как обычный физический сервер. Каждая VE имеет свои собственные:
Управление ресурсами в OpenVZ состоит из трёх компонентов: двухуровневая дисковая квота, честный планировщик процессора, и так называемые «юзер бинкаунтеры» (user beancounters). Эти ресурсы могут быть изменены во время работы VE, перезагрузка не требуется.
Администратор OpenVZ сервера может установить дисковые квоты на VE, в терминах дискового пространства и количества айнодов (i-nodes, число которых примерно равно количеству файлов). Это первый уровень дисковой квоты.
В дополнение к этому, администратор VE (root) может использовать обычные утилиты внутри своей VE для настроек стандартных дисковых квот UNIX для пользователей и групп.
Планировщик процессора в OpenVZ также двухуровневый. На первом уровне планировщик решает, какой VE дать квант процессорного времени, базируясь на значении параметра
cpuunits
для VE. На втором уровне стандартный планировщик Linux решает, какому процессу в выбранном VE дать квант времени, базируясь на стандартных приоритетах процесса в Linux и т. п.
Администратор OpenVZ сервера может устанавливать различные значения
cpuunits
для разных VE, и процессорное время будет распределяться соответственно соотношению этих величин назначенных для VE.
Также имеется параметр ограничения —
cpulimit
, устанавливающий верхний лимит процессорного времени в процентах, отводимый для определенной VE.
User Beancounters — это набор счётчиков, ограничений и гарантий на каждую VE. Имеется набор из примерно 20 параметров, которые выбраны для того, чтобы покрыть все аспекты работы VE так, чтобы никакая VE не могла злоупотребить каким-либо ресурсом, который ограничен для всего сервера, и таким образом помешать другим VE.
Ресурсы, которые считаются и контролируются — это, в основном, оперативная память и различные объекты в ядре, например, разделяемые сегменты памяти IPC, сетевые буферы и т. п. Каждый ресурс можно посмотреть в файле /proc/user_beancounters — для него есть пять значений: текущее использование, максимальное использование (за всё время жизни VE), барьер, лимит и счётчик отказов. Смысл барьера и лимита зависит от параметра; вкратце, о них можно думать как о мягком лимите и жёстком лимите. Если какой-либо ресурс пытается превысить лимит, его счётчик отказов увеличивается — таким образом, владелец VE может видеть, что происходит, путём чтения файла /proc/user_beancounters в своём VE.
Функциональность миграции «на лету» и чекпоинтинга была выпущена для OpenVZ в середине апреля 2006. Она позволяет переносить VE с одного физического сервера на другой без необходимости останавливать/перезапускать VE. Этот процесс называется чекпоинтинг: VE «замораживается» и её полное состояние сохраняется в файл на диске. Далее этот файл можно перенести на другую машину и там «разморозить» (восстановить) VE. Задержка этого процесса (время, когда VE заморожена) — примерно несколько секунд; важно подчеркнуть, что это задержка в обслуживании, а не отказ в обслуживании.
Начиная с версии 2.6.24, в ядро включены pid namespaces (пространства имен pid, pid — идентификатор процесса), вследствие чего миграция «на лету» становится «безопасной», так как в этом случае 2 процесса в разных VE смогут иметь один и тот же pid.
Так как все детали состояния VE, включая открытые сетевые соединения, сохраняются, то с точки зрения пользователя VE процесс миграции выглядит как задержка в ответе: скажем, одна из транзакций базы данных заняла больше времени, чем обычно, и далее работа продолжается как обычно; таким образом, пользователь не замечает, что его сервер баз данных работает уже на другом физическом сервере.
Эта возможность делает реальными такие сценарии, как апгрейд сервера без необходимости его перезагрузки: к примеру, если вашей СУБД нужно больше памяти или более мощный процессор, вы покупаете новый более мощный сервер и мигрируете VE с СУБД на него, а потом увеличиваете лимиты на эту VE. Если вам нужно добавить оперативной памяти в сервер, вы мигрируете все VE с этого сервера на другой, выключаете сервер, устанавливаете дополнительную память, запускаете сервер и мигрируете все VE обратно.
Начиная с версий ядра RHEL 6 042stab04x, появилась от 27 июня 2013 на Wayback Machine . Теперь от 7 июня 2017 на Wayback Machine . Достаточно при создании «гостевой системы» указать всего лишь PHYSPAGES и SWAPPAGES.
Начиная с kernel 042stab068.8 появилась от 13 февраля 2013 на Wayback Machine использование контейнерами дискового кэша.
Ввиду того, что OpenVZ использует одно ядро для всех VE, система является столь же масштабируемой, как обычное ядро Linux 2.6, то есть поддерживает максимально до 4096 процессоров и до 64 ГБ оперативной памяти для x86 -версии (с использованием PAE ) и 64ТБ для x86-64 . Единственная виртуальная среда может быть расширена до размеров всего физического сервера, то есть, использовать все доступное процессорное время и память.
Можно использовать OpenVZ с единственной виртуальной средой на сервере. Данный подход позволяет VE полностью использовать все аппаратные ресурсы сервера с практически «родной» производительностью, и пользоваться дополнительными преимуществами: независимость VE от «железа», подсистему управления ресурсами, «живую» миграцию.
OpenVZ способна размещать сотни виртуальных сред на современном аппаратном обеспечении . Основными ограничивающими факторами являются объём ОЗУ и частота процессора.
Данный график показывает зависимость времени отклика веб-серверов VE к количеству VE на машине. Измерения были сделаны на машине с 768 МБ (¾ ГБ) ОЗУ; на каждой VE был запущен обычный набор процессов: init , syslogd , crond , sshd и веб-сервер Apache . Демоны Apache отдавали статические страницы, которые закачивались утилитой http_load, и при этом измерялось время первого отклика. Как можно видеть, при увеличении количества VE время отклика становится больше — это происходит ввиду нехватки оперативной памяти и сильного своппинга.
В данном сценарии возможно запустить до 120 таких VE на машине с ¾ ГБ ОЗУ. Так как при увеличении объёма оперативной памяти плотность возрастает практически линейно, можно экстраполировать, что на машине с 2 GB памяти возможно запустить примерно 320 таких VE, при условии сохранения хорошей производительности.
Владелец физического сервера с OpenVZ (root) может видеть все процессы и файлы всех VE. Эта особенность делает возможным массовое управление, в отличие от других технологии виртуализации (например VMware или Xen ), где виртуальные серверы являются отдельными сущностями, которыми невозможно напрямую управлять с хост-системы.
|
В разделе
не хватает
ссылок на источники
(см.
рекомендации по поиску
).
|
Эти примеры использования подходят ко всем виртуализационным технологиям. Однако, уникальность технологии виртуализации на уровне ОС заключается в том, что пользователю не нужно много «платить» за виртуализацию (напр. потерей производительности и т. п.), что делает низлежащие сценарии ещё более привлекательными.
Другие реализации технологии виртуализации на уровне операционной системы: , FreeBSD Jails , LXC , Solaris Containers , IBM AIX6 WPARs.
Из недостатков можно выделить: