Xen: как конвертировать гостя с образа диска на LVM
Version 1.0
Автор: Falko Timme
1 Предварительная заметка
Для запуска гостей на LVM у вас должен быть volume group (VG) с достаточным свободным пространством. В примере используется VG /dev/vg0 размером примерно 465 GB. Команда для просмотра VG:
vgdisplayВывод (пример):
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:~#В этом VG есть логические тома /dev/vg0/root (~232 GB) и /dev/vg0/swap_1 (~1 GB). Команда для просмотра LV:
lvdisplayВывод (пример):
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:~#В примере у меня есть Xen-гость 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 гостя:
vi /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 (4 GB) и /home/xen/domains/xen1.example.com/swap.img (256 MB).
Если вы не помните точные размеры образов, перейдите в каталог с образом и выполните ls -lh, чтобы увидеть реальный размер файлов:
cd /home/xen/domains/xen1.example.com
ls -lh2 Конвертация образов в LVM
Важно: перед началом создайте резервную копию образов или снимите снапшот, если это возможно. Операция включает остановку VM и посекторное копирование, и ошибки приведут к потере данных.
- Остановите гостя:
xm shutdown xen1.example.com- Создайте логические тома того же размера, что и образы. Пример:
lvcreate -L4G -n xen1_root vg0
lvcreate -L256M -n xen1_swap vg0После этого в VG появятся тома /dev/vg0/xen1_root (4 GB) и /dev/vg0/xen1_swap (256 MB). Проверить можно через lvdisplay.
- Копирование данных из файлов-образов в LV (это может занять продолжительное время):
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Советы по dd: можете добавить bs=1M для ускорения и status=progress для мониторинга (если ваша версия dd поддерживает): dd if=… of=… bs=1M status=progress
- Отредактируйте конфигурацию Xen, чтобы заменить файловые образы на физические LV. Откройте файл:
vi /etc/xen/xen1.example.com.cfgНайдите секцию disk, замените строки вида:
| [...] 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Важно: не удаляйте образы, пока вы окончательно не убедились в работоспособности VM и целостности данных.
Когда этот метод не подходит
- Если в образе использовано динамическое расширение формата (qcow2) с особенностями метаданных — простой dd может не перенести метаданные корректно.
- Если вы используете специфичные для файловой системы особенности (например, виртуальные блоки, шифрование на уровне файла), убедитесь, что целевой LV сможет их обслуживать.
- Для больших дисков с минимальной дозаписью имеет смысл использовать rsync/файловую копию вместо посекторного dd (см. альтернативы).
Альтернативные подходы
- Копирование на уровне файловой системы: смонтируйте оба тома и выполните rsync -aHAX для переноса файлов — полезно при изменении размера или конвертации формата.
- Использовать qemu-img convert для конвертации между форматами (qcow2 ↔ raw), затем dd на LV.
- Снимок LVM и перенос данных с минимальным простоем: создайте snapshot исходного LV и копируйте из снапшота.
Мини-методология (короткий чеклист)
- Проверка свободного места в VG (vgdisplay).
- Остановить VM (xm shutdown).
- Создать LV нужного размера (lvcreate).
- Копирование данных (dd или rsync).
- Обновить /etc/xen/*.cfg (file -> phy).
- Запустить VM и проверить логи, файловую систему и службы.
- Удалить образы только после валидации.
Критерии приёмки
- VM успешно стартует с новым LV.
- Файловая система монтируется и данные доступны.
- Сервисы внутри гостя работают корректно.
- Время отклика/IO не ухудшилось по сравнению с ожидаемым поведением LVM.
Риски и меры смягчения
- Риск: потеря данных при ошибке dd. Меры: резервная копия образов перед операцией.
- Риск: несоответствие размеров/смещений. Меры: сверяйте точные размеры через ls -lh и lvdisplay.
- Риск: гостевая ОС может ожидать другое устройство (именование дисков). Меры: проверьте fstab и загрузчик внутри гостя.
Короткая справка по командам
- vgdisplay — показать информацию о volume group.
- lvdisplay — показать логические тома.
- lvcreate -L
-n — создать логический том указанного размера. - dd if=
of= — посекторное копирование; при больших объёмах используйте bs=1M. - xm shutdown / xm create — управление Xen-VM (старый инструмент xm; на вашей платформе могут быть xl или virsh).
3 Ссылки
- Xen: http://www.xen.org/
Краткое резюме
Перенос гостя Xen с файловых образов на LVM повышает производительность и упрощает резервирование. Планируйте простой, делайте резервные копии и проверяйте работу VM до удаления исходных образов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента