ENOSPC (errno 28)

errno 28

LINUX

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

Terminale Linux che esegue strace con la chiamata di sistema non riuscita e l'errno evidenziati
errno di Linux: individua la chiamata di sistema che fallisce prima di modificare qualsiasi cosa.

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)

  1. Controlla lo spazio libero con 'df -h' e gli inode liberi con 'df -i'; uno dei due al 100% causa ENOSPC
  2. Trova le directory più grandi con 'sudo du -xh / --max-depth=2 | sort -h | tail -20'
  3. Pulisci i bersagli sicuri: vecchi log ('journalctl --vacuum-size=200M'), cache dei pacchetti ('apt clean') e dati di Docker ('docker system prune')
  4. 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
  5. Se moltissimi file minuscoli esauriscono gli inode, eliminali o archiviali (tipicamente directory di sessioni o cache)
  6. 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/
  7. 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: