I 3 modi principali per correggere l'errore "Spazio esaurito sul dispositivo" in Linux


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

Il messaggio "Errore Spazio vuoto sul dispositivo" non spiega molto, soprattutto se l'unità è lungi dall'essere piena. Perché viene visualizzato questo messaggio di errore? Perché non riesci a creare nuovi file nonostante disponga di spazio sufficiente sul disco? E, soprattutto, come risolverlo?

Scopriamolo.

Il tuo disco rigido ha effettivamente abbastanza spazio?

Prima di affrettarti a trovare una soluzione, assicurati innanzitutto che ci sia un problema. Dopotutto, se lo spazio su disco è effettivamente esaurito nel tuo 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. Usandoli insieme a sudo ottieni un rapporto accurato di quanto spazio è effettivamente disponibile sul disco.

  1. Iniziamo con il comando du. Il suo output può essere piuttosto lungo e complicato da leggere, quindi utilizzeremo i flag -s e -h. -s riassume i risultati, mentre -h garantisce che siano leggibili 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 funzione per un po', poiché esegue tutto in modo ricorsivo.
      1. Quando du termina la scansione, verrà generato un semplice elenco di directory insieme alle loro dimensioni. Ad esempio, questo è l'output del comando du applicato a una directory ordinaria.
      2. Ora utilizzeremo df per vedere quanto spazio libero è disponibile. Il comando df è molto più semplice da usare poiché mostra solo i filesystem montati e le relative statistiche di utilizzo. Ancora una volta, utilizzeremo il flag -h per rendere l'output leggibile.

        sudo df -h .

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

        Perché Linux mostra "Spazio rimasto sul dispositivo"?

        Se visualizzi il messaggio di errore "Spazio insufficiente 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 tempo per la risoluzione dei problemi.

        • File eliminato di recente: il motivo più comune per cui viene visualizzato 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 è non averne abbastanza inode. Gli inode sono le pagine indice di un filesystem Unix, che contengono i metadati di ogni file archiviato. Tuttavia, gli inode non sono illimitati e l'esaurimento degli inode prima dello spazio di archiviazione può generare l'errore "Spazio esaurito sul dispositivo".
        • Disco rigido guasto: ovviamente esiste 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

          La causa più probabile dell'errore "Spazio esaurito sul dispositivo" è un processo che utilizza ancora un file eliminato. Per fortuna, correggere questo errore è facile. Devi solo riavviare il processo 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 eliminatodove / è 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.
            2. .
              1. Se sono presenti 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.
              2. Dopodiché lo spazio di archiviazione occupato dal processo dovrebbe essere nuovamente disponibile, consentendoti di scrivere file senza incorrere in errori.

                Correzione 2: controllare gli inode

                Sebbene ogni unità abbia un numero elevato di inode, è finita. E se il tuo sistema è pieno di un numero incredibile di file, è possibile raggiungere questo limite prima di esaurire la capacità di archiviazione dell'unità. Ecco perché è meglio avere file di grandi dimensioni piuttosto che troppi piccoli.

                Puoi facilmente verificare la disponibilità degli inode utilizzando il flag -i con il comando df. In questo modo:

                sudo df -i

                Ciò indicherà chiaramente il numero totale di inode presenti nel filesystem, insieme alla quantità attualmente in uso. Se non sono rimasti inode liberi sul tuo sistema, questa è la fonte dell'errore "Spazio esaurito sul dispositivo".

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

                Correzione 3: contrassegnare i blocchi danneggiati

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

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

                Non esiste un modo reale 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 vengano più referenziati dal file system..

                Per fare ciò è necessario eseguire l'avvio da CD dal vivo, poiché non è possibile eseguire un controllo del file system all'interno di un'unità in esecuzione. Una volta fatto ciò, usa semplicemente il seguente comando:

                sudo fsck -vcck /dev/sda

                Questo sostituisce /dev/sda con il percorso dell'unità che desideri riparare. Ciò rileverà automaticamente tutti i blocchi danneggiati sull'unità e li contrassegnerà come inutilizzabili. Tuttavia, non ti offrirà 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 "Spazio esaurito sul dispositivo"?

                Il motivo abituale per cui viene visualizzato l'errore "Spazio esaurito sul dispositivo" su Ubuntu o su qualsiasi altra distribuzione Linux è che un file eliminato è ancora utilizzato da un processo in esecuzione. Ciò riserva lo spazio di archiviazione occupato dal file, impedendo ad altre operazioni di scrivere dati in quello spazio.

                Risolvere questo problema è anche il 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.

                Se la tua unità è afflitta da blocchi di dati errati o ha 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.

                .

                Post correlati:


                30.08.2022