Xen configuración · 2 min read · Feb 05, 2026

Debian Wheezy: Dividir y redimensionar la imagen de disco de Xen

Antecedentes

Uno de mis servidores virtuales Xen necesitaba que su disco de 400G se dividiera y redimensionara durante el fin de semana, y quería mantener el tiempo de inactividad al mínimo. El disco tenía 240G utilizados, de los cuales 235G eran un directorio /backup, y los 5G restantes estaban dedicados a una instalación regular de Debian Linux. Quería dividir el disco en dos discos: un disco de 20GB que contuviera el sistema Linux y un disco de 300G que se montara como /backup. Luego podría aplicar mi configuración de DRBD para replicar esa partición de respaldo de 300G a una segunda máquina de respaldo separada.

No quería terminar en una situación en la que tuviera que copiar una gran cantidad de datos en el host físico, y ciertamente no quería que la máquina virtual estuviera inactiva mientras lo hacía.

Configurar imágenes

La máquina virtual tiene su imagen de disco ubicada en /vm/domains/b1/disk.img y una swap.img acompañante de la que no necesitamos preocuparnos.

Problema:

losetup -a

Para localizar todos los dispositivos de bucle utilizados. En mi caso, /dev/loop20 era el primer dispositivo libre. A continuación, configuraré un dispositivo de bucle para la imagen y luego lo montaré:

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

Crear una nueva imagen vacía y dispersa

Ahora, no vamos a mover /backup, en su lugar, vamos a mover todo lo demás a la nueva imagen de 20G. Crearemos un archivo de imagen dispersa de 20G con:

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

A continuación, necesitaremos configurar un nuevo dispositivo de bucle, crear un sistema de archivos y finalmente montar esta nueva imagen

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

Copiar el sistema de archivos raíz

Ahora, copiaré todo desde /mnt/loop-copy-from a /mnt/loop-copy-to, excepto el directorio de respaldo de 235G:

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

Limpiar el sistema de archivos existente

Quiero eliminar todo en /mnt/loop-copy-from excepto el directorio de respaldo:

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

Luego desmontaremos ambos dispositivos:

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

Reducir el sistema de archivos existente

Ahora necesitaré reducir /dev/loop20 de 400G a 300G:

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

Copiar datos de arranque

Y luego, copiar los datos de arranque antes de destruir los dispositivos de bucle:

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

Configuración de Xen y arranque de la VM

Ahora edita el archivo de configuración de la VM de Xen, en mi 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',
]

Y finalmente:

xm create b1.cfg

Enlaces

IO Digital Sec

Debian Wheezy XEN + Configuración de Invitados

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.