ENOSPC (errno 28)
errno 28
Messaggio ufficiale (come appare sullo schermo): No space left on device
Cercato anche come: No space left on device, errno 28, ENOSPC: System limit for number of file watchers reached
Che cosa significa
ENOSPC, «No space left on device» (errno 28), significa che una scrittura è fallita perché il filesystem non ha spazio. Può voler dire blocchi liberi esauriti, inode liberi esauriti oppure, in modo fuorviante, il limite di watch di inotify raggiunto (comune con i file watcher di Node.js).
Si applica a: Linux, macOS (errno BSD), WSL, Container Docker
Come risolvere ENOSPC (errno 28)
- Controlla lo spazio libero con 'df -h' e gli inode liberi con 'df -i'; uno dei due al 100% causa ENOSPC
- Trova le directory più grandi con 'sudo du -xh / --max-depth=2 | sort -h | tail -20'
- Pulisci i bersagli sicuri: vecchi log ('journalctl --vacuum-size=200M'), cache dei pacchetti ('apt clean') e dati di Docker ('docker system prune')
- Se 'df' mostra spazio ma le eliminazioni non lo liberano, un processo tiene ancora aperto un file eliminato: trovalo con 'lsof +L1' e riavvia quel processo
- Se moltissimi file minuscoli esauriscono gli inode, eliminali o archiviali (tipicamente directory di sessioni o cache)
- Per gli errori dei watcher ('System limit for number of file watchers reached'), aumenta 'fs.inotify.max_user_watches' con 'sudo sysctl fs.inotify.max_user_watches=524288' e rendilo permanente in /etc/sysctl.d/
- Ricorda che ext4 riserva per impostazione predefinita circa il 5% dei blocchi a root; gli utenti normali ottengono ENOSPC prima che 'df' arrivi al 100%
Perché succede
Le scritture richiedono sia blocchi di dati sia inode. Le cause sono dischi pieni, inode esauriti da molti file piccoli, file eliminati ma ancora aperti, limiti simili a quote e il limite di watch di inotify (che restituisce anch'esso ENOSPC).
Domande frequenti
Perché ottengo «No space left on device» se df mostra spazio libero?
Controlla gli inode con 'df -i', cerca i file eliminati ancora aperti con 'lsof +L1' e verifica se l'errore in realtà riguarda il limite di watch di inotify.
Come risolvo ENOSPC nel file watching di Node.js o VS Code?
Aumenta fs.inotify.max_user_watches tramite sysctl; è un limite dei watcher, non lo spazio su disco.
Errori correlati
Fonte: Linux kernel errno.h · soluzioni scritte e verificate dalla redazione (vedi la nostra politica editoriale)
Ultimo aggiornamento: