Minha partição /dev/sda3
em uma unidade SSD não contém nenhum sistema de arquivos, mas contém lixo. Como faço uma operação TRIM / DISCARD em toda a partição?
linux
partitioning
ssd
trim
pts
fonte
fonte
Respostas:
Se sua versão do util-linux é nova o suficiente (setembro de 2012), na verdade existe uma ferramenta criada especificamente para esse fim
blkdiscard
, que é a melhor maneira de fazer isso:Mas se você precisar de compatibilidade com versões mais antigas do distro Linux, continue a ler ... Há casos em que
hdparm
/wiper.sh
lixo para tocar um volume porque não é uma partição, por isso precisamos de algo além disso.A maneira mais suportada que encontrei é aproveitar o fato de que os volumes de troca do Linux suportam o DISCARD quando estão ativados. Os wipefs no final estão lá para que o volume não seja reconhecido como swap posteriormente.
Isso emite o DESCARTE na maioria do dispositivo.
fonte
blkdiscard
. Comando perigoso ... :)WARNING: All data in the discarded region on the device will be lost!
Eu sei que essa pergunta é bem antiga, mas ...
A maneira mais simples de fazer isso é simplesmente criar um sistema de arquivos ext4 na partição com uma versão razoavelmente recente do
mkfs.ext4
. A primeira coisa que esta ferramenta faz é TRIM a partição inteira. Depois de fazer isso, você pode sobrescrever os dados criados com o sistema de arquivos que desejar.(Acabei de fazer isso para criar uma nova partição vfat em um cartão SD, por exemplo.)
fonte
mkfs.ext4 -J size=4 -N1 /dev/my/device
-E lazy_journal_init
parece resultar em menos gravações do que-J size=4
ocorre. (Com base em experimentos usando um arquivo esparso em vez de um SSD física edu
para verificar o quanto tinha sido escrito.)O hdparm --trim-sector-range é de baixo nível, deve conversar diretamente com o SSD, portanto, não há dependência no sistema de arquivos. O que o wiper.sh faz é usar programas específicos do sistema de arquivos para mapear regiões livres (sistema de arquivos) para setores SSD (hardware), eles usam o hdparm para apará-las.
Respondendo à pergunta, você pode usar o hdparm para aparar essa partição, mas deve ter muito cuidado . A maneira de fazer isso é obter o intervalo do setor usado pela partição e usar o hdparm nesse intervalo do setor. Provavelmente, você precisará passar por vários intervalos de setor, pois cada intervalo para --trim-setor-intervalos pode ter no máximo 65535 setores.
O fdisk -l pode informar o início e o tamanho das partições. Preste atenção nas unidades em uso pelo fdisk e no tamanho do setor do seu SSD.
Exemplo (meu SSD):
Para descartar o espaço antes desta partição, eu poderia cortar 2047 (512 bytes de tamanho, em meus SSD) setores a partir de setor 1:
hdparm --trim-sector-ranges 1:2047
. Não consigo cortar a partir do setor 0, porque esse é o MBR (não sei como é o GPT).Para descartar o espaço usado pela partição, eu faria
hdparm --trim-sector-ranges 2048:65535 67583:65535 133118:65535 ...
. Pode ser com script, mas não vou escrever um agora.Também só para ter certeza: não estou garantindo nada aqui, posso ter setores calculados incorretamente, fazer um backup de tudo antes de usar efetivamente --trim-setor-range.
Nota : se você cortar o espaço "vazio" antes da primeira partição, como mostrei, certifique-se de reinstalar o GRUB (ou qualquer outro carregador de inicialização que você use) antes de reiniciar, pois o GRUB armazena parte dele em setores "não utilizados" antes da primeira partição . Não conheço outros gerenciadores de inicialização, mas acho que pode ser o caso, então tome cuidado.
fonte
wiper.sh
é obsoleto pelofstrim
que é muito mais seguro, mas para esse uso específico é melhor queblkdiscard
ambos. Em 2013, não há necessidade de arriscar intervalos de computação manualmente.Você pode dar uma olhada no script
wiper.sh
incluído no pacote hdparm. Ele usa o comando hdparm--trim-sector-ranges
para TRIM todos os setores vazios em uma partição, pelo menos se ele contiver um sistema de arquivos ext3 / 4. Não tenho certeza se funciona com partições não formatadas, mas você sempre pode formatá-lo temporariamente com ext4.fonte
wiper.sh
reduziria quase toda a partição, exceto os metadados ext4. Mas eu gostaria de cortar toda a partição.blkdiscard
pode trabalhar em partições, não apenas em unidades inteiras. Eu testei com sucesso no Fedora 20. Verifiquei as fontesblkdiscard
- é um programa muito simples que não sabe nada sobre partições. Presumo que o kernel faça a tradução.Tenha muito cuidado,
blkdiscard
não faça perguntas e não mostra informações de progresso.Se blkdiscard não estiver disponível, use este script e alimente sua saída ao hdparm. O primeiro argumento é o número de setores a serem aparados, o segundo é o primeiro setor a ser aparado.
fonte
Aqui está um artigo interessante que fala sobre o uso do HDDErase para chamar o recurso de exclusão segura do SSD, que deve fazer com que você queira:
http://www.windowsitpro.com/article/file-systems/q-how-can-i-reset-a-solid-state-disk-ssd-to-a-fully-erased-clean-state-
fonte
blkdiscard --secure
ocorre.