Suponho que o problema que você tem não é a partição se enchendo de inodes por si só, mas ficando sem o número de inodes no sistema de arquivos. ext4 reserva os inodes estaticamente quando o sistema de arquivos é criado, mas você pode definir o número com as opções paramkfs.ext4
:
-i bytes-por-inode
Especifique a proporção de bytes / inode. O mke2fs cria um inode para todos os bytes de bytes por espaço do disco. Quanto maior a taxa de bytes por inode, menos inodes serão criados.
-N número de inodes
Substitui o cálculo padrão do número de inodes que devem ser reservados para o sistema de arquivos (que se baseia no número de blocos e na proporção de bytes por inode). Isso permite que o usuário especifique diretamente o número de inodes desejados.
O manual declara explicitamente que a taxa de bytes por inode não pode ser alterada após a criação do FS, mas o número total será escalado para atender à taxa se o FS for redimensionado.
Você também pode definir o tamanho de cada inode. O padrão é 256 bytes em "mais" sistemas de arquivos, mas pode ser reduzido para 128 (o padrão para sistemas de arquivos "pequenos"). O espaço extra é usado para armazenar atributos estendidos (por exemplo, rótulos SELinux); portanto, se você não precisar deles, deve ser seguro reduzir o tamanho ao mínimo.
-I tamanho do inode
Especifique o tamanho de cada inode em bytes. O valor do tamanho do inode deve ser uma potência 2 maior ou igual a 128.
df -i
deve mostrar o número de inodes alocados e usados. Com as opções padrão, uma partição de 30 GB que eu analisei tinha um inode para cada 16 kB, mas se os arquivos forem muito pequenos, você poderá definir, por exemplo, -i 4096
um inode para cada bloco de dados no sistema.
Se seus arquivos forem menores que 4096, convém reduzir também o tamanho do bloco do sistema de arquivos, pois todos os arquivos regulares exigirão um bloco de dados completo de qualquer maneira. (Ou seja, no ext4. Não sei se outros sistemas de arquivos atuais compilam arquivos pequenos.)
-b tamanho do bloco
Especifique o tamanho dos blocos em bytes. Os valores válidos do tamanho do bloco são 1024, 2048 e 4096 bytes por bloco. Se omitido, o tamanho do bloco é heuristicamente determinado pelo tamanho do sistema de arquivos e pelo uso esperado do sistema de arquivos (consulte a opção -T).
mkfs.ext4
também tem a -T <type>
opção que pode ser usada como uma abreviação para alguns ou todos eles. As configurações estão dentro /etc/mke2fs.conf
, o que no meu Debian faz, por exemplo, mkfs.ext4 -T small
equivalente a
mkfs.ext4 -b 1024 -I 128 -i 4096
O que pode não ser um conjunto ruim de opções para muitos arquivos pequenos (e não xattrs.)
Se seus arquivos forem ainda menores que um kB, um sistema de arquivos pode não ser a melhor maneira de salvar os dados, mas algo como um banco de dados ou um sistema específico de aplicativo talvez deva ser considerado.
mkfs.ext4 -t news
para obter melhores resultados. Além disso, eu sugiro que você teste - crie (no lvm, ou dispositivo de loopback, por exemplo) cada um dos itens de arquivo, por sua vez, e comece a copiar seus arquivos reais para ele até que eles sejam preenchidos. Quando for preenchido, façadf -i
(oufind | wc -l
) para descobrir qual deles conseguiu armazenar a maioria dos seus arquivos - dessa forma, você saberá com certeza.