Windows Server 2025 / Modificare CPU, memoria e VHDX di una VM Hyper-V

Adattate le risorse di una macchina virtuale (virtual machine, VM) alla capacità dell’host e al lavoro del guest: aumentare processori, memoria o disco non garantisce prestazioni migliori. Annotate prima le impostazioni originali e cambiate un solo elemento alla volta, così da confrontare il risultato e tornare al punto iniziale.

Distinguere capacità host e risorse guest

Un processore virtuale (vCPU) è presentato al guest, senza corrispondere necessariamente a un core fisico riservato. La memoria può essere fissa o dinamica; VHDX è un file che Hyper-V presenta come disco virtuale. Più VM condividono le risorse dell’host: carenze o ritardi di archiviazione possono interessare diversi guest. Confrontate i due punti di osservazione della tabella, distinguendo spazio libero nel volume guest e spazio nel volume host che contiene il VHDX.

Risorsa Osservazione sull’host Osservazione nel guest
Processore Altre VM, configurazione e contesa per CPU. Utilizzo del processore e risposta durante lo stesso lavoro.
Memoria Capacità disponibile e assegnata ai guest. Utilizzo, paging e necessità dell’applicazione.
Archiviazione Dimensione VHDX, spazio fisico libero e latenza. Capacità del volume, file system e spazio libero.

Usate HVTEST01 già creata e installata per le prove, senza dati importanti. Essere una VM di test non significa avere il disco di sistema vuoto. Operate come amministratori su HV1 e mantenete accesso alla console. Prima di ogni modifica arrestate normalmente Windows nel guest e confermate State Off, non stato salvato o pausa. L’esercizio non dipende dalle modifiche a caldo. Conservate i risultati delle query prima di intervenire; ripristinare valori documentati di CPU e memoria è diverso dal ridurre un disco che contiene dati.

Confrontare il numero di processori virtuali

Get-VM -Name 'HVTEST01' | Select-Object Name,State,ProcessorCount
Get-VMProcessor -VMName 'HVTEST01' | Select-Object Count,Reserve,Maximum,RelativeWeight
  1. Annotate numero di processori e valori Reserve, Maximum e RelativeWeight della query, senza cambiare questi ultimi. L’esempio assume i due vCPU della creazione; se lo stato reale differisce, conservatelo e adattate il piano senza imporre due come presunto valore originale.
  2. Con HVTEST01 Off aprite Impostazioni → Processore nella console Hyper-V e modificate soltanto il numero da due a uno. Confermate la VM di prova e applicate.
  3. Avviate il guest e ripetete la stessa operazione amministrativa circoscritta, per esempio visualizzare i medesimi dati di Server locale. Mantenete lavoro e condizioni comparabili; una query piccola non misura capacità massima.
  4. Annotate utilizzo e durata nel guest, attività in background dell’host e condizioni cambiate. Potete controllare i processori logici in Gestione attività. Non inventate un miglioramento senza differenze chiare.
  5. Arrestate normalmente, confermate Off e tornate a due vCPU se era il valore iniziale. Ricontrollate ProcessorCount e un avvio normale prima della prova di memoria.

Una piccola operazione può dare risultati simili con uno o due vCPU. Non ricavatene una classifica generale dei servizi né una garanzia di miglioramento aggiungendo vCPU. Assegnarne troppi fra diversi guest può aumentare la contesa sull’host. Non create carico imprevisto per forzare una differenza. Se cambiano lavoro, cache o attività in background, indicate che il confronto non è equivalente invece di attribuire tutto al numero di processori.

Scegliere memoria fissa o dinamica con un obiettivo

La memoria dinamica adegua l’assegnazione alla richiesta e alle condizioni dell’host entro i limiti configurati; Startup indica la memoria iniziale. Maximum non riserva fisicamente quella quantità. Verificate supporto di guest e applicazione e pianificate gli avvii simultanei. La documentazione di Set-VMMemory spiega i parametri: i valori 2/4/6 GB del blocco sono scelti per questo esercizio, non sono un esempio letterale né una raccomandazione Microsoft. In PowerShell sono 2/4/6 gibibyte (GiB) binari, con minimo ≤ iniziale ≤ massimo. A VM Off eseguite prima Get-VMMemory e salvate DynamicMemoryEnabled, Minimum, Startup e Maximum fuori dalla finestra, poi applicate Set-VMMemory:

Get-VMMemory -VMName 'HVTEST01' | Select-Object DynamicMemoryEnabled,Minimum,Startup,Maximum
Set-VMMemory -VMName 'HVTEST01' -DynamicMemoryEnabled $true -MinimumBytes 2GB -StartupBytes 4GB -MaximumBytes 6GB

Avviate e osservate memoria assegnata e richiesta in Hyper-V insieme a utilizzo, paging guest e memoria libera dell’host. Ripetete lo stesso lavoro limitato senza esaurire volontariamente la memoria. Un avvio fallito può dipendere da capacità iniziale insufficiente, ma conservate messaggio e contesto prima di concludere. Dopo il confronto arrestate normalmente e confermate Off. Soltanto se prima avevate memoria fissa di 4 GiB, il blocco seguente ripristina quella modalità e memoria iniziale:

