I 3 modi migliori per correggere l'errore "Nessuno spazio rimasto sul dispositivo" in Linux

Gli errori senza una chiara causa sono i problemi più irritanti da affrontare. E mentre Linux è solitamente specifico nei suoi messaggi di errore, questa è una delle poche volte in cui lascia cadere la palla.

Ricevere un messaggio "Nessun posto rimasto sul dispositivo" spiega molto poco, soprattutto se l'unità è tutt'altro che piena. Perché viene visualizzato questo messaggio di errore? Perché non puoi creare nuovi file nonostante disponga di spazio sufficiente sul disco? E, soprattutto, come lo risolvi?

Scopriamolo.

Il tuo disco rigido ha davvero abbastanza spazio(Hard Drive Actually Have Enough Space) ?

Prima di affrettarti a trovare una soluzione, assicurati che ci sia un problema, tanto per cominciare. Dopotutto, se lo spazio su disco è effettivamente esaurito sul sistema, non c'è bisogno di farsi prendere dal panico. Puoi semplicemente rimuovere i dati non necessari per liberare più spazio.

Esistono due comandi di sistema Linux per ottenere informazioni sullo spazio su disco: du e df. Il comando du stima l'utilizzo dello spazio su disco, mentre il comando df analizza lo spazio libero presente sul disco. Usarli insieme a sudo ti dà un rapporto accurato di quanto spazio è effettivamente disponibile sul disco.

  1. Iniziamo con il comando du. Il suo output può essere piuttosto lungo e ingombrante, quindi useremo i flag -s e -h. -s riassume i risultati, mentre -h assicura che sia leggibile dall'uomo. Quindi inserisci il comando sudo du -sh / dove / punta alla directory di base.

  1. Non preoccuparti di tutti i messaggi di autorizzazione negata: è così che esplora tutte le sottodirectory del sistema. A seconda delle dimensioni dell'unità, potrebbe essere necessario lasciarla in esecuzione per un po', poiché attraversa tutto in modo ricorsivo.

  1. Al termine della scansione, verrà prodotto un semplice elenco di directory insieme alle loro dimensioni. Ad esempio, questo è l'output del comando du applicato a una directory ordinaria.

Ora useremo df per vedere quanto spazio libero è disponibile. Il comando df è molto più semplice da usare poiché mostra solo i filesystem montati e le loro statistiche di utilizzo. Ancora una volta, useremo il flag -h per rendere leggibile l'output.

sudo df -h

L'idea è di calcolare i risultati dei comandi du e df. Qualsiasi discrepanza indica spazio su disco che non è disponibile gratuitamente nonostante non sia utilizzato da file o cartelle.

Perché Linux mostra(Does Linux Show) "Nessuno spazio rimasto(Space Left) sul dispositivo"?

Se visualizzi il messaggio di errore "Nessuno spazio residuo sul dispositivo" nonostante disponga di spazio libero sufficiente sul disco, la colpa non è dell'hardware. Capire la causa esatta dell'errore può richiedere un po' di risoluzione dei problemi.

  • File eliminato di recente: il motivo più comune per visualizzare questo errore è un file eliminato di recente. Spesso un file viene eliminato mentre un processo lo sta ancora utilizzando, mantenendo lo spazio riservato anche se il file è già scomparso.
  • Inode insufficienti: un'altra causa frequente è la mancanza di inode (inodes)a(Enough Inodes) sufficienza . Gli inode sono le pagine indice di un filesystem Unix , che contengono i metadati di ogni file in archivio. Tuttavia, gli inode non sono illimitati e gli inode si esauriscono prima che lo spazio di archiviazione possa darti l'errore "Nessuno spazio rimasto sul dispositivo".
  • Disco rigido(Hard) guasto: ovviamente c'è la possibilità che il disco rigido si stia semplicemente guastando e gran parte dello spazio libero apparente sia occupato da settori danneggiati. Poiché il sistema non riesce a scrivere alcun file in queste posizioni, genera un errore.

Correzione 1: riavviare i processi utilizzando i file eliminati(Using Deleted Files)

La causa più probabile dell'errore "Nessuno spazio rimasto sul dispositivo" è un processo che utilizza ancora un file eliminato. Per fortuna, correggere questo errore è facile. Devi solo riavviare il processo(restart the process) per liberare lo spazio di archiviazione riservato.

  1. Per trovare il processo problematico, è necessario utilizzare i comandi lsof e grep. Il comando lsof ti fornirà un elenco di tutti i file aperti utilizzati dai processi in esecuzione e grep può restringere la selezione a quelli che vengono eliminati. Quindi inserisci sudo lsof / | grep cancellato dove / è la directory di base e | una pipe per collegare l'output di lsof a grep.

  1. Ora puoi riavviare il processo interessato con il comando sudo systemctl restart service_name, dove il nome del servizio è il nome del servizio che è apparso nella ricerca.

  1. Se ci sono più processi come questo o semplicemente non vuoi preoccuparti di trovare servizi specifici, puoi semplicemente ripristinarli tutti con il comando sudo systemctl daemon-reload. Questo rigenera tutte le dipendenze, tenendo conto di eventuali modifiche nel filesystem.

