Linux - Aiuto, sto esaurendo gli inode!


16

Ho un filesystem che ha molti piccoli file. Attualmente viene utilizzato circa l'80% degli inode (ho verificato con df -i), tuttavia viene utilizzato solo il 60% dello spazio su disco. Come posso "aumentare" il numero di inode? Se fosse solo spazio su disco, so che potrei solo aumentare le dimensioni del disco (questo disco è su LVM). Se aumento la dimensione del disco, questo mi farà avere più inode?

Sono disposto a far crescere il filesystem su cui si trova questo disco, se questo sarebbe d'aiuto.

Risposte:


14

man mke2fs

Vedrai un -N per il numero di inode

Quindi puoi specificarlo quando formatti una nuova partizione. Non molto utile adesso, eh?

tune2fs, che sintonizza il filesystem, non sembra avere un modo per aggiungere più inode.

Ma forse ext3 o 4 fa questo, e qualcun altro lo sa ....?

Quindi ora hai un'opzione: backup, riformatta la partizione, ripristina.


1
sì, è buono, ma non perché è reiserfs, ma perché supporta allocazioni di inode dinamiche (supportate da ogni filesystem decentemente nuovo)

1
Reiser è eccellente per tonnellate di piccoli file di piccole dimensioni. Vorrei andare con quello.
Xorlev,

Vorrei comunque assicurarmi di avere dei backup quando si utilizza Reiser. Io (me stesso) e altri abbiamo perso i dati a causa di reiserFS negli anni precedenti. Non mi fido più da allora.
Anony-Mousse - Restituisci Monica il

ext3 sembra non avere modo di farlo
kagali-san,

15

Per rispondere alla domanda originale, anche se probabilmente è in ritardo per l'interrogatore - sì, aumentare EXT2 / 3 su LVM2 aumenterà anche il limite di inode.

Ho appena avuto una partizione di dimensioni 1G con limite di inode 65k. Dopo

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... il mio limite di inode ora è 128k.


1
Wow, ero quasi disperato, ma ho trovato la tua risposta e ho deciso di provare, e ha funzionato. Questa dovrebbe essere sicuramente la risposta accettata! Funziona per LVM e per macchine virtuali :)
vadipp,

12

Se sapessi che piccoli file consumeranno il tuo spazio su disco, avresti dovuto usare un FS con allocazione dinamica degli inode, come ReiserFS o qualsiasi nuovo FS moderno (XFS, JFS) invece di EXT2 / 3/4 (che presumo tu stia usando , non l'hai detto).

Una migrazione di filesystem è probabilmente una buona scelta nella tua situazione.


1
Se sapevi che piccoli file consumeranno il tuo spazio su disco, avresti dovuto fare qualche messa a punto . Ogni filesystem ha pro e contro.
Franklin Piat,

3

Come stopgap, monta un nuovo filesystem e cp / rm / ln-s una parte della tua gerarchia fs lì. Ora hai alcuni inode di riserva! Non puoi mv file tra le due azioni, quindi fai attenzione alle cose che devono farlo, ma per molte app questo può essere trasparente.

Quindi crea un nuovo fs, su consiglio di Paul, e migra su quello.


1
Ovviamente puoi mv file tra i due filesystem - un mv è effettivamente zucchero semantico per cp + rm. Non è possibile il collegamento fisico tra due filesystem. Intendevi qualcos'altro?
Daniel Lawson,

@Daniel: intendo la chiamata di sistema rename () e penso che sia pratica sciatta usare mv come zucchero per cp / rm, a causa del problema con la semantica attorno ai symlink. Dovrei modificare questa risposta - ci sono alcuni posti in cui non è magnificamente chiaro.
Charles Stewart,

2

Ext4 soffre dello stesso problema, se crei una piccola partizione e hai un sacco di piccoli file, finirai gli inode e se hai delle flex_bgfunzionalità che non puoi usare tune2fsper aumentare gli inode.

Personalmente andrei con ext4 su qualsiasi versione di rieserfs, basta fare quanto segue durante la formattazione:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

La formattazione in questo modo ti darà 33160 inode su una partizione di avvio 512M.

Lo dico come qualcuno che ha usato reiserfs per anni, il supporto del kernel non è buono come ext * e il filesystem si frammenta nel tempo e rallenta.


-1

Scegli resiserfs o qualsiasi altro fs senza limitazione di inode. Soprattutto per quanto riguarda i file di registro, probabilmente potresti raggruppare alcune tonnellate di piccoli file inutilizzati in un file tar più grande per liberare una buona quantità di inode =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.