Добавлен: 29.10.2018
Просмотров: 48205
Скачиваний: 190
556
Глава 7. Виртуализация и облако
диске, у нас получается стоп-кадр работающей машины. Если программа устраивает
полный кавардак на все еще работающей виртуальной машине, можно просто сделать
откат к стоп-кадру и продолжить работу как ни в чем не бывало.
Наиболее простой способ создать стоп-кадр — это скопировать все, включая всю
файловую систему. Но копирование диска в несколько терабайт может занять уйму
времени, даже если это быстрый диск. К тому же приостанавливать работу машины
на длительное время, пока проделывается все необходимое, нежелательно. Решение
заключается в использовании технологий копирования при записи (copy on write),
чтобы данные копировались только в случае крайней необходимости.
Создание стоп-кадров работает неплохо, но все же вызывает ряд вопросов. Что делать,
если машина взаимодействует с удаленным компьютером? Мы можем сделать стоп-
кадр системы и вернуть ее в прежнее состояние на более поздней стадии, но та часть,
которая относится к обмену данными, уйдет в прошлое. Понятно, что эту проблему
решить невозможно.
7.12. Изучение конкретных примеров: VMWARE
С 1999 года VMware, Inc. стала ведущим коммерческим поставщиком решений по
виртуализации, предлагая продукты для настольных компьютеров, серверов, облаков,
а теперь даже и сотовых телефонов. Компания поставляет не только гипервизоры, но
и программы, управляющие виртуальными машинами в больших масштабах.
Изучение этого конкретного примера мы начнем с краткой истории становления
компании. Затем будет дано описание VMware Workstation, гипервизора второго типа
и первого продукта компании, всех сложностей в его конструкции и ключевых элемен-
тов этого решения. Затем будет дано описание происходившего в течение нескольких
лет развития VMware Workstation. А в завершение будет дано описание ESX Server,
гипервизора первого типа компании VMware.
7.12.1. Ранняя история VMware
Хотя идея использования виртуальных машин в 1960–1970-х годах была популярна
как в компьютерной промышленности, так и в академических исследованиях, после
1980-х годов интерес к виртуализации был полностью утрачен, и на подъеме было про-
изводство персональных компьютеров. Только подразделение универсальных машин
компании IBM все еще занималось виртуализацией. Действительно, компьютерные
архитектуры, разработанные в то время, в частности архитектура x86 компании Intel,
не предоставляла архитектурную поддержку виртуализации (например, они не отве-
чали критериям, выработанным Попеком и Голдбергом). Это весьма печальный факт,
ведь центральный процессор 386, являвшийся полной переработкой процессора 286,
был изготовлен спустя 10 лет после выхода статьи Попека и Голдберга и разработчики
должны были лучше разбираться в поднятых в ней вопросах.
В 1997 году в Стэнфорде три будущих основателя компании VMware создали про-
тотип гипервизора под названием Disco (Bugnion et al., 1997) с целью запуска товар-
ных операционных систем (в частности, UNIX) на сверхбольшом микропроцессоре,
разработанном в Стэнфорде, — на FLASH-машине. В ходе разработки этого проекта
авторы поняли, что использование виртуальных машин может простым и элегантным
7.12. Изучение конкретных примеров: VMWARE
557
способом решить сразу несколько трудных проблем системного программного обеспе-
чения: вместо попыток решения этих проблем внутри существующей операционной
системы можно применить новое техническое решение на уровне, расположенном ниже
существующей операционной системы. Работая над Disco, они пришли к ключевому
выводу о том, что высокая сложность современных операционных систем затрудняет
внедрение инноваций, а относительная простота монитора виртуальной машины и его
положение в стеке программного обеспечения предоставляют мощную платформу для
преодоления ограничений операционных систем. Хотя Disco был предназначен для
очень больших серверов и разработан для MIPS-архитектуры, авторы поняли, что
такой же подход может быть применен и к рынку, ориентированному на семейство
процессоров x86, и оказаться коммерчески целесообразным.
Вследствие этого в 1998 году была основана компания VMware, Inc., имевшая цель
привнесения виртуализации в архитектуру x86 и в индустрию персональных ком-
пьютеров. Первый продукт компании VMware (VMware Workstation) стал первым
решением виртуализации, доступным на 32-разрядной платформе на основе архитек-
туры x86. Первый выпуск продукта состоялся в 1999 году в двух вариантах: VMware
Workstation for Linux
, представлявшем собой гипервизор второго типа, запускавшийся
поверх основной операционной системы Linux, и VMware Workstation for Windows,
который запускался поверх Windows NT. Оба варианта обладали одинаковой функ-
циональностью: пользователь мог создавать несколько виртуальных машин путем
предварительного указания характеристик виртуального оборудования (например,
сколько памяти дать виртуальной машине или каким определить размер виртуального
диска) с последующей возможностью установки операционной системы по их выбору
на виртуальную машину, обычно с (виртуального) компакт-диска.
Продукт VMware Workstation был предназначен главным образом для разработчиков
и IT-профессионалов. До внедрения виртуализации на столе у разработчика обычно
стояли два компьютера, один со стабильными характеристиками, предназначенный для
разработки, а второй с возможностью переустановки в случае необходимости систем-
ного программного обеспечения. При использовании виртуализации второй тестовой
системой становилась виртуальная машина.
Вскоре компания VMware приступила к разработке второго, более сложного про-
дукта, который был выпущен как ESX Server в 2001 году. В ESX Server использовался
тот же механизм виртуализации, что и в VMware Workstation, но в пакет он входил
в качестве части гипервизора первого типа. Иными словами, ESX Server запускался
непосредственно на оборудовании, не требуя основной операционной системы. Ги-
первизор ESX был разработан для интенсивной консолидации рабочей нагрузки и со-
держал множество оптимизаций с целью обеспечения эффективного и справедливого
распределения ресурсов (центрального процессора, памяти и ввода-вывода) среди
виртуальных машин. Например, в этом продукте впервые была представлена концеп-
ция раздувания (ballooning) для перераспределения памяти между виртуальными
машинами (Waldspurger, 2002).
ESX Server был нацелен на объединенный серверный рынок. До внедрения виртуали-
зации IT-администраторы должны были, как правило, купить, установить и сконфи-
гурировать новый сервер для каждой новой задачи или приложения, который прихо-
дилось запускать в дата-центре. В результате инфраструктура использовалась крайне
неэффективно: серверы в то время обычно использовались на 10 % своих возможностей
(в пиковые моменты нагрузки). С появлением ESX Server IT-администраторы могли
558
Глава 7. Виртуализация и облако
объединить множество независимых виртуальных машин на одном сервере, экономя
время, деньги, пространство под компьютерные стойки и электроэнергию.
В 2002 году компания VMware представила свое первое управленческое решение
для ESX Server, изначально называвшееся Virtual Center, а теперь имеющее название
vSphere. Оно предоставляло единую точку управления для кластера серверов с за-
пущенными виртуальными машинами: IT-администратор теперь мог просто войти
в приложение Virtual Center и управлять тысячами виртуальных машин, запущенными
на предприятии, отслеживая их работу и предоставляя новые виртуальные машины.
С Virtual Center было предложено еще одно важное нововведение, VMotion (Nelson et
al., 2005), позволяющее проводить живые миграции работающих виртуальных машин
по сети. Впервые IT-администратор получил возможность переместить работающий
компьютер с одного места на другое без необходимости перезагрузки операционной
системы, перезапуска приложения и даже без потери сетевых подключений.
7.12.2. VMware Workstation
VMware Workstation стал первым продуктом виртуализации для 32-разрядных ком-
пьютеров семейства x86. Последующее внедрение виртуализации оказало значительное
влияние на отрасль и научное компьютерное сообщество: в 2009 году Ассоциация по
вычислительной технике (ACM) присудила его авторам престижную награду ACM
Software System Award
за VMware Workstation 1.0 для Linux. Исходный продукт
VMware Workstation подробно описан в технической статье (Bugnion et al., 2012). Здесь
будет приведено краткое изложение этой статьи.
Идея состояла в том, что уровень виртуализации может пригодиться на торговых
платформах, созданных из центральных процессоров семейства x86 и первоначально
работавших под управлением операционных систем Microsoft Windows (известных
также как платформа WinTel). Преимущества от виртуализации могли помочь в при-
нятии мер по отношению к ряду известных ограничений платформы WinTel, напри-
мер к совместимости приложений, миграции операционной системы, надежности
и безопасности. Кроме того, виртуализация может легко позволить сосуществование
альтернативных операционных систем, в частности Linux.
Хотя целые десятилетия были потрачены на исследования и коммерческое развитие
технологий виртуализации на универсальных компьютерах, вычислительная среда в се-
мействе x86 имела существенные отличия, что потребовало новых исследований. На-
пример, универсальные машины были вертикально интегрированными, что означало,
что один и тот же производитель разработал оборудование, гипервизор, операционную
систему и большинство приложений.
В отличие от этого индустрия x86 была (и продолжает быть) разделена как минимум
на четыре категории:
Intel и AMD делают процессоры;
Microsoft предлагает Windows, сообщество разработчиков программ с открытым
кодом предлагает Linux;
третья группа компаний создает устройства ввода-вывода и периферийные устрой-
ства, а также соответствующие драйверы устройств;
четвертая группа системных интеграторов, в числе которых HP и Dell, собирают
компьютерные системы для розничной продажи.
7.12. Изучение конкретных примеров: VMWARE
559
Для платформы x86 виртуализация сначала должна быть внедрена без поддержки
любого из этих игроков в мире индустрии.
Поскольку это разделение было суровой действительностью, продукт VMware Work-
station отличался от классических мониторов виртуальных машин, разработанных как
часть архитектуры одного производителя с явной поддержкой виртуализации. Вместо
этого VMware Workstation был разработан для архитектуры x86 и того, что было созда-
но компьютерной индустрией вокруг этой архитектуры. VMware Workstation справи-
лась с новыми сложностями, объединив хорошо известные технологии виртуализации,
технологии из других областей и новые технологии в единое решение.
А теперь мы рассмотрим конкретные технические сложности, возникшие при создании
VMware Workstation.
7.12.3. Сложности внедрения виртуализации
в архитектуру x86
Вспомним определение гипервизоров и виртуальных машин: гипервизоры применяют
широко известный принцип добавления уровня косвенного обращения (adding a level
of indirection) к области компьютерного оборудования. Они предоставляют абстракцию
виртуальных машин
: нескольких копий основного оборудования, на каждой из кото-
рых запущен независимый экземпляр операционной системы. Виртуальные машины
изолированы от других виртуальных машин, каждая из них появляется в виде дубли-
ката основного оборудования и в идеале работает с той же скоростью, что и реальная
машина. VMware адаптировала эти основные атрибуты виртуальной машины к целевой
платформе на базе x86 следующим образом:
Совместимость. Понятие «практически идентичная среда» означает, что любую опе-
рационную систему под x86 и все ее приложения можно будет запускать в качестве
виртуальной машины без модификаций. Гипервизор необходим для обеспечения
достаточной совместимости на уровне оборудования таким образом, чтобы поль-
зователи могли работать на любой операционной системе (вплоть до обновленной
и исправленной версии), которую они пожелали установить на конкретной вирту-
альной машине, без каких-либо ограничений.
Производительность. Издержки от применения гипервизора должны быть до-
вольно низкими, чтобы виртуальную машину можно было использовать в качестве
первичной рабочей среды. Разработчики VMware поставили себе цель добиться
работы с большой нагрузкой практически на обычных скоростях, а в худшем случае
запускать программы на самых последних процессорах с производительностью,
аналогичной той, с которой они выполнялись на обычном оборудовании на бли-
жайшем предыдущем поколении процессоров. Такая постановка задачи строилась
на наблюдении, что подавляющая часть программного обеспечения под x86 не
разрабатывалась для работы только на самых последних поколениях центральных
процессоров.
Изолированность. Гипервизор должен обеспечить изолированность виртуальной
машины, не выстраивая никаких предположений насчет запускаемых внутри нее
программ. То есть гипервизор должен иметь полный контроль над ресурсами.
Программное обеспечение, работающее внутри виртуальных машин, должно быть
лишено возможности любого доступа, позволяющего ему вмешиваться в работу
гипервизора. Кроме того, гипервизор должен гарантировать закрытость всех дан-
560
Глава 7. Виртуализация и облако
ных, не принадлежащих виртуальной машине. Гипервизор должен предполагать,
что гостевая операционная система может быть инфицирована неизвестным вре-
доносным кодом (что сегодня вызывает намного большие опасения, чем во времена
универсальных машин).
Между этими тремя требованиями возникало неизбежное противоречие. Например,
полная совместимость в конкретных областях могла привести к чрезмерному влиянию
на производительность, в таких случаях разработчики компании VMware вынуждены
были идти на компромисс. Но при этом ими исключались любые компромиссы, спо-
собные поставить под угрозу изолированность или сделать гипервизор уязвимым для
атак вредоносного кода гостевой операционной системы. В целом, возникли четыре
основные проблемы:
1. Архитектура x86 была невиртуализируемой. Она содержала чувствительные
к виртуализации непривилегированные инструкции, которые нарушали вырабо-
танные Попеком и Голдбергом критерии для строгой виртуализации. Например,
инструкция POPF имеет разную (а также неперехватываемую) семантику в зави-
симости от того, разрешено текущей программе выключать прерывания или нет.
Это исключает традиционный подход к виртуализации, использующий перехват
и эмуляцию. Даже инженеры из компании Intel были убеждены, что их процессоры
практически невозможно виртуализировать.
2. Архитектура x86 была слишком сложна. Архитектура x86 была широко известной
своей сложностью CISC-архитектурой, включая унаследованную поддержку на
многие десятилетия обратной совместимости. На протяжении многих лет были
внедрены четыре основных режима операций (реальный, защищенный, v8086
и управления системой), каждый из которых по-разному включал модель аппарат-
ной сегментации, механизмы страничной организации памяти, защитные кольца
и функции безопасности (например, шлюзы вызова).
3. У машин x86 были разные периферийные устройства. Хотя у процессоров x86
было всего два основных производителя, персональные компьютеры в течение
всего времени выпуска могли содержать огромное разнообразие плат расширения
и устройств и у каждого были собственные драйверы устройств от конкретных
производителей. Виртуализировать все эти периферийные устройства было
невозможно. Последствия носили двойственный характер: они относились как
к внешнему интерфейсу (виртуальному оборудованию, видимому в виртуальных
машинах), так и к внутреннему интерфейсу (реальному оборудованию, которым
гипервизор должен был иметь возможность управлять) периферийных устройств.
4. Нужна была модель, не требующая особого пользовательского опыта. Класси-
ческие гипервизоры устанавливались на производстве аналогично прошивкам,
имеющимся в современных компьютерах. Поскольку VMware была новой компа-
нией, ее пользователям приходилось добавлять гипервизоры к уже существующим
системам. Чтобы стимулировать внедрение своего продукта, компании VMware
понадобилась модель доставки программного обеспечения, не требующая особого
опыта для установки.
7.12.4. VMware Workstation: обзор решения
В данном разделе дается описание на высоком уровне способов решения в VMware
Workstation тех сложностей, которые были перечислены в предыдущем разделе.