
Eu corri oTeste TRIMproposto porgeloe também encontrouaqui. O arquivo resultante de 1 MB é altamente fragmentado. Como pode ser ?
Meu único dispositivo de armazenamento /dev/sda
é um SSD Samsung de 500 GB. Está "pronto para TRIM" e o kernel vem com um fstrim
executável em /etc/cron.weekly
. Mesmo assim, eu queria fazer o teste, digamos, por curiosidade. O teste produziu um arquivo de 1 MB, trim.test, preenchido com o y
caractere alfa.
Após a criação do arquivo verifiquei a posição exata do arquivo no disco:
> cd /
> yes | sudo dd iflag=fullblock bs=1M count=1 of=trim.test
> sudo filefrag -s -v trim.test
Filesystem type is: ef53
Filesystem cylinder groups approximately 177
File size of trim.test is 1048576 (256 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 15: 2816076.. 2816091: 16: merged
1: 16.. 31: 170064.. 170079: 16: 2816092: merged
2: 32.. 63: 170848.. 170879: 32: 170080: merged
3: 64.. 127: 168269.. 168332: 64: 170880: merged
4: 128.. 255: 170112.. 170239: 128: 168333: merged,eof
trim.test: 5 extents found, perfection would be -1 extent
Isso se repete se eu apagar o arquivo e repetir o procedimento.Como um arquivo de 1 MB pode ser tão fragmentado?
Responder1
Depois de bisbilhotar e ler sobre TRIM e fragmentação, responder minha própria pergunta pode ajudar outras pessoas.
Lendo sobre TRIM, são feitas referências frequentes à fragmentação de arquivos. Ambos os aspectos são fonte de dúvidas legítimas sobre o desempenho do armazenamento SSD, mas os dois problemas são distintos.
- fragmentação de arquivoconsiste em um arquivo sendo gravado em HDD ou SSD em diversas áreas de gravação não contíguas, usando blocos físicos distribuídos pelo meio de armazenamento dentro de uma partição. No contexto particular dos SSDs, veremos que não tem nada a ver com as ações do TRIM ou mesmo com o nível de gerenciamento de armazenamento do TRIM, mas que está relacionado comnivelamento de desgaste(WL), outro processo de gerenciamento de meios de armazenamento de baixo nível sempre presente em SSDs (ao contrário do TRIM). O gerenciamento de dados internos em SSDs é fundamentalmente diferente daquele dos HDDs em sua atribuição de setores a células de memória flash não voláteis (ou seja, células de SSD) e seus blocos correspondentes (blocos flash). Tem incidência direta na fragmentação de arquivos.
- APARARprepara blocos físicos gravados pelo menos uma vez em um SSD para novas operações de gravação (Wops), evitando a necessidade de realmente apagar os blocos de destino imediatamente antes que o Wop ocorra (como seria o caso em uma configuração sem TRIM). Para isso o SSD deve ter um controlador de hardware compatível com TRIM. Nem sempre é o caso. Após a primeira fase de uso (ou seja, quando o SSD ainda é relativamente novo e todos os seus blocos ainda não foram sobrescritos pelo menos uma vez), os Wops diminuem a velocidade até atingirem um patamar de velocidade. Nesse estágio, uma regra prática é que o TRIM reduz aproximadamente pela metade o tempo de gravação em SSDs prontos para TRIM em relação ao mesmo hardware sem TRIM habilitado.
Durante o Wops, os SSDs se comportam de maneira bem diferente dos HDDs. Um HDD nunca precisará apagar um bloco antes de um Wop. Um SSD sempre faz isso e isso consome tempo. O TRIM ajuda a aliviar esse consumo de tempo pré-condicionando blocos recentemente liberados no SSD compatível com TRIM, essencialmente apagando previamente os blocos que são liberados depois que um arquivo foi modificado e movido para uma área diferente do volume. Esta é uma visão simplificada da realidade, mas na qual o usuário não especialista pode confiar para começar a tomar decisões sobre hardware e administração de hardware de baixo nível. Leia...
O TRIM está relacionado à fragmentação do SSD?
- Resposta curta: Não, eles não estão relacionados.
- Resposta longa: a fragmentação está relacionada ao nivelamento de desgaste (WL), aindaoutroprocesso que otimiza a vida útil dos SSDs. WL é essencial para homogeneizar Wops em todo o espaço de bloco livre/disponível/não reservado do SSD dentro de um volume/partição. Isso ocorre porque cada Wop envelhece as células do SSD correspondente, por meio da aplicação de uma tensão relativamente grande sobre uma pequena área da camada semicondutora, reduzindo assim sua vida útil. (Acredito que isso tenha a ver com defeitos induzidos termicamente introduzidos na maior parte do SSD, mas isso está fora do assunto.)
Se os Wops fossem gerenciados em SSDs como são em HDDs, certas áreas do meio de armazenamento se desgastariam muito antes de outras, levando a blocos não operáveis, perda de capacidade, perda de dados e erros. Na verdade, o WL garante que todos os blocos em qualquer partição do SSD sejam submetidos à mesma quantidade de Wops e que o desgaste seja "nivelado" em todo o espaço de partição disponível do SSD. Nesse sentido, aumenta efetivamente a vida útil do SSD, mantendo ao mesmo tempo a sua capacidade total até ao seu desaparecimento.
Existem dois modos WL: estático e dinâmico. Essewiki(em alemão) especifica que as contagens do ciclo de gravação no final da vida útil do SSD podem aumentar 100 vezes para WL estático e 25 vezes para WL dinâmico em comparação com o mesmo hardware com WL desligado.
Como o WL distribui fisicamente o Wops (o parâmetro limitante que define a vida útil dos SSDs) da maneira mais uniforme possível por todo o espaço de armazenamento do SSD dentro de uma partição, isso inevitavelmente contribuirá para a fragmentação dos dados. Ele faz isso para atingir seu objetivo principal de distribuição otimizada de blocos gravados em qualquer partição do SSD. A conclusão é que qualquer arquivo armazenado em um SSD pode ser um pouco mais fragmentado do que em um HDD tradicional.A fragmentação, entretanto, não se traduz em qualquer declínio de desempenho do SSD.
O modo como o WL opera tem outros corolários: quanto maior o volume do SSD, maior será sua vida útil para determinadas condições de uso. Para o usuário, "condições de uso" significam principalmente:
- a quantidade de espaço usado na partição de um SSD e
- a frequência do Wop, ou seja, quão fortemente acessado por gravação é o meio de armazenamento.
Na verdade, isso pode falar a favor de:
- colocar o lx swap, /home, /tmp e /var em um HDD, enquanto o resto do sistema operacional pode viver felizmente em um SSD menor.
- não fazer partições com muitos Wops muito pequenas em um SSD. Por exemplo, se o swap precisar estar em um SSD e você ler que o lx-swap é melhor definido para o dobro do tamanho da DRAM, faça-o 4 vezes. Não sei se minha aritmética está correta, mas a idéia geral é que isso também duplicará mais ou menos a vida útil do seu espaço de troca. Se você realiza muitas operações que exigem troca (servidores com banco de dados de uso intenso, etc.), pense em mover seu swap e /tmp para um HDD, a menos que você goste da ideia de levar um queimador de gás para seu SSD, é claro.
Enquanto isso, o TRIM prepara os blocos SSD para qualquer novo Wop que está por vir. Ele pré-condiciona células uma vez escritas para um novo Wop, apagando essas células (na verdade, a operação ocorre no nível de um bloco) e iniciandocoleta de lixoquando necessário. Nesse sentido, o TRIM fica de olho no mapa de distribuição de blocos recém-liberados (e pelo menos usados uma vez), pois eles estão sendo gerenciados em baixo nível pelo controlador WL.
Conclusão:
- A fragmentação não importa. Não é prejudicial ao desempenho do SSD. SSDs não precisam (vejaPalestra da Intel sobre SSDs) nem se beneficiam de tarefas domésticas na forma de desfragmentação. Seja qual for o seu sistema operacional, desligue a desfragmentação. Agora.
- TRIM é importante e benéfico, desde que o SSD esteja pronto para TRIM. Hoje, algumas marcas fornecem SSDs compatíveis com TRIM. Se você leu este tópico desde o início, sabe o nome de pelo menos uma dessas marcas respeitáveis. Também há alguns anos, o ext2 era considerado a melhor opção em relação ao ext3 porque o registro no diário, na verdade, ia contra alguns dos benefícios trazidos pelo TRIM ao usar SSDs de 1ª geração. Não é mais o caso e o ext4 é realmente recomendado com TRIM + Garbage Collection.
HTH.