Xen Disk · 2 min read · Feb 05, 2026

Debian Wheezy: Dividir e redimensionar imagem de disco Xen

Background

Um dos meus servidores virtuais Xen precisava ter seu disco de 400G dividido e redimensionado durante o fim de semana, e eu queria manter o tempo de inatividade ao mínimo. O disco tinha 240G usados, 235G dos quais eram um diretório /backup, e os restantes 5G dedicados a uma instalação regular do Debian Linux. Eu queria dividir o disco em dois discos - um disco de 20GB contendo o sistema Linux, e um disco de 300G para montar como /backup. Assim, eu poderia aplicar minha configuração DRBD para replicar essa partição de backup de 300G para uma segunda máquina de backup separada.

Eu não queria acabar em uma situação de ter que copiar uma grande quantidade de dados no host físico, e certamente não queria que a máquina virtual ficasse fora do ar enquanto eu fazia isso.

Set up images

A máquina virtual tem sua imagem de disco localizada em /vm/domains/b1/disk.img e uma swap.img acompanhante da qual não precisamos nos preocupar.

Issue:

losetup -a

Para localizar todos os dispositivos de loop usados. No meu caso, /dev/loop20 foi o primeiro dispositivo livre. Em seguida, vou configurar um dispositivo de loopback para a imagem e, em seguida, montá-lo:

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

Create a new empty sparse image

Agora, não vamos mover /backup, em vez disso, vamos mover tudo o mais para a nova imagem de 20G. Vamos criar um arquivo de imagem esparsa de 20G com:

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

Em seguida, precisaremos configurar um novo dispositivo de loop, criar um sistema de arquivos e finalmente montar esta nova imagem

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

Copy root filesystem

Agora, vou copiar tudo de /mnt/loop-copy-from para /mnt/loop-copy-to, exceto o diretório de backup de 235G:

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

Clean up existing filesystem

Quero remover tudo em /mnt/loop-copy-from, exceto o diretório de backup:

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

Em seguida, desmontaremos ambos os dispositivos:

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

Shrink existing filesystem

Agora, precisarei reduzir /dev/loop20 de 400G para 300G:

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

Copy boot data

E então, copiar os dados de inicialização antes de destruir os dispositivos de loopback:

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

Xen configuration and VM boot

Agora edite o arquivo de configuração da VM Xen, no meu caso, /etc/xen/b1.cfg, mudando:

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

Para:

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 finalmente:

xm create b1.cfg

Links

IO Digital Sec

Debian Wheezy XEN + Configuração de Convidado

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.