No Linux, simplesmente execute
hdparm --trim-sector-ranges start:count /dev/sda
passando os intervalos de bloco que você deseja TRIM em vez de start
e count
e o dispositivo SSD no lugar de /dev/sda
.
Tem a vantagem de ser rápido e não escrever zeros na unidade. Em vez disso, ele simplesmente envia comandos TRIM para o controlador SSD, informando que você não se importa com os dados nesses blocos e pode assumir que eles não são utilizados em seu algoritmo de coleta de lixo.
Você provavelmente precisará executar este comando como root. Como esse comando é extremamente perigoso, já que pode causar perda imediata de dados, você também precisa passar o argumento --please-destroy-my-drive
para hdparm
(não adicionei isso à linha de comando para evitar perda acidental de dados causada por copiar e colar .)
Na linha de comando acima, /dev/sda
deve ser substituído pelo dispositivo SSD para o qual você deseja enviar comandos TRIM. start
é o endereço do primeiro bloco (setor) para TRIM, e count
é o número de blocos para marcar como livre daquele endereço inicial. Você pode passar vários intervalos para o comando.
Ter feito pessoalmente com hdparm v9.32 no Ubuntu 11.04 no meu laptop com um 128GB Crucial RealSSD C300, eu tenho que apontar um problema: eu não era capaz de passar o número total de blocos de disco (0: 250069680) como o intervalo. Eu manualmente (essencialmente "binário pesquisado" à mão) encontrou um valor grande o suficiente para a contagem de blocos que funcionou (40000) e foi capaz de emitir comandos TRIM em uma seqüência de 40000 intervalos para liberar todo o disco. É possível fazer isso com um script de shell simples como este (testado no Ubuntu 11.04 em root):
# fdisk -lu /dev/sda
Disk /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
...
para apagar a unidade inteira, pegue o número total de setores e substitua 250069680 na linha seguinte por esse número e execute (adicione --please-destroy-my-drive
):
# i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
| hdparm --trim-sector-ranges-stdin /dev/sda
E pronto! Você pode tentar ler o conteúdo bruto do disco com hexedit /dev/sda
antes e depois e verificar se a unidade descartou os dados.
É claro que, mesmo que você não queira usar o Linux como o sistema operacional principal da máquina, você pode aproveitar esse truque ao inicializar um CD ao vivo e executá-lo na unidade.