Set-VMMemory -VMName 'HVTEST01' -DynamicMemoryEnabled $false -StartupBytes 4GB

Quel comando di ritorno modifica solo DynamicMemoryEnabled e StartupBytes, non Minimum, Maximum o altre proprietà cambiate. Conservate i valori originali e usate le proprietà Memoria della VM o i parametri appropriati di Set-VMMemory per recuperarli quando necessario, verificando poi con Get-VMMemory. Se prima avevate un altro valore fisso o memoria dinamica, non trattate 4 GiB come origine universale. Anche quando i limiti sono inattivi in modalità fissa, ricontrollateli prima di riattivare la memoria dinamica. Non registrate questo risultato come ripristino completo di tutte le proprietà.

Esaminare capacità virtuale e crescita del file

I dischi fissi allocano lo spazio configurato alla creazione; quelli dinamici crescono con le scritture. Un disco differenze dipende da un padre e l’intera catena deve rimanere integra. La crescita richiede spazio reale sull’host anche quando il guest segnala ancora spazio libero. Su HV1 esaminate i percorsi collegati prima di operare sui file. Get-VHD legge l’oggetto disco: un errore per file in uso o interrogazione da un altro host non indica un file vuoto o eliminabile:

Get-VMHardDiskDrive -VMName 'HVTEST01' | Select-Object ControllerType,ControllerNumber,ControllerLocation,Path
Get-VMHardDiskDrive -VMName 'HVTEST01' | ForEach-Object { Get-VHD -Path $_.Path } | Select-Object Path,VhdType,FileSize,Size,ParentPath

Size è la capacità virtuale; FileSize è la dimensione del file sull’host, non lo spazio libero nel guest. Eliminare file guest non riduce necessariamente subito il VHDX. ParentPath identifica una dipendenza dal padre e la query non percorre automaticamente tutta la catena in modo ricorsivo. Anche gli AVHDX dei checkpoint e i loro padri ne fanno parte. Non eliminate, rinominate o modificate manualmente questi file per recuperare spazio, e non intervenite direttamente su un padre utilizzato tramite dischi differenze.

Aggiungere un disco senza confonderlo con un’estensione

  1. Prima di arrestare aprite diskmgmt.msc nel guest e registrate dischi, dimensioni e lettere. Spegnete normalmente HVTEST01, confermate Off e annotate percorso e posizione del disco di sistema con Get-VMHardDiskDrive. Controllate necessità di backup e spazio reale host.
  2. Aprite Impostazioni → Controller SCSI → Disco rigido → Aggiungi. Controllate la posizione senza selezionare il disco di sistema già collegato.
  3. Con Nuovo create un HVTEST01-Data.vhdx dinamico separato da 20 GB in un nuovo percorso previsto, verificato come non occupato da quel file. Se esiste, fermatevi senza sovrascriverlo o usarlo come presunto disco nuovo. Controllate il riepilogo prima di applicare.
  4. Avviate il guest e aprite diskmgmt.msc. Confrontate inventario prima e dopo per identificare il nuovo disco da dimensione e contesto. Non presumete sempre Disco 1 e non interpretate RAW come autorizzazione a cancellare dati.
  5. Solo dopo identificazione certa inizializzate il nuovo disco come tabella delle partizioni GUID (GPT), create un volume semplice con lettera libera e formattate con NTFS per la prova. Non inizializzate altri dischi. Confermate capacità e lettera, poi create DataLab52.txt sul nuovo volume con testo ProvaHVTEST01. Salvate, chiudete e riaprite per verificare lo stesso contenuto. Conservate i file necessari prima di scollegare.

I parametri di creazione VHD distinguono dischi nuovi, fissi, dinamici e differenze. Aggiungere un disco non estende C:. Ampliare un VHDX esistente è un’altra operazione, da precedere con backup recuperabile e controllo di checkpoint e condizioni del controller; poi occorre estendere anche partizione e volume guest. Per l’estensione di base con Gestione disco, lo spazio non allocato deve essere sullo stesso disco immediatamente dopo il volume, con un file system adatto come NTFS o ReFS. Una partizione intermedia può impedire l’operazione: non eliminate una partizione di ripristino per continuare senza esame.

Non combinate riduzione, conversione e scollegamento forzato in una sola prova. Prima di rimuovere il nuovo collegamento dati conservatene i file, arrestate normalmente HVTEST01 e confermate Off. In Impostazioni rimuovete solo il collegamento SCSI a HVTEST01-Data.vhdx, confrontandolo con il percorso del disco di sistema annotato prima. Verificate che il disco di sistema resti collegato e che la VM si avvii ancora. Scollegare non elimina il VHDX: prima di un’eventuale eliminazione separata esaminate dipendenze di altre VM e catene differenze. Non riducete il disco di sistema solo per tornare alla dimensione precedente.