Рубрика:
Администрирование /
Виртуализация
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСАНДР РУДЕНКО, администратор информационной безопасности, ЗАО «Молдавская ГРЭС», a.rudikk@gmail.com
Виртуализация на уровне ОС Теория и практика LXC
Рассмотрим технические особенности широко обсуждаемой платформы Linux Containers. Выполним ее установку и настройку и обсудим проблемы и сильные стороны платформы
В этой и в следующей статьях хочется провести детальный технический разбор существующих сегодня технологий и продуктов для виртуализации на уровне ОС. Сегодня речь пойдет о наборе компонентов и функций ядра Linux под названием LXC (Linux Containers). Следующая работа будет посвящена более продвинутому и функциональному продукту под названием OpenVZ. В этих материалах постараемся, насколько это возможно, раскрыть их технические особенности, дать примеры установки и настройки. Но вначале, пожалуй, общие для всех теоретические основы.
Виртуализация на уровне ОС
Это наименее требовательная к ресурсам технология виртуализации из существующих сегодня. В отличие от уже привычного варианта, когда виртуализируется оборудование, а не только среда, тут нет гипервизора и не производится эмуляция аппаратного обеспечения. Все экземпляры ОС – контейнеры, используют единое ядро хост-системы и напрямую обращаются к одному и тому же физическому оборудованию. За счет отсутствия слоя виртуализации достигаются максимальная производительность и наивысшая плотность виртуальных серверов на одном физическом. Данная техника предоставляется только в открытых ОС – таких, как Linux (LXC, OpenVZ), FreeBSD (Jail), Solaris (Zones), т.е. этим может воспользоваться каждый, но нет поддержки закрытых ОС (Windows, MacOS). Также существует ряд проблем безопасности, которым будет посвящен отдельный раздел.
Что такое LXC
В первую очередь хочется сказать, что LXC нельзя рассматривать как законченный продукт. Фактически это набор из нескольких совершенно самостоятельных функций ядра Linux и пользовательских утилит, которые позволяют удобно создавать и управлять изолированными контейнерами. Практически вся функциональность LXC представлена такими известными механизмами ядра:
cgroups (Control Groups) – позволяет ограничить аппаратные ресурсы некоторого набора процессов. Под аппаратными ресурсами подразумеваются: процессорное время, память, дисковая и сетевая подсистемы. Набор, или, другими словами, группа процессов, может быть определен по различным критериям. Например, это может быть целая иерархия процессов, получающая все лимиты родительского процесса. Кроме этого, возможен подсчет расходуемых группой ресурсов, заморозка (freezing) групп, создание контрольных точек (checkpointing) и их перезагрузка. Для управления этим полезным механизмом существует специальная библиотека libcgroup, в состав которой входят такие утилиты, как cgcreate, cgexec и некоторые другие.
Namespaces – пространства имен [1]. Это механизм ядра, который позволяет изолировать процессы друг от друга. Изоляция может быть выполнена в шести контекстах (пространствах имен):
- mnt – предоставляет процессам собственную иерархию файловой системы и изолирует ее от других таких же иерархий. По аналогии с chroot;
- pid – изолирует идентификаторы (ID) процессов одного пространства имен от процессов с такими же идентификаторами другого пространства;
- net – предоставляет отдельным процессам логически изолированный от других стек сетевых протоколов, сетевой интерфейс, IP-адрес, таблицу маршрутизации, ARP и прочие реквизиты;
- ipc – обеспечивает разделяемую память и взаимодействие между процессами;
- uts – изоляция идентификаторов узла, такого как имя хоста (hostname) и домена (domainname);
- user – позволяет иметь один и тот же набор пользователей и групп в рамках разных пространств имен. В каждом контейнере могут быть свой root и любые другие пользователи и группы.
Каждое из этих пространств имен имеет свою отдельную историю развития. Часть их функционала появилась еще в ядре 2.6.19, а некоторые возможности добавились лишь в последних версиях (3.8 и выше). Впрочем, и сама LXC еще в активной разработке. Первый (1.0) стабильный релиз планируется выпустить в составе Ubuntu 14.04. И хотя LXC уже давно обсуждается технической общественностью и активно используется, его функционал еще доступен неполностью, а API не стабилен. Именно по этой причине возможности LXC могут сильно меняться от версии к версии.
Статью целиком читайте в журнале «Системный администратор», №4 за 2014 г. на страницах 04-09.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|