GNU/Linux >> Linux Esercitazione >  >> Linux

Memoria esaurita eseguendo fsck su filesystem di grandi dimensioni

Soluzione 1:

Un kernel a 64 bit e grandi quantità di RAM consentiranno a fsck di finire bene e velocemente. In alternativa, ora c'è un'opzione in e2fsck che gli dirà di memorizzare tutti i suoi risultati intermedi in una directory invece che nella RAM, il che aiuta immensamente. Crea /etc/e2fsck.conf con i seguenti contenuti:

[scratch_files]
directory = /var/cache/e2fsck

(E, ovviamente, assicurati che la directory esista e si trovi su una partizione con un buon numero di GB di spazio libero). e2fsck eseguirà SLLOOOOWWWWWWW, ma almeno verrà completato.

Ovviamente, questo non funzionerà con il root FS, ma se hai lo swap allora hai comunque superato il montaggio del root FS.

Soluzione 2:

Ho finito per provare ciò che suggeriva womble; ecco alcuni dettagli in più che potrebbero essere utili se, come me, non hai mai visto questa nuova funzionalità in e2fsck prima.

L'opzione di configurazione "scratch_files" per e2fsck è diventata disponibile nel periodo della versione 1.40.x. (Nel nostro caso, abbiamo dovuto aggiornare all'ultima distribuzione Debian per ottenere questa funzionalità.)

Oltre all'opzione "directory =/var/cache/e2fsk" che è stata suggerita, ci sono alcune ulteriori opzioni di configurazione per mettere a punto come viene utilizzata l'archiviazione dei file scratch. Ho usato "dirinfo =false", poiché il filesystem aveva un numero elevato di file, ma non un numero così elevato di directory. Se la situazione fosse invertita, l'opzione "icount" sarebbe appropriata. Queste opzioni erano tutte documentate nella pagina man di e2fsck.conf.

A proposito, Ted T'so ha scritto di queste opzioni in questo thread.

Ho scoperto che e2fsck funzionava molto lentamente, molto più di quanto previsto da Ted. Funzionava al 99,9% di utilizzo della CPU per la maggior parte del tempo (su un vecchio processore estremamente lento), il che suggerisce che l'archiviazione di queste strutture di dati su disco anziché sulla memoria non era la causa principale del rallentamento. Potrebbe essere che qualcos'altro su ciò che è stato memorizzato nel filesystem abbia reso e2fsck particolarmente lento. Alla fine, per ora ho abbandonato il controllo del filesystem; il filesystem doveva essere controllato, ma non presentava errori (per quanto ne so), quindi mi organizzerò per controllarlo in un momento più conveniente quando possiamo permetterci un'interruzione di una settimana.


Linux
  1. L'esecuzione di 'gcc' sul file sorgente C++ su Linux fornisce cc1plus:out of memory allocating ... messaggio di errore

  2. È possibile allocare grandi quantità di memoria virtuale in Linux?

  3. Problemi con Steam Terraria in esecuzione su Linux

  4. Come faccio a sapere quale versione di Linux sto utilizzando?

  5. Qual è la differenza tra fsck ed e2fsck?

Quale versione di Linux sto eseguendo? Ecco come scoprirlo

Come scoprire la versione del kernel Linux in esecuzione sul tuo PC

Come trovare i 10 principali processi in esecuzione in base all'utilizzo di memoria e CPU

Come trovare i migliori processi in esecuzione in base all'utilizzo della memoria

Come trovare i migliori processi in esecuzione in base all'utilizzo di memoria e CPU

INCONSISTENZA INASPETTATA; ESEGUIRE fsck MANUALMENTE