-
Cos’è un file VMDK?
-
Come ridurre la partizione del disco nel sistema operativo guest?
-
Preparazione del disco: azzeramento dello spazio libero
-
Metodo 1: Ridurre manualmente un disco VMDK modificando il file descrittore VMDK
-
Metodo 2: Ridurre un disco VMDK tramite automazione con PowerShell e PowerCLI
-
Metodo 3: Ridurre le dimensioni di un disco VMDK utilizzando lo strumento vmware-vdiskmanager (solo Workstation/Fusion)
-
Metodo 4: Ridurre le dimensioni di un disco VMDK utilizzando VMware vCenter Converter Standalone
-
Eseguire il backup delle macchine virtuali VMware con Vinchin
-
Domande frequenti sulla riduzione delle dimensioni dei file VMDK
-
Conclusione
Le macchine virtuali (VM) alimentano la maggior parte degli ambienti IT moderni. Ma cosa succede se il disco virtuale (VMDK) diventa troppo grande? A differenza dei dischi fisici, non è sufficiente eliminare semplicemente i file all’interno del sistema operativo guest per ottenere un risparmio di spazio di archiviazione a livello infrastrutturale. Ridurre le dimensioni di un file VMDK è un processo delicato che richiede diversi passaggi sia all’interno della macchina virtuale sia sulla piattaforma hypervisor. In questa guida scoprirai cos’è un file VMDK, come ridurre in sicurezza le partizioni all’interno del sistema operativo guest, come preparare i dischi alla riduzione azzerando lo spazio libero e come ridurre effettivamente le dimensioni del file VMDK utilizzando metodi supportati—manuali o automatizzati.
Cos’è un file VMDK?
Un file Virtual Machine Disk (VMDK) è il formato di dischi rigidi virtuali sviluppato da VMware e utilizzato dai suoi prodotti, come ESXi o Workstation. Può essere considerato un contenitore che racchiude tutti i dati, le partizioni e i sistemi di file di una macchina virtuale, esattamente come un disco fisico contiene tutti i dati su un server reale.
Ogni disco virtuale è costituito da almeno due file:
Il file descrittore (
vmname.vmdk) contiene metadati relativi alla geometria (dimensione), al tipo di provisioning (thin o thick), alle relazioni padre-figlio (per gli snapshot) e altro ancora.Il file flat (
vmname-flat.vmdk) memorizza i blocchi di dati grezzi, ovvero il contenuto effettivo scritto dal sistema operativo della macchina virtuale.
I dischi con allocazione dinamica utilizzano una mappatura interna, denominata tabelle dei grain, per tenere traccia dei blocchi che contengono dati rispetto a quelli vuoti o azzerati. I dischi con allocazione statica allocano tutto lo spazio fin dall’inizio, indipendentemente dall’effettivo utilizzo.
Quando si eliminano file all’interno del sistema operativo della macchina virtuale—even su dischi thin—l’archivio dati sottostante non recupera immediatamente tale spazio. Questo avviene perché solo il sistema operativo guest sa quali blocchi sono effettivamente inutilizzati; dal punto di vista di VMware, tali blocchi potrebbero ancora contenere dati validi finché non vengono esplicitamente contrassegnati in modo diverso.
Come ridurre la partizione del disco nel sistema operativo guest?
Prima di ridurre il file VMDK stesso, riduci sempre prima le partizioni all’interno del tuo sistema operativo guest. Ciò garantisce che non si rischi di eliminare dati attivi durante il ridimensionamento a livello di storage.
Ridurre le partizioni informa il sistema operativo quali aree del disco non sono più necessarie, in modo che possano essere rimosse in sicurezza successivamente durante la riduzione del file VMDK.
Prima di iniziare:
Assicurati di avere un backup completo.
Verificare l’allineamento delle partizioni utilizzando strumenti come
fdisk -lsu Linux owmic partition get BlockSize, StartingOffsetsu Windows.Deframmentare i volumi, se possibile—soprattutto su Windows—per spostare i file immobili lontano dai bordi delle partizioni.
Per le partizioni root Linux o per volumi molto utilizzati: pianificare un fermo programmato in modo da poter avviare il sistema da supporti live, se necessario.
Per i sistemi guest Windows
Utilizzare la Gestione dischi integrata:
1. Accedi a Windows.
2. Fare clic con il tasto destro su Questo PC o su Il mio computer, scegliere Gestisci, quindi selezionare Gestione dischi.
3. Fare clic con il tasto destro sulla partizione di destinazione; fare clic su Riduci volume.
4. Immetti l’importo desiderato da ridurre: tieni presente che il massimo disponibile dipende dalla posizione dei file immobili, come pagefile.sys.
5. Conferma le modifiche; attendi il completamento.
Se “Riduci volume” offre meno spazio del previsto a causa di file immobili:
Esegui
defrag /X /H C:nel Prompt dei comandi come amministratoreProva a ridurre nuovamente lo spazio dopo la deframmentazione
Per i client Linux
Linux offre diversi strumenti a seconda del tipo di filesystem:
1. Avvia da CD/ISO live di GParted se devi ridurre la partizione radice o partizioni montate.
2. Seleziona la partizione di destinazione; scegli l’opzione Ridimensiona/Sposta.
3. Regola il cursore della dimensione o inserisci direttamente un valore; applica le modifiche.
4. Per i filesystem basati su ext: dopo aver ridimensionato la partizione con GParted o parted, eseguire resize2fs /dev/sdXN, dove X è la lettera/numero del dispositivo
5. Riavvia in modalità normale una volta completato
Per XFS: il ridimensionamento verso il basso non è supportato nativamente: è necessario eseguire il backup dei dati, ricreare un filesystem più piccolo e quindi ripristinare i dati.
Dopo il ridimensionamento riuscito, vedrai uno spazio non allocato alla fine del disco, requisito necessario prima di ridurre effettivamente le dimensioni del file VMDK in un secondo momento.
Preparazione del disco: azzeramento dello spazio libero
L’azzeramento dello spazio libero è essenziale prima di compattare dischi con provisioning dinamico o di utilizzare determinati strumenti di riduzione: contrassegna i blocchi non utilizzati in modo che VMware possa identificarli come recuperabili durante i processi di clonazione o compattazione.
Perché fare lo sforzo? Quando si eliminano dei file all’interno di un sistema operativo, questi vengono semplicemente contrassegnati come eliminati — non vengono effettivamente sovrascritti con zeri — quindi gli ipervisori non possono distinguere tra settori “liberi” e settori “utilizzati”, a meno che non vengano esplicitamente informati tramite appositi strumenti di riempimento con zeri.
Annullamento dello spazio libero nei sistemi Windows ospitati
Hai due opzioni principali:
1. Utilizzare lo strumento SDelete di Microsoft Sysinternals:
Scarica SDelete.exe
Esegui il Prompt dei comandi come amministratore
Esegui:
sdelete.exe -z C:
Questo comando scrive zeri in tutti i settori liberi dell’unità C:.
2. Su versioni più recenti (Windows 8 e successive):
Esegui PowerShell come amministratore
Esegui:
Optimize-Volume -DriveLetter C -ReTrim -Verbose
Questo comando invia indicazioni TRIM, ma non sovrascrive i dati con zeri: funziona al meglio con datastore basati su SSD che supportano nativamente i comandi UNMAP/TRIM.
Annullamento dello spazio libero nei sistemi guest Linux
Per i filesystem basati su ext:
1. Se offline/non montato:
zerofree /dev/sdXN
2. Se in linea/montato (non raccomandato per ambienti produttivi):
dd if=/dev/zero of=zero.fill bs=1M || true && sync && rm zero.fill
Questo comando crea un grande file temporaneo riempito di zeri finché il disco non è pieno; quindi lo elimina, lasciando zero solo nei settori non utilizzati.
Assicurati sempre che ci sia sufficiente spazio di lavoro prima di eseguire questi comandi!
Una volta ridotte le partizioni e azzerato lo spazio libero all’interno del sistema operativo della vostra macchina virtuale, è il momento di ridurre effettivamente—o “ridurre”—il file VMDK sottostante a livello di infrastruttura.
L’interfaccia grafica utente di VMware vSphere Client consente di aumentare, ma non di ridurre direttamente, le dimensioni dei dischi! È necessario utilizzare uno dei vari metodi manuali o automatizzati descritti di seguito:
Esegui sempre un backup della tua macchina virtuale prima di apportare qualsiasi modifica in questa fase! Un backup testato è un’assicurazione fondamentale contro eventuali errori.
Metodo 1: Ridurre manualmente un disco VMDK modificando il file descrittore VMDK
Questo metodo offre il massimo controllo, ma comporta rischi significativi: utilizzarlo solo se si è esperti nell’uso diretto della shell ESXi!
Prima di tutto, tieni presente che ogni file descrittore contiene una riga RW che specifica il numero totale di settori da 512 byte allocati:
RW <sector_count> <type> "<flat_file>"
Passaggi:
1. Spegnere completamente la macchina virtuale; assicurarsi che non esistano snapshot attivi!
2. Connettersi tramite SSH all’host ESXi; accedere alla cartella del datastore pertinente:
cd /vmfs/volumes/<datastore>/<VM_folder>
3. Esegui il backup sia del file descrittore che di quello flat:
cp vmname.vmdk backup_vmname.vmdk cp vmname-flat.vmdk backup_vmname-flat.vmdk
4. Modificare il descrittore utilizzando vi/nano/etc.; individuare la riga RW:
vi vmname.vmdk # Individuare la riga «RW» in prossimità dell’inizio del file # Calcolare il nuovo numero di settori = dimensione desiderata in byte / 512 # Esempio per 20 GB: 20*1024*1024*1024/512 = 41943040 settori # Sostituire il valore precedente con quello nuovo e salvare le modifiche
5–6. Per recuperare fisicamente la capacità non utilizzata, clonare il disco mediante vmkfstools: in questo passaggio vengono copiati esclusivamente i blocchi utilizzati o azzerati, a condizione che il disco sorgente sia stato provisionato in modalità thin.
vmkfstools -i vmname.vmdk -d thin vmname_new.vmdk
7. Registrare la VM clonata tramite l’interfaccia web di vCenter/ESXi (Registra VM), puntando al file di configurazione .vmx aggiornato
8. Accendere e verificare il corretto funzionamento/le dimensioni del disco all’interno della macchina virtuale
Le modifiche manuali possono danneggiare l’intera macchina virtuale se i calcoli relativi ai settori sono errati! Eseguire innanzitutto test approfonditi al di fuori dell’ambiente produttivo.
Metodo 2: Ridurre un disco VMDK tramite automazione con PowerShell e PowerCLI
PowerCLI offre l’automazione tramite script, particolarmente utile negli ambienti più ampi che richiedono di eseguire ripetutamente molte attività simili.
Prerequisiti:
Installa l’ultima versione di PowerCLI
Assicurarsi che WinRM sia abilitato e accessibile tra la postazione di gestione e le macchine virtuali
Installa VMware Tools all’interno di ogni macchina virtuale per una corretta messa in pausa durante la creazione di snapshot/backup
Flusso di lavoro tipico:
1. Ridimensionare la/e partizione/i dell’ospite tramite script — ad esempio, chiamare da remoto i cmdlet nativi di Windows:
Invoke-Command –ComputerName $VMName –ScriptBlock { Resize-Partition ... }2. Arrestare la macchina virtuale di destinazione; verificare che non siano presenti snapshot attivi
3. Lo script si connette tramite Connect-VIServer, esegue il backup dei descrittori, modifica i valori RW e avvia la migrazione/clonazione:
Set-HardDisk –HardDisk $disk –CapacityGB $newSize –Confirm:$false # Oppure modificare manualmente il descrittore + eseguire Move-HardDisk, ecc.
4. Sequenza di reregistrazione/arresto/avvio gestita a livello programmatico
Non memorizzare mai le credenziali in testo semplice; utilizzare oggetti SecureString ogni volta che possibile.
Esempi completi di script sono abbondanti online: controlla sempre la sicurezza del codice prima di eseguire script di terze parti.
Metodo 3: Ridurre le dimensioni di un disco VMDK utilizzando lo strumento vmware-vdiskmanager (solo Workstation/Fusion)
Se si opera al di fuori del contesto di un datacenter — ad esempio, carichi di lavoro per laboratorio/test/sviluppo eseguiti su Workstation/Fusion — utilizzare l’utilità CLI inclusa:
Nota: non disponibile e non supportato sui sistemi host ESXi/vSphere!
Passaggi:
1. Elimina i file/temporanei non necessari all’interno dell’account ospite; svuota il cestino, ecc.
2. Azzerare lo spazio libero secondo la sezione precedente.
3. Arrestare la macchina virtuale di destinazione.
4. Sul computer host eseguire:
vmware-vdiskmanager.exe -k "path_to_vmdk.vmdk"
L’opzione -k recupera i blocchi costituiti interamente da zeri, riducendo così l’ingombro complessivo dell’immagine.
Sui sistemi Linux/Mac potrebbe non esistere un’opzione equivalente diretta; si consiglia invece di copiare o ridurre.
Metodo 4: Ridurre le dimensioni di un disco VMDK utilizzando VMware vCenter Converter Standalone
Per gli amministratori che cercano flussi di lavoro GUI ufficialmente supportati, vCenter Converter Standalone rimane la soluzione più sicura, in particolare quando si spostano carichi di lavoro produttivi.
Il convertitore esegue migrazioni da virtuale a virtuale (“V2V”), creando una copia nuova delle dimensioni esattamente specificate dall’utente.
Punti chiave:
Richiede spazio di archiviazione sufficiente per contenere temporaneamente contemporaneamente sia l’immagine sorgente che quella di destinazione.
La funzione CBT (“Rilevamento dei blocchi modificati”) deve essere disattivata prima della conversione.
Possono verificarsi conflitti di rete/IP se si esegue il cloning su una stessa subnet/ambiente senza modificare gli indirizzi MAC o gli indirizzi IP dopo la migrazione.
Come fare:
1. Scaricare e installare Converter Standalone sulla postazione di gestione.
2. Avvia l’app; connetti di conseguenza gli host di origine/destinazione.
3. Selezionare la macchina virtuale di origine; definire la posizione/risorsa di archiviazione di destinazione.
4. In Dati da copiare > Modifica > Seleziona volumi da copiare, imposta le nuove dimensioni ridotte per ciascun volume richiesto.
5. Avvia il processo di conversione; monitora attentamente lo stato avanzamento/registri.
6. Una volta completato l’avvio della nuova istanza, verificare accuratamente l’integrità dell’applicazione e dei dati!
7. Rimuovere/disinstallare l’originale una volta soddisfatti.
Eseguire il backup delle macchine virtuali VMware con Vinchin
Prima di eseguire operazioni potenzialmente rischiose, come la riduzione delle dimensioni dei file VMDK, è essenziale disporre di backup affidabili: in questo ambito Vinchin si distingue come soluzione enterprise progettata specificamente per ambienti di virtualizzazione, in primis VMware, oltre a Hyper-V, Proxmox VE, oVirt/RHV/OLVM, XCP-ng/XenServer, OpenStack, ZStack e altre quindici piattaforme mainstream complessive.
Vinchin offre funzionalità di protezione complete, tra cui il backup incrementale perpetuo per una conservazione efficiente a lungo termine senza la necessità di eseguire ripetutamente backup completi; tecnologie avanzate di deduplica e compressione che riducono al minimo il consumo di spazio di archiviazione; capacità di migrazione V2V trasparente tra piattaforme diverse; opzioni di ripristino granulare fino a singoli file o cartelle; oltre a strategie pianificate, come attività di backup ricorrenti — il tutto gestito tramite una console web intuitiva, progettata per essere facile da usare anche su larga scala.
Eseguire il backup di una macchina virtuale VMware richiede soltanto quattro passaggi:
1. Seleziona la/delle macchina/e virtuale/i VMware di destinazione;

