In Windows una limitazione è quella relativa all’impossibilità di estendere una partizione tramite gli strumenti nativi (Disk Management / DiskPart) se tra la partizione e lo spazio non allocato esiste una partizione.
Questa situazione si può verificare, ad esempio, in una macchina virtuale quando si estende il disco virtuale dove è installato il sistema, ma gli strumenti nativi (Disk Management / DiskPart) non consentono l’estensione della partizione di sistema se tra la partizione di sistema e lo spazio non allocato esiste la partizione Recovery.

Per risolvere il problema ci sono vari approcci come, ad esempio, eliminare la partizione adiacente e ricrearla anche nel caso in cui tale partizione sia la partizione di recupero.
Una alternativa più semplice è quella di usare un tool di terze parti per spostare la partizione adiacente dopo lo spazio non allocato, in questo modo è possibile utilizzare poi gli strumenti nativi (Disk Management / DiskPart) per estendere la partizione.
Un tool di terze parti gratuito che consente di eseguire tale operazione è GParted — A free application for graphically managing disk device partitions.
Di seguito alcune indicazioni che ho raccolto nel caso si intenda estendere la partizione di sistema su una macchina virtuale Windows Server 2022 in esecuzione su un host Hyper-V Windows Server 2022.
Il primo passo è ovviamente scaricare la versione GParted Live che attualmente è alla versione 1.8.1-3, quindi avviare la VM con l’iso della GParted Live impostando l’avvio della VM da iso e se necessario disabilitare il Secure Boot.
Dopo aver avviato la VM con l’iso GParted Live vengono proposte varie opzioni di esecuzione, selezionare l’opzione di default GParted Live (Default Settings). Nel mio caso però tale opzione non avviava il tool riportando l’errore “Failed to disable /sys/devices/system/cpu/cpu1“. In questo caso è possibile avviare il tool selezionando l’opzione GParted Live (VGA with large font & to RAM).
Nel wizard di avvio di GParted utilizzare le seguenti selezioni:
- Accettare la keymap proposta
- Accettare il Default English language (33)
- Accettare l’opzione Mode 0 – Continue to start X to use GParted automatically
Dal momento che il disco virtuale della VM è stato esteso è possibile che venga visualizzato il warning “Not all the space avaiable to /dev/sda appears to be used, you can fix the GPT to use all of the space or continue the current setting?” con la possibilità di selezionare “Fix” o “Ignore”.
In estrema sintesi il warning indica che la tabella GPT di backup non è posizionata alla fine del disco (tipico dopo che il disco virtuale è stato esteso). In questa situazione occorre scegliere l’opzione “Fix” per riscrive la tabella di backup. GPT ha due header: uno primario all’inizio del disco e uno di backup alla fine; quando il disco virtuale viene esteso la copia di backup può rimanere al vecchio offset, quindi gli strumenti (parted/GParted) segnalano che “non tutto lo spazio è usato”. Se non si provvede a riscrivere la la tabella GPT di backup in modo l’header di back sia aggiornato al nuovo offset GParted non riuscirà a spostare la partizione adiacente.
Una volta avviato GParted è possibile selezionare la partizione adiacente (nel nostro esempio la partizione di ripristino) alla partizione da estendere (nel nostro esempio la partizione di sistema) quindi con il tasto destro del mouse selezionare Resize/Move e impostare per la partizione adiacente il parametro Free space following (MiB) al valore 0. In questo modo la partizione sarà spostata dopo lo spazio non allocato, per confermare l’esecuzione dello spostamento della partizione adiacente selezionare Edit e quindi Apply all operations.
A questo punto è possibile uscire da GParted e arrestare la la VM.
Rimuovere l’impostazione dell’avvio della VM tramite l’iso di GParted e se necessario ripristinare il Secure Boot e avviare il sistema.
Ora è possibile estendere la partizione tramite gli strumenti nativi (Disk Management / DiskPart) in quanto lo spazio allocato è adiacente alla partizione da estendere (nel nostro esempio la partizione di sistema).