Limite de Inodes: O Erro Invisível que Trava seu Servidor Linux

O que é um Inode?

limite de inodes. O termo Inode (index node) refere-se a uma estrutura de dados no sistema de arquivos que armazena metadados sobre um arquivo ou diretório. Pense no Inode como a ficha técnica de um arquivo: ele guarda tudo, exceto o nome do arquivo e o conteúdo real.

O que o Inode armazena:

  • Tamanho do arquivo.
  • Permissões (RWX).
  • Proprietário (UID) e Grupo (GID).
  • Timestamps (Acesso, Modificação, Alteração).
  • Localização física dos blocos de dados no disco.

Como o limite de Inodes quebra o servidor

Cada vez que um arquivo ou pasta é criado, um Inode é consumido. O problema é que a quantidade total de Inodes é definida no momento da formatação da partição. Se você atingir 100% de uso de Inodes, o sistema se comportará exatamente como se o disco estivesse cheio:

  • Falha em serviços críticos: Bancos de dados não conseguem criar arquivos temporários.
  • Logs interrompidos: O syslog ou o journald param de registrar eventos.
  • Impossibilidade de login: O SSH pode falhar se não conseguir criar sessões ou arquivos de trava (lock files).
  • E-mails bloqueados: Servidores de e-mail (Postfix/Exim) travam ao tentar enfileirar mensagens.

O Sintoma Clássico: Você executa df -h e vê que tem 50% de espaço livre, mas ao tentar criar um arquivo com touch teste.txt, recebe o erro: No space left on device.


Diagnóstico e Solução

Para identificar se o problema é realmente o limite de Inodes, você deve usar o comando:

Bash

df -i

Os Maiores Culpados

Geralmente, o esgotamento de Inodes é causado por milhões de arquivos minúsculos. Os suspeitos usuais são:

  1. Sessões de PHP: Milhares de arquivos de sessão em /var/lib/php/sessions.
  2. Arquivos Temporários: Acúmulo em /tmp.
  3. Cache de Imagens: Miniaturas geradas por CMS como WordPress.
  4. Fila de E-mail: Milhares de e-mails de notificação ou spam parados no spool.
  5. Microserviços mal configurados: Logs fragmentados em arquivos de poucos bytes.

Como Prevenir

  1. Monitoramento Ativo: Não monitore apenas df. Configure alertas para df -i no seu Zabbix, Grafana ou Datadog.
  2. Scripts de Limpeza (Cron): Automatize a exclusão de sessões antigas e arquivos temporários.
  3. Escolha do Sistema de Arquivos: * O EXT4 reserva um número fixo de Inodes na criação (geralmente 1 inode a cada 16KB de espaço).
    • O XFS aloca Inodes dinamicamente, sendo muito mais resiliente a esse problema específico.
  4. Ajuste na Formatação: Se você sabe que o servidor terá bilhões de arquivos pequenos, pode formatar o EXT4 com uma densidade de Inodes maior usando mkfs.ext4 -i <bytes-per-inode>.

FAQ

O que significa o erro de Inodes esgotados?

Significa que o sistema de arquivos atingiu o limite máximo de entradas (arquivos, diretórios, links) que pode gerenciar. Mesmo que haja espaço em GB, o sistema não pode criar novos nomes de arquivos

Como verificar o uso de Inodes no Linux?

Você pode verificar o uso de inodes executando o comando df -i no terminal. Ele exibirá a porcentagem de inodes usados em cada partição.

Como liberar Inodes em um servidor?

Para liberar inodes, você deve excluir arquivos. Foque em pastas de sessões temporárias, cache de imagens, logs antigos ou filas de e-mail (spool). Apagar um arquivo grande libera espaço em GB; apagar mil arquivos pequenos libera 1.000 inodes.

O XFS tem limite de Inodes como o EXT4?

Diferente do EXT4, o sistema de arquivos XFS aloca inodes dinamicamente. Isso torna o esgotamento de inodes muito mais raro no XFS, embora ainda existam limites teóricos baseados na capacidade total do disco.