Проект

Общее

Профиль

Импорт виртуальных машин Linux » История » Версия 3

Владимир Ипатов, 08.09.2014 14:14

1 1 Dmitry Chernyak
h1. Импорт виртуальных машин Linux
2 1 Dmitry Chernyak
3 1 Dmitry Chernyak
<pre>
4 1 Dmitry Chernyak
gnt-instance activate-disks megaplan
5 1 Dmitry Chernyak
</pre>
6 2 Dmitry Chernyak
7 1 Dmitry Chernyak
Команда выведет имя диска
8 1 Dmitry Chernyak
9 1 Dmitry Chernyak
Залить raw-образ командой
10 1 Dmitry Chernyak
11 1 Dmitry Chernyak
<pre>
12 1 Dmitry Chernyak
dd if=ОБРАЗ of=ДИСК bs=64k
13 1 Dmitry Chernyak
</pre>
14 1 Dmitry Chernyak
15 1 Dmitry Chernyak
<pre>
16 1 Dmitry Chernyak
gnt-instance deactivate-disks megaplan
17 1 Dmitry Chernyak
</pre>
18 1 Dmitry Chernyak
19 1 Dmitry Chernyak
h2. Настроить виртуальную машину
20 1 Dmitry Chernyak
21 1 Dmitry Chernyak
При создании обычных виртуальных машин используется внутреннее ядро и загрузчик pygrub,
22 3 Владимир Ипатов
настройки которого находятся в /boot/grub/menu.lst виртуальной машины.
23 1 Dmitry Chernyak
24 1 Dmitry Chernyak
<pre>
25 3 Владимир Ипатов
Можно его создать:
26 3 Владимир Ипатов
default         0
27 3 Владимир Ипатов
timeout         5
28 3 Владимир Ипатов
color cyan/blue white/blue
29 3 Владимир Ипатов
30 3 Владимир Ипатов
title           Debian GNU/Linux, default kernel
31 3 Владимир Ипатов
root            (hd0,0)
32 3 Владимир Ипатов
kernel          /vmlinuz root=/dev/xvda1 ro
33 3 Владимир Ипатов
initrd          /initrd.img
34 3 Владимир Ипатов
35 3 Владимир Ипатов
title           Debian GNU/Linux, default kernel (single-user mode)
36 3 Владимир Ипатов
root            (hd0,0)
37 3 Владимир Ипатов
kernel          /vmlinuz root=/dev/xvda1 ro single
38 3 Владимир Ипатов
initrd          /initrd.img
39 3 Владимир Ипатов
</pre>
40 3 Владимир Ипатов
41 3 Владимир Ипатов
В данном случае в root= указан первый раздел первого диска.
42 3 Владимир Ипатов
Однако, в поставляемых образах возможно рутовым разделом будет другой раздел, в этом случае надо подсчитать их и записать нужный.
43 3 Владимир Ипатов
А в случае, если внутри образа есть LVM, нужно узнать имя vg и имя тома с рутовым разделом:
44 3 Владимир Ипатов
<pre>
45 3 Владимир Ипатов
gnt-instance activate-disks
46 3 Владимир Ипатов
kpartx -av /dev/mapper/то-что-вывел-activate-disks
47 3 Владимир Ипатов
vgscan
48 3 Владимир Ипатов
vgchange -ay
49 3 Владимир Ипатов
</pre>
50 3 Владимир Ипатов
51 3 Владимир Ипатов
После этого нужный нам vg будет доступен и мы сможем смонтировать его волюмы.
52 3 Владимир Ипатов
После того, как нашли имя рутового раздела, вписываем его в root:
53 3 Владимир Ипатов
kernel          /vmlinuz root=/dev/mapper/имя--группы-имя--тома ro
54 3 Владимир Ипатов
55 3 Владимир Ипатов
56 3 Владимир Ипатов
Если не хочется вмешиваться в полученный образ, то можно загрузить систему используя внешнее ядро.
57 3 Владимир Ипатов
Для этого нужно узнать путь к рутовому разделу способом, описанным выше, затем, если требуется, скопировать ядро и инитрд из виртуальной машины и положить в /boot (например, если виртуальная машина заметно новее гипервизора) (также нужно затем скопировать ядро и инитрд на все ноды кластера командой gnt-cluster copyfile).
58 3 Владимир Ипатов
59 3 Владимир Ипатов
добавление аргумента ядра console=hvc0 может потребоваться, если ход загрузки не виден на xen консоли.
60 3 Владимир Ипатов
61 3 Владимир Ипатов
Дальше нужно задать настройки для инстанса:
62 3 Владимир Ипатов
63 3 Владимир Ипатов
<pre>
64 1 Dmitry Chernyak
gnt-instance modify -H use_bootloader=false megaplan
65 1 Dmitry Chernyak
gnt-instance modify -H initrd_path=/boot/initrd.img-3.2.0-33-generic megaplan
66 1 Dmitry Chernyak
gnt-instance modify -H kernel_path=/boot/vmlinuz-3.2.0-33-generic megaplan
67 1 Dmitry Chernyak
gnt-instance modify -H kernel_args='ro console=hvc0' megaplan
68 3 Владимир Ипатов
gnt-instance modify -H root_path=/dev/mapper/megaplan--box-root megaplan
69 1 Dmitry Chernyak
</pre>
70 1 Dmitry Chernyak
71 1 Dmitry Chernyak
h2. Запустить виртуальную машину
72 1 Dmitry Chernyak
73 1 Dmitry Chernyak
<pre>
74 1 Dmitry Chernyak
gnt-instance startup megaplan
75 1 Dmitry Chernyak
</pre>