Então, depois de muitos dias trabalhando nisso, consegui demonstrar que o BtrFS usa o TRIM. Não consegui fazer com que o TRIM funcionasse no servidor para o qual estaremos implantando esses SSDs. No entanto, ao testar usando a mesma unidade conectada a um laptop, os testes são bem-sucedidos.
Hardware usado para todos os testes:
- SSD 512GB Crucial m4
- HP DL160se G6
- LBA LSISAS9200-8e HBA
- gabinete SAS genérico
- laptop Dell XPS m1210
Depois de muitas tentativas fracassadas de verificar o BtrFS no servidor, decidi tentar o mesmo teste usando um laptop antigo (remova a camada da placa RAID). As tentativas iniciais deste teste usando ambos Ext4 e BtrFS no laptop falhar (dados não TRIM'd).
Eu então atualizei o firmware da unidade SSD da versão 0001 (como enviada para uso) para a versão 0009. Os testes foram repetidos com o Ext4 e o BtrFS e ambos os sistemas de arquivos TRIM tiveram sucesso com os dados.
Para garantir que o comando TRIM tenha tempo de ser executado, eu fiz um rm /mnt/testfile && sync && sleep 120
antes de executar a validação.
Uma coisa a ser observada é se você está tentando o mesmo teste: os SSDs possuem blocos de apagamento nos quais operam (não sei o tamanho dos blocos de exclusão do Crucial m4). Quando o sistema de arquivos envia o comando TRIM para a unidade, a unidade só apaga um bloco completo; se o comando TRIM for especificado para uma parte de um bloco, esse bloco não será TRIM'd devido aos dados válidos restantes dentro do bloco de apagamento.
Então, para demonstrar do que estou falando (saída do script sectors.pl
acima). Isso é com o arquivo de teste no SSD. Períodos são setores que contêm apenas zeros. Vantagens têm um ou mais bytes diferentes de zero.
Arquivo de teste na unidade:
24600 .......................................+++++++++++
24650 ++++++++++++++++++++++++++++++++++++++++++++++++++
24700 ++++++++++++++++++++++++++++++++++++++++++++++++++
-- cut --
34750 ++++++++++++++++++++++++++++++++++++++++++++++++++
34800 ++++++++++++++++++++++++++++++++++++++++++++++++++
34850 +++++++++++++++++++++++++++++.....................
Arquivo de teste excluído da unidade (após sync && sleep 120
):
24600 .......................................+..........
24650 ..................................................
24700 ..................................................
-- cut --
34750 ..................................................
34800 ..................................................
34850 ......................+++++++.....................
Parece que o primeiro e o último setores do arquivo estão em blocos de exclusão diferentes do resto do arquivo. Portanto, alguns setores foram deixados intactos.
Uma forma de fazer isso: algumas instruções de teste do Ext4 TRIM pedem ao usuário para verificar apenas se o primeiro setor foi TRIM'd do arquivo. O testador deve visualizar uma parte maior do arquivo de teste para realmente ver se o TRIM foi bem-sucedido ou não.
Agora, descubra por que os comandos TRIM enviados manualmente para o SSD através do trabalho com a placa RAID, mas os comandos TRIM automáticos para não ...