Windows Server 2016 segnala poco spazio libero su un volume dati (E:) nonostante i file visibili occupino solo ~400 GB? Il colpevole, quasi sempre, è la cartella System Volume Information piena di snapshot VSS (Shadow Copies) non governate. In questa guida trovi diagnosi rapida, comandi sicuri e prevenzione.
Panoramica del problema
Scenario reale: volume dati da 1,8 TB (unità E:) usato da anni come share di rete. I file visibili pesano circa 400 GB, ma Esplora risorse mostra solo 66 GB liberi. chkdsk
non evidenzia errori. Il comportamento è tipico di un consumo anomalo nella cartella protetta System Volume Information (SVI), alimentato da Volume Shadow Copy Service (VSS), spesso attivato da software di backup o dalle “Versioni precedenti” anche quando il Ripristino configurazione non è abilitato sul server.
Perché accade
VSS crea snapshot differenziali del volume: ogni modifica futura a un blocco già “fotografato” viene salvata a parte, facendo crescere lo spazio occupato in SVI. Senza un limite esplicito (shadowstorage), la crescita può saturare il disco. Poiché SVI è nascosta e protetta, strumenti standard e conteggi “da utente” non ne mostrano l’impatto a meno di usare privilegi SYSTEM.
Cause principali emerse
Categoria | Dettagli rilevati o ipotizzati | Come influisce sullo spazio |
---|---|---|
Cartella System Volume Information | Analisi con TreeSize avviato come SYSTEM (psexec -s -i ) mostra un utilizzo anomalo della cartella | Contiene copie shadow VSS che possono crescere fino a saturare il disco se non c’è un limite |
Shadow Copies attive senza gestione | Anche senza “Ripristino configurazione”, VSS può essere invocato da backup di terze parti o dalla funzione “Versioni precedenti” | Ogni snapshot conserva blocchi modificati → spazio occupato » dimensione dei file correnti |
File nascosti / diritti NTFS | File nascosti o protetti non compaiono nei conteggi se non si opera con privilegi di sistema | Visibilità parziale dei consumi, analisi fuorviante |
Altre ipotesi escluse | Paging file, deduplicazione, dimensione cluster e chkdsk non mostrano anomalie | Non responsabili nel caso specifico |
Diagnosi rapida e affidabile
Obiettivo: confermare che la maggior parte dello spazio è allocata in System Volume Information a causa di VSS.
- Mappa l’uso reale come SYSTEM
psexec -s -i cmd "C:\Program Files\TreeSize Free\TreeSizeFree.exe"
Scansiona la radiceE:\
e verifica che System Volume Information sia la voce predominante. - Interroga VSS e lo shadowstorage di E:
vssadmin list shadows /for=E: vssadmin list shadowstorage /for=E:
Annota Used Shadow Copy Storage space e Maximum Shadow Copy Storage space. Se il massimo è “UNBOUNDED”, non esiste un tetto. - Controlla anche le “Versioni precedenti” dal punto di vista utente
Tasto destro suE:\
→ Proprietà → Versioni precedenti. Se compaiono istantanee, il VSS è in uso.
Soluzioni operative consolidate
Le azioni seguenti sono le più efficaci e sicure in ambienti di produzione. Esegui i comandi in un prompt amministrativo.
Eliminare tutte le Shadow Copies del volume
Metodo rapido (consigliato e già verificato in casi analoghi):
diskshadow
delete shadows volume E:
exit
Alternativa nativa con vssadmin
:
vssadmin list shadows /for=E:
vssadmin delete shadows /for=E: /all
Disattivare o limitare la crescita di VSS
Da interfaccia grafica: Proprietà del volume E: → scheda Shadow Copies → Settings → imposta una Quota massima (consigliato ≤ 10–15% del volume) oppure Disable se il requisito è abolire le versioni precedenti su quel disco dati.
Da riga di comando (reset dello shadowstorage e quota fissa):
vssadmin delete shadowstorage /for=E: /on=E:
vssadmin add shadowstorage /for=E: /on=E: /maxsize=50GB
La prima riga rimuove l’associazione storage esistente; la seconda la ricrea con un tetto rigido (esempio: 50 GB). Adatta il valore a retention e carico modifiche.
Verificare che System Restore non sia stato forzato
Su Windows Server 2016 la scheda “Protezione sistema” non appare tipicamente per dischi dati. Se compare (configurazioni atipiche), disabilitala per il volume E:.
Controlli post‑pulizia
- Esegui
chkdsk E: /f
per risolvere eventuali riferimenti ancora allocati. - Riesegui TreeSize come SYSTEM per confermare la riduzione di SVI.
- Monitora periodicamente:
vssadmin list shadowstorage /for=E:
Piano B se il delta persiste
- Replica tutto il contenuto visibile con
robocopy
verso un disco esterno o un volume temporaneo. - Elimina/ricrea la partizione o esegui una formattazione veloce NTFS (cluster 4 KB).
- Ripristina i dati con
robocopy
e verifica spazio e ACL.
Approfondimento tecnico
Come funziona VSS e perché “gonfia” SVI
Le Shadow Copies sono copy‑on‑write: alla prima modifica di un blocco già “fotografato”, VSS salva il valore precedente nello storage VSS (in SVI). Con carichi che riscrivono spesso gli stessi file (database, log, VM, build), lo spazio delle snapshot cresce rapidamente anche se la dimensione della directory “visibile” non aumenta.
Senza limitazione (UNBOUNDED), VSS può consumare l’intero volume. Impostando una quota, Windows elimina automaticamente le snapshot più vecchie quando serve spazio per quelle nuove.
Altri fattori che possono contribuire (secondari)
- USN Journal (
fsutil usn queryjournal E:
): di solito nell’ordine di centinaia di MB o pochi GB, raramente causa principale ma utile verificarne le dimensioni. Puoi rigenerarlo:fsutil usn deletejournal /d E: fsutil usn createjournal m=134217728 a=33554432 E:
- Cestino (
$RECYCLE.BIN
): svuotalo per tutti gli utenti:rd /s /q E:\$RECYCLE.BIN
- File offline/temporanei generati da antivirus o software di replica: controlla cartelle di lavoro e log rotati.
Checklist operativa
Azione | Comando/Passo | Esito atteso |
---|---|---|
Inventario spazio come SYSTEM | psexec -s -i + TreeSize | SVI risulta la cartella più grande |
Verifica shadowstorage | vssadmin list shadowstorage /for=E: | Quota illimitata o uso elevato |
Rimozione snapshot | diskshadow → delete shadows volume E: | Spazio libero aumenta subito |
Imposizione quota | vssadmin add shadowstorage ... /maxsize=XXGB | Crescita VSS sotto controllo |
Verifica integrità | chkdsk E: /f | Nessun errore residuo |
Automazione e monitoraggio
Script DiskShadow per pulizia periodica
- Crea il file
C:\Scripts\purgevssE.dsh
con il contenuto:DELETE SHADOWS VOLUME E: EXIT
- Crea un’attività pianificata che lo esegua come SYSTEM:
schtasks /Create /TN "Purge VSS E" ^ /TR "cmd.exe /c diskshadow /s C:\Scripts\purgevssE.dsh" ^ /SC WEEKLY /D SUN /ST 23:30 /RU "SYSTEM"
Monitoraggio con PowerShell
Report sintetico su uso e quota di shadowstorage per E:
Get-CimInstance -ClassName Win32_ShadowStorage |
Where-Object { $_.Volume -like "E:" } |
Select-Object Volume,
@{n="UsedGB";e={[math]::Round($_.UsedSpace/1GB,2)}},
@{n="AllocatedGB";e={[math]::Round($_.AllocatedSpace/1GB,2)}},
@{n="MaxGB";e={[math]::Round($_.MaxSpace/1GB,2)}}
Eliminare tutte le Shadow Copies del solo volume E: via CIM:
Get-CimInstance Win32_ShadowCopy |
Where-Object { $_.VolumeName -like "E:" } |
ForEach-Object { $_ | Invoke-CimMethod -MethodName Delete }
Allerta preventiva via registro eventi
Puoi creare un’attività che invii un alert quando lo spazio libero scende sotto una soglia, o quando VSS genera eventi ricorrenti. Log utili: Applicazione & Servizi → Microsoft → Windows → VSS e ShadowCopy (Operational), oltre al classico registro Applicazione.
Domande frequenti
“Il ripristino configurazione non è attivo: perché ho ancora snapshot?”
Perché VSS è un servizio di sistema. Può essere invocato da software di backup o dalla funzione “Versioni precedenti” sulle share SMB. Anche senza System Restore, le snapshot esistono e occupano spazio.
“vssadmin list shadows
non mostra nulla, ma lo spazio è comunque occupato”
Capita quando le snapshot sono state già eliminate ma lo shadowstorage è ancora alto, oppure quando la visibilità è parziale. Controlla vssadmin list shadowstorage /for=E:
; se necessario, resetta e ricrea lo storage con quota fissa.
“Posso cancellare SVI con Esplora?”
No. È protetta da NTFS e dal sistema. Intervieni solo tramite diskshadow
/vssadmin
o comandi supportati. La cancellazione forzata può corrompere il volume o rompere il backup.
“Quale quota impostare per VSS?”
Dipende da: frequenza snapshot, volume di modifiche giornaliere (change rate) e retention desiderata. Per volumi di dati generici, un 10–15% è un buon compromesso. Per share con file grandi ma rari cambiamenti, può bastare meno; per carichi con molte riscritture, valuta più spazio o snapshot meno frequenti.
“Le snapshot influiscono sulle performance?”
Un numero elevato di snapshot e un change rate elevato aumentano l’I/O su SVI e la frammentazione logica. Limitare il numero di snapshot e fissare una quota riduce l’impatto.
Errori comuni da evitare
- Lasciare shadowstorage illimitato su volumi dati condivisi: rischio saturazione improvvisa.
- Eliminare tutte le snapshot senza coordinarsi con chi gestisce i backup: potresti perdere punti di ripristino necessari.
- Confondere lettera e GUID volume: verifica con
mountvol E: /L
prima di agire. - Usare strumenti senza privilegi SYSTEM e trarre conclusioni errate sui consumi.
Procedure dettagliate consigliate
Sequenza di ripristino spazio “senza sorprese”
- Finestra di manutenzione e snapshot/backup ad-hoc del server (se richiesto dalla policy).
- Inventario con TreeSize come SYSTEM per fotografare la situazione di partenza.
- Eliminazione snapshot con
diskshadow
ovssadmin
come sopra. - Impostazione quota con
vssadmin add shadowstorage
. - Verifica con
vssadmin list shadowstorage
e nuovo scan TreeSize. - Monitoraggio periodico (task o script) e documentazione della configurazione.
Calcolo empirico della quota VSS
Stima veloce quando non conosci il change rate:
- Se il volume contiene documenti e file condivisi: quota iniziale = 10% della capacità.
- Se ospita dataset riscritti frequentemente (ad es. build, log, esportazioni): quota iniziale = 15–20% o snapshot meno frequenti.
- Se l’obiettivo è solo “Versioni precedenti” per recuperi occasionali: 5–10% spesso è sufficiente.
Osserva per una settimana la metrica “Used Shadow Copy Storage space” e affina.
Strumenti e comandi utili
Scopo | Comando | Note |
---|---|---|
Dettaglio spazio VSS | vssadmin list shadowstorage /for=E: | Mostra usato/allocato/massimo |
Elenco snapshot | vssadmin list shadows /for=E: | Può risultare vuoto se già scadute, ma lo storage può restare elevato |
Elimina snapshot E: | diskshadow ↵ delete shadows volume E: | Metodo rapido e affidabile |
Quota shadowstorage | vssadmin add shadowstorage /for=E: /on=E: /maxsize=50GB | Tetto rigido; adatta a esigenze |
Volume GUID | mountvol E: /L | Utile per verifiche VSS basate su GUID |
Spazio logico | wmic logicaldisk where "DeviceID='E:'" get Size,FreeSpace | Confronto rapido numerico |
Integrità NTFS | chkdsk E: /f | Corregge eventuali riferimenti orfani |
Politiche e buone pratiche per evitare recidive
Azione | Frequenza | Motivo |
---|---|---|
Controllare vssadmin list shadowstorage | Mensile | Individuare crescita anomala |
Impostare una quota VSS fissa | Una tantum | Evita consumi illimitati |
Automatizzare diskshadow delete shadows volume E: | Settimanale o dopo i backup | Mantiene il volume pulito |
Documentare chi crea snapshot (backup, agent, script) | Subito | Responsabilità chiare e ripristini prevedibili |
Riepilogo essenziale
La discrepanza tra “file visibili” e “spazio libero” su Windows Server 2016 nasce quasi sempre da Volume Shadow Copy che accumula snapshot in System Volume Information. Per risolvere: elimina le copie con diskshadow
/vssadmin
, poi disabilita o limita VSS sul volume dati con una quota fissa. Esegui la diagnosi e le verifiche come SYSTEM (TreeSize), monitora lo shadowstorage e automatizza la pulizia se necessario. Le procedure qui indicate sono state applicate con successo in ambienti produttivi analoghi e riducono drasticamente il rischio di nuove saturazioni.
Appendice: esempio di sessione completa
:: 1) Diagnosi
psexec -s -i cmd
"C:\Program Files\TreeSize Free\TreeSizeFree.exe"
:: 2) Stato VSS
vssadmin list shadowstorage /for=E:
vssadmin list shadows /for=E:
:: 3) Pulizia
diskshadow
delete shadows volume E:
exit
:: 4) Quota e ri-configurazione
vssadmin delete shadowstorage /for=E: /on=E:
vssadmin add shadowstorage /for=E: /on=E: /maxsize=50GB
:: 5) Verifica & integrità
vssadmin list shadowstorage /for=E:
chkdsk E: /f
Tip: se TreeSize è installato in un percorso diverso, sostituisci la path nell’esempio. Puoi anche avviarlo come psexec -s -i powershell.exe
e poi eseguire l’applicazione dal prompt PowerShell elevato di sistema.
Nota operativa sulla sicurezza: la cancellazione delle snapshot può rimuovere punti di ripristino utilizzati da piani di backup o da utenti tramite “Versioni precedenti”. Coordinati con il team di backup e rispetta le policy di retention prima di procedere.