2. Scegliere un archivio di memorizzazione per il backup appropriato;

3. Configurare le impostazioni della strategia di backup;

4. Invia il lavoro.

Riconosciuto a livello globale da migliaia di clienti—con valutazioni eccellenti su tutti i principali siti di recensioni del settore—Vinchin offre una prova gratuita di 60 giorni completa di tutte le funzionalità, per consentirti di sperimentarne la potenza in prima persona, senza alcun rischio! Clicca qui sotto per scaricare subito il programma di installazione e distribuire backup sicuri senza sforzo nell’intero tuo ambiente.
Domande frequenti sulla riduzione delle dimensioni dei file VMDK
D1: È possibile ridurre le dimensioni di un file VMDK senza spegnere la macchina virtuale?
No: è necessario spegnere completamente la macchina virtuale prima di tentare qualsiasi procedura di riduzione, per evitare il rischio di corruzione.
Q2: Cosa succede se salto la riduzione della partizione all’interno del sistema operativo guest?
Rischiate una grave perdita di dati o l’impossibilità di avviare il sistema, poiché strutture fondamentali potrebbero essere troncate inaspettatamente durante le operazioni di ridimensionamento.
Q3: Come faccio a verificare se il mio file VMDK è allocato in modo thin o thick?
Nel vSphere Client selezionare la macchina virtuale di destinazione > fare clic su MODIFICA IMPOSTAZIONI > espandere DISCO RIGIDO > controllare il campo TIPO DI PROVISIONING visualizzato.
Q4: È possibile ridurre i dischi allocati in modo statico con azzeramento differito?
Solo convertendoli prima in formato sottile mediante strumenti di clonazione come vmkfstools, quindi procedendo successivamente con i normali metodi di compattazione.
Domanda 5: Perché il mio file VMDK ridotto continua a mostrare le dimensioni originali nel browser del datastore?
Verificare se il supporto UNMAP/TRIM è disponibile end-to-end, dall’ipervisore all’array di storage, e attivare il recupero manuale tramite il comando esxcli storage vmfs unmap, ove applicabile.
Conclusione
Ridurre le dimensioni di un file VMDK richiede una pianificazione accurata: dalla preparazione delle partizioni all’interno delle macchine virtuali fino alle fasi sicure di riduzione esterna, garantendo in ogni passaggio un’adeguata protezione mediante backup affidabili! Con Vinchin che gestisce in autonomia le operazioni di protezione, puoi ottimizzare con sicurezza lo spazio di archiviazione anche negli ambienti aziendali più complessi già da oggi.
Condividi su: