Suponho que o problema que você tem não é a partição se enchendo de inodes em si, mas ficando sem o número de inodes no sistema de arquivos. O ext4 reserva os inodes estaticamente quando o sistema de arquivos é criado, mas você pode definir o número com as opções mkfs.ext4
:
-i bytes-per-inode
Specify the bytes/inode ratio. mke2fs creates an inode for
every bytes-per-inode bytes of space on the disk. The larger the
bytes-per-inode ratio, the fewer inodes will be created.
-N number-of-inodes
Overrides the default calculation of the number of inodes that
should be reserved for the filesystem (which is based on the number
of blocks and the bytes-per-inode ratio). This allows the
user to specify the number of desired inodes directly.
O manual indica explicitamente que os bytes por razão de inode não podem ser alterados após o FS ser criado, mas o número total será dimensionado para atender a proporção se o FS for redimensionado.
Você também pode definir o tamanho de cada inode. O padrão é 256 bytes na maioria dos 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 inode-size
Specify the size of each inode in bytes. The
inode-size value must be a power of 2 larger or equal to 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 observei tinha um inode para cada 16 kB, mas se seus arquivos são muito pequenos, você poderia definir, digamos, -i 4096
para ter um inode para cada bloco de dados no sistema.
Se os seus arquivos forem menores que 4096, talvez você queira reduzir o tamanho do bloco do sistema de arquivos também, já que todos os arquivos comuns exigirão um bloco de dados completo de qualquer maneira. (Isto é, no ext4. Eu não sei se outros sistemas de arquivos atuais fazem pacotes de arquivos pequenos.)
-b block-size
Specify the size of blocks in bytes. Valid block-size values are 1024, 2048 and 4096 bytes per block. If omitted,
block-size is heuristically determined by the filesystem size and
the expected usage of the filesystem (see the -T option).
mkfs.ext4
também tem a opção -T <type>
que pode ser usada como um atalho para alguns ou todos eles. As configurações estão em /etc/mke2fs.conf
, o que no meu Debian faz, e. 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 nenhum xattrs.)
Se seus arquivos forem 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.