Ridimensionare il disco di windows che gira sotto xen

Ridimensionare il disco di windows che gira sotto xen

Ridimensionare il disco di windows che gira sotto xen può essere molto complesso se non si sa esattamente dove mettere le mani, ecco la soluzione, sicuramente poco elegante ma efficace.
Il sistema windows è un pò complesso, ridimensionare i dischi non è così semplice.
nel mio sistema xen gira un windows 7, purtroppo mi sono reso conto di aver esagerato con la dimensione del disco e per effettuare il backup impiego troppo tempo.
Purtroppo il tool di windows non mi ridimensiona il disco sotto una certa soglia, infatti avevo un disco da 1Tb con solo 63 Gb occupati, come fare per ridimensionare senza perdere i dati?
per prima cosa ho copiato i primi 200Mb su un file contenitore
#dd if=/dev/Pinocchio/windows7 of=contenitore.img ibs=1M count=200
Ridimensionare il disco di windows che gira sotto xenAdesso ho copiato la struttura del filesystem in un contenitore da 200Mb.
A questo punto devo ingrandire il contenitore alla dimensione del disco che vorrò possedere, nel mio caso 100Gb.
Alloco un file vuoto della dimensione di 100Gb e lo aggiungo al contenitore
#truncate -s 100G tmp.img
#cat tmp.img >>contenitore.img && rm tmp.img
A questo punto mi trovo un contenitore da 100Gb con un filesystem da 1 Tb, per poter Ridimensionare il disco di windows che gira sotto xen, devo ottenere un contenitore da 100Gb con un filesystem della stessa grandezza, quindi:
#fdisk contenitore.img
elimino la partizione 2 e la ricreo immediatamente, poi gli cambio immediatamente l’id e lo posiziono a 7.
A questo punto per poter Ridimensionare il disco di windows che gira sotto xen, devo formattare la partizione N° 2 in ntfs e qui cominciano i primi problemi. Il contenitore contiene 2 partizioni, una da 100Mb con il bootloader ed il kernel e l’altra che conterrà i dati, io devo formattare la seconda, quindi devo verificare l’ofset
# fdisk -l contenitore.img

Disk disk.img: 97,7 GiB, 104857600000 bytes, 204800000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc67c4aea

Device Boot Start End Sectors Size Id Type
disk.img1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT
disk.img2 206848 204046335 203839488 97,2G 7 HPFS/NTFS/exFAT

Benissimo la mia seconda partizione inizia a 206848, quindi devo montare in loop la partizione offset ((206848 * 512))
mi appresto a Ridimensionare il disco di windows che gira sotto xen, mappo la partizione nella loop0
#losetup /dev/loop0 contenitore.img -o $((206848 * 512))
Adesso formatto la partizione come se fosse un disco
# mkfs.ntfs -F /dev/loop0
Io formatto con il -F così si sbriga, non mi serve una formattazione a basso livello visto che in realtà sto formattando un file posizionato all’interno di un altro file system
Adesso faccio una vera porcata 🙂
monto, con lo stesso metodo di prima, il disco grande
# losetup /dev/loop1 /dev/Pinocchio/windows7 -o $((206848 * 512))
Mi creo due directory di comodo
# mkdir /A /B
e ci mondo dentro i due loop
# mount /dev/loop0 /A
# Mount /dev/loop1 /B
Per Ridimensionare il disco di windows che gira sotto xen, copio il contenuto di /B in /A
# cp -R /B/* /A/
Non serve mantenere i permessi, windows non li usa, al termine
# sync
e smonto tutto
# umount /dev/loop1
# umount /dev/loop0
# losetup -D loop1
# losetup -D loop0
Per poter contentare quel satanasso di windows gli faccio credere che l’operazione di Ridimensionare il disco di windows che gira sotto xen, è opera sua, quindi aggiungo qualche Mb di spazio
# truncate -s 300M tmp.img
# cat tmp.img >>contenitore.img && rm tmp.img
A questo punto avvio windows
# xl create /etc/xen/windows.cfg
entro con vnc ed gli facciamo Ridimensionare il disco di windows che gira sotto xen, chiedendogli di allargare la partizione, un sano ed onesto riavvio rende tutti felici e contenti.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *