Xen: как преобразовать Image-Based Guest в LVM-Based Guest

Опубликовано – 10.01.2010

Оригинал: 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/




 Уважайте труд автора, сохраняйте копирайты.
Реклама на сайте висит не просто так и если статья Вам понравилась, с ее помощью Вы можете отблагодарить автора за проделанную работу. Спасибо!

Один комментарий в Xen: как преобразовать Image-Based Guest в LVM-Based Guest

  1. Serge:

    У меня 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 и сохранили данные.
    ???

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*