O que é TRIM exatamente?

12

Na página da Wikipedia de TRIM , tenho a impressão de que o TRIM foi introduzido para baixar as gravações para um SSD, mas letra do sistema de arquivos, tendo caso de 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 permitir que o SSD saiba que os blocos estão livres?

Lendo este

File systems within a guest tend to not reuse blocks which means that even if a file system remains small relative to the virtual image size, the actual image size tends to grow until it reaches the maximum size.

me leva a pensar, os SSDs não sobrescrevem com zeros? Ou são sistemas de arquivos em convidados, algo completamente diferente?

    
por Sandra 10.07.2011 / 01:41

2 respostas

12

Dispositivos de memória flash (o que é usado para os SSDs de hoje) não podem gravar dados arbitrários a qualquer momento; antes de escrever em uma célula (geralmente 4KB) tem que ser apagado primeiro. Infelizmente, a operação de apagar é muito lenta; é por isso que os dispositivos flash eram muito mais lentos que os drives magnéticos, apesar de não terem partes móveis.

Os SSDs modernos escondem o tempo de apagamento mantendo um conjunto de células pré-apagadas, o que significa que um comando de gravação não substituirá imediatamente os dados existentes; em vez disso, o controlador da unidade escolhe uma célula apagada, remapeia e escreve com o novo dados. Isso (e várias estratégias de cache write-thought) dão ao drive uma aceleração enorme , superando em muito os drives magnéticos.

Para garantir que sempre haja um conjunto de células pré-visualizadas, sempre que uma célula não for necessária, a unidade a programará para eliminação em segundo plano e será adicionada à lista de células de taxas.

Infelizmente, os sistemas de arquivos existentes não se preocuparam em informar a unidade quando um setor estava livre. A unidade deveria ser apenas um repositório estúpido de bits, afinal de contas. 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 se o sistema de arquivos limpasse, escrevendo zeros sobre ele, a unidade não poderia saber 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 atualmente mantidos. É 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 são liberados, o controlador SSD desmata a célula e a agenda para ser apagada. Se o host ler esses setores, o SSD não se incomodaria em buscar a partir do Flash, ele responde imediatamente com zeros; mas o efeito mais importante é manter a lista de células pré-preenchidas sempre reabastecidas.

Ainda assim, a maioria dos SSDs expõe uma capacidade menor do que o tamanho físico da memória Flash, às vezes até 75%. Isso permite manter algumas células não utilizadas, mesmo em um sistema 100% completo, de modo que (sobre) escrever setores usados ainda é rápido.

    
por 10.07.2011 / 08:05
7

TRIM foi introduzido para que um sistema operacional (o sistema de arquivos dentro do sistema operacional) pudesse se comunicar com um meio de armazenamento ATA 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.

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

Os sistemas de arquivos tendem a distribuir suas gravações (por diversos motivos, desde tentativas de nivelamento de gravação, coleta de lixo, aleatorização de locais de armazenamento e muito mais). Por causa disso, se a mídia não tiver 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, ele deve assumir que o disco inteiro está 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. Similarmente para arquivos de disco virtual em sistemas de virtualização, o arquivo de disco dinâmico englobará a capacidade total do disco virtual. Se o sistema de virtualização implementar o TRIM, ele saberá quando um setor não estiver mais sendo usado e, portanto, o disco dinâmico não precisará rastrear esse local.

    
por 10.07.2011 / 02:53