Добавлен: 29.10.2018
Просмотров: 48208
Скачиваний: 190
7.9. Виртуальные машины на мультиядерных центральных процессорах
551
зические функции являются полноценными PCIe-функциями и позволяют устройству
конфигурироваться любым способом, какой администратор сочтет нужным. Гостевым
операционным системам физические функции недоступны. Виртуальные функции
представляют собой облегченные PCIe-функции, не предлагающие подобных вариантов
конфигурирования. Они идеально подходят для виртуальных машин. В целом техно-
логия SR-IOV позволяет устройствам виртуализироваться в сотнях (или около того)
виртуальных функций, которые создают у виртуальных машин уверенность в том, что
они являются единственными владельцами устройства. Например, если взять сетевой
интерфейс с технологией SR-IOV, виртуальная машина может управлять своей вирту-
альной сетевой картой, как будто она является физической. К тому же у многих совре-
менных сетевых карт имеются отдельные (кольцевые) буферы для отправки и получения
данных, выделенные этим виртуальным машинам. Например, сетевые карты Intel серии
I350 имеют восемь очередей на отправку и восемь очередей на прием.
7.8. Виртуальные устройства
Виртуальные машины предлагают интересное решение проблемы, которая уже давно
беспокоит пользователей, особенно тех, кто пользуется программными средствами
с открытым кодом: как устанавливать новые прикладные программы. Проблема в том,
что многие приложения зависят от множества других приложений и библиотек, кото-
рые, в свою очередь, зависят от целого ряда других программных пакетов, и т. д. Более
того, могут существовать зависимости от конкретных версий компиляторов, языков
написания сценариев и операционных систем.
Теперь, когда появилась возможность использования виртуальных машин, разра-
ботчики программного обеспечения могут подойти к конструированию виртуальной
машины с особой тщательностью, загрузив в нее требуемую операционную систему,
компиляторы, библиотеки и код приложения, и зафиксировать весь готовый к запуску
блок. Этот образ виртуальной машины затем может быть помещен на компакт-диск
или на веб-сайт, чтобы клиенты могли его установить или загрузить. Такой подход
означает, что в зависимостях должен разбираться только разработчик программного
обеспечения. Клиенты получают полный работоспособный пакет, совершенно незави-
симый от той операционной системы, под которой они работают, и от того, какие другие
программы, пакеты и библиотеки они установили. Такие «упакованные» виртуальные
машины часто называют виртуальными устройствами (virtual appliances). К примеру,
у компании Amazon есть облако EC2, где находится множество упакованных вирту-
альных устройств, доступных клиентам компании и предлагаемых в качестве удобных
программных служб (Software as a Service — программное обеспечение в виде службы).
7.9. Виртуальные машины на мультиядерных
центральных процессорах
Комбинация виртуальных машин и мультиядерных центральных процессоров создает
совершенно новый мир, в котором количество доступных центральных процессоров
может регулироваться программным способом. Если есть, скажем, четыре ядра и на
каждом из них, к примеру, может быть запущено до восьми виртуальных машин, один
центральный процессор (настольного компьютера) может быть, если нужно, скон-
552
Глава 7. Виртуализация и облако
фигурирован как мультикомпьютер с 32 узлами. Но он также может иметь и меньше
центральных процессоров в зависимости от программного обеспечения. Никогда ранее
разработчику прикладных программ не предоставлялась возможность сначала выбрать,
сколько центральных процессоров ему нужно, а затем соответствующим образом на-
писать программу. Это, несомненно, новый этап в вычислениях.
Кроме того, виртуальные машины могут совместно использовать память. В случае
возможности такого использования типичным примером может послужить отдельный
сервер, на котором запущены сразу несколько экземпляров одной и той же операцион-
ной системы. Нужно лишь отобразить физические страницы на адресные пространства
нескольких виртуальных машин. Совместное использование уже доступно в решени-
ях дедупликации, которая является именно тем, о чем вы подумали, — технологией,
позволяющей избежать двойного хранения одних и тех же данных. Она довольно
часто встречается в системах хранения данных, но теперь также появляется и в вир-
туализации. В Disco она была известна как прямое общее использование страниц
(transparent page sharing), требующее модификации гостевой операционной системы,
а в VMware — как общее использование страниц на основе содержимого (content-
based page sharing), не требующее никаких модификаций. В общем, технология бази-
руется на сканировании памяти каждой виртуальной машины хоста и хэшировании
страниц памяти. Если какие-то страницы выдают одинаковый хэш, система должна
сначала проверить их реальную идентичность и при наличии таковой дедуплициро-
вать эти страницы, создавая одну страницу с данным содержимым и две ссылки на нее.
Поскольку гипервизор управляет вложенными (или теневыми) таблицами страниц,
это отображение не вызывает вопросов. Разумеется, когда любая из гостевых опера-
ционных систем модифицирует общую страницу, другой виртуальной машине (или
машинам) эти изменения будут не видны. Секрет заключается в использовании режима
копирования при записи
(copy on write), таким образом, модифицированная страница
будет закрытой страницей той системы, которая в нее вела запись.
Если виртуальные машины могут совместно использовать память, тот компьютер, на
котором они установлены, становится виртуальным мультипроцессором. Поскольку
все ядра в мультиядерном кристалле совместно используют одну и ту же оперативную
память, один кристалл с четырьмя ядрами может без труда быть сконфигурирован как
мультипроцессор с 32 узлами или, если это нужно, как мультикомпьютер с 32 узлами.
Комбинация мультиядерных кристаллов, виртуальных машин, гипервизора и микро-
ядер собирается радикально изменить представление людей о компьютерных систе-
мах. Имеющееся в настоящее время программное обеспечение не может реализовать
замысел определения программным путем общей картины количества необходимых
центральных процессоров, их желаемой принадлежности к мультикомпьютеру или
мультипроцессору, а также минимально необходимого количества ядер того или ино-
го типа. Решение этих вопросов — за будущим программным обеспечением. Если вы
изучаете компьютерные или инженерные науки или являетесь специалистом в этих
областях, вы можете стать одним из тех, кто со всем этим разберется. Попробуйте!
7.10. Вопросы лицензирования
Часть программ, особенно для компаний, лицензируется с привязкой к процессору.
Иными словами, при покупке программы компании приобретают право на ее запуск
только на одном центральном процессоре. А что такое центральный процессор? Дает
7.11. Облака
553
ли им этот контракт право на запуск программы на нескольких виртуальных машинах,
запущенных на одной и той же физической машине? Многие поставщики программ-
ного обеспечения не знают, что делать в подобных случаях.
Проблема усугубляется в тех компаниях, которые имеют лицензию, разрешающую
одновременно запускать программу на нескольких машинах, особенно в тех случаях,
когда виртуальные машины создаются и удаляются по мере необходимости.
В некоторых случаях поставщики программного обеспечения включают в лицензии
особый пункт, запрещающий лицензиату запуск программы на виртуальной машине
или на неавторизированной виртуальной машине. Для компаний, запускающих все
свое программное обеспечение исключительно на виртуальных машинах, такое положе-
ние дел может вылиться в серьезную проблему. Будут ли подобные ограничения оспа-
риваться в суде и как на них отреагируют пользователи, нам еще предстоит увидеть.
7.11. Облака
В резком взлете облачных вычислений технология виртуализации играет решающую
роль. Существует множество облаков. Некоторые из них относятся к публичным и до-
ступны любому, кто согласен платить за использование ресурсов, другие же являются
закрытыми облаками организаций. Также разные облака предлагают разные услуги.
Некоторые из них дают своим пользователям доступ к физическому оборудованию,
но большинство виртуализируют свою среду. Некоторые предлагают просто машины,
как виртуальные, так и физические, и больше ничего, а некоторые — готовое к исполь-
зованию и способное к объединению весьма интересными способами программное
обеспечение или платформы, облегчающие своим пользователям разработку новых
служб. Поставщики облачных услуг обычно предлагают различные категории ресурсов,
таких как «большие машины», «малые машины» и т. д.
При всех разговорах об облаках, похоже, мало кто с уверенностью может сказать, что
они на самом деле собой представляют. Национальный институт стандартов и техно-
логий (США), являясь источником, к которому всегда можно прибегнуть, перечислил
пять основных характеристик:
1. Самообслуживание по требованию (On-demand self-service). Пользователи долж-
ны иметь возможность получать ресурсы автоматически, без человеческого уча-
стия.
2. Широкий доступ по сети (Broad network access). Все эти ресурсы должны быть
доступны по сети посредством стандартных механизмов, чтобы ими могли вос-
пользоваться гетерогенные устройства.
3. Объединение ресурсов в пул (Resource pooling). Компьютерные ресурсы, при-
надлежащие поставщику, должны быть объединены в пул для обслуживания
нескольких пользователей с возможностью динамического назначения и освобож-
дения ресурсов. Пользователи обычно не знают точного местонахождения «своих»
ресурсов и даже того, в какой стране они расположены.
4. Быстродействующая эластичность (Rapid elasticity). Должна быть предоставлена
возможность эластичного получения и освобождения ресурсов, может быть, даже
в автоматическом режиме, чтобы происходило незамедлительное масштабирова-
ние в соответствии с потребностями пользователей.
554
Глава 7. Виртуализация и облако
5. Учтенные услуги (Measured service). Поставщик должен вести учет потреблен-
ных ресурсов тем способом, который соответствует типу заранее оговоренных
облачных услуг.
7.11.1. Облака в качестве услуги
В данном разделе мы рассмотрим облака, сконцентрировавшись на виртуализации
и операционных системах. Особенно подробно будут рассмотрены те облака, которые
предлагают непосредственный доступ к виртуальной машине, которой пользователь
может воспользоваться любым подходящим для него способом. Следовательно, одно
и то же облако может запускать разные операционные системы, возможно, на одном
и том же оборудовании. В понятиях облака это называется инфраструктурой в качестве
услуги (Infrastructure As A Service (IAAS)) в противоположность платформе в качестве
услуги (Platform As A Service (PAAS)), когда предоставляется среда, включающая та-
кие компоненты, как конкретная операционная система, база данных, веб-сервер и т. д.,
программного обеспечения в качестве услуги (Software As A Service (SAAS)), когда
предоставляется доступ к конкретному программному продукту, например Microsoft
Office 365 или Google Apps, и многим другим типам облаков в качестве услуг. Одним
из примеров IAAS-облака является Amazon EC2, основанное на гипервизоре Xen и на-
считывающее сотни тысяч физических машин. При условии наличия средств можно
получить сколько угодно вычислительных мощностей.
Облака могут изменять способ производимых компаниями вычислений. В целом, объе-
динение компьютерных ресурсов в небольшом количестве мест (с удобным расположе-
нием возле электростанций и там, где дешевле можно будет охлаждать оборудование)
позволяет сэкономить средства при масштабировании. Привлечение внешних ресурсов
к обработке информации означает, что вам не нужно особо волноваться об управлении
вашей IT-инфраструктурой, резервном копировании, обслуживании, амортизации,
масштабировании, надежности, производительности и, возможно, безопасности. Все
это делается в одном месте, и, если предположить высокую компетентность поставщика
облачных услуг, делается качественно. В связи с этим можно подумать, что теперь IT-
менеджеры стали намного счастливее, чем 10 лет назад. Но наряду с исчезновением
этих тревог появились новые. Можно ли действительно доверять своему поставщику
облачных услуг безопасное хранение ваших конфиденциальных данных? Будет ли
конкурент при работе на той же инфраструктуре иметь возможность выводить инфор-
мацию, которую желательно сохранять в закрытом виде? Какой закон (или законы)
применим к вашим данным (например, если поставщик облачных услуг находится
в США, то распространяется ли на ваши данные «Патриотический акт», даже если ваша
компания находится в Европе)? Если все ваши данные хранятся в облаке X, сможете
ли вы извлечь их оттуда или же вы будете привязаны к этому облаку и его поставщику
навсегда (это называется привязкой к поставщику (vendor lock-in)?
7.11.2. Миграция виртуальных машин
Технология виртуализации позволяет не только создавать IAAS-облака для одновре-
менного запуска на одном и том же оборудовании нескольких разных операционных
систем, но и искусно управлять ими. О возможности выделения большего количества
ресурсов, чем их фактически имеется, особенно в сочетании с дедупликацией, мы
уже говорили. Теперь давайте рассмотрим другие проблемы управления: что, если
7.11. Облака
555
машине понадобится обслуживание (или даже замена), а на ней запущено множе-
ство важных машин? Наверное, клиенты не обрадуются, если их системы утратят
работоспособность по причине того, что поставщик облачных услуг хочет заменить
дисковый привод.
Гипервизоры разобщают виртуальную машину и физическое оборудование. Иными
словами, для виртуальной машины на самом деле неважно, на какой машине она рабо-
тает, той или этой. Следовательно, можно просто остановить все виртуальные машины
и снова запустить их на совершенно новой машине. Но в результате этого получится
весьма существенный простой. Задача состоит в том, чтобы переместить виртуальную
машину с оборудования, нуждающегося в обслуживании, на новую машину вообще
без остановки.
Немного более приемлемым подходом может быть не остановка виртуальной машины,
а ее приостановка. Во время паузы мы как можно быстрее копируем страницы памяти,
используемые виртуальной машиной, на новое оборудование, проводим корректное
конфигурирование в новом гипервизоре, а затем возобновляем работу виртуальной
машины. Кроме памяти требуется перенести подключения к устройству хранения
данных и к сети, но если машины рядом, это можно сделать относительно быстро. Для
начала можно сделать файловую систему на основе сети (подобно сетевой файловой
системе — NFS), чтобы было все равно, на каком оборудовании работает ваша вирту-
альная машина, на серверной стойке 1 или 3. Также на новое место может быть просто
переключен IP-адрес. И все-таки придется приостановить работу машины на вполне
заметный период времени. Возможно, на это уйдет меньше времени, чем вы ожидали,
но все же его невозможно будет не заметить.
Вместо этого современные решения виртуализации предлагают так называемую жи-
вую миграцию
(live migration). Иными словами, перемещение виртуальной машины
происходит без прекращения ее работы. Например, в этих решениях используется
технология, подобная миграции памяти с предварительным копированием (pre-copy
memory migration). Это означает, что страницы памяти копируются в то время, когда
машина все еще обрабатывает запросы. Большинство страниц памяти не подвергается
интенсивной записи, следовательно, их копирование безопасно. Следует помнить, что
виртуальная машина все еще работает, поэтому страница может быть изменена после
того, как уже скопирована. При изменении страниц памяти мы должны гарантировать
копирование в место назначения самой последней их версии, поэтому помечаем такие
страницы как измененные. Позже они будут скопированы заново. Когда скопировано
большинство страниц памяти, мы остаемся с небольшим количеством измененных
страниц. Теперь делается очень короткая пауза на копирование оставшихся страниц,
и работа виртуальной машины возобновляется на новом месте. Хотя без паузы здесь
все же не обходится, она настолько коротка, что это обычно не оказывает никакого
влияния на приложения. Ситуация, когда простой не заметен, называется незаметной
живой миграцией
(seamless live migration).
7.11.3. Установка контрольных точек
Разобщение виртуальной машины и физического оборудования имеет дополнительные
преимущества. В частности, уже говорилось, что машину можно приостановить. Это
полезно само по себе. Если состояние приостановленной машины (например, состоя-
ние центрального процессора, страниц памяти и хранилища данных) сохраняется на