В этой статье слишком много ссылок на первоисточники . ( Декабрь 2013 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Разработчики) | Virtuozzo и сообщество OpenVZ |
---|---|
изначальный выпуск | 2005 |
Репозиторий | |
Написано в | C |
Операционная система | Linux |
Платформа | x86 , x86-64 |
Доступно в | английский |
Тип | Виртуализация на уровне ОС |
Лицензия | GPLv2 |
Интернет сайт | OpenVZ |
OpenVZ ( Open Virtuozzo ) - это технология виртуализации на уровне операционной системы для Linux . Это позволяет физическому серверу запускать несколько изолированных экземпляров операционной системы, называемых контейнерами, виртуальными частными серверами (VPS) или виртуальными средами (VE). OpenVZ похож на контейнеры Solaris и LXC .
OpenVZ по сравнению с другими технологиями виртуализации [ править ]
В то время как технологии виртуализации, такие как VMware , Xen и KVM, обеспечивают полную виртуализацию и могут работать с несколькими операционными системами и разными версиями ядра, OpenVZ использует одно ядро Linux и, следовательно, может работать только с Linux. Все контейнеры OpenVZ имеют одинаковую архитектуру и версию ядра. Это может быть недостатком в ситуациях, когда гостям требуются версии ядра, отличные от версии хоста. Однако, поскольку у него нет накладных расходов, как у настоящего гипервизора , он очень быстрый и эффективный. [1]
Распределение памяти с помощью OpenVZ является мягким в том смысле, что память, не используемая в одной виртуальной среде, может использоваться другими или для кэширования диска . В то время как старые версии OpenVZ использовали общую файловую систему (где каждая виртуальная среда - это просто каталог файлов, который изолирован с помощью chroot ), текущие версии OpenVZ позволяют каждому контейнеру иметь свою собственную файловую систему. [2]
Ядро [ править ]
Ядро OpenVZ - это ядро Linux , модифицированное для добавления поддержки контейнеров OpenVZ. Модифицированное ядро обеспечивает виртуализацию, изоляцию, управление ресурсами и создание контрольных точек . Начиная с vzctl 4.0, OpenVZ может работать с непропатченными ядрами Linux 3.x с ограниченным набором функций. [3]
Виртуализация и изоляция [ править ]
Каждый контейнер представляет собой отдельный объект и ведет себя в основном как физический сервер. У каждого свои:
- Файлы
- Системные библиотеки , приложения , виртуализированные
/proc
и/sys
виртуализированные замки и т. Д.
- Пользователи и группы
- У каждого контейнера есть собственный пользователь root , а также другие пользователи и группы .
- Дерево процессов
- Контейнер видит только свои собственные процессы (начиная с init ). PID виртуализированы, так что init PID равен 1, как и должно быть.
- Сеть
- Виртуальное сетевое устройство , которое позволяет контейнеру иметь свои собственные IP-адреса , а также набор netfilter ( iptables) и правил маршрутизации .
- Устройства
- При необходимости любому контейнеру можно предоставить доступ к реальным устройствам, таким как сетевые интерфейсы , последовательные порты , разделы диска и т. Д.
- Объекты IPC
- Общая память , семафоры , сообщения .
Управление ресурсами [ править ]
Управление ресурсами OpenVZ состоит из четырех компонентов: двухуровневой дисковой квоты, справедливого планировщика ЦП, планировщика дискового ввода-вывода и счетчиков пользовательских компонентов (см. Ниже). Эти ресурсы могут быть изменены во время контейнера времени выполнения , устраняя необходимость в перезагрузке .
Двухуровневая дисковая квота [ править ]
Каждый контейнер может иметь свои дисковые квоты , измеряемые в единицах дисковых блоков и inode (примерно количество файлов). Внутри контейнера можно использовать стандартные инструменты для установки дисковых квот UNIX для пользователей и групп .
Планировщик ЦП [ править ]
Планировщик ЦП в OpenVZ - это двухуровневая реализация стратегии справедливого распределения .
На первом уровне планировщик решает, какому контейнеру следует выделить временной отрезок ЦП, на основе значений cpuunits для каждого контейнера . На втором уровне стандартный планировщик Linux решает, какой процесс запускать в этом контейнере, используя стандартные приоритеты процессов Linux.
Можно установить разные значения для ЦП в каждом контейнере. Реальное время процессора будет распределяться пропорционально этим значениям.
В дополнение к вышесказанному OpenVZ предоставляет [4] способа:
- установить строгие ограничения ЦП, например 10% от общего времени ЦП (
--cpulimit
); - ограничить количество ядер ЦП, доступных для container (
--cpus
); - привязать контейнер к определенному набору процессоров (
--cpumask
).
Планировщик ввода / вывода [ править ]
Подобно планировщика CPU описано выше, планировщик ввода / вывода в OpenVZ также два уровня, используя Йенс Аксбо «с CFQ планировщик ввода / вывода на его втором уровне.
Каждому контейнеру назначается приоритет ввода-вывода, а планировщик распределяет доступную полосу пропускания ввода-вывода в соответствии с назначенными приоритетами. Таким образом, ни один контейнер не может заполнить канал ввода-вывода.
Счетчики пользовательских объектов [ править ]
User Beancounters - это набор счетчиков, ограничений и гарантий для каждого контейнера, предназначенный для предотвращения монополизации системных ресурсов одним контейнером. В современных ядрах OpenVZ (RHEL6 основе 042stab *) есть два основных параметра ( баран и замены , иначе physpages и swappages ), и другие не являются обязательными. [5]
Другие ресурсы - это в основном память и различные объекты в ядре, такие как сегменты разделяемой памяти межпроцессного взаимодействия и сетевые буферы. Каждый ресурс можно увидеть в / proc / user_beancounters, и с ним связано пять значений: текущее использование, максимальное использование (на время существования контейнера), барьер, ограничение и счетчик отказов. Значение барьера и предела зависит от параметра; Короче говоря, их можно рассматривать как мягкие и жесткие ограничения. Если какой-либо ресурс достигает предела, счетчик отказов для него увеличивается. Это позволяет владельцу обнаруживать проблемы, отслеживая / proc / user_beancounters в контейнере.
Контрольные точки и живая миграция [ править ]
Функция живой миграции и контрольных точек была выпущена для OpenVZ в середине апреля 2006 года. Это позволяет перемещать контейнер с одного физического сервера на другой, не закрывая контейнер. Этот процесс известен как контрольная точка: контейнер замораживается, и все его состояние сохраняется в файл на диске. Затем этот файл можно перенести на другую машину, и там можно будет разморозить (восстановить) контейнер; задержка составляет примерно несколько секунд. Поскольку состояние обычно сохраняется полностью, эта пауза может показаться обычной вычислительной задержкой.
Ограничения [ править ]
По умолчанию OpenVZ ограничивает доступ контейнера к реальным физическим устройствам (таким образом делая контейнер аппаратно-независимым). Администратор OpenVZ может разрешить контейнерный доступ к различным реальным устройствам, таким как дисковые накопители, порты USB, [6] устройства PCI [7] или физические сетевые карты. [8]
/ dev / loopN часто ограничивается при развертывании (поскольку устройства цикла используют потоки ядра, что может быть проблемой безопасности), что ограничивает возможность монтирования образов дисков. Обходной путь - использовать FUSE .
OpenVZ ограничивается предоставлением только некоторых технологий VPN, основанных на PPP (например, PPTP / L2TP) и TUN / TAP. IPsec поддерживается внутри контейнеров, начиная с ядра 2.6.32.
В 2007 году [9] была предпринята попытка создать графический пользовательский интерфейс под названием EasyVZ, но дальше версии 0.1 он не продвинулся. До версии 3.4 Proxmox VE можно было использовать в качестве среды виртуализации сервера на основе OpenVZ с графическим интерфейсом пользователя, хотя более поздние версии переключились на LXC .
См. Также [ править ]
- Сравнение программного обеспечения для виртуализации платформ
- Виртуализация на уровне операционной системы
- Виртуальная среда Proxmox
Ссылки [ править ]
- ^ http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.html?jumpid=reg_R1002_USEN
- ^ http://wiki.openvz.org/Ploop
- ↑ Колышкин, Кир (6 октября 2012 г.). «OpenVZ исполняется 7 лет, подарки доступны!» . Блог OpenVZ . Проверено 17 января 2013 .
- ^ vzctl (8) справочная страница, раздел параметров планировщика справедливого ЦП, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters
- ^ http://openvz.org/VSwap
- ^ vzctl (8) справочная страница, подраздел управления доступом к устройствам, http://wiki.openvz.org/Man/vzctl.8#Device_access_management
- ^ vzctl (8) справочная страница, раздел управления устройствами PCI, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
- Справочная страница ^ vzctl (8), раздел сетевых устройств, http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
- ^ EasyVZ: Grafische Verwaltung für OpenVZ. Внешний интерфейс для свободной виртуализации Linux
Внешние ссылки [ править ]
- Официальный веб-сайт