Dopodiché, lo spazio di archiviazione trattenuto dal processo dovrebbe essere di nuovo disponibile, consentendoti di scrivere file senza incorrere in errori.

Correzione 2: controlla gli inode

Sebbene ogni unità abbia un gran numero di inode, è finita. E se il tuo sistema è disseminato di un numero incredibile di file, è possibile raggiungere questo limite prima di esaurire la capacità di archiviazione dell'unità. Questo è il motivo per cui è meglio avere file di grandi dimensioni piuttosto che troppi piccoli.

Puoi facilmente verificare la disponibilità degli inode usando il flag -i con il comando df. Come questo:

sudo df -i

Questo indicherà chiaramente il numero totale di inode presenti nel filesystem, insieme alla quantità attualmente in uso. Se non sono rimasti inode liberi sul sistema, questa è la fonte dell'errore "Nessuno spazio disponibile sul dispositivo".

Poiché gli inode vengono creati solo dopo la prima formattazione dell'unità, non è possibile generare più inode. Tutto quello che puoi fare è eliminare tutti i file non necessari per liberare inode per i file futuri.

Correzione 3: contrassegna i blocchi danneggiati

La corruzione dei dati(Data) è il destino inevitabile di qualsiasi disco rigido. Anche se una nuova unità non riscontrerà questo problema, i dischi rigidi più vecchi inizieranno gradualmente a "guarirsi".

Ciò significa che parti del disco rigido sono rese inutilizzabili, anche se il filesystem le considera ancora funzionali. Questi blocchi danneggiati gonfiano falsamente lo spazio libero apparente sull'unità, quando in realtà non è possibile scrivere file su di essi. Ciò porta a un errore "Nessuno spazio rimasto sul dispositivo", poiché il sistema operativo tenta e non riesce a memorizzare i dati in queste posizioni.

Non esiste un vero modo per risolvere questo problema, poiché i settori danneggiati sono il risultato dell'usura fisica di un disco rigido. L'unica cosa che puoi fare è contrassegnare i settori danneggiati in modo che non siano più referenziati dal file system.

Per fare ciò è necessario eseguire l'avvio da un Live CD , poiché non è possibile eseguire un controllo del file system(File System Check) all'interno di un'unità in esecuzione. Una volta che lo fai, usa semplicemente il seguente comando:

sudo fsck -vcck /dev/sda

Questo sostituisce /dev/sda con il percorso dell'unità che si desidera riparare. Questo rileverà automaticamente tutti i blocchi danneggiati sull'unità e li contrassegnerà come inutilizzabili. Tuttavia, non ti darà alcuna capacità di archiviazione aggiuntiva, quindi preparati a ripulire alcuni file inutili per liberare spazio sull'unità.

Qual è il modo migliore per correggere l'errore "Nessuno spazio lasciato sul dispositivo"?

Il solito motivo per cui viene visualizzato un errore "Nessuno spazio disponibile sul dispositivo" su Ubuntu o su qualsiasi altra distribuzione Linux è un file eliminato ancora utilizzato da un processo in esecuzione. Ciò riserva la memoria occupata dal file, impedendo ad altre operazioni di scrivere dati in quello spazio.

Anche la risoluzione di questo problema è la più semplice, poiché tutto ciò che devi fare è riavviare il processo in questione. Le altre cause dell'errore, tuttavia, non sono così facili da risolvere.

Indipendentemente dal fatto che l'unità sia afflitta da blocchi di dati danneggiati o abbia esaurito gli inode, non esiste un modo diretto per risolvere questi problemi. È necessario eliminare i file esistenti per fare spazio alla scrittura di nuovi dati.



About the author

Sono un ingegnere software esperto, con oltre 10 anni di esperienza nello sviluppo e nella manutenzione di applicazioni Microsoft Office. Ho una forte passione per aiutare gli altri a raggiungere i loro obiettivi, sia attraverso il mio lavoro come ingegnere del software che attraverso le mie capacità di parlare in pubblico e di networking. Sono anche estremamente esperto in hardware e driver della tastiera, avendo sviluppato e testato molti di loro io stesso.



Related posts