Библиотека сайта rus-linux.net
SnowFlock
Глава 18 из 1 тома книги "Архитектура приложений с открытым исходным кодом".
Оригинал: SnowFlock
Авторы: Roy Bryant, Andres Lagar-Cavilla
Перевод: А.Панин
Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
18.3. Подход SnowFlock
SnowFlock реализует операцию клонирования виртуальных машин с помощью примитива под названием "VM Fork", который аналогичен стандартной функции fork
из состава Unix, но имеет несколько важных отличий. Во-первых, вместо дублирования единственного процесса, VM Fork дублирует всю виртуальную машину, включая всю память, все процессы и виртуальные устройства, а также локальную файловую систему. Во-вторых, вместо создания одной копии процесса, выполняющегося на том же физическом узле, VM Fork может запустить одномоментно множество копий виртуальных машин в параллельном режиме. Наконец, виртуальные машины могут быть запущены на отдельных физических серверах, позволяя вам быстро расширить возможности облака в случае необходимости.
- Виртуализация: Виртуальная машина является вычислительным окружением, что делает возможным клонирование облаков и машин.
- Отложенное распространение: Данные состояния виртуальной машины не копируются до тех пор, пока они не потребуются, поэтому клонированные виртуальные машины становятся работоспособными в течение нескольких секунд.
- Многоадресная передача: Клонированные виртуальные машины испытывают потребность в одних и тех же данных состояния. При использовании многоадресной передачи множество клонированных виртуальных машин начнут работать так же быстро, как если бы клонированная виртуальная машина была одна.
- Ошибки страниц: В момент, когда клонированная виртуальная машина пытается получить доступ к отсутствующей странице памяти, возникает ошибка страницы, инициирующая выполнение запроса к родительской виртуальной машине. Процесс работы клонированной виртуальной машины прерывается до того момента, пока необходимая страница не будет получена.
- Копирование при записи (Copy on Write - CoW): Копируя страницы памяти и диска перед их перезаписью, родительская виртуальная машина может продолжать работу, сохраняя данные состояния для использования клонированными виртуальными машинами.
Мы реализовали SnowFlock, используя систему виртуализации Xen, поэтому для лучшего понимания полезно привести специфическую для Xen терминологию. В окружении Xen мониторы виртуальных машин называются гипервизороми, а сами виртуальные машины - доменами. На каждой физической машине (узле) существует привилегированный домен, называемый "domain 0" (dom0) и имеющий полный доступ к узлу и его физическим устройствам, который может использоваться для контроля дополнительных гостевых или "пользовательских" виртуальных машин, называемых "domain U" (domU).
В общих чертах, SnowFlock содержит набор модификаций для гипервизора Xen, позволяющих ему благополучно восстанавливать работу в случае доступа к отсутствующим ресурсам, набор поддерживающих работу процессов и систем, которые выполняются в рамках домена dom0 и совместно передают недостающие данные состояния виртуальным машинам, а также некоторые дополнительные модификации для операционных систем, выполняющихся в клонированных виртуальных машинах. Существует шесть основных компонентов SnowFlock.
- Дескриптор виртуальной машины: Этот небольшой объект используется для запуска клонированной виртуальной машины и содержит ее скелет, необходимый для начала работы. Он не содержит внутренние органы и мышцы, необходимые для выполнения полезной работы.
- Система многоадресного распространения данных (
mcdist
): Эта система на стороне родительской виртуальной машины эффективно распространяет информацию о состоянии виртуальной машины одновременно между всеми клонированным виртуальным машинам. - Процесс сервера памяти: Этот процесс на стороне родительской виртуальной машины поддерживает постоянную копию данных состояния виртуальной машины и делает ее доступной для всех клонированных виртуальных машин при необходимости с помощью
mcdist
. - Процесс
memtap
: этот процесс на стороне клонированной виртуальной машины обслуживает данную виртуальную машину и связывается сервером памяти для запроса страниц, которые необходимы, но отсутствуют. - Оптимизации клонированных виртуальных машин: Гостевое ядро ОС, работающее в клонированных виртуальных машинах, может способствовать уменьшению интенсивности передач данных состояния виртуальных машин по запросам, отправляя подсказки монитору виртуальной машины. Это необязательная функция, но ее использование весьма желательно для повышения эффективности работы.
- Стек управления: Демоны, выполняющиеся на каждом физическом узле и предназначенные для распределения задач между другими компонентами и управления родительскими и клонированными виртуальными машинами SnowFlock.
Рисунок 18.1: Архитектура системы репликации виртуальных машин в SnowFlock
Образно говоря, Рисунок 18.1 отражает процесс клонирования виртуальной машины, обозначая четыре основных шага: (1) остановка родительской виртуальной машины для создания архитектурного дескриптора; (2) распространение этого дескриптора среди всех целевых узлов; (3) создание клонированных виртуальных машин, практически не располагающих данными состояния, а также (4) распространение данных состояния по запросам. Данный рисунок также отражает использование системы многоадресного распространения данных mcdist
и предупреждение запросов с помощью механизмов оптимизации на стороне гостевых виртуальных машин.
Если вы желаете испытать SnowFlock в рабочих условиях, вы можете получить данный программный продукт двумя способами. Документация и открытый исходный код из состава оригинального исследовательского проекта SnowFlock Университета Торонто находятся в свободном доступе1. Если вы предпочитаете версию, используемую в индустриальных проектах, бесплатные лицензии для некоммерческого использования распространяются компанией GridCentric Inc.2 Так как SnowFlock содержит модификации для гипервизора и требует доступа к домену dom0, для установки SnowFlock требуется привилегированный доступ к машинам. По этой причине вам придется использовать собственное аппаратное обеспечение и вы не сможете испытать данный продукт, являясь пользователем такого коммерческого облачного окружения, как Amazon EC2.
В нескольких следующих разделах мы опишем различные программные компоненты, взаимодействующие с целью реализации быстрого и эффективного процесса клонирования виртуальных машин. Все компоненты, которые мы опишем, взаимодействуют так, как показано на Рисунке 18.2.
Рисунок 18.2: Программные компоненты из состава SnowFlock
Далее: 18.4. Архитектурный дескриптор виртуальной машины