Оригинал: Xen: How to Convert An Image-Based Guest To An LVM-Based Guest
Перевод: Сгибнев Михаил
В этой короткой статье описывается как перенести/преобразовать гостевую машину 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, все остальное можно использовать под виртуальные машины.
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
Ссылки по теме:
Xen: http://www.xen.org/
[ad name=»Google Adsense»]
Уважайте труд автора, сохраняйте копирайты.
Реклама на сайте висит не просто так и если статья Вам понравилась, с ее помощью Вы можете отблагодарить автора за проделанную работу. Спасибо!
У меня Windows 2000 Server не стартанула, говорит:
ata0 master: QEMU HARDDISK ATA-7 Hard-Disk (8064 MBytes)
ata0 slave: Unknown device
Pre s F10 to select boot device.
Booting from Hard Disk…
NTLDR is missing
Press Crtl+Alt+Del to restart
(перед F10 не очепатка, так в консоли 🙂
А из файла:
disk=[ ‘tap:aio:/mnt/db/db_l,hda,w’, ‘phy:/dev/data/db_v,hdb,w’, ‘phy:/dev/data/db_h,hdc,w’, ]
работает.
При том, что два последующих раздела с того же винта благополучно dd-шнулись в LVM и сохранили данные.
???