В этой короткой статье описывается как перенести/преобразовать гостевую машину Xen, использующую в качестве файловой системы образ диска, на раздел LVM. Виртуальные машины, использующие образ очень медленны и создают высокую нагрузку на систему ввода/вывода, поэтому для работы рекомендуется использовать LVM. Также LVM очень прост для создания резервных копий, используя LVM snapshots.
(1) Входные данные:
Для использования LVM-based виртуальных машин вам необходимо иметь достаточный объем свободного места в группе томов, не занятого логическими разделами. В этом примере я использую группу томов /dev/vg0 размером приблизительно 465Gb.
server1:~# vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 465.28 GB PE Size 4.00 MB Total PE 119112 Alloc PE / Size 59842 / 233.76 GB Free PE / Size 59270 / 231.52 GB VG UUID gnUCYV-mYXj-qxpM-PEat-tdXS-wumf-6FK3rA server1:~#
Также имеется логический раздел /dev/vg0/root размером 232GB и /dev/vg0/swap_1 размером 1Gb, все остальное можно использовать под виртуальные машины.
Спонсор статьи
Лучшая стоматологическая клиника в Санкт-Петербурге “На Стародеревенской”, адрес сайта http://www.clinika1.ru. Лечился у них, доволен просто всем: хорошее обслуживание, невысокие цены, удобное расположение.
server1:~# lvdisplay --- Logical volume --- LV Name /dev/vg0/root VG Name vg0 LV UUID kMYrHg-d0ox-yc6y-1eNR-lB2R-yMIn-WFgzSZ LV Write Access read/write LV Status available # open 1 LV Size 232.83 GB Current LE 59604 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/vg0/swap_1 VG Name vg0 LV UUID SUI0uq-iTsy-7EnZ-INNz-gjvu-tqLD-rGSegE LV Write Access read/write LV Status available # open 2 LV Size 952.00 MB Current LE 238 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 server1:~#
Имеется виртуальная машина xen1.example.com, созданная командой:
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=128Mb --arch=amd64 --role=udev
Файл конфигурации Xen, /etc/xen/xen1.example.com.cfg, выглядит следующим образом:
# # Configuration file for the Xen instance xen1.example.com, created # by xen-tools 3.9 on Mon Mar 9 19:22:40 2009. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.26-1-xen-amd64' ramdisk = '/boot/initrd.img-2.6.26-1-xen-amd64' memory = '128' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', ] # # Hostname # name = 'xen1.example.com' # # Networking # vif = [ 'ip=192.168.0.101,mac=00:16:3E:F2:DC:FA' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Как вы видите, гостевая машина использует два образа – home/xen/domains/xen1.example.com/disk.img (4GB) и /home/xen/domains/xen1.example.com/swap.img (256MB). Нам необходимы точные размеры образов, чтобы мы могли создать логические тома того же самого размера. Если Вы не помните значения, то можно перейти в каталог, где сохранены образы…
Интересное
Для доставки лошадей к месту скачек обычно жокей не скачет на ней из города в город :) Для это давно придумана специальная техника, или коневозка – машина и специальный прицеп.
cd /home/xen/domains/xen1.example.com ls -lh
(2) Конвертируем образы в LVM:
Выключаем виртуальную машину:
xm shutdown xen1.example.com
Затем создаем логический том, как показано ниже (такого же размера, как и образ!):
lvcreate -L4G -n xen1_root vg0 lvcreate -L256M -n xen1_swap vg0
В результате получаем два тома /dev/vg0/xen1_root (4GB) и /dev/vg0/xen1_swap (256MB):
server1:~# lvdisplay --- Logical volume --- LV Name /dev/vg0/root VG Name vg0 LV UUID kMYrHg-d0ox-yc6y-1eNR-lB2R-yMIn-WFgzSZ LV Write Access read/write LV Status available # open 1 LV Size 232.83 GB Current LE 59604 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/vg0/swap_1 VG Name vg0 LV UUID SUI0uq-iTsy-7EnZ-INNz-gjvu-tqLD-rGSegE LV Write Access read/write LV Status available # open 1 LV Size 952.00 MB Current LE 238 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/vg0/xen1_root VG Name vg0 LV UUID MQzhrS-OpOt-2IbY-BozD-l5vN-3doB-GRtyMc LV Write Access read/write LV Status available # open 0 LV Size 4.00 GB Current LE 1024 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2 --- Logical volume --- LV Name /dev/vg0/xen1_swap VG Name vg0 LV UUID GHwsIT-a0sj-M72J-OVof-Ydju-Sexf-Ex824b LV Write Access read/write LV Status available # open 0 LV Size 256.00 MB Current LE 64 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:3 server1:~#
Конвертируем образы:
dd if=/home/xen/domains/xen1.example.com/disk.img of=/dev/vg0/xen1_root dd if=/home/xen/domains/xen1.example.com/swap.img of=/dev/vg0/xen1_swap
Этот процесс может занять довольно продолжительное время, в зависимости от размера образа. После завершения заглянем в /etc/xen/xen1.example.com.cfg и заменим:
[...] disk = [ 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', ] [...]
На:
[...] disk = [ 'phy:/dev/vg0/xen1_swap,xvda1,w', 'phy:/dev/vg0/xen1_root,xvda2,w', ] [...]
Запускаем виртуальную машину:
xm create /etc/xen/xen1.example.com.cfg
Если все прошло нормально, то можно удалить старые образы:
rm -f /home/xen/domains/xen1.example.com/disk.img rm -f /home/xen/domains/xen1.example.com/swap.img
Источник: howtoforge.com
Перевод: Сгибнев Михаил. Оригинал перевода