xg-scale

diff xen/export.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children 7ad41782e1ad
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/xen/export.tex	Tue Jul 01 16:16:44 2008 +0300
     1.3 @@ -0,0 +1,359 @@
     1.4 +\section{Преобразование независимых систем в виртуальные домены Xen}
     1.5 +
     1.6 +Здесь описывается как выполнять систему, установленную на компьютере, 
     1.7 +внутри домена Xen или с помощью эмулятора QEMU, исполняющегося на другом компьютере.
     1.8 +Может быть полезно при консолидации и виртуализации систем, 
     1.9 +при работе с устаревшими системами, при тестировании.
    1.10 +
    1.11 +\subsection{Идея}
    1.12 +В связи с постоянным увеличением вычислительной мощности и объёма оперативной памяти машин, наблюдающимся в настоящее время, большую популярность приобретает идея виртуализации систем. В особенности популярным этот подход становится 
    1.13 +при построении серверной инфраструктуры.
    1.14 +
    1.15 +Виртуализированная серверная инфраструктура редко строится с нуля. Чаще всего существует парк физических (не виртуализированных) серверов, которые безостановочно работают, выполняя возложенные на них задачи.
    1.16 +Нередко для хранения информации (операционной системы, программного обеспечения и данных) эти серверы используют не внешние хранилища, а собственные жётские
    1.17 +диски.
    1.18 +
    1.19 +Виртуализация сервера в данном случае может быть выполнена одним из указанных способов:
    1.20 +\begin{enumerate}
    1.21 +\item  \textit{Миграция служб.} В виртуальной системе новый сервер разворачивается с нуля. Затем на него переносятся службы старого сервера. После чего старый сервер выводится из эксплуатации.
    1.22 +\item  \textit{Миграция операционной системы.} Старый сервер останавливается, а затем на нём по сети (с компакт-диска или другого внешнего носителя информации) запускается другая операционная система, которая экспортирует установленный в сервере жёсткий диск системе виртуализации. Система виртуализации исполняет операционную систему, проинсталированную на этом диске. При условии, что виртуализация удалась, данные переносятся на хранилище системы виртуализации и старый сервер выключается.
    1.23 +\end{enumerate}
    1.24 +
    1.25 +Последний способ проще и быстрее, но он должен допускать возможность
    1.26 +временной, непродолжительной остановки сервера (на время запуска другой операционной системы, экспорта, запуска виртуальной машины поверх экспортированных данных).
    1.27 +В случае правильного выполнения всех операций простой в этом случае составит до 10 минут.
    1.28 +
    1.29 +Обратите внимание что данные, расположенные на жёстком диске,
    1.30 +при загрузке новой операционной системы, выполнящей экспорт,
    1.31 +никак не используются. Загрузка выполняется по сети, с компакт-диска или другого внешнего носителя. Диск экспортируется для доступа к нему системы виртуализации. Изменения на диске может делать только сама операционная система, установленная на этом же диске, после того как она запущена в виртуальном домене.
    1.32 +
    1.33 +Ниже детально рассматривается процесс миграции, 
    1.34 +выполненный по второму сценарию.
    1.35 +
    1.36 +\subsection{Постановка задачи}
    1.37 +Пусть есть две системы:
    1.38 +\begin{itemize}
    1.39 +\item  \textit{Старая система}  (old) --- система, которая должна быть экспортирована.
    1.40 +\item  \textit{Xen-система} (xen) --- система, внутри которой должен исполняться домен под управлением экспортированной системы.
    1.41 +\end{itemize}
    1.42 +
    1.43 +Необходимо создать новую виртуальную машину, 
    1.44 +которая будет использовать в качестве жёсткого диска жёсткий диск удалённого хоста, экспортированный для доступа по сети с помощью протоколов сетевого доступа к дисковым хранилищам.
    1.45 +
    1.46 +\subsection{Запуск второй операционной системы в домене Xen установленной на том же компьютере}
    1.47 +Рассмотрим для начала простейший случай, когда на одном компьютере 
    1.48 +установлено две операционные системы.
    1.49 +Он отличается от интересующей нас задачии тем, что не нужно 
    1.50 +выполнять экспорт диска как сетевого устройства.
    1.51 +
    1.52 +Если на компьютере установлены две операционные системы, 
    1.53 +и одна из них это Xenolinux (Xen + Linux), 
    1.54 +то вторую можно запустить как пользовательский домен Xen.
    1.55 +
    1.56 +Запуск систем, не подготовленных для использования в паравиртуальном домене Xen, 
    1.57 +внутри Xen возможен только в том случае, если центральный процессор системы поддерживает аппаратную виртуализацию.
    1.58 +В противном случае вместо Xen можно использовать QEMU.
    1.59 +
    1.60 +Операционная система, загруженная в родном режиме:
    1.61 +
    1.62 +\begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/2/29/Win2003_native.JPG}}\\ \textit{}\end{center}
    1.63 +
    1.64 +Конфигурационный файл домена Xen:
    1.65 +
    1.66 +\begin{verbatim}
    1.67 +%$ egrep -v '^#|^\ *$' /etc/xen/win2003 
    1.68 +kernel = "hvmloader"
    1.69 +builder='hvm'
    1.70 +memory = 512
    1.71 +shadow_memory = 8
    1.72 +name = "win2003"
    1.73 +acpi=1
    1.74 +vif = [ 'type=ioemu, bridge=br0' ]
    1.75 +disk = ['phy:/dev/hda,hda,w' ]
    1.76 +device_model = 'qemu-dm'
    1.77 +boot="c"
    1.78 +sdl=0
    1.79 +vnc=1
    1.80 +vnclisten="127.0.0.1"
    1.81 +stdvga=0
    1.82 +serial='pty'
    1.83 +soundhw='sb16'
    1.84 +\end{verbatim}
    1.85 +
    1.86 +В данном случае операционная система Windows установлена
    1.87 +на жёсткий диск IDE, подключенный в системе в режиме Primary Master 
    1.88 +(блочное устройство \texttt{/dev/hda}).
    1.89 +
    1.90 +Старт домена выполняется стандартным образом:
    1.91 +
    1.92 +\begin{verbatim}
    1.93 +%# xm create win2003
    1.94 +%# vncviewer 127.0.0.1:0
    1.95 +\end{verbatim}
    1.96 +
    1.97 +Здесь вместо 0 может быть указан другой номер, в зависимости от номера
    1.98 +VNC-сеанса, который будет соответствовать заданному домену Xen.
    1.99 +Подробнее см. руководство пользователя Xen.
   1.100 +
   1.101 +Домен Xen, загруженный с жёсткого диска:
   1.102 +
   1.103 +\begin{itemize}
   1.104 +\item  Процессор AMD 3000+
   1.105 +\item  512 Mb ОЗУ 
   1.106 +\end{itemize}
   1.107 +
   1.108 +\begin{figure} 
   1.109 +\includegraphics[width=12cm]{/var/lib/mediawiki/images/b/bc/W2003_xen.png}
   1.110 +\end{figure}
   1.111 +
   1.112 +На домен, в котором работает установленная операционная система
   1.113 +распространяются все те же законы, которые распространяются на систему, которая установлена в домен с нуля
   1.114 +традиционным способом.
   1.115 +
   1.116 +\subsection{Запуск домена с экспортированного образа}
   1.117 +Если операционная система установлена не локально, 
   1.118 +а на другом компьютере, необходимо каким-то образом его донести системе виртуализации, так что бы, грубо говоря, виртуальный домен увидел диск.
   1.119 +
   1.120 +Процедура включает три шага:
   1.121 +\begin{enumerate}
   1.122 +\item  Выполнить бездисковую загрузку старой системы \textit{old} под управлением Linux;
   1.123 +\item  Выполнить экспорт диска загруженной системы \textit{old} с помощью AoE или iSCSI;
   1.124 +\item  На работающей Xen-системе \textit{xen} запустить домен, который будет использовать экспортированный старой машиной.
   1.125 +\end{enumerate}
   1.126 +
   1.127 +\subsubsection{Подготовка сервера бездисковой загрузки}
   1.128 +Детально процедура подготовки сервера бездисковой загрузки
   1.129 +описана на странице \htmladdnormallinkfoot{PXE}{http://xgu.ru/wiki/PXE}.
   1.130 +Ниже приводятся только примеры конфигурационных
   1.131 +файлов ключевых систем, использующихся в работе.
   1.132 +
   1.133 +\paragraph{DHCP}
   1.134 +Конфигурация демона dhcpd в файле \textbf{/etc/default/dhcp}:
   1.135 +
   1.136 +\begin{verbatim}
   1.137 +%$ egrep -v '^#|^\ *$' /etc/default/dhcp 
   1.138 +INTERFACES="br0"
   1.139 +\end{verbatim}
   1.140 +
   1.141 +Сам конфигурационный файл \textbf{/etc/dhcpd.conf}:
   1.142 +
   1.143 +\begin{verbatim}
   1.144 +%$ egrep -v '^#|^\ *$' /etc/dhcpd.conf 
   1.145 +option domain-name "clinika.com";
   1.146 +option domain-name-servers 192.168.15.254;
   1.147 +option subnet-mask 255.255.255.0;
   1.148 +default-lease-time 600;
   1.149 +max-lease-time 7200;
   1.150 +subnet 192.168.7.0 netmask 255.255.255.0 {
   1.151 +  range 192.168.7.200 192.168.7.220;
   1.152 +  option routers 192.168.7.254;
   1.153 +  filename "pxelinux.0";
   1.154 +}
   1.155 +host clinika {
   1.156 +  hardware ethernet 00:13:8f:49:b0:31;
   1.157 +  fixed-address 192.168.7.253;
   1.158 +}
   1.159 +\end{verbatim}
   1.160 +
   1.161 +\paragraph{TFTP}
   1.162 +
   1.163 +\begin{verbatim}
   1.164 +%$ egrep -v '^#|^\ *$' /etc/default/tftpd-hpa 
   1.165 +RUN_DAEMON="yes"
   1.166 +OPTIONS="-l -s /var/lib/tftpboot/ltsp/i386/"
   1.167 +\end{verbatim}
   1.168 +
   1.169 +\paragraph{PXE}
   1.170 +Наполнение каталога TFTP-сервера.
   1.171 +Здесь присутствуют файлы загрузчика PXELINUX.
   1.172 +
   1.173 +\begin{verbatim}
   1.174 +%$ ls -l /var/lib/tftpboot/ltsp/i386/
   1.175 +итого 10690
   1.176 +-rw-r--r-- 1 root root     203 2007-10-04 boot.msg
   1.177 +-rw-r--r-- 1 root root   80023 2007-07-11 config-2.6.21-2-486
   1.178 +lrwxrwxrwx 1 root root      23 2007-10-04 initrd.img -> initrd.img-2.6.21-2-486
   1.179 +-rw-r--r-- 1 root root 3691052 2007-10-04 initrd.img-2.6.21-2-486
   1.180 +-rw-r--r-- 1 root root    9519 2007-10-04 logo.16_1
   1.181 +lrwxrwxrwx 1 root root      20 2007-10-04 nbi.img -> nbi.img-2.6.21-2-486
   1.182 +-rw-r--r-- 1 root root 5019136 2007-10-04 nbi.img-2.6.21-2-486
   1.183 +-rw-r--r-- 1 root root   13944 2007-10-04 pxelinux.0
   1.184 +drwxr-xr-x 2 root root     104 2007-10-05 pxelinux.cfg
   1.185 +-rw-r--r-- 1 root root  780664 2007-07-11 System.map-2.6.21-2-486
   1.186 +lrwxrwxrwx 1 root root      20 2007-10-04 vmlinuz -> vmlinuz-2.6.21-2-486
   1.187 +-rw-r--r-- 1 root root 1319152 2007-07-11 vmlinuz-2.6.21-2-486
   1.188 +\end{verbatim}
   1.189 +
   1.190 +Конфигурационный файл загрузчика PXELINUX:
   1.191 +
   1.192 +\begin{verbatim}
   1.193 +clint:Dom0~$ cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
   1.194 +DISPLAY boot.msg
   1.195 +TIMEOUT 150 
   1.196 +DEFAULT vmlinuz
   1.197 +PROMPT 1
   1.198 +
   1.199 +LABEL 2.6.21.2
   1.200 +KERNEL vmlinuz
   1.201 +APPEND nfsdir=192.168.7.254:/opt/ltsp/i386 lang=ru ramdisk_size=1000000 
   1.202 +    root=/dev/nfs rw nfsroot=192.168.7.254:/opt/ltsp/i386/ ip=dhcp initrd=initrd.img
   1.203 +\end{verbatim}
   1.204 +
   1.205 +\paragraph{Корневая файловая система, загружаемая по сети}
   1.206 +В каталоге \texttt{/opt/ltsp/i386/}
   1.207 +развёрнута операционная система Linux.
   1.208 +Инсталляция выполняется с помощью \textit{debootstrap}
   1.209 +или аналогичным способом.
   1.210 +
   1.211 +В системе должны быть установлены пакеты:
   1.212 +\begin{itemize}
   1.213 +\item  vblade
   1.214 +\end{itemize}
   1.215 +
   1.216 +\subsubsection{Экспорт диска старой машины по сети}
   1.217 +Сервер, который будет экспортирован, 
   1.218 +перезагружается и загружается 
   1.219 +по сети.
   1.220 +
   1.221 +После этого необходимо выполнить следующие действия.
   1.222 +
   1.223 +Будем считать, что экспорт выполняется с помощью протокола 
   1.224 +ATA over Ethernet.
   1.225 +Можно использовать другой протокол доступа к диску по сети.
   1.226 +
   1.227 +Убедитесь, что загружен модуль \textbf{aoe}:
   1.228 +
   1.229 +\begin{verbatim}
   1.230 +ltsp:~# lsmod | grep aoe
   1.231 +aoe                    24416  0
   1.232 +\end{verbatim}
   1.233 +
   1.234 +Экспортируйте диск \texttt{/dev/hda} (или другой -- тот, на котором установлена система) с помощью \textbf{vblade}:
   1.235 +
   1.236 +\begin{verbatim}
   1.237 +ltsp:~# vblade 1 0 eth0 /dev/hda
   1.238 +pid 3344: e1.0, 78165360 sectors O_RDWR
   1.239 +\end{verbatim}
   1.240 +
   1.241 +\subsubsection{Запуск домена с экспортированного образа}
   1.242 +На системе виртуализации
   1.243 +загрузите модуль \textbf{aoe}:
   1.244 +
   1.245 +\begin{verbatim}
   1.246 +clint:Dom0~$ ls -l /dev/etherd
   1.247 +ls: /dev/etherd: Heт такого файла или каталога
   1.248 +%# modprobe aoe
   1.249 +aoe: aoe_init: AoE v22 initialised.
   1.250 +aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
   1.251 +%# sudo lsmod | grep aoe
   1.252 +aoe                    23456  0
   1.253 +\end{verbatim}
   1.254 +
   1.255 +При этом 
   1.256 +в \texttt{/var/log/messages}
   1.257 +должны появиться сообщения:
   1.258 +
   1.259 +\begin{verbatim}
   1.260 +... kernel: aoe: aoe_init: AoE v22 initialised.
   1.261 +... kernel: aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
   1.262 +... kernel:  etherd/e1.0: p2 < p5 p6 p7 p8 p9 > p3
   1.263 +\end{verbatim}
   1.264 +
   1.265 +В каталоге \texttt{/dev/etherd}
   1.266 +должны появиться новые файлы устройств, 
   1.267 +соответствующие обнаруженным дискам
   1.268 +ATA over Ethernet:
   1.269 +
   1.270 +\begin{verbatim}
   1.271 +%# ls -l /dev/etherd/
   1.272 +итого 0
   1.273 +c-w--w---- 1 root disk 152,   3 2007-10-05 21:46 discover
   1.274 +brw-rw---- 1 root disk 152, 256 2007-10-05 21:57 e1.0
   1.275 +brw-rw---- 1 root disk 152, 258 2007-10-05 21:46 e1.0p2
   1.276 +brw-rw---- 1 root disk 152, 259 2007-10-05 21:46 e1.0p3
   1.277 +brw-rw---- 1 root disk 152, 261 2007-10-05 21:46 e1.0p5
   1.278 +brw-rw---- 1 root disk 152, 262 2007-10-05 21:46 e1.0p6
   1.279 +brw-rw---- 1 root disk 152, 263 2007-10-05 21:46 e1.0p7
   1.280 +brw-rw---- 1 root disk 152, 264 2007-10-05 21:46 e1.0p8
   1.281 +brw-rw---- 1 root disk 152, 265 2007-10-05 21:46 e1.0p9
   1.282 +cr--r----- 1 root disk 152,   2 2007-10-05 21:46 err
   1.283 +c-w--w---- 1 root disk 152,   4 2007-10-05 21:46 interfaces
   1.284 +c-w--w---- 1 root disk 152,   5 2007-10-05 21:46 revalidate
   1.285 +\end{verbatim}
   1.286 +
   1.287 +Далее необходимо создать конфигурационный файл 
   1.288 +нового домена Xen 
   1.289 +или модифицровать существующий.
   1.290 +
   1.291 +\begin{verbatim}
   1.292 +%$ egrep -v '^#|^\ *$' /etc/xen/win2k 
   1.293 +kernel = "hvmloader"
   1.294 +builder='hvm'
   1.295 +memory = 512
   1.296 +shadow_memory = 8
   1.297 +name = "win2k"
   1.298 +acpi=1
   1.299 +vif = [ 'type=ioemu, bridge=br0' ]
   1.300 +disk = ['phy:/dev/etherd/e1.0,hda,w' ]
   1.301 +device_model = 'qemu-dm'
   1.302 +boot="c"
   1.303 +sdl=0
   1.304 +vnc=1
   1.305 +vnclisten="127.0.0.1"
   1.306 +stdvga=0
   1.307 +serial='pty'
   1.308 +soundhw='sb16'
   1.309 +\end{verbatim}
   1.310 +
   1.311 +После чего запустить домен:
   1.312 +
   1.313 +\begin{verbatim}
   1.314 +%@ xm create win2k
   1.315 +\end{verbatim}
   1.316 +
   1.317 +\subsubsection{Результат запуска}
   1.318 +Старая машина, загруженная самостоятельно.
   1.319 +\begin{itemize}
   1.320 +\item  Процессор Sempron 2600
   1.321 +\item  457968KB ОЗУ
   1.322 +\end{itemize}
   1.323 +\begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/b/b9/W2k.jpg}}\\ \textit{}\end{center}
   1.324 +
   1.325 +Домен Xen, загруженный удалённо
   1.326 +с жёсткого диска старой системы:
   1.327 +\begin{itemize}
   1.328 +\item  Процессор AMD 3000+
   1.329 +\item  523800KB ОЗУ
   1.330 +\end{itemize}
   1.331 +\begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/c/cd/W2k_2.png}}\\ \textit{}\end{center}
   1.332 +
   1.333 +Другие изображения:
   1.334 +
   1.335 +\begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/f/f9/W2k_0.png}}\\ \textit{}\end{center}
   1.336 + \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/7/75/W2k_1.png}}\\ \textit{}\end{center}
   1.337 +
   1.338 +Мы бы не смогли подключиться к этой системе удалённо
   1.339 +в момент запуска, поскольку сетевая подсистема ещё не работает.
   1.340 +Такие изображения можно сделать только при запуске машины
   1.341 +в виртуальной системе или в эмуляторе.
   1.342 +
   1.343 +\subsubsection{Перенесение образа старой машины}
   1.344 +Если старый сервер должен быть выведен
   1.345 +из эксплуатации, необходимо скопировать 
   1.346 +данные на новое место.
   1.347 +
   1.348 +Домен соответствующий виртуализируемому серверу должен быть потушен в момент копирования!
   1.349 +
   1.350 +Например, если перенос выполняется на том LVM:
   1.351 +
   1.352 +\begin{verbatim}
   1.353 +%# lvcreate -L 20G -n server2003 /dev/XEN
   1.354 +%# dd if=/dev/etherd/e1.0 of=/dev/XEN/server2003
   1.355 +%# sed -i -e s@/dev/etherd/e1.0@/dev/XEN/server2003@ /etc/xen/win2003
   1.356 +\end{verbatim}
   1.357 +
   1.358 +
   1.359 +\subsection{Дополнительная информация}
   1.360 +\begin{itemize}
   1.361 +\item \htmladdnormallinkfoot{Экспорт установленной системы в домен Xen}{http://xgu.ru/wiki/xen/export} (рус.)
   1.362 +\end{itemize}