НОВЫЕ ТЕХНОЛОГИИ И ПРОДУКТЫ: КОНТЕЙНЕРНАЯ ВИРТУАЛИЗАЦИЯ
Ажиотаж вокруг контейнеров Контейнерная виртуализация еще недавно воспринималась как некая диковинка, в лучшем случае ее рассматривали как недорогой вариант создания инфраструктуры для хостинга. Но сегодня, когда благодаря облачной революции на первый план вышли такие требования к центрам обработки данных, как эластичность, масштабируемость и высокая вычислительная плотность, контейнеры стали предметом повышенного интереса — прежде всего потому, что они как нельзя лучше подходят для решения названных задач. Почему же о них раньше забывали и почему вспомнили теперь? Джеймс Боттомли
В
самых общих чертах виртуализация — это искусство запуска одной операционной системы поверх другой. История ее развития довольно долгая и богатая. Задолго до гипервизоров и UNIX-систем виртуализация использовалась в мейнфреймах для разделения различных операционных систем. Широкое распространение в системах UNIX и Linux она получила лишь в начале века. В 2001 году компания VMware выпустила серверный продукт для виртуализации на основе гипервизора, привлекший внимание корпоративных заказчиков. Практически в то же самое время компания Parallels представила решение для контейнерной виртуализации Virtuozzo, заслужившее признание у провайдеров услуг хостинга. Такое разделение сохранялось почти 12 лет: гипервизорной виртуализации не удавалось завоевать сколько-нибудь значимый кусок рынка хостинга, а контейнеры не могли проникнуть в корпоративный сегмент. Перелом наметился в 2013 году, когда новый разработчик Docker привлек внимание представителей бизнеса к преимуществам контейнерной технологии. http://www.lanmag.ru
КОНТЕЙНЕРЫ ПРОТИВ ГИПЕРВИЗОРОВ — ВСЕ ДЕЛО В ПЛОТНОСТИ Гипервизор работает следующим образом (см. Рисунок 1): операционная система хоста эмулирует аппаратное обеспечение, поверх которого уже запускаются гостевые операционные системы. Это означает, что взаимосвязь между гостевой и хосто-
вой операционными системами следует «железной» парадигме: все, что «умеет» делать оборудование, должно быть доступно гостевой ОС со стороны хостовой. Напротив, контейнеры (см. Рисунок 2) — это виртуализация на уровне операционной системы, а не оборудования, то есть каждая гостевая ОС использует то же самое ядро (а в некоторых случаях — и другие части ОС), что и хостовая. Это дает контейнерам большое преимущество: они меньше и компактнее гипервизорных гостевых сред, поскольку у них с хостом гораздо больше общего. Другой большой плюс — значительно большая эффективность контейнерной виртуализации в отношении совместного использования ресурсов, так как для нее контейнеры — это всего лишь управляемые ресурсы. К примеру, когда Контейнер 1 и Контейнер 2 работают с одним и тем же файлом, ядро хоста открывает этот файл и размещает страницы из него в страничный кэш ядра, которые затем передаются Контейнеру 1 и Контейнеру 2: если оба «хотят» прочитать одни и те же данные, они получают одну и ту же страницу. Если же гипервизорным виртуальным машинам VM1 и VM2 надо выполнить такую же операцию, то сначала сам хост открывает запрашиваемый файл (создавая страницы в своем страничном кэше), а затем еще и каждое из ядер VM1 и VM2 выполняет аналогичное действие. Таким образом, в процессе чтения машинами VM1 и VM2 одного и того же файла в памяти существует целых три одинаковых страницы (по одной в страничном кэше хоста и в ядрах VM1 и VM2), потому что они не «умеют» одновременно использовать одну и ту же страницу, как это делают контейнеры.
Октябрь 2014
57