Гид по технологиям

Xen: как конвертировать гостя с образа диска на LVM

• 4 min read • Виртуализация • Обновлено 24 Nov 2025
Конвертация Xen гостя с образа на LVM
Конвертация 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 -lh

2 Конвертация образов в LVM

Важно: перед началом создайте резервную копию образов или снимите снапшот, если это возможно. Операция включает остановку VM и посекторное копирование, и ошибки приведут к потере данных.

  1. Остановите гостя:
xm shutdown xen1.example.com
  1. Создайте логические тома того же размера, что и образы. Пример:
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.

  1. Копирование данных из файлов-образов в 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

  1. Отредактируйте конфигурацию 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', ] [...] |

  1. Запустите гостя снова:
xm create /etc/xen/xen1.example.com.cfg
  1. Если всё работает корректно, можно удалить старые файлы-образы:
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 и копируйте из снапшота.

Мини-методология (короткий чеклист)

  1. Проверка свободного места в VG (vgdisplay).
  2. Остановить VM (xm shutdown).
  3. Создать LV нужного размера (lvcreate).
  4. Копирование данных (dd или rsync).
  5. Обновить /etc/xen/*.cfg (file -> phy).
  6. Запустить VM и проверить логи, файловую систему и службы.
  7. Удалить образы только после валидации.

Критерии приёмки

  • 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 с файловых образов на LVM повышает производительность и упрощает резервирование. Планируйте простой, делайте резервные копии и проверяйте работу VM до удаления исходных образов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро