Eu tenho um servidor Ubuntu 14.04 que não consegue criar um novo diretório além do diretório 65.000. Eu executei um tune2fs -l
e posso ver que o dir_nlink
sinalizador está definido. Alguém sabe o que mais pode ser verificado para permitir que isso ocorra? Tenho muitos outros clones dessa configuração de servidores que ultrapassaram a marca de 65.000 e estão funcionando conforme o esperado. Eu comparei os tune2fs -l
resultados e eles parecem iguais. Ainda tenho vários milhões de inodes e blocos gratuitos. Desmontei e remontei o sistema de arquivos e nada mudou.
Responder1
Limite de diretório Ext4
Ext4 suporta dois tipos de diretórios:
- diretórios quase lineares tradicionais
- diretórios baseados em hash
Os diretórios lineares têm um limite de 65.000 links, ou seja, em torno disso são possíveis muitos subdiretórios. Diretórios baseados em hash não têm limite.
Ao criar um novo sistema de arquivos, o padrão são diretórios hash. Se seus diretórios ainda forem lineares, provavelmente é porque você atualizou uma partição ext3 antiga. (Ext3 obteve o recurso de diretórios baseados em hash posteriormente.)
Testar se um diretório é quase linear ou baseado em hash
$ sudo debugfs /dev/partition
$ htree /
htree: Not a hash-indexed directory
Conversão
- Desmonte a partição
Habilite os recursos
dir_index
(diretórios baseados em hash) edir_nlink
(links ilimitados).sudo tune2fs -O dir_index,dir_nlink /dev/partition
Todos os diretórios recém-criados agora são capazes de conter subdiretórios ilimitados.
Se você deseja converter diretórios existentes, faça o seguinte:
- Desmonte a partição (importante para evitar perda de dados)
Diga ao fsck para reconstruir os índices do diretório:
sudo e2fsck -f -D /dev/partition
-f
força o fsck a verificar o disco mesmo se estiver no estado limpo
-D
diz ao e2fsck para reconstruir os índices:
Esta opção faz com que o e2fsck tente otimizar todos os diretórios, reindexando-os se o sistema de arquivos suportar indexação de diretórios, ou classificando e compactando diretórios para diretórios menores ou para sistemas de arquivos que usam diretórios lineares tradicionais.