xg-scale

view 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 source
1 \section{Преобразование независимых систем в виртуальные домены Xen}
3 Здесь описывается как выполнять систему, установленную на компьютере,
4 внутри домена Xen или с помощью эмулятора QEMU, исполняющегося на другом компьютере.
5 Может быть полезно при консолидации и виртуализации систем,
6 при работе с устаревшими системами, при тестировании.
8 \subsection{Идея}
9 В связи с постоянным увеличением вычислительной мощности и объёма оперативной памяти машин, наблюдающимся в настоящее время, большую популярность приобретает идея виртуализации систем. В особенности популярным этот подход становится
10 при построении серверной инфраструктуры.
12 Виртуализированная серверная инфраструктура редко строится с нуля. Чаще всего существует парк физических (не виртуализированных) серверов, которые безостановочно работают, выполняя возложенные на них задачи.
13 Нередко для хранения информации (операционной системы, программного обеспечения и данных) эти серверы используют не внешние хранилища, а собственные жётские
14 диски.
16 Виртуализация сервера в данном случае может быть выполнена одним из указанных способов:
17 \begin{enumerate}
18 \item \textit{Миграция служб.} В виртуальной системе новый сервер разворачивается с нуля. Затем на него переносятся службы старого сервера. После чего старый сервер выводится из эксплуатации.
19 \item \textit{Миграция операционной системы.} Старый сервер останавливается, а затем на нём по сети (с компакт-диска или другого внешнего носителя информации) запускается другая операционная система, которая экспортирует установленный в сервере жёсткий диск системе виртуализации. Система виртуализации исполняет операционную систему, проинсталированную на этом диске. При условии, что виртуализация удалась, данные переносятся на хранилище системы виртуализации и старый сервер выключается.
20 \end{enumerate}
22 Последний способ проще и быстрее, но он должен допускать возможность
23 временной, непродолжительной остановки сервера (на время запуска другой операционной системы, экспорта, запуска виртуальной машины поверх экспортированных данных).
24 В случае правильного выполнения всех операций простой в этом случае составит до 10 минут.
26 Обратите внимание что данные, расположенные на жёстком диске,
27 при загрузке новой операционной системы, выполнящей экспорт,
28 никак не используются. Загрузка выполняется по сети, с компакт-диска или другого внешнего носителя. Диск экспортируется для доступа к нему системы виртуализации. Изменения на диске может делать только сама операционная система, установленная на этом же диске, после того как она запущена в виртуальном домене.
30 Ниже детально рассматривается процесс миграции,
31 выполненный по второму сценарию.
33 \subsection{Постановка задачи}
34 Пусть есть две системы:
35 \begin{itemize}
36 \item \textit{Старая система} (old) --- система, которая должна быть экспортирована.
37 \item \textit{Xen-система} (xen) --- система, внутри которой должен исполняться домен под управлением экспортированной системы.
38 \end{itemize}
40 Необходимо создать новую виртуальную машину,
41 которая будет использовать в качестве жёсткого диска жёсткий диск удалённого хоста, экспортированный для доступа по сети с помощью протоколов сетевого доступа к дисковым хранилищам.
43 \subsection{Запуск второй операционной системы в домене Xen установленной на том же компьютере}
44 Рассмотрим для начала простейший случай, когда на одном компьютере
45 установлено две операционные системы.
46 Он отличается от интересующей нас задачии тем, что не нужно
47 выполнять экспорт диска как сетевого устройства.
49 Если на компьютере установлены две операционные системы,
50 и одна из них это Xenolinux (Xen + Linux),
51 то вторую можно запустить как пользовательский домен Xen.
53 Запуск систем, не подготовленных для использования в паравиртуальном домене Xen,
54 внутри Xen возможен только в том случае, если центральный процессор системы поддерживает аппаратную виртуализацию.
55 В противном случае вместо Xen можно использовать QEMU.
57 Операционная система, загруженная в родном режиме:
59 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/2/29/Win2003_native.JPG}}\\ \textit{}\end{center}
61 Конфигурационный файл домена Xen:
63 \begin{verbatim}
64 %$ egrep -v '^#|^\ *$' /etc/xen/win2003
65 kernel = "hvmloader"
66 builder='hvm'
67 memory = 512
68 shadow_memory = 8
69 name = "win2003"
70 acpi=1
71 vif = [ 'type=ioemu, bridge=br0' ]
72 disk = ['phy:/dev/hda,hda,w' ]
73 device_model = 'qemu-dm'
74 boot="c"
75 sdl=0
76 vnc=1
77 vnclisten="127.0.0.1"
78 stdvga=0
79 serial='pty'
80 soundhw='sb16'
81 \end{verbatim}
83 В данном случае операционная система Windows установлена
84 на жёсткий диск IDE, подключенный в системе в режиме Primary Master
85 (блочное устройство \texttt{/dev/hda}).
87 Старт домена выполняется стандартным образом:
89 \begin{verbatim}
90 %# xm create win2003
91 %# vncviewer 127.0.0.1:0
92 \end{verbatim}
94 Здесь вместо 0 может быть указан другой номер, в зависимости от номера
95 VNC-сеанса, который будет соответствовать заданному домену Xen.
96 Подробнее см. руководство пользователя Xen.
98 Домен Xen, загруженный с жёсткого диска:
100 \begin{itemize}
101 \item Процессор AMD 3000+
102 \item 512 Mb ОЗУ
103 \end{itemize}
105 \begin{figure}
106 \includegraphics[width=12cm]{/var/lib/mediawiki/images/b/bc/W2003_xen.png}
107 \end{figure}
109 На домен, в котором работает установленная операционная система
110 распространяются все те же законы, которые распространяются на систему, которая установлена в домен с нуля
111 традиционным способом.
113 \subsection{Запуск домена с экспортированного образа}
114 Если операционная система установлена не локально,
115 а на другом компьютере, необходимо каким-то образом его донести системе виртуализации, так что бы, грубо говоря, виртуальный домен увидел диск.
117 Процедура включает три шага:
118 \begin{enumerate}
119 \item Выполнить бездисковую загрузку старой системы \textit{old} под управлением Linux;
120 \item Выполнить экспорт диска загруженной системы \textit{old} с помощью AoE или iSCSI;
121 \item На работающей Xen-системе \textit{xen} запустить домен, который будет использовать экспортированный старой машиной.
122 \end{enumerate}
124 \subsubsection{Подготовка сервера бездисковой загрузки}
125 Детально процедура подготовки сервера бездисковой загрузки
126 описана на странице \htmladdnormallinkfoot{PXE}{http://xgu.ru/wiki/PXE}.
127 Ниже приводятся только примеры конфигурационных
128 файлов ключевых систем, использующихся в работе.
130 \paragraph{DHCP}
131 Конфигурация демона dhcpd в файле \textbf{/etc/default/dhcp}:
133 \begin{verbatim}
134 %$ egrep -v '^#|^\ *$' /etc/default/dhcp
135 INTERFACES="br0"
136 \end{verbatim}
138 Сам конфигурационный файл \textbf{/etc/dhcpd.conf}:
140 \begin{verbatim}
141 %$ egrep -v '^#|^\ *$' /etc/dhcpd.conf
142 option domain-name "clinika.com";
143 option domain-name-servers 192.168.15.254;
144 option subnet-mask 255.255.255.0;
145 default-lease-time 600;
146 max-lease-time 7200;
147 subnet 192.168.7.0 netmask 255.255.255.0 {
148 range 192.168.7.200 192.168.7.220;
149 option routers 192.168.7.254;
150 filename "pxelinux.0";
151 }
152 host clinika {
153 hardware ethernet 00:13:8f:49:b0:31;
154 fixed-address 192.168.7.253;
155 }
156 \end{verbatim}
158 \paragraph{TFTP}
160 \begin{verbatim}
161 %$ egrep -v '^#|^\ *$' /etc/default/tftpd-hpa
162 RUN_DAEMON="yes"
163 OPTIONS="-l -s /var/lib/tftpboot/ltsp/i386/"
164 \end{verbatim}
166 \paragraph{PXE}
167 Наполнение каталога TFTP-сервера.
168 Здесь присутствуют файлы загрузчика PXELINUX.
170 \begin{verbatim}
171 %$ ls -l /var/lib/tftpboot/ltsp/i386/
172 итого 10690
173 -rw-r--r-- 1 root root 203 2007-10-04 boot.msg
174 -rw-r--r-- 1 root root 80023 2007-07-11 config-2.6.21-2-486
175 lrwxrwxrwx 1 root root 23 2007-10-04 initrd.img -> initrd.img-2.6.21-2-486
176 -rw-r--r-- 1 root root 3691052 2007-10-04 initrd.img-2.6.21-2-486
177 -rw-r--r-- 1 root root 9519 2007-10-04 logo.16_1
178 lrwxrwxrwx 1 root root 20 2007-10-04 nbi.img -> nbi.img-2.6.21-2-486
179 -rw-r--r-- 1 root root 5019136 2007-10-04 nbi.img-2.6.21-2-486
180 -rw-r--r-- 1 root root 13944 2007-10-04 pxelinux.0
181 drwxr-xr-x 2 root root 104 2007-10-05 pxelinux.cfg
182 -rw-r--r-- 1 root root 780664 2007-07-11 System.map-2.6.21-2-486
183 lrwxrwxrwx 1 root root 20 2007-10-04 vmlinuz -> vmlinuz-2.6.21-2-486
184 -rw-r--r-- 1 root root 1319152 2007-07-11 vmlinuz-2.6.21-2-486
185 \end{verbatim}
187 Конфигурационный файл загрузчика PXELINUX:
189 \begin{verbatim}
190 clint:Dom0~$ cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
191 DISPLAY boot.msg
192 TIMEOUT 150
193 DEFAULT vmlinuz
194 PROMPT 1
196 LABEL 2.6.21.2
197 KERNEL vmlinuz
198 APPEND nfsdir=192.168.7.254:/opt/ltsp/i386 lang=ru ramdisk_size=1000000
199 root=/dev/nfs rw nfsroot=192.168.7.254:/opt/ltsp/i386/ ip=dhcp initrd=initrd.img
200 \end{verbatim}
202 \paragraph{Корневая файловая система, загружаемая по сети}
203 В каталоге \texttt{/opt/ltsp/i386/}
204 развёрнута операционная система Linux.
205 Инсталляция выполняется с помощью \textit{debootstrap}
206 или аналогичным способом.
208 В системе должны быть установлены пакеты:
209 \begin{itemize}
210 \item vblade
211 \end{itemize}
213 \subsubsection{Экспорт диска старой машины по сети}
214 Сервер, который будет экспортирован,
215 перезагружается и загружается
216 по сети.
218 После этого необходимо выполнить следующие действия.
220 Будем считать, что экспорт выполняется с помощью протокола
221 ATA over Ethernet.
222 Можно использовать другой протокол доступа к диску по сети.
224 Убедитесь, что загружен модуль \textbf{aoe}:
226 \begin{verbatim}
227 ltsp:~# lsmod | grep aoe
228 aoe 24416 0
229 \end{verbatim}
231 Экспортируйте диск \texttt{/dev/hda} (или другой -- тот, на котором установлена система) с помощью \textbf{vblade}:
233 \begin{verbatim}
234 ltsp:~# vblade 1 0 eth0 /dev/hda
235 pid 3344: e1.0, 78165360 sectors O_RDWR
236 \end{verbatim}
238 \subsubsection{Запуск домена с экспортированного образа}
239 На системе виртуализации
240 загрузите модуль \textbf{aoe}:
242 \begin{verbatim}
243 clint:Dom0~$ ls -l /dev/etherd
244 ls: /dev/etherd: Heт такого файла или каталога
245 %# modprobe aoe
246 aoe: aoe_init: AoE v22 initialised.
247 aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
248 %# sudo lsmod | grep aoe
249 aoe 23456 0
250 \end{verbatim}
252 При этом
253 в \texttt{/var/log/messages}
254 должны появиться сообщения:
256 \begin{verbatim}
257 ... kernel: aoe: aoe_init: AoE v22 initialised.
258 ... kernel: aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
259 ... kernel: etherd/e1.0: p2 < p5 p6 p7 p8 p9 > p3
260 \end{verbatim}
262 В каталоге \texttt{/dev/etherd}
263 должны появиться новые файлы устройств,
264 соответствующие обнаруженным дискам
265 ATA over Ethernet:
267 \begin{verbatim}
268 %# ls -l /dev/etherd/
269 итого 0
270 c-w--w---- 1 root disk 152, 3 2007-10-05 21:46 discover
271 brw-rw---- 1 root disk 152, 256 2007-10-05 21:57 e1.0
272 brw-rw---- 1 root disk 152, 258 2007-10-05 21:46 e1.0p2
273 brw-rw---- 1 root disk 152, 259 2007-10-05 21:46 e1.0p3
274 brw-rw---- 1 root disk 152, 261 2007-10-05 21:46 e1.0p5
275 brw-rw---- 1 root disk 152, 262 2007-10-05 21:46 e1.0p6
276 brw-rw---- 1 root disk 152, 263 2007-10-05 21:46 e1.0p7
277 brw-rw---- 1 root disk 152, 264 2007-10-05 21:46 e1.0p8
278 brw-rw---- 1 root disk 152, 265 2007-10-05 21:46 e1.0p9
279 cr--r----- 1 root disk 152, 2 2007-10-05 21:46 err
280 c-w--w---- 1 root disk 152, 4 2007-10-05 21:46 interfaces
281 c-w--w---- 1 root disk 152, 5 2007-10-05 21:46 revalidate
282 \end{verbatim}
284 Далее необходимо создать конфигурационный файл
285 нового домена Xen
286 или модифицровать существующий.
288 \begin{verbatim}
289 %$ egrep -v '^#|^\ *$' /etc/xen/win2k
290 kernel = "hvmloader"
291 builder='hvm'
292 memory = 512
293 shadow_memory = 8
294 name = "win2k"
295 acpi=1
296 vif = [ 'type=ioemu, bridge=br0' ]
297 disk = ['phy:/dev/etherd/e1.0,hda,w' ]
298 device_model = 'qemu-dm'
299 boot="c"
300 sdl=0
301 vnc=1
302 vnclisten="127.0.0.1"
303 stdvga=0
304 serial='pty'
305 soundhw='sb16'
306 \end{verbatim}
308 После чего запустить домен:
310 \begin{verbatim}
311 %@ xm create win2k
312 \end{verbatim}
314 \subsubsection{Результат запуска}
315 Старая машина, загруженная самостоятельно.
316 \begin{itemize}
317 \item Процессор Sempron 2600
318 \item 457968KB ОЗУ
319 \end{itemize}
320 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/b/b9/W2k.jpg}}\\ \textit{}\end{center}
322 Домен Xen, загруженный удалённо
323 с жёсткого диска старой системы:
324 \begin{itemize}
325 \item Процессор AMD 3000+
326 \item 523800KB ОЗУ
327 \end{itemize}
328 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/c/cd/W2k_2.png}}\\ \textit{}\end{center}
330 Другие изображения:
332 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/f/f9/W2k_0.png}}\\ \textit{}\end{center}
333 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/7/75/W2k_1.png}}\\ \textit{}\end{center}
335 Мы бы не смогли подключиться к этой системе удалённо
336 в момент запуска, поскольку сетевая подсистема ещё не работает.
337 Такие изображения можно сделать только при запуске машины
338 в виртуальной системе или в эмуляторе.
340 \subsubsection{Перенесение образа старой машины}
341 Если старый сервер должен быть выведен
342 из эксплуатации, необходимо скопировать
343 данные на новое место.
345 Домен соответствующий виртуализируемому серверу должен быть потушен в момент копирования!
347 Например, если перенос выполняется на том LVM:
349 \begin{verbatim}
350 %# lvcreate -L 20G -n server2003 /dev/XEN
351 %# dd if=/dev/etherd/e1.0 of=/dev/XEN/server2003
352 %# sed -i -e s@/dev/etherd/e1.0@/dev/XEN/server2003@ /etc/xen/win2003
353 \end{verbatim}
356 \subsection{Дополнительная информация}
357 \begin{itemize}
358 \item \htmladdnormallinkfoot{Экспорт установленной системы в домен Xen}{http://xgu.ru/wiki/xen/export} (рус.)
359 \end{itemize}