Se l’installazione di un aggiornamento cumulativo di Windows Server fallisce con l’errore 0x80070070 (spazio su disco insufficiente) e restano circa 12 GB liberi su C:, la causa è quasi sempre la carenza di spazio. La soglia consigliata è mantenere almeno 20 GB liberi prima di applicare le patch.
Scenario e sintomi
Un amministratore tenta di distribuire le patch mensili tramite Software Center o Windows Update e riceve l’errore 0x80070070. Il volume di sistema (generalmente C:) mostra ancora qualche gigabyte libero, ma l’aggiornamento non procede o si interrompe in fase di download, estrazione o riavvio.
L’errore è la traduzione di ERRORDISKFULL: Windows non dispone dello spazio necessario per completare tutte le operazioni che un aggiornamento cumulativo comporta.
Quanto spazio serve davvero
Per gli aggiornamenti cumulativi di Windows Server è una best practice in ambito Microsoft tenere almeno 20 GB liberi su C: prima di iniziare. Non basta considerare la dimensione del pacchetto; durante l’aggiornamento entrano in gioco più fattori che fanno crescere il fabbisogno effettivo.
Voce | Cosa contiene | Ordine di grandezza | Note operative |
---|---|---|---|
Pacchetto di aggiornamento | File .cab/.msu scaricati | Centinaia di MB fino a qualche GB | Varia per edizione, lingua, ruolo server |
Estrazione temporanea | File decompressi per applicazione patch | Più GB | Cartelle temporanee e cache di Windows Update |
Staging in component store | WinSxS per orchestrazione CBS | Più GB | Gestito da TrustedInstaller |
Copia per eventuale rollback | Versioni precedenti dei componenti | Fino a vari GB | Dipende da policy e stato del server |
File di paging | Aumento temporaneo imposto dal sistema | Da 1 a 8 GB o più | Spesso system managed |
Registri e log | CBS.log, WindowsUpdate.log, log di IIS | Da centinaia di MB a più GB | Picchi durante fasi di installazione |
Margine di sicurezza | Buffer per stabilità | Almeno 2–5 GB | Evita stop per saturazione improvvisa |
Conclusione pratica: con soli 12 GB liberi l’installazione può fallire. Portare lo spazio libero a 20 GB o più riduce nettamente i rischi e favorisce eventuali rollback.
Diagnosi rapida
- Verificare lo spazio su C: e sui volumi coinvolti in temp e paging.
- Controllare la dimensione della cartella
%SystemRoot%\SoftwareDistribution
e del component store%SystemRoot%\WinSxS
. - Analizzare il component store per capire se è pulibile.
fsutil volume diskfree C:
dism /online /Cleanup-Image /AnalyzeComponentStore
Se il component store risulta “recuperabile”, procedere con la pulizia. In caso contrario, passare alle altre azioni di recupero spazio.
Azioni consigliate per liberare spazio
Pulizia del component store
Questa operazione rimuove versioni obsolete dei componenti e riduce la dimensione di WinSxS. È l’intervento più efficace e sicuro nella maggior parte dei casi.
dism /online /Cleanup-Image /StartComponentCleanup /ResetBase
Attenzione: il parametro /ResetBase
rende permanenti gli aggiornamenti attuali, impedendo di disinstallarli singolarmente. È consigliabile eseguirlo in finestre di manutenzione programmate e sempre dopo un backup o snapshot coerente della VM.
Svuotamento della cache di Windows Update
La cartella SoftwareDistribution\Download
può occupare più gigabyte. Si può ricreare in sicurezza.
net stop wuauserv
net stop bits
rd /s /q %SystemRoot%\SoftwareDistribution\Download
net start bits
net start wuauserv
In alternativa, spostarsi via Esplora file e cancellare solo la sottocartella Download
. Evitare di rimuovere DataStore
a meno di necessità di reset completo.
Eliminazione di file temporanei
%SystemRoot%\Temp
%TEMP%
dell’account corrente e degli account di servizio principali- Cestino dell’amministratore
- Dump di memoria in
C:\Windows\MEMORY.DMP
e mini-dump inC:\Windows\Minidump
se non più utili - Log di IIS in
C:\inetpub\logs\LogFiles
(con politiche di retention) - File
CbsPersist_*.log
/.cab
datati inC:\Windows\Logs\CBS
Esempio PowerShell per rimuovere log e file temporanei più vecchi di trenta giorni:
# Esegui in sessione elevata
$paths = @(
"$env:SystemRoot\Temp",
"$env:SystemRoot\SoftwareDistribution\Download",
"C:\Windows\Logs\CBS",
"C:\inetpub\logs\LogFiles"
)
$limit = (Get-Date).AddDays(-30)
foreach ($p in $paths) {
if (Test-Path $p) {
Get-ChildItem -Path $p -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { -not $.PSIsContainer -and $.LastWriteTime -lt $limit } |
Remove-Item -Force -ErrorAction SilentlyContinue
}
}
Facoltativo: elimina MEMORY.DMP se presente ed inutile
$mem = "C:\Windows\MEMORY.DMP"
if (Test-Path $mem) { Remove-Item $mem -Force }
Utilizzo dell’utilità di pulizia
Sui server con interfaccia grafica è possibile usare Pulizia disco (cleanmgr.exe
) e selezionare Pulizia file di sistema per includere aggiornamenti di Windows. Su edizioni Server Core l’opzione non è disponibile; utilizzare DISM e gli script di pulizia.
Su versioni in cui l’utility non è installata, è possibile aggiungerla tramite la funzionalità grafica, qualora supportata dall’edizione in uso.
Ottimizzazione del file di paging
Se è presente un disco dati, spostare o ridimensionare il pagefile può liberare rapidamente spazio su C:. L’operazione richiede riavvio.
- Aprire Proprietà di sistema → Avanzate → Prestazioni → Avanzate → Memoria virtuale.
- Disabilitare la gestione automatica, impostare
C:
su Nessun file di paging, creare il nuovo file suD:
con dimensione fissa. - Riavviare il server.
Esempio via riga di comando (da usare con cautela):
wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
wmic pagefileset where name="C:\\pagefile.sys" delete
wmic pagefileset create name="D:\\pagefile.sys"
wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=4096,MaximumSize=8192
Altre aree da verificare
- Cartelle di spool di stampa e cache applicative (ad esempio antivirus, strumenti di backup, agenti di monitoraggio).
- Temp di account di servizio (SQL Server, IIS, agenti di distribuzione).
- Repository locali di tool di deploy che duplicano i pacchetti sulle unità di sistema.
Quando la pulizia non basta
Se, dopo le operazioni sopra, lo spazio libero resta sotto la soglia consigliata, è preferibile espandere la partizione di sistema invece di insistere con pulizie aggressive.
Espansione su macchine virtuali
- Hyper‑V: espandere il disco VHDX dal manager dell’hypervisor, poi aumentare la partizione in Windows con Gestione disco o
diskpart
. - VMware: estendere il VMDK da vSphere/Workstation e completare l’estensione in Windows.
Esempio diskpart
per estendere la partizione di sistema se è presente spazio non allocato contiguo:
diskpart
select volume C
extend
exit
Buone pratiche: snapshot coerente o backup prima di operare su dischi; pianificare una finestra di manutenzione; su cluster, sospendere e drenare i ruoli del nodo prima delle operazioni.
Prevenzione e igiene operativa
- Mantenere in modo permanente almeno 20 GB liberi su C:; mirare a 30–40 GB su server patchati frequentemente o con ruoli “verbosi” (IIS, Exchange, SQL con molti log).
- Pianificare la dimensione iniziale del volume di sistema in base al profilo del ruolo: valori tipici efficaci vanno da 100 a 150 GB per installazioni con interfaccia grafica.
- Schedulare un component cleanup periodico (ad esempio dopo ogni Patch Tuesday).
- Impostare criteri di retention dei log applicativi e di IIS per evitare crescita incontrollata.
- Monitorare lo spazio libero con alert proattivi (soglie a 25 GB e 15 GB, per esempio) e intervenire prima della saturazione.
- Valutare, ove disponibile, l’uso di funzionalità di storage riservato per gli aggiornamenti, che mitigano i problemi di spazio durante il servicing.
Procedura consigliata passo per passo
- Controllare lo spazio su C: e analizzare il component store.
- Eseguire DISM con
/StartComponentCleanup
ed eventualmente/ResetBase
. - Svuotare la cache di Windows Update e i file temporanei.
- Ridurre o spostare il pagefile su un disco secondario se presente.
- Riprovare l’installazione dell’aggiornamento cumulativo.
- Se lo spazio resta insufficiente, estendere la partizione o il disco virtuale.
Domande frequenti
Il componente WinSxS è enorme, posso cancellarlo a mano
No. Eliminazioni manuali in WinSxS
possono danneggiare il sistema. Utilizzare soltanto DISM e le opzioni di pulizia supportate.
Il parametro ResetBase è obbligatorio
No, ma spesso è la via più efficace per recuperare spazio su sistemi patchati da tempo. Considerare che impedirà la disinstallazione puntuale degli aggiornamenti installati prima della pulizia.
Quanta pulizia devo aspettarmi
Dipende dallo storico del server. Su sistemi datati o con molte patch cumulative, DISM può recuperare diversi gigabyte. La cache di Windows Update può aggiungere altri gigabyte di recupero.
Perché l’aggiornamento fallisce anche se il pacchetto è solo pochi centinaia di megabyte
Perché il processo richiede estrazione, staging, rollback, log e talvolta un pagefile più grande. La dimensione del pacchetto non riflette il fabbisogno reale durante l’installazione.
Esempi utili di controllo e automazione
Script minimale per verificare rapidamente lo spazio libero e segnalare se si è sotto soglia:
$thresholdGB = 20
$drive = Get-PSDrive -Name C
$freeGB = [math]::Round($drive.Free / 1GB, 2)
if ($freeGB -lt $thresholdGB) {
Write-Host "Spazio insufficiente su C:: $freeGB GB (minimo consigliato $thresholdGB GB)"
exit 1
} else {
Write-Host "Spazio adeguato su C:: $freeGB GB"
exit 0
}
Comando per stimare l’impatto della pulizia del component store prima di eseguirla:
dism /online /Cleanup-Image /AnalyzeComponentStore
Checklist rapida
- Backup o snapshot coerente della VM.
- Spazio libero target ≥ 20 GB su C: prima della patch.
- DISM StartComponentCleanup eseguito con esito positivo.
- Cache di Windows Update svuotata.
- File temporanei e log datati rimossi o archiviati.
- Pagefile valutato e, se possibile, spostato su disco secondario.
- Estensione della partizione se necessario.
- Verifica finale e applicazione dell’aggiornamento cumulativo.
Conclusioni
L’errore 0x80070070 in fase di update indica che lo spazio su disco non basta a sostenere l’intero ciclo di servicing di Windows. Sebbene 12 GB liberi possano sembrare adeguati, i passaggi di download, estrazione, staging, backup per rollback e crescita del pagefile impongono più margine. Adottare la soglia operativa di almeno 20 GB liberi, unita a una routine di pulizia e monitoraggio, rende gli aggiornamenti cumulativi affidabili e ripetibili, riducendo rischi e tempi di fermo.
Risposta in breve
- Conferma del problema: l’errore 0x80070070 indica spazio insufficiente.
- Soglia consigliata: mantenere ≥ 20 GB liberi su C: prima della patch.
- Azioni chiave: DISM per il component store, svuotare
SoftwareDistribution\Download
, pulire temporanei e log, valutare pagefile, espandere la partizione se serve.
Suggerimento finale: programmare la pulizia post‑patch e controlli automatici sullo spazio per non tornare al punto di partenza alla successiva ondata di aggiornamenti.
Con queste misure, l’installazione degli aggiornamenti cumulativi di Windows Server diventa prevedibile e stabile anche in ambienti con volumi di sistema sottodimensionati.