O que é exatamente o TRIM?


14

Na página da Wikipedia do TRIM, tenho a impressão de que o TRIM foi introduzido para reduzir as gravações em um SSD, mas ofereça letra ao sistema de arquivos levando em consideração quais blocos não são utilizados.

Se isso estiver correto, isso significa que os SSDs que não usam TRIM gravam zeros nos blocos, quando um arquivo é excluído, para que o SSD saiba que os blocos estão livres?

Lendo isso

Os sistemas de arquivos em um convidado tendem a não reutilizar blocos, o que significa que, mesmo que um sistema de arquivos permaneça pequeno em relação ao tamanho da imagem virtual, o tamanho real da imagem tende a aumentar até atingir o tamanho máximo.

me leva a pensar, SSD não substitui com zeros? Ou os sistemas de arquivos nos convidados são algo completamente diferente?

Respostas:


16

Os dispositivos de memória flash (usados ​​nos SSDs de hoje) não podem gravar dados arbitrários a qualquer momento; antes de escrever em uma célula (normalmente 4KB) deve ser apagado primeiro. Infelizmente, a operação de apagamento é muito lenta; é por isso que os dispositivos flash eram muito mais lentos que as unidades magnéticas, apesar de não terem partes móveis.

Os SSDs modernos ocultam o tempo de apagamento mantendo um conjunto de células pré-apagadas, o que significa que um comando de gravação não substitui imediatamente os dados existentes, mas o controlador da unidade escolhe uma célula apagada, remapeia e grava com os novos dados. Isso (e várias estratégias de cache de pensamento de gravação) dá à unidade uma enorme velocidade, superando muito as unidades magnéticas.

Para garantir que sempre haja um conjunto de células pré-avaliadas, sempre que uma célula não for necessária, a unidade o agendará para exclusão em segundo plano e será adicionada à lista de células de taxa.

Infelizmente, os sistemas de arquivos existentes não se deram ao trabalho de informar a unidade quando um setor estava livre. Afinal, a unidade era apenas um repositório estúpido de bits. Excluir um arquivo ou qualquer outra operação que marque um setor como livre do ponto de vista do sistema de arquivos era apenas uma marca em alguma estrutura de metadados. O setor em si não foi tocado. Mesmo que o sistema de arquivos limpasse escrevendo zeros sobre ele, a unidade não sabia se isso significava que o setor estava livre ou se o usuário queria alguns zeros em um arquivo. Depois de um tempo, a unidade não teria nenhuma célula livre para apagar antes de escrever; e desempenho degradado tragicamente.

A instrução TRIM foi rapidamente redigida e adotada pela maioria dos sistemas de arquivos mantidos atualmente. É um sinal simples que o sistema de arquivos usa para informar à unidade que o conteúdo de um setor não é mais importante. Assim que todos os setores mapeados em uma célula estiverem livres, o controlador SSD desmarca a célula e a agenda para apagá-la. Se o host ler esses setores, o SSD não se incomodará em buscar no Flash, ele responderá imediatamente com zeros; mas o efeito mais importante é manter a lista de células pré-avaliadas sempre reabastecidas.

Ainda assim, a maioria dos SSDs expõe uma capacidade menor que o tamanho físico da memória Flash, às vezes tão baixa quanto 75%. Isso permite que você mantenha algumas células não utilizadas, mesmo em um sistema 100% completo, para que a (sob) gravação dos setores usados ​​ainda seja rápida.


Interessante. Eu sabia conceitualmente sobre como o TRIM funcionava, mas me perguntei quanto armazenamento um SSD iria expor. Agora eu quero ver se que os dados sejam publicados em qualquer lugar para dadas SSDs ...
Michael B

A quantidade de células reservadas geralmente é publicada. É geralmente entre 5 e 10% para unidades consumidoras mais baratas, 20% + para unidades consumidoras mais sofisticadas. Os EFDs (Enterprise Flash Drives) tendem a ter uma reserva de 100% a 400%; portanto, por que eles são tão caros, eles mantêm essa reserva massiva porque gravar em um local de memória flash destrói os locais um pouco todas as vezes. Escrever aplicativos pesados, normalmente encontrados em ambientes de servidor, mataria a maioria dos SSDs de consumidores rapidamente.
Chris S

"escrevendo em uma célula (normalmente 4KB)" - Você está usando incorretamente o conceito de "célula" em comparação ao uso convencional para memória flash. Uma "célula" flash armazena apenas um (ou alguns) bits. Seu uso de "célula" parece corresponder ao bloco muito maior (apagar) (pode ser 128K), como normalmente descrito nas planilhas de dados do IC em flash. A organização dos dados é o chip de célula <setor <página <bloco <avião <avião.
Serragem

8

O TRIM foi introduzido para que um sistema operacional (o sistema de arquivos no sistema operacional) pudesse se comunicar com uma mídia de armazenamento ATA de que um setor não está mais sendo usado pelo sistema de arquivos. Isso não tem nada a ver com a gravação no disco.

O TRIM não garante que o setor seja zerado na mídia. Ele garante quando o sistema de arquivos solicita uma leitura desse setor que zeros são retornados (observe que, como o SSD sabe que o setor deve ser zeros, ele os retornará, independentemente do que realmente estiver armazenado na mídia; pode ser possível recuperar dados de um disco que foi simples aparado, embora normalmente os SSDs realmente apaguem a memória).

Os sistemas de arquivos tendem a distribuir suas gravações (por vários motivos, desde a tentativa de nivelar a gravação até a coleta de lixo, os locais de armazenamento aleatórios e muito mais). Por esse motivo, se a mídia não tem conhecimento de quais setores o sistema de arquivos não está usando, simplesmente escrever zeros não significa necessariamente que o setor não está sendo usado; então, deve-se supor que o disco inteiro esteja em uso.

Para SSDs, essa suposição significa que um setor deve ser apagado no momento da gravação, diminuindo a velocidade de gravação; em vez de apagar o local da memória no momento em que o arquivo é excluído. Semelhante a arquivos de disco virtual em sistemas de virtualização, o arquivo de disco dinâmico acabará por abranger a capacidade total do disco virtual. Se o sistema de virtualização implementar o TRIM, ele saberá quando um setor não está mais sendo usado e, portanto, o disco dinâmico não precisará acompanhar esse local.


Isso significa que o TRIM foi introduzido para que o SSD saiba quais setores são usados, para que ele possa colocar os novos dados nos setores que foram menos usados?
1028 Sandra

1
Os SSDs simplesmente usam o TRIM para saber quando um setor não é mais necessário. Ele não garante nivelamento de gravação ou outros recursos que a mídia de armazenamento possa implementar. Dito isto, a maioria dos SSDs o usa para nivelamento de gravação, coleta de lixo (em mídia flash, apagando setores não utilizados) e mantendo listas de setores livres para melhorar o desempenho de gravação).
Chris S
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.