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-tolosetup /dev/loop20 /vm/domains/b1/disk.imgmount /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.imgmkfs.ext3 /dev/loop21mount /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-fromumount /mnt/loop-copy-toУменьшение существующей файловой системы
Теперь мне нужно уменьшить /dev/loop20 с 400 ГБ до 300 ГБ:
e2fsck -f /dev/loop20resize2fs /dev/loop20 300GКопирование данных загрузки
А затем, скопировать данные загрузки перед уничтожением устройств циклической подстановки:
dd if=/dev/loop20 of=/dev/loop21 bs=1 count=512losetup -d /dev/loop20losetup -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 + Настройка гостя
Get new posts in your inbox
No spam. Unsubscribe anytime.