xg-scale
view xen/export.tex @ 4:253d66dd74bb
Добавлено подробное описание управления памятью домена и выделением устройств домену
author | Igor Chubin <igor@chub.in> |
---|---|
date | Sun Jul 06 23:27:46 2008 +0300 (2008-07-06) |
parents | 4730a0d07d88 |
children |
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 если центральный процессор системы поддерживает аппаратную виртуализацию.
56 В противном случае вместо Xen можно использовать QEMU.
58 Операционная система, загруженная в родном режиме:
60 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/2/29/Win2003_native.JPG}}\\ \textit{}\end{center}
62 Конфигурационный файл домена Xen:
64 \begin{verbatim}
65 %$ egrep -v '^#|^\ *$' /etc/xen/win2003
66 kernel = "hvmloader"
67 builder='hvm'
68 memory = 512
69 shadow_memory = 8
70 name = "win2003"
71 acpi=1
72 vif = [ 'type=ioemu, bridge=br0' ]
73 disk = ['phy:/dev/hda,hda,w' ]
74 device_model = 'qemu-dm'
75 boot="c"
76 sdl=0
77 vnc=1
78 vnclisten="127.0.0.1"
79 stdvga=0
80 serial='pty'
81 soundhw='sb16'
82 \end{verbatim}
84 В данном случае операционная система Windows установлена
85 на жёсткий диск IDE, подключённый в системе в режиме Primary Master
86 (блочное устройство \texttt{/dev/hda}).
88 Старт домена выполняется стандартным образом:
90 \begin{verbatim}
91 %# xm create win2003
92 %# vncviewer 127.0.0.1:0
93 \end{verbatim}
95 Здесь вместо 0 может быть указан другой номер, в зависимости от номера
96 VNC-сеанса, который будет соответствовать заданному домену Xen.
97 Подробнее см. руководство пользователя Xen.
99 Домен Xen, загруженный с жёсткого диска:
101 \begin{itemize}
102 \item Процессор AMD 3000+
103 \item 512 Mb ОЗУ
104 \end{itemize}
106 \begin{figure}
107 \includegraphics[width=12cm]{/var/lib/mediawiki/images/b/bc/W2003_xen.png}
108 \end{figure}
110 На домен, в котором работает установленная операционная система
111 распространяются все те же законы, которые распространяются на систему, которая установлена в домен с нуля
112 традиционным способом.
114 \subsection{Запуск домена с экспортированного образа}
115 Если операционная система установлена не локально,
116 а на другом компьютере, необходимо каким-то образом его донести системе виртуализации, так что бы, грубо говоря, виртуальный домен увидел диск.
118 Процедура включает три шага:
119 \begin{enumerate}
120 \item Выполнить бездисковую загрузку старой системы \textit{old} под управлением Linux;
121 \item Выполнить экспорт диска загруженной системы \textit{old} с помощью AoE или iSCSI;
122 \item На работающей Xen-системе \textit{xen} запустить домен, который будет использовать экспортированный старой машиной.
123 \end{enumerate}
125 \subsubsection{Подготовка сервера бездисковой загрузки}
126 Детально процедура подготовки сервера бездисковой загрузки
127 описана на странице \htmladdnormallinkfoot{PXE}{http://xgu.ru/wiki/PXE}.
128 Ниже приводятся только примеры конфигурационных
129 файлов ключевых систем, использующихся в работе.
131 \paragraph{DHCP}
132 Конфигурация демона dhcpd в файле \textbf{/etc/default/dhcp}:
134 \begin{verbatim}
135 %$ egrep -v '^#|^\ *$' /etc/default/dhcp
136 INTERFACES="br0"
137 \end{verbatim}
139 Сам конфигурационный файл \textbf{/etc/dhcpd.conf}:
141 \begin{verbatim}
142 %$ egrep -v '^#|^\ *$' /etc/dhcpd.conf
143 option domain-name "clinika.com";
144 option domain-name-servers 192.168.15.254;
145 option subnet-mask 255.255.255.0;
146 default-lease-time 600;
147 max-lease-time 7200;
148 subnet 192.168.7.0 netmask 255.255.255.0 {
149 range 192.168.7.200 192.168.7.220;
150 option routers 192.168.7.254;
151 filename "pxelinux.0";
152 }
153 host clinika {
154 hardware ethernet 00:13:8f:49:b0:31;
155 fixed-address 192.168.7.253;
156 }
157 \end{verbatim}
159 \paragraph{TFTP}
161 \begin{verbatim}
162 %$ egrep -v '^#|^\ *$' /etc/default/tftpd-hpa
163 RUN_DAEMON="yes"
164 OPTIONS="-l -s /var/lib/tftpboot/ltsp/i386/"
165 \end{verbatim}
167 \paragraph{PXE}
168 Наполнение каталога TFTP-сервера.
169 Здесь присутствуют файлы загрузчика PXELINUX.
171 \begin{verbatim}
172 %$ ls -l /var/lib/tftpboot/ltsp/i386/
173 итого 10690
174 -rw-r--r-- 1 root root 203 2007-10-04 boot.msg
175 -rw-r--r-- 1 root root 80023 2007-07-11 config-2.6.21-2-486
176 lrwxrwxrwx 1 root root 23 2007-10-04 initrd.img -> initrd.img-2.6.21-2-486
177 -rw-r--r-- 1 root root 3691052 2007-10-04 initrd.img-2.6.21-2-486
178 -rw-r--r-- 1 root root 9519 2007-10-04 logo.16_1
179 lrwxrwxrwx 1 root root 20 2007-10-04 nbi.img -> nbi.img-2.6.21-2-486
180 -rw-r--r-- 1 root root 5019136 2007-10-04 nbi.img-2.6.21-2-486
181 -rw-r--r-- 1 root root 13944 2007-10-04 pxelinux.0
182 drwxr-xr-x 2 root root 104 2007-10-05 pxelinux.cfg
183 -rw-r--r-- 1 root root 780664 2007-07-11 System.map-2.6.21-2-486
184 lrwxrwxrwx 1 root root 20 2007-10-04 vmlinuz -> vmlinuz-2.6.21-2-486
185 -rw-r--r-- 1 root root 1319152 2007-07-11 vmlinuz-2.6.21-2-486
186 \end{verbatim}
188 Конфигурационный файл загрузчика PXELINUX:
190 \begin{verbatim}
191 clint:Dom0~$ cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
192 DISPLAY boot.msg
193 TIMEOUT 150
194 DEFAULT vmlinuz
195 PROMPT 1
197 LABEL 2.6.21.2
198 KERNEL vmlinuz
199 APPEND nfsdir=192.168.7.254:/opt/ltsp/i386 lang=ru ramdisk_size=1000000
200 root=/dev/nfs rw nfsroot=192.168.7.254:/opt/ltsp/i386/ ip=dhcp initrd=initrd.img
201 \end{verbatim}
203 \paragraph{Корневая файловая система, загружаемая по сети}
204 В каталоге \texttt{/opt/ltsp/i386/}
205 развёрнута операционная система Linux.
206 Инсталляция выполняется с помощью \textit{debootstrap}
207 или аналогичным способом.
209 В системе должны быть установлены пакеты:
210 \begin{itemize}
211 \item vblade
212 \end{itemize}
214 \subsubsection{Экспорт диска старой машины по сети}
215 Сервер, который будет экспортирован,
216 перезагружается и загружается
217 по сети.
219 После этого необходимо выполнить следующие действия.
221 Будем считать, что экспорт выполняется с помощью протокола
222 ATA over Ethernet.
223 Можно использовать другой протокол доступа к диску по сети.
225 Убедитесь, что загружен модуль \textbf{aoe}:
227 \begin{verbatim}
228 ltsp:~# lsmod | grep aoe
229 aoe 24416 0
230 \end{verbatim}
232 Экспортируйте диск \texttt{/dev/hda} (или другой -- тот, на котором установлена система) с помощью \textbf{vblade}:
234 \begin{verbatim}
235 ltsp:~# vblade 1 0 eth0 /dev/hda
236 pid 3344: e1.0, 78165360 sectors O_RDWR
237 \end{verbatim}
239 \subsubsection{Запуск домена с экспортированного образа}
240 На системе виртуализации
241 загрузите модуль \textbf{aoe}:
243 \begin{verbatim}
244 clint:Dom0~$ ls -l /dev/etherd
245 ls: /dev/etherd: Heт такого файла или каталога
246 %# modprobe aoe
247 aoe: aoe_init: AoE v22 initialised.
248 aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
249 %# sudo lsmod | grep aoe
250 aoe 23456 0
251 \end{verbatim}
253 При этом
254 в \texttt{/var/log/messages}
255 должны появиться сообщения:
257 \begin{verbatim}
258 ... kernel: aoe: aoe_init: AoE v22 initialised.
259 ... kernel: aoe: 00138f49b031 e1.0 v400c has 78165360 sectors
260 ... kernel: etherd/e1.0: p2 < p5 p6 p7 p8 p9 > p3
261 \end{verbatim}
263 В каталоге \texttt{/dev/etherd}
264 должны появиться новые файлы устройств,
265 соответствующие обнаруженным дискам
266 ATA over Ethernet:
268 \begin{verbatim}
269 %# ls -l /dev/etherd/
270 итого 0
271 c-w--w---- 1 root disk 152, 3 2007-10-05 21:46 discover
272 brw-rw---- 1 root disk 152, 256 2007-10-05 21:57 e1.0
273 brw-rw---- 1 root disk 152, 258 2007-10-05 21:46 e1.0p2
274 brw-rw---- 1 root disk 152, 259 2007-10-05 21:46 e1.0p3
275 brw-rw---- 1 root disk 152, 261 2007-10-05 21:46 e1.0p5
276 brw-rw---- 1 root disk 152, 262 2007-10-05 21:46 e1.0p6
277 brw-rw---- 1 root disk 152, 263 2007-10-05 21:46 e1.0p7
278 brw-rw---- 1 root disk 152, 264 2007-10-05 21:46 e1.0p8
279 brw-rw---- 1 root disk 152, 265 2007-10-05 21:46 e1.0p9
280 cr--r----- 1 root disk 152, 2 2007-10-05 21:46 err
281 c-w--w---- 1 root disk 152, 4 2007-10-05 21:46 interfaces
282 c-w--w---- 1 root disk 152, 5 2007-10-05 21:46 revalidate
283 \end{verbatim}
285 Далее необходимо создать конфигурационный файл
286 нового домена Xen
287 или модифицровать существующий.
289 \begin{verbatim}
290 %$ egrep -v '^#|^\ *$' /etc/xen/win2k
291 kernel = "hvmloader"
292 builder='hvm'
293 memory = 512
294 shadow_memory = 8
295 name = "win2k"
296 acpi=1
297 vif = [ 'type=ioemu, bridge=br0' ]
298 disk = ['phy:/dev/etherd/e1.0,hda,w' ]
299 device_model = 'qemu-dm'
300 boot="c"
301 sdl=0
302 vnc=1
303 vnclisten="127.0.0.1"
304 stdvga=0
305 serial='pty'
306 soundhw='sb16'
307 \end{verbatim}
309 После чего запустить домен:
311 \begin{verbatim}
312 %@ xm create win2k
313 \end{verbatim}
315 \subsubsection{Результат запуска}
316 Старая машина, загруженная самостоятельно.
317 \begin{itemize}
318 \item Процессор Sempron 2600
319 \item 457968KB ОЗУ
320 \end{itemize}
321 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/b/b9/W2k.jpg}}\\ \textit{}\end{center}
323 Домен Xen, загруженный удалённо
324 с жёсткого диска старой системы:
325 \begin{itemize}
326 \item Процессор AMD 3000+
327 \item 523800KB ОЗУ
328 \end{itemize}
329 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/c/cd/W2k_2.png}}\\ \textit{}\end{center}
331 Другие изображения:
333 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/f/f9/W2k_0.png}}\\ \textit{}\end{center}
334 \begin{center} \resizebox{10cm}{!}{\includegraphics[width=12cm]{/var/lib/mediawiki/images/7/75/W2k_1.png}}\\ \textit{}\end{center}
336 Мы бы не смогли подключиться к этой системе удалённо
337 в момент запуска, поскольку сетевая подсистема ещё не работает.
338 Такие изображения можно сделать только при запуске машины
339 в виртуальной системе или в эмуляторе.
341 \subsubsection{Перенесение образа старой машины}
342 Если старый сервер должен быть выведен
343 из эксплуатации, необходимо скопировать
344 данные на новое место.
346 Домен соответствующий виртуализируемому серверу должен быть потушен в момент копирования!
348 Например, если перенос выполняется на том LVM:
350 \begin{verbatim}
351 %# lvcreate -L 20G -n server2003 /dev/XEN
352 %# dd if=/dev/etherd/e1.0 of=/dev/XEN/server2003
353 %# sed -i -e s@/dev/etherd/e1.0@/dev/XEN/server2003@ /etc/xen/win2003
354 \end{verbatim}
357 \subsection{Дополнительная информация}
358 \begin{itemize}
359 \item \htmladdnormallinkfoot{Экспорт установленной системы в домен Xen}{http://xgu.ru/wiki/xen/export} (рус.)
360 \end{itemize}