Linux - Ajuda, estou ficando sem inodes!

16

Eu tenho um sistema de arquivos que possui muitos arquivos pequenos. Atualmente, cerca de 80% dos inodes são usados ​​(verifiquei com df -i), no entanto, apenas 60% do espaço em disco é usado. Como posso 'aumentar' o número de inodes? Se fosse apenas espaço em disco, eu sei que poderia aumentar o tamanho do disco (esse disco está no LVM). Se eu aumentar o tamanho do disco, isso me fará ter mais inodes?

Estou disposto a aumentar o sistema de arquivos em que este disco está, se isso ajudar.

Rory
fonte

Respostas:

14

homem mke2fs

Você verá um -N para o número de inodes

Assim, você pode especificá-lo quando formatar uma nova partição. Não é tão útil agora, hein?

O tune2fs, que ajusta o sistema de arquivos, parece não ter como adicionar mais inodes.

Mas talvez ext3 ou 4 faça isso, e alguém mais sabe ....?

Então agora você tem uma opção: fazer backup, reformatar partição, restaurar.

Paulo
fonte
11
Sim, é bom, mas não porque é reiserfs, mas porque é alocações inode suporte dinâmico (suportados por cada decentemente novo sistema de arquivos)
11
O Reiser é excelente para toneladas de pequenos arquivos. Eu iria com isso.
Xorlev
No entanto, gostaria de garantir que você tenha backups ao usar o Reiser. Eu (eu) e outros perdemos dados devido ao reiserFS nos anos anteriores. Eu não confio mais nisso desde então.
Anony-Mousse -Reinstala Monica
ext3 parece não ter como
kagali-san 28/10
15

Para responder à pergunta original, mesmo que seja provavelmente tarde para o questionador - sim, aumentar EXT2 / 3 no LVM2 também aumentará o limite de inodes.

Só tinha uma partição de tamanho 1G com limite de 65k inodes. Depois de

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

... meu limite de inodes agora é de 128k.

Aleš Krajník
fonte
11
Uau, eu estava quase desesperada, mas encontrei sua resposta e decidi tentar, e funcionou. Definitivamente, essa deve ser a resposta aceita! Obras de LVM, bem como para máquinas virtuais :)
vadipp
12

Se você sabia que arquivos pequenos ocupam seu espaço em disco, deveria ter usado um FS com alocação dinâmica de inode, como ReiserFS ou qualquer novo FS moderno (XFS, JFS) em vez de EXT2 / 3/4 (que eu assumo que você esteja usando , você não disse isso).

Uma migração do sistema de arquivos é provavelmente uma boa escolha na sua situação.

Comunidade
fonte
11
Se você sabia que arquivos pequenos ocupam espaço em disco, você deve ter feito alguns ajustes . Cada sistema de arquivos tem prós e contras.
Franklin Piat 28/03
3

Como um paliativo, monte um novo sistema de arquivos e cp / rm / ln-s alguns de sua hierarquia fs lá. Agora você tem alguns inodes de reposição! Você não pode gravar arquivos mv entre os dois fses; portanto, tenha cuidado com as coisas que precisam fazer isso, mas para muitos aplicativos isso pode ser transparente.

Em seguida, faça um novo fs, de acordo com o conselho de Paulo, e migre para isso.

Charles Stewart
fonte
11
É claro que você pode mv arquivos entre os dois sistemas de arquivos - um mv é efetivamente o açúcar semântico para cp + rm. Você não pode conectar-se entre dois sistemas de arquivos. Você quis dizer outra coisa?
Daniel Danielson
@ Daniel: Refiro-me à chamada de sistema rename (), e acho que é uma prática desleixada usar mv como açúcar para cp / rm, por causa do problema com a semântica em torno dos links simbólicos. Eu devo editar esta resposta - há alguns lugares em que não está muito claro.
Charles Stewart
2

O Ext4 sofre o mesmo problema: se você criar uma partição pequena e tiver vários arquivos pequenos, os inodes ficarão sem inodes, e se você tiver flex_bgrecursos que não poderá usar tune2fspara aumentar os inodes.

Pessoalmente, eu usaria o ext4 sobre qualquer versão do rieserfs, basta fazer o seguinte ao formatar:

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

A formatação dessa maneira fornecerá 33160 inodes em uma partição de inicialização de 512M.

Eu digo isso como alguém que usou o reiserfs por anos, o suporte ao kernel não é tão bom quanto o ext *, e o sistema de arquivos fica fragmentado ao longo do tempo e fica lento.

Suicida
fonte
-1

Escolha resiserfs ou qualquer outro fs sem limitação de inode. Especialmente em relação aos arquivos de log, provavelmente você pode agrupar toneladas de pequenos arquivos não utilizados em um arquivo tar maior para liberar uma quantidade considerável de inodes =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
adrolmar
fonte