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 -aPer 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-tolosetup /dev/loop20 /vm/domains/b1/disk.imgmount /dev/loop20 /mnt/loop-copy-fromCreare 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.imgmkfs.ext3 /dev/loop21mount /dev/loop21 /mnt/loop-copy-toCopiare 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-toPulire 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 -rfPoi smonteremo entrambi i dispositivi:
umount /mnt/loop-copy-fromumount /mnt/loop-copy-toRidurre il filesystem esistente
Ora dovrò ridurre /dev/loop20 da 400G a 300G:
e2fsck -f /dev/loop20resize2fs /dev/loop20 300GCopiare 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=512losetup -d /dev/loop20losetup -d /dev/loop21Configurazione 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.cfgLink
IO Digital Sec
Debian Wheezy XEN + Configurazione Ospite
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.