O que exatamente a opção ikeep mount no XFS faz?

3

Eu tenho um laptop com um SSD de 512GB. Eu uso o XFS como meu sistema de arquivos / , montado com noatime,discard,ikeep . O ikeep é devido a algumas postagens na lista de discussão sobre como discard e TRIM ficaram lentas no XFS e sugeriram usar ikeep para melhorar o desempenho. No entanto, nos documentos do kernel do Linux, ele diz:

When ikeep is specified, XFS does not delete empty inode clusters and keeps them around on disk. ikeep is the traditional XFS behaviour. When noikeep is specified, empty inode clusters are returned to the free space pool. The default is noikeep for non-DMAPI mounts, while ikeep is the default when DMAPI is in use.

Isso significa que nenhum espaço jamais será liberado se eu usar o ikeep, fazendo com que o descarte seja discutível, já que não importa quantos arquivos eu exclua, o espaço livre não aumentará? Essa parece ser uma idéia absurda para o "comportamento tradicional do XFS".

O que exatamente o ikeep faz?

    
por ithisa 21.05.2013 / 13:43

1 resposta

3

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.

    
por 25.05.2013 / 21:58

Tags