Como o SSD consegue nivelar o desgaste quando o disco está quase cheio?

5

Estou tentando entender isso. Digamos que eu tenha um SSD de 256GB, dos quais 180GB já estão ocupados por arquivos permanentes (SO, programas instalados etc.). Os outros 70 GB restantes obtêm novos arquivos criados e excluídos. Isso não significa que os chips NAND dessa parte ficarão desgastados antes da área cujos arquivos não foram modificados? Ou o SSD também move os arquivos que não mudam ao longo do tempo?

    
por dotNET 17.04.2015 / 11:52

1 resposta

3

O SSD move arquivos que não mudam ao longo do tempo.

Primeiro de tudo, você tem os setores virtuais que estão expostos ao sistema operacional (não confundir com clusters do sistema de arquivos), e então você tem as células físicas nos chips flash. À medida que o controlador flash aloca / desaloca as células, ele remapeia os setores virtuais de acordo, de modo que seja transparente para o sistema operacional (os mesmos setores virtuais podem aparecer em locais diferentes nas células flash em momentos diferentes).

Em segundo lugar, os SSDs realmente possuem células sobressalentes que não são utilizáveis como espaço livre. Eles são especificamente reservados para o propósito de nivelamento de desgaste, atenuando a amplificação de gravação e o remapeamento de células mortas. Dessa forma, mesmo que o seu SSD tenha zero bytes de espaço livre, o controlador de flash ainda terá espaço para realizar o nivelamento de desgaste.

Digamos que você tenha um SSD de 500 GB que esteja 100% cheio. Agora digamos que 499 GB desses dados são um arquivo que nunca muda, mas você tem um arquivo de 1 GB que muda o tempo todo. Se você excluir esse arquivo de 1 GB e copiar outro arquivo de 1 GB, o controlador de flash fará uma das duas coisas no momento:

  • Todos ou alguns dos novos dados serão alocados para células sobressalentes, deixando as células antigas em um estado ainda aparado.
  • 1 GB de células dentro dos 499 GB de dados que nunca serão alterados serão copiados para outras células disponíveis. As células antigas serão apagadas e reescritas com os novos dados.

Em ambos os casos, os setores virtuais apresentados ao sistema operacional nunca mudam, de modo que o sistema operacional não tem conhecimento do que realmente está acontecendo. O controlador flash mantém uma tabela de mapeamento de células de memória para setores virtuais.

O objetivo do algoritmo de nivelamento de uso na vida é tentar exercitar todas as células uniformemente, mesmo que isso envolva a movimentação de dados para alcançá-lo. Esse processo reduz a velocidade da unidade e, ironicamente, causa desgaste adicional nas células flash. Ele se chama write amplification e é um problema significativo com SSDs. Os algoritmos de nivelamento de desgaste reais empregados pelos SSDs e as formas como eles reduzem a amplificação de gravação são segredos comerciais proprietários entre os fabricantes de SSDs, portanto, essa é apenas uma descrição geral do processo.

    
por 17.04.2015 / 21:59