Xen Disk Management · 2 min read · Feb 05, 2026

Debian Wheezy: Suddividere e ridimensionare l'immagine del disco Xen

Sfondo

Uno dei miei server virtuali Xen aveva bisogno di avere il suo disco da 400G suddiviso e ridimensionato durante il fine settimana, e volevo mantenere il downtime al minimo. Il disco aveva 240G utilizzati, di cui 235G erano una directory /backup, e i rimanenti 5G dedicati a un’installazione regolare di Debian Linux. Volevo suddividere il disco in due dischi: un disco da 20GB contenente il sistema Linux e un disco da 300G da montare come /backup. Poi avrei potuto applicare la mia configurazione DRBD per replicare quella partizione di backup da 300G su una seconda macchina di backup separata.

Non volevo trovarmi nella situazione di dover copiare un carico di dati sull’host fisico, e certamente non volevo che la macchina virtuale fosse inattiva mentre lo facevo.

Configurare le immagini

La macchina virtuale ha la sua immagine del disco situata in /vm/domains/b1/disk.img e un file swap.img associato di cui non dobbiamo preoccuparci.

Problema:

losetup -a

Per localizzare tutti i dispositivi loop utilizzati. Nel mio caso, /dev/loop20 era il primo dispositivo libero. Successivamente, configurerò un dispositivo loopback per l’immagine e poi lo monterò:

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

Creare una nuova immagine sparsa vuota

Ora, non sposteremo /backup, invece, sposteremo tutto il resto nella nuova immagine da 20G. Creeremo un file immagine sparso di 20G con:

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

Successivamente, dovremo configurare un nuovo dispositivo loop, creare un filesystem e infine montare questa nuova immagine

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

Copiare il filesystem root

Ora, copierò tutto da /mnt/loop-copy-from a /mnt/loop-copy-to ad eccezione della directory di backup da 235G:

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

Pulire il filesystem esistente

Voglio rimuovere tutto su /mnt/loop-copy-from tranne la directory di backup:

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

Poi smonteremo entrambi i dispositivi:

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

Ridurre il filesystem esistente

Ora dovrò ridurre /dev/loop20 da 400G a 300G:

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

Copiare i dati di avvio

E poi, copiare i dati di avvio prima di distruggere i dispositivi loopback:

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

Configurazione di Xen e avvio della VM

Ora modifica il file di configurazione della VM Xen, nel mio caso, /etc/xen/b1.cfg, cambiando:

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

Con:

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',
]

E infine:

xm create b1.cfg

Link

IO Digital Sec

Debian Wheezy XEN + Configurazione Ospite

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.