Eu tive um problema (novo para mim) na semana passada. Eu tenho um sistema de arquivos ext4 (Fedora 15). O aplicativo que é executado no servidor parou de repente. Não consegui encontrar o problema à primeira vista.
df
mostrou 50% de espaço disponível. Depois de pesquisar por cerca de uma hora, vi um post no fórum onde o cara usava df -i
. A opção procura o uso de inodes. O sistema estava sem inodes, um problema simples que eu não percebi. A partição tinha apenas 3,2 milhões de inodes.
Agora, minhas perguntas são: Posso fazer com que o sistema tenha mais inodes? Deve / pode ser definido ao formatar o disco? Com os inodes de 3,2 milhões, quantos arquivos eu poderia ter?
Respostas:
Parece que você tem muito mais arquivos do que a expectativa normal.
Não sei se existe uma solução para alterar dinamicamente o tamanho da tabela de inodes. Receio que você precise fazer backup de seus dados, criar um novo sistema de arquivos e restaurar seus dados.
Para criar um novo sistema de arquivos com uma tabela de inodes tão grande, você precisa usar a opção '-N' do mke2fs (8).
Eu recomendo usar a opção '-n' primeiro (que não cria o fs, mas exibe as informações úteis) para que você possa obter o número estimado de inodes. Então, se precisar, use '-N' para criar seu sistema de arquivos com um número de inode específico.
fonte
mke2fs -i
para especificar o número de inodes. Sua documentação indica que "não é possível expandir o número de inodes em um sistema de arquivos após a criação".-i
opções especificam o tamanho do inode, e não quantos existem. A-N
opção define o número de inodes.Como outra solução alternativa, eu poderia sugerir considerar compactar enormes coleções de arquivos em um
tar
arquivo compactado (!) E depois usáarchivemount
-lo para montá-lo como um sistema de arquivos. Um arquivo tar é melhor para compartilhar do que uma imagem do sistema de arquivos e fornece desempenho semelhante ao fazer backup em uma nuvem ou outro armazenamento.Se a coleção deve ser somente leitura,
squashfs
pode ser uma opção, mas requer certas opções ativadas no kernel, e axz
compactação está disponível para tar, com o mesmo desempenho.fonte
Com 3,2 milhões de inodes, você pode ter 3,2 milhões de arquivos e diretórios no total (mas vários hardlinks para um arquivo usam apenas um inode).
Sim, pode ser definido ao criar um sistema de arquivos na partição. As opções
-T usage-type
,-N number-of-inodes
ou-i bytes-per-inode
podem definir o número de inodes. Eu geralmente uso-i
, depois de comparar a saída dedu -s
efind | wc -l
para uma coleção semelhante de arquivos e permitir alguma folga.Não, não pode ser alterado no local em um sistema de arquivos existente. Contudo:
resize2fs
para expandir o sistema de arquivos. Isso adiciona mais inodes em proporção ao espaço adicionado, aproximadamente. Se você deseja evitar a falta de inodes antes do espaço, supondo que os arquivos futuros tenham em média o mesmo tamanho, defina uma porcentagem de bloco reservada alta o suficiente usandotune2fs -m
.fonte
Eu tenho soluções alternativas para esta situação. Digamos que você tenha 1000 inodes em uma partição de 10G. Mas devido ao limite de inodes, você não deve usar todo o espaço da partição . Mas nessas soluções, você poderá usar o espaço restante da partição sem formatá- la.
para montagem permanente
fonte
$
) para distinguir claramente entre comandos e saída (se eles fossem apenas comando, normalmente o prompt é deixado de fora). Eu também mudei o GRITO na ênfase da fase ousada, que é o que eu acho que você pretendia. Você pode reverter as alterações se eu deturpado as coisasRecentemente, tive esse problema ao usar o apt ou o aptitude upgrade.
Comando emitido:
A maioria dos arquivos revelados estava em subpastas para várias versões do kernel dentro de:
Removidas as subpastas e o problema do inode foi corrigido.
fonte
du
comando. O uso é para a raiz do sistema de arquivos no exemplo acima, observando apenas o espaço. A saída é canalizada para classificar para mostrar quais diretórios continham mais arquivos. Não há uma contagem feita no exemplo acima para arquivos, a parte 'quantos arquivos' da sua pergunta.du
Porém, os fontes de kernel foram os culpados mostrados na saída; por exemplo, muitos arquivos pequenos, subpastas de compilações anteriores, exatamente o que é ideal para remoção, a fim de liberar inodes. Ainda resta uma revisão manual e humana dadu
produção, que/usr/src/linux-headers
ficou óbvia.experimente
du -s --inodes * 2>/dev/null |sort -g
o CD no último diretório de saída e repita.Divulgação total: nem todos os
--inodes
sinalizadores de suporte do sistema operacional para o comando du (meu Mac OS não), mas muitos sistemas operacionais Linux o fazem.fonte