xg-scale
diff xen/export.tex @ 1:6f6e0f706b86
Added tag v0.1 for changeset 4730a0d07d88
author | Igor Chubin <igor@chub.in> |
---|---|
date | Tue Jul 01 16:28:00 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:28:00 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}