Xen, Debian · 2 min read · Feb 05, 2026

Debian Wheezy: Разделение и изменение размера образа диска Xen

Фон

Один из моих виртуальных серверов Xen нуждался в разделении и изменении размера своего диска на 400 ГБ в выходные, и я хотел минимизировать время простоя. Диск имел 240 ГБ использованного пространства, из которых 235 ГБ занимала директория /backup, а оставшиеся 5 ГБ были выделены для обычной установки Debian Linux. Я хотел разделить диск на два диска - диск на 20 ГБ, содержащий систему Linux, и диск на 300 ГБ, который будет смонтирован как /backup. Затем я мог бы применить свою настройку DRBD для репликации этого 300 ГБ раздела резервного копирования на отдельную вторую резервную машину.

Я не хотел оказаться в ситуации, когда мне придется копировать большое количество данных на физическом хосте, и, безусловно, не хотел, чтобы виртуальная машина была выключена, пока я это делал.

Настройка образов

Виртуальная машина имеет образ диска, расположенный в /vm/domains/b1/disk.img, и сопутствующий swap.img, о котором нам не нужно беспокоиться.

Проблема:

losetup -a

Чтобы найти все используемые устройства циклической подстановки. В моем случае, /dev/loop20 было первым свободным устройством. Далее я настрою устройство циклической подстановки для образа, а затем смонтирую его:

mkdir -p /mnt/loop-copy-from /mnt/loop-copy-to
losetup /dev/loop20 /vm/domains/b1/disk.img
mount /dev/loop20 /mnt/loop-copy-from

Создание нового пустого разреженного образа

Теперь мы не будем перемещать /backup, вместо этого мы переместим все остальное в новый образ на 20 ГБ. Мы создадим файл разреженного образа размером 20 ГБ с:

dd if=/dev/zero of=/vm/domains/b1/disk-root.img bs=1k count=1 seek=$(((20*1024*1024)-1))

Далее нам нужно будет настроить новое устройство циклической подстановки, создать файловую систему и, наконец, смонтировать этот новый образ

losetup /dev/loop21 /vm/domains/b1/disk-root.img
mkfs.ext3 /dev/loop21
mount /dev/loop21 /mnt/loop-copy-to

Копирование корневой файловой системы

Теперь я скопирую все из /mnt/loop-copy-from в /mnt/loop-copy-to, кроме директории резервного копирования на 235 ГБ:

rsync -arplogu --exclude "/backup" --stats --progress /mnt/loop-copy-from/ /mnt/loop-copy-to

Очистка существующей файловой системы

Я хочу удалить все на /mnt/loop-copy-from, кроме директории резервного копирования:

cd /mnt/loop-copy-from; ls | grep -v 'backup' | xargs rm -rf

Затем мы размонтируем оба устройства:

umount /mnt/loop-copy-from
umount /mnt/loop-copy-to

Уменьшение существующей файловой системы

Теперь мне нужно уменьшить /dev/loop20 с 400 ГБ до 300 ГБ:

e2fsck -f /dev/loop20
resize2fs /dev/loop20 300G

Копирование данных загрузки

А затем, скопировать данные загрузки перед уничтожением устройств циклической подстановки:

dd if=/dev/loop20 of=/dev/loop21 bs=1 count=512
losetup -d /dev/loop20
losetup -d /dev/loop21

Конфигурация Xen и загрузка VM

Теперь отредактируйте файл конфигурации Xen VM, в моем случае, /etc/xen/b1.cfg, изменив:

disk = [
  'file:/vm/domains/b1/disk.img,xvda2,w',
  'file:/vm/domains/b1/swap.img,xvda1,w',
]

На:

disk = [
  'file:/vm/domains/b1/disk-root.img,xvda2,w',
  'file:/vm/domains/b1/disk.img,xvda3,w',
  'file:/vm/domains/b1/swap.img,xvda1,w',
]

И наконец:

xm create b1.cfg

Ссылки

IO Digital Sec

Debian Wheezy XEN + Настройка гостя

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.