A maneira mais rápida de limpar um SSD de todas as suas partições para reparticionar no Linux?

21

Quero limpar um SSD de todas as suas partições e dados, para poder reparticioná-lo (isso não é para fins de segurança).

Eu olhei, sudo dd if=/dev/zero of=/dev/sdb bs=1Mmas se isso apenas preencher cada partição com zeros, não tenho certeza se é isso o que quero fazer.

Planejo executar esse comando com bastante frequência e não quero esgotar as gravações do meu SSD. Alguém poderia me dar conselhos sobre como resolver esse problema?

IgDV
fonte
11
Estude isto: ATA Secure Erase . Eu não tenho experiência com o processo, então isso não é uma resposta, apenas uma dica. Qualquer pessoa sinta-se à vontade para escrever sua própria resposta sobre isso, se souber que é o caminho certo.
Kamil Maciorowski
18
Por motivos de segurança, ou simplesmente porque você precisa reparticionar?
grawity
principalmente apenas para reparticionar
IgDV
14
Ação de bomba de 12 calibres. E você sabia que alguém iria dizer isso mais cedo ou mais tarde!
ssimm
11
@ssimm - Minha preferência é um churrasco a carvão.
Daniel R Hicks

Respostas:

41

Em um SSD: É possível TRIM discos inteiros ou partições usando blkdiscard. Não é muito seguro, mas praticamente instantâneo (o disco apenas marca todas as células como não utilizadas).

Por segurança: use criptografia de disco completo. Não se preocupe em limpar o disco inteiro se ele estiver criptografado - você só precisará limpar a área que contém suas chaves (por exemplo, o primeiro 1–2 MiB de cada partição criptografada).

Para reparticionar: novamente, não se preocupe em apagar todos os dados. Você só precisa destruir os sistemas de arquivos usando e wipefs, em seguida, limpe o primeiro 1 MiB do seu disco para eliminar os gerenciadores de inicialização restantes. Depois de formatar uma partição usando mkfs, o sistema operacional simplesmente assume que ela está completamente vazia.

(De fato, no Linux, o mkfs.ext4 APARECE automaticamente a partição inteira antes de formatá-la.)

gravidade
fonte
6
Para reparticionar, por que não apenas excluir partições antigas e criar novas?
el.pescado
5
Porque se você criar novas partições no mesmo local (posição inicial), encontrará apenas os mesmos dados antigos! (É claro que é geralmente não é um problema, porque a reformatação com mkfso lixo de qualquer maneira Mas várias situações estranhas. Não acontecer - wipefsexiste porque era necessário.)
grawity
4
@IgDV - o que man wipefsdiz? (Dica: veja o primeiro exemplo na seção de exemplos da página de manual)
Timo
2
"você só precisa limpar a área que contém suas chaves" - no SSD, as chaves provavelmente também serão recuperáveis. TPM ou chaves de proteção de senha forte podem ser a melhor opção. blkdiscardtambém seria bom, pois criaria um quebra-cabeça a partir do resto do disco, mesmo que o invasor soubesse a chave (assumindo que o mapeamento antigo não possa ser recuperado também). "esfregue os primeiros 1 MiB do seu disco para eliminar os gerenciadores de inicialização restantes" - a seção extra é usada apenas como excedente dos primeiros 512B. Se você limpar o primeiro 512B, não será prejudicado pelo resto do 1M.
Maciej Piechotka
11
@MaciejPiechotka: Infelizmente, alguns gerenciadores de inicialização (principalmente o grub) também usam o espaço após o MBR.
grawity
14

Como Kamil Maciorowski menciona , a melhor maneira, com o menor desgaste de gravação, de excluir um disco inteiro , é usar o comando ATA 'secure erase'. Isso instruirá o hardware a fazer uma única limpeza completa, em vez de substituir as células repetidamente como em ferramentas como essa shred. Isso só pode ser feito para todo o disco. Se você precisar limpar seletivamente partições, consulte a resposta do grawity ( blkdiscard)

A implementação exata do comando depende do hardware.

  • A maioria dos SSDs usa um sinal elétrico em massa para limpar chips inteiros de uma maneira "tudo ou nada". Isso gera desgaste de gravação (normal), mas apenas na extensão mínima possível (~ único ciclo de gravação).

  • Os SSDs com criptografia automática geralmente apenas limpam a chave de criptografia dentro do chip do controlador (realmente instantâneo). As unidades com criptografia automática sempre criptografam, mesmo que estejam prontas para uso (com uma chave padrão de fábrica). Portanto, limpar a chave deixa apenas uma confusão não decriptografável nos chips flash, mesmo que nenhuma chave do usuário tenha sido definida.

  • Os discos rígidos Spinning-Rust executam uma gravação zero baseada em hardware de todos os setores, o que é equivalente (e consome muito tempo) dd if=/dev/zero.

O processo está bem documentado aqui: https://www.thomas-krenn.com/en/wiki/SSD_Secure_Erase (eu pessoalmente usei esse processo repetidamente em meus próprios SSDs ao reinstalar sistemas operacionais)

Edit: se você estiver interessado nas implicações de segurança: verifique esta questão do Security.SE

Jules Kerssemakers
fonte
O Secure Erase é suportado pela maioria dos discos ATA? Fiquei com a impressão de que seu apoio é incomum.
Ruslan
11
Ainda não encontrei um disco (moderno, SATA) que não o suportasse, mas admito que minha experiência se limita aos discos rígidos de minha propriedade. Também parece haver uma diferença entre "exclusão segura" e "exclusão segura aprimorada", sendo a última menos suportada.
Jules Kerssemakers
3
@Ruslan Eu nunca vi (ou ouvi falar) de um disco de especificação SATA-2 que não o suportava. Praticamente qualquer disco SATA fabricado nos últimos 10 anos ou mais.
Tonny
Isso também significa que, em SSDs com criptografia automática, o comando TRIM é não operacional? (Caso contrário, não é sempre criptografar, né?)
Mehrdad
11
@Mehrdad: Sim, o uso do TRIM em um SSD criptografado vaza informações sobre quais blocos são gratuitos. Se isso é aceitável depende de suas necessidades de segurança. Veja, por exemplo, askubuntu.com/questions/399211/… para uma discussão.
sleske
4

Lembre-se de que você pediu uma solução sobre como limpar rapidamente os discos. Substitua / dev / sdx pelo seu disco, provavelmente / dev / sda

Isso limpará a tabela de partição.

dd if=/dev/zero of=/dev/sdx bs=1024 count=50

Isso limpará todo o disco, levará um tempo.

cat /dev/zero > /dev/sdx
Jarrod Chesney
fonte
4
Não use cat. Use ddpara melhorar o desempenho.
Micheal Johnson
6
@ Michel Você diz isso, mas por padrão ddusa buffers de 512 bytes, o que prejudicará o desempenho ... Coreutils ( cpe provavelmente também cat) têm um tamanho de buffer mais sensato. Não há nada sobre ddisso de alguma forma inerentemente mais rápido.
grawity
3
@rawity Você pode alterar o tamanho do buffer com dd. A última vez que tentei usar catpara gravar uma imagem em um disco, foi significativamente mais lenta do que usar ddcom um tamanho de buffer apropriado.
Micheal Johnson