ikeep
faz exatamente o que os documentos dizem que faz. Eu acredito que sua confusão vem de não entender o que é um inode
. Um inode
armazena meta-dados sobre o arquivo. Faz parte da estrutura do sistema de arquivos e contém none dos dados no arquivo. Como a descrição do patch que introduziu a necessidade de ikeep
explica:
XFS dynamically allocates space for inodes as they are created, this is different from many other filesystems where inode space is statically allocated at mkfs time. While inode space is dynamically allocated, it is never freed - up until now that is.
This non-freeing of space tends to lead to fragmentation on filesystems where lots of files come and go. It can also lead to inodes and their parent directories being scattered around the disk more.
A maioria dos sistemas de arquivos aloca todos os inodes que eles precisarão quando você "cria o sistema de arquivos" a.k.a. "formata a unidade") e nunca os exclui. O XFS é diferente porque os torna sob demanda.
A fragmentação e as coisas que estão "espalhadas pelo disco" causam problemas significativos de desempenho em discos tradicionais. No entanto, em um SSD, essas coisas não são problema algum. Por outro lado, a exclusão de blocos de disco é um problema de desempenho significativo em SSDs, embora não seja problema para discos giratórios. Então, embora o patch torne o padrão excluir inodes vazios tenha sido uma melhoria no desempenho dos discos giratórios, ele realmente piorou o desempenho nos SSDs. Daí a recomendação de usar ikeep
em SSDs.