xg-scale

annotate xen.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children
rev   line source
igor@0 1 \section{Xen}
igor@0 2
igor@0 3
igor@0 4 \textbf{Xen} — это монитор виртуальных машин (VMM, Virtual Machine Monitor) или гипервизор (hypervisor) с поддержкой паравиртуализации (para-virtualization) для процессоров x86 архитектуры, распространяющийся с открытым исходным кодом (opensource). Xen может организовать совместное безопасное исполнение нескольких виртуальных машин на одной физической системе с производительностью близкой к непосредственной (native).
igor@0 5
igor@0 6 Xen обладает функциональностью ПО корпоративного уровня; в нём, в частности, обеспечивается:
igor@0 7 \begin{itemize}
igor@0 8 \item Производительность виртуальных машин близкая к производительности при непосредственном исполнении на железе;
igor@0 9 \item Возможность живой миграции работающих виртуальных машин между хостами;
igor@0 10 \item Поддержка до 32 виртуальных процессоров на одну гостевую машину с возможностью горячего добавления (hotplug) процессоров;
igor@0 11 \item Поддержка платформ x86/32, x86/32 с PAE и x86/64;
igor@0 12 \item Поддержка аппаратной виртуализации для запуска немодифицированных операционных систем (включая Microsoft Windows);
igor@0 13 \item Отличная поддержка оборудования (поддерживаются практически все драйверы устройств Linux).
igor@0 14 \end{itemize}
igor@0 15
igor@0 16 \subsection{Что это}
igor@0 17 \subsubsection{Что может виртуализация}
igor@0 18 \begin{enumerate}
igor@0 19 \item Запуск множества операционных систем одновременно
igor@0 20 \item Гарантированная изоляция ОС друг от друга
igor@0 21 \item Возможность гибкого разделения ресурсов между машинами
igor@0 22 \end{enumerate}
igor@0 23
igor@0 24 \subsubsection{Зачем это надо}
igor@0 25
igor@0 26 \subsubsection{Примеры использования}
igor@0 27 Список примеров не полный.
igor@0 28
igor@0 29 Консолидация серверов хостинг-провайдеров:
igor@0 30 \begin{itemize}
igor@0 31 \item Одна виртуальная машина на пользователя;
igor@0 32 \item Динамическое создание виртуальных машин;
igor@0 33 \item Миграция VM в пределах кластера;
igor@0 34 \item Плавный апгрейд критических серверов.
igor@0 35 \end{itemize}
igor@0 36
igor@0 37 \subsection{Виртуализация и паравиртуализация}
igor@0 38 Принципы действия виртуальных машин/эмуляторов/сред ограниченного исполнения:
igor@0 39
igor@0 40 \begin{itemize}
igor@0 41 \item \textbf{интерпретация} и \textbf{динамическая рекомпиляция} -- Bochs -- PearPC -- QEMU -- VirtualPC for MAC;
igor@0 42 \item \textbf{виртуализация на уровне ОС} -- Jail -- Linux-VServer -- OpenVZ -- Virtuozzo -- Zones;
igor@0 43 \item \textbf{виртуализация} -- VMware -- VirtualPC -- Virtual Server 2005 -- QEMU с модулем kqemu;
igor@0 44 \item \textbf{паравиртуализация} и \textbf{портирование} -- Xen -- UML .
igor@0 45 \end{itemize}
igor@0 46
igor@0 47 Идеальная виртуальная среда абсолютно прозрачна
igor@0 48 для гостевых систем.
igor@0 49 Ключевые особенности виртуализации:
igor@0 50 \begin{itemize}
igor@0 51 \item Общие принципы построения мейнфреймов
igor@0 52 \item Практически невозможно для процессоров семейства i386
igor@0 53 \item Запуск немодифицированных ОС выполняется сложно
igor@0 54 \begin{itemize}
igor@0 55 \item Перехват привилегированных вызовов
igor@0 56 \item Динамическое изменение кода
igor@0 57 \end{itemize}
igor@0 58 \item В результате в некоторых случаях производительность страдает.
igor@0 59 \end{itemize}
igor@0 60
igor@0 61 Xen не скрывает себя от гостевых ОС.
igor@0 62 Наоборот, они должны быть подготовлены к работе с этой системой.
igor@0 63 Для этого выполняется:
igor@0 64 \begin{itemize}
igor@0 65 \item Портирование операционной системы для работы с Xen
igor@0 66 \item Гостевым операционным система даётся возможность использования драйверов хост-системы, но только под её присмотром.
igor@0 67 \end{itemize}
igor@0 68
igor@0 69 В настоящий момент модифицированный код гостевых ОС
igor@0 70 доступен для Linux и NetBSD. Ведётся работа по портированию
igor@0 71 FreeBSD, OpenSolaris и Plan9.
igor@0 72
igor@0 73 Xen полностью интегрирован с Linux:
igor@0 74 \begin{itemize}
igor@0 75 \item Существует отдельная архитектура ядра (ARCH=xen)
igor@0 76 \item Xen работает как гипервизор
igor@0 77 \item Ядро обращается к гипервизору для получения ресурсов
igor@0 78 \item Гипервизор использует драйверы Linux.
igor@0 79 \end{itemize}
igor@0 80
igor@0 81 \subsubsection{Дополнительная информация}
igor@0 82 \begin{itemize}
igor@0 83 \item http://en.wikipedia.org/wiki/Virtualization
igor@0 84 \item http://en.wikipedia.org/wiki/X86\_virtualization
igor@0 85 \item Технологии виртуализации: вчера, сегодня, завтра -- статья Сергея Озерова и Александра Карабуто в журнале \dq{}Экспресс Электроника\dq{}
igor@0 86 \item http://www.xensource.com/xen/xen/index.html
igor@0 87 \item http://en.wikipedia.org/wiki/Xen
igor@0 88 \item Paravirtualization is a Dead-End Approach -- критика паравиртуализации в блоге VirtualIron
igor@0 89 \end{itemize}
igor@0 90
igor@0 91 \subsection{Сравнение с другими виртуальными машинами}
igor@0 92 Сравнение виртуальных машин, сред ограниченного исполнения
igor@0 93 и эмуляторов производится на странице \textit{Сравнение виртуальных машин}.
igor@0 94
igor@0 95 \subsection{Производительность}
igor@0 96 <dl><dd> \textit{Основная страница: \textbf{Производительность Xen}}
igor@0 97 </dd></dl>
igor@0 98
igor@0 99 Портирование ОС на Xen позволяет добиться большей эффективности
igor@0 100 в сравнении с виртуализацией, основанной на перехвате
igor@0 101 несработавших инструкций, или тем более использовании интерпретатора
igor@0 102 или JIT-компилятора кода гостевой ОС.
igor@0 103 Минусом этого подхода является необходимость в портировании ОС,
igor@0 104 но опыт показал, что это можно сделать довольно быстро.
igor@0 105
igor@0 106 Операционные системы, работающие в Xen, исполняются
igor@0 107 с уровнем привилегий 1 вместо 0, который зарезервирован для Xen.
igor@0 108 В результате гостевые ОС не могут использовать привилегированные
igor@0 109 инструкции для запрета/разрешения прерываний, изменения таблиц адресов
igor@0 110 и т.д. Вместо этого они должны выполнять соответствующее обращение (hypercall)
igor@0 111 к гипервизору Xen с просьбой выполнить необходимую операцию.
igor@0 112 При правильной разработке интерфейса между виртуальными машинами и гипервизором,
igor@0 113 накладные расходы на выполнение операций малы.
igor@0 114
igor@0 115 Вместо того чтобы пытаться эмулировать существующее аппаратное обеспечение,
igor@0 116 Xen предоставляет специально подготовленные блочные устройства
igor@0 117 и сетевые интерфейсы гостевых операционным системам, и требуя
igor@0 118 соответствующий драйвер.
igor@0 119 Преимущество такого подхода заключается в том, что производительность
igor@0 120 гостевой ОС практически не страдает:
igor@0 121 например, скорость передачи данных по Gigabit Ethernet каналу
igor@0 122 из машины, работающей под Xen, такая же как и у родной операционной системы.
igor@0 123
igor@0 124 Группа разработчиков Xen провела исследование производительности этой системы.
igor@0 125 Для этого система с ядром Linux 2.4.22 была запущена в различных режимах
igor@0 126 и в ней выполнялся ряд тестов.
igor@0 127 Проводилось сравнение системы работающей на реальной машине,
igor@0 128 с работой в виртуальных машинах с такими системами виртуализации:
igor@0 129 \begin{itemize}
igor@0 130 \item VMware workstation 3.2;
igor@0 131 \item User Mode Linux (UML).
igor@0 132 \end{itemize}
igor@0 133
igor@0 134
igor@0 135 Тесты, на которых проводилось сравнение:
igor@0 136 \begin{itemize}
igor@0 137 \item Набор тестов SPEC CPU2000 Integer;
igor@0 138 \item Полная сборка Linux 2.4.22 в конфигурации по умолчанию на локальном диске;
igor@0 139 \item PostgreSQL выполняющая тест OSDB Information Retrieval (IR);
igor@0 140 \item PostgreSQL выполняющая тест OSDB On-Line Transaction Processing (OLTP);
igor@0 141 \item Однопользовательский тест файловой системы dbench 2.0;
igor@0 142 \item Тест SPWCWeb99 для Web-сервера Apache 1.3.27 с модулем `mod\_specweb99\rq{} для динамического создания контента.
igor@0 143 \end{itemize}
igor@0 144
igor@0 145 На рисунке изображены уровни производительности
igor@0 146 для Linux (L), Xen/Linux (X), VMware Workstation 3.2 (V)
igor@0 147 и User Mode Linux (U).
igor@0 148
igor@0 149 Тест SPEC INT2000 наиболее требователен к процессору CPU, но практически не выполняет
igor@0 150 ввода/вывода и требует минимум работы от самой операционной системы,
igor@0 151 и вследствие этого все три техники виртуализации показали практически одинаковые
igor@0 152 хорошие результаты.
igor@0 153
igor@0 154 В других тестах, наоборот, требуется большее участие ОС, больше переключений контекста
igor@0 155 и больше операций по созданию процессов.
igor@0 156 Производительность Linux внутри Xen практически не отличается
igor@0 157 от производительности Linux, работающего непосредственно на железе.
igor@0 158 В наихудшем случае, при выполнении теста OSDB-IR, отставание составило 8\%.
igor@0 159 При использовании других техник виртуализации,
igor@0 160 результаты не были настолько хорошими. В некоторых случаях
igor@0 161 замедление составило до 88\%.
igor@0 162 В работе \url{http://www.cl.cam.ac.uk/netos/papers/2003-xensosp.pdf}
igor@0 163 приведены дополнительные результаты, в частности касающиеся одновременного
igor@0 164 запуска большого количества виртуальных машин.
igor@0 165
igor@0 166 Представленные выше результаты были проверены и подтверждены
igor@0 167 независимой группой Кларксоновского Университета (Clarkson University).
igor@0 168 С результатами исследования, проведённого этой группой, можно ознакомиться
igor@0 169 в работе \dq{}Xen and the Art of Repeated Research\dq{},
igor@0 170 которая также включает результаты сравнения производительности Xen
igor@0 171 и машины IBM zServer.
igor@0 172
igor@0 173 \subsubsection{Дополнительная информация}
igor@0 174 \begin{itemize}
igor@0 175 \item Xen Performance -- статья группы разработчиков Xen, сравнивающая производительность Linux, Xen, UML, VMWare
igor@0 176 \item Xen and the Art of Virtualization -- статья группы разработчиков Xen, в которой описывается архитектура Xen
igor@0 177 \item Xen and the Art of Repeated Research -- результаты исследования производительности, выполненного независимой группой Кларксоновского Университета
igor@0 178 \end{itemize}
igor@0 179
igor@0 180 \subsection{Новые возможности Xen}
igor@0 181 <dl><dd> \textit{Основная страница: \textbf{Новости Xen}}
igor@0 182 </dd></dl>
igor@0 183
igor@0 184 Текущяя версия: \textit{Xen 3.2.0}, релиз сделан 16 января 2008 года.
igor@0 185
igor@0 186 \subsubsection{Возможности Xen 3}
igor@0 187 Xen 3 значительно отличается от своего предшественника Xen 2.
igor@0 188 Повышены устойчивость к сбоям, безопасность, производительность.
igor@0 189 Появился ряд принципиально новых возможностей.
igor@0 190
igor@0 191 Наиболее значимые изменения:
igor@0 192 \begin{itemize}
igor@0 193 \item Intel (Physical Addressing Extensions) PAE для поддержки 32битных серверов с >4G ОЗУ
igor@0 194 \item Поддержка x86/64 (Intel EM64T, AMD Opteron)
igor@0 195 \item Поддержка Intel VT-x для запуска немодифицированных гостевых ОС (Windows XP/2003, немодифицированный Linux)
igor@0 196 \item Усовершенствованные инструменты управления
igor@0 197 \item Улучшенная поддержка ACPI
igor@0 198 \item AGP/DRM графика
igor@0 199 \end{itemize}
igor@0 200
igor@0 201 Начиная с версии 3.1 появились следующие возможности:
igor@0 202 \begin{itemize}
igor@0 203 \item Поддержка XenAPI 1.0
igor@0 204 \begin{itemize}
igor@0 205 \item Конфигурационные файлы виртуальных машин в XML;
igor@0 206 \item Управление жизненным циклом виртуальных машин;
igor@0 207 \item Безопасная привязка XML-RPC для многих языков
igor@0 208 \end{itemize}
igor@0 209 \item Предварительная поддержка save/restore/migrate для HVM-доменов (в частности, Windows);
igor@0 210 \item Динамическое управление памятью для HVM-доменов;
igor@0 211 \item Поддержка 32-на-64 паравиртуальных гостевых систем (запуск паравиртуальных систем PAE на 64-битном Xen);
igor@0 212 \item Поддержка copy-on-write для дисковых устройств blktap.
igor@0 213 \end{itemize}
igor@0 214
igor@0 215 \subsubsection{Ограничения Xen 2}
igor@0 216 В предыдущей версии Xen (Xen 2.0) наиболее сильно были заметны следующие недостатки:
igor@0 217 \begin{itemize}
igor@0 218 \item Не поддерживалась многопроцессорность в гостевых ОС
igor@0 219 \item Поддерживалась только архитектура i386; x86\_64 поддерживает только в режиме i386
igor@0 220 \end{itemize}
igor@0 221
igor@0 222 \subsection{Аппаратные требования}
igor@0 223 <dl><dd> \textit{Основная страница: \textbf{Аппаратные требования Xen}}
igor@0 224 </dd></dl>
igor@0 225
igor@0 226 В настоящий момент Xen
igor@0 227 работает на платформах \textbf{Intel x86} и \textbf{Intel x86\_64} (в режиме совместимости i386)
igor@0 228 и требует процессора не ниже P6.
igor@0 229 Выполняется поддержка многопроцессорных машин (в том числе и машин с процессорами с архитектурой Hyper-Threading).
igor@0 230 В ближайшее время Xen будет работать на процессорах архитектуры IA64.
igor@0 231 Также ведутся работы по подготовке Xen для работы на процессорах с архитектурой PPC и ARM.
igor@0 232
igor@0 233 Для использования \textit{модифицированных}
igor@0 234 операционных систем -- подготовленных к использованию в паравиртуальной машине Xen -- никаких дополнительных требований к аппаратному обеспечению
igor@0 235 компьютера, на котором будут выполняться виртуальные машины, не предъявляется.
igor@0 236
igor@0 237 Использование операционных систем \textit{в неизменном
igor@0 238 виде} возможно при использовании
igor@0 239 процессоров с поддержкой виртуализации.
igor@0 240
igor@0 241 \subsection{Поддержка Xen различными операционными системами}
igor@0 242 <dl><dd> \textit{Основная страница: \textbf{Поддержка Xen операционными системами}}
igor@0 243 </dd></dl>
igor@0 244
igor@0 245 В домене 0 может использоваться ОС:
igor@0 246 \begin{itemize}
igor@0 247 \item Linux
igor@0 248 \item NetBSD
igor@0 249 \item OpenSolaris
igor@0 250 \end{itemize}
igor@0 251
igor@0 252 В паравиртуальном режиме в домене domU работают:
igor@0 253 \begin{itemize}
igor@0 254 \item Linux
igor@0 255 \item NetBSD (без PAE)
igor@0 256 \item FreeBSD (начиная с 7, без поддержки PAE и с большим количеством ограничений)
igor@0 257 \item Plan9 (без PAE)
igor@0 258 \item OpenSolaris (build 44).
igor@0 259 \end{itemize}
igor@0 260
igor@0 261 В режиме аппаратной виртуализации поддерживаются Windows XP, Windows 2003 Server.
igor@0 262
igor@0 263 \subsection{Инсталляция, конфигурирование и использование Xen}
igor@0 264 \subsubsection{Как начать?}
igor@0 265 Для того чтобы попробовать Xen в действии, не нужно много времени.
igor@0 266 При благоприятных обстоятельствах
igor@0 267 (вы ясно соображаете, уверенно чувствуете себя в командной строке,
igor@0 268 у вас хороший канал в Интернет, и вы используете Linux -- обычно эти качества
igor@0 269 встречаются вместе)
igor@0 270 вы увидите приглашение гостевой ОС меньше чем через
igor@0 271 десять минут после того как начнёте экспериментировать.
igor@0 272
igor@0 273 Возможно, вы используете систему,
igor@0 274 которая уже поддерживает Xen из коробки.
igor@0 275
igor@0 276 Если так, то вы можете получить образ из Интернета,
igor@0 277 описанным здесь способом.
igor@0 278
igor@0 279 Если ваша система не поддерживает Xen,
igor@0 280 а вы не хотите сейчас заниматься сборкой и инсталляцией
igor@0 281 Xen вручную, можно использовать Live CD с Xen.
igor@0 282 Его образ можно получить здесь.
igor@0 283
igor@0 284 \subsubsection{Инсталляция операционной системы в domU}
igor@0 285 Существует несколько способов
igor@0 286 подготовки образа гостевой системы.
igor@0 287 \begin{enumerate}
igor@0 288 \item Инсталляция средствами базовой операционной системы
igor@0 289 \item Использование готового образа
igor@0 290 \item Использование инсталлятора гостевой ОС
igor@0 291 \item Использование диска реальной машины
igor@0 292 \end{enumerate}
igor@0 293