Espandere un filesystem NTFS su una macchina VMWare

Per comodità soprattutto mia, piazzo qua la traduzione di questo interessante post le cui istruzioni mi sono state assolutamente indispensabili.

Il mio problema era esattamente analogo a quello descritto nel post di cui sopra: avevo creato una macchina virtuale VMWare per un sistema Windows 2003 con un disco troppo piccolo (4GB). Il sistema si rifiutava perfino di concludere gli aggiornamenti automatici, senza che ancora vi avessi installato alcun software. C’è da dire che non avevo gran bisogno di spazio, dal momento che i dati veri e propri sarebbero stati letti da un altro disco, via iScsi. In ogni caso 4 GB erano troppo pochi, ne sarebbero bastati 2 in più, e il sistema sottostante, una Ubuntu 6.10, aveva spazio disco in abbondanza.

Come fare a ingrandire il filesystem NTFS?


Per prima cosa si effettua un chckdsk sul disco da ridimensionare dal sistema Windows stesso:

chkdsk c:

Si spenge quindi Windows. A questo punto sarebbe oltremodo consigliabile effettuare un backup del disco Windows e, dato che si tratta di un disco virtuale, è sufficiente copiare i file del disco virtuale sulla macchina host, ad esempio in una sottodirectory backup all’interno della directory principale della stessa macchina virtuale:

sudo mkdir backup
sudo cp myDisk.* backup

A questo punto si espande il disco virtuale e si aggiustano i permessi sul file del disco:

sudo vmware-vdiskmanager -x 6GB myDisk.vmdk
sudo chown admin:admin myDisk*

Ora abbiamo un disco da 6 GigaByte, ma il filesystem NFTS continua ovviamente a vederne solo 4. Cioè, se riaccendessimo Windows, vedremmo un disco da 6GB, di cui staremmo però utilizzando una partizione da 4GB formattata NTFS. Non esiste alcun modo in Windows per risolvere questo problema, ma ancora una volta Linux ci viene in aiuto (in realtà questo non è del tutto vero, perché con i dischi dinamici si potrebbe gestire la cosa anche in Windows, ma non sul disco di boot, e questo era il mio caso).
Facciamo partire la macchina virtuale Windows con una distro linux live (ho usato una Knoppix, l’autore del post originale usa una Ubuntu Live).

Qui siamo di fronte al passo potenzialmente più pericoloso: dobbiamo ripartizionare il disco virtuale e possiamo seriamente incasinare i dati.

Su un terminale, digitiamo:

sudo cfdisk /dev/sdb

dove al posto di sdb si inserisce il drive da ripartizionare relativo, ovviamente, alla macchina virtuale.
Quindi si cancellano tutte le partizioni relative al disco da ridimensionare e se ne crea una più grande della dimensione desiderata.
Da notare che la nuova partizione deve essere identica a quella vecchia, eccezion fatta per la fine della partizione che sarà più “avanti”, mentre l’inizio della partizione deve cominciare nello stesso punto del disco di quella vecchia.
Quindi:

sudo ntfsresize /dev/sdb1
# Di nuovo si inserisca il device appropriato

Si fa quindi il reboot con Windows, che effettuerà da solo il chkdsk, quindi si effettua di nuovo il reboot e il gioco è fatto.

2 Commenti a “Espandere un filesystem NTFS su una macchina VMWare”

  1. Edo afferma:

    sarebbe che ridimensioni la Table Of Content del disco vero e, se non tocchi nulla, i dati rimangono cosi’ come sono e poi, facendo il ntfsresize riaggiusti la dimensione di quello della macchina virtuale, che quindi eredita i bytes in piu’?

    Ovvero se tra cfdisk e ntfsresize te scrivi sul disco in zone incriminate il giochetto potrebbe costare caro?

  2. Mau afferma:

    La risposta è dentro di te, e però… è sbagliata. Quello che accade alla tavola di partizioni del disco, francamente non lo so. Di fatto c’è che il disco vero non esiste, in quanto sta su uno o più file. Quando lo ripartizioni e usi ntfsresize stai già lavorando da Linux sulla macchina virtuale, ovvero come se fossi su una macchina reale.
    Qui comunque c’è un bel man page di ntfsresize.