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 |