Zerando unidades SSD


18

Hospedamos VPS para clientes. Cada VPS de cliente recebe um LVM LV em um disco rígido de eixo padrão. Se o cliente sair, zeramos esse LV, garantindo que seus dados não vazem para outros clientes.

Estamos pensando em usar SSDs para o nosso negócio de hospedagem. Dado que os SSDs possuem a tecnologia "nivelamento de desgaste", isso torna o zeramento inútil? Isso inviabiliza essa idéia de SSD, já que não podemos permitir que os dados do cliente vazem para outro cliente?

Respostas:


23

Supondo que o que você está tentando impedir seja o próximo cliente lendo o disco para ver os dados do cliente antigo, a gravação de todos os zeros ainda funcionaria. Gravar zeros no setor 'n' significa que, quando o setor 'n' for lido, ele retornará todos os zeros. Agora, o fato é que os dados reais subjacentes ainda podem estar nos chips flash, mas como você não pode fazer uma leitura normal para obtê-lo, não é um problema para a sua situação.

É um problema se alguém puder fisicamente se apossar do disco e desmontá-lo (porque eles poderão ler diretamente os chips flash), mas se o único acesso que eles tiverem for o barramento SATA, uma gravação de todos os zeros no conjunto disco vai fazer muito bem.


11
Exatamente a resposta que eu estava procurando, e quando eu pensei sobre isso, cheguei à mesma conclusão :)
jtnire

2
Eu imaginaria (mas não sei ao certo, e certamente dependeria do chipset do controlador usado no SSD) que escrever um setor de zeros em um SSD nem atingisse os chips de flash reais. O controlador deve observar que são todos os zeros e simplesmente marcar esse setor como "zerado" (ou apenas apontá-lo para um setor que contenha todos os zeros). Escrever um setor de zeros é uma coisa razoavelmente comum de se fazer, e o revestimento especial seria uma maneira barata e fácil de reduzir o desgaste do flash, então eu ficaria chocado se pelo menos a Intel e a Sandforce não o fizessem.
Kindall

20

Nunca coloque um SSD em zero. No mínimo, isso desgastará parte da vida útil da gravação do SSD com pouco ou nenhum benefício. No pior cenário extremo, você pode colocar o controlador do SSD em um estado de desempenho reduzido (temporariamente) .

A partir desta fonte :

Substituir repetidamente o disco inteiro com várias repetições pode destruir com êxito os dados, mas, devido à FTL (Firmware Translation Layer), isso é consideravelmente mais complicado e demorado do que nas unidades de disco rígido tradicionais. Com base em seus resultados, é uma opção pouco atraente

Sua melhor opção, apagar com segurança por meio de criptografia de disco completa:

Alguns SSDs modernos podem usar criptografia de disco completo - exemplos são os novos 320 drives da Intel e alguns da série Sandforce 2200. Essas unidades podem ser apagadas com segurança de maneira simples e rápida, sem nenhum desgaste da unidade. A unidade usa criptografia AES para todos os dados gravados; portanto, uma exclusão segura significa simplesmente excluir a chave AES antiga e substituí-la por uma nova. Isso efetivamente torna irrecuperáveis ​​todos os dados 'antigos' da unidade.

No entanto, a exclusão segura da Intel não é fácil de automatizar. AFAIK deve ser feito a partir do aplicativo GUI para Windows da Intel, só pode ser executado em uma unidade sem inicialização vazia e assim por diante. Consulte a página 21 e seguintes na documentação do Intels.

Sua outra opção, apagamento seguro do ATA:

Outra opção é emitir um comando ATA Secure Erase via fx HDPARM no Linux. Isso será muito mais fácil de automatizar via script.

Desde que a unidade implemente o ATA Secure Erase de uma maneira 'boa', é de se esperar que ela exclua pelo menos a "camada de conversão de flash" (FTL). A tabela FTL mantém o mapeamento entre os setores lógicos (que o sistema operacional 'vê') e as páginas físicas da NVRAM na própria unidade. Com essa tabela de mapeamento destruída, deve ser muito difícil - mas provavelmente não impossível - recuperar dados da unidade.

No entanto, não conheço nenhum estudo que demonstre que o ATA Secure Erase seja consistente e bem implementado em todas as unidades do fabricante, por isso hesito em dizer que sempre funcionará - você deve ler a documentação técnica do fabricante.

Para uma única partição:

Enquanto leio os comentários para outras respostas, parece que o OP quer apagar com segurança apenas partições únicas. Uma boa maneira de fazer isso seria criar apenas volumes criptografados , por exemplo, usando LUKS ou TrueCrypt . Dessa forma, você pode apagar com segurança o volume descartando a chave de criptografia, semelhante ao que o esquema de criptografia de disco completo na unidade faz.

Conclusão:

Se você realmente quer saber, leia o artigo vinculado ao blog da Sophos e leia as notas técnicas dos fabricantes de unidades relacionadas à exclusão segura. No entanto, se você deseja uma exclusão segura 'boa', um SSD com criptografia completa do disco e uma limpeza e substituição segura das chaves de criptografia provavelmente é a melhor opção. Como alternativa, use a criptografia no nível do sistema operacional e jogue fora a chave quando desejar que os dados sejam apagados com segurança.


11
Cuidado é bom, mas não tenho certeza de que citar um aviso de 2 anos em um bug do controlador que só apareceu em cargas de trabalho altamente artificiais em um SSD específico que há muito tempo foi corrigido deve receber muito peso.
Daniel Lawson

11
@ Daniel Lawson: Ponto justo. :-) Reformulei essa seção e a mudei para uma degradação temporária do desempenho - e mudei o link para uma revisão da unidade M4 / C400 da Crucial (uma unidade atualmente disponível) que exibe grandes lentidões após operações pesadas de gravação.
precisa

6

O nivelamento de desgaste não tem nada a ver com zerar os dados.

Você zera os dados para impedir que outras pessoas / aplicativos leiam esses dados. Os SSDs 'nivelam o desgaste' de seus dados para garantir que permaneçam utilizáveis ​​por mais tempo devido ao 'dano' causado pela gravação nos SSDs. Os discos também costumam fazer isso quando não estão ocupados; em situações de servidor, os momentos de silêncio nem sempre estão disponíveis; portanto, esse trabalho geralmente não é realizado.

Você cobra seus clientes por suas operações de E / S? Se não, o que os impede basicamente de matar sua parte de um SSD em horas / dias, escrevendo constantemente o tempo todo? Os SSDs são um pouco mais fáceis de matar do que a maioria das pessoas pensaria , especialmente em ambientes pesados ​​de gravação.


Eu estava falando com o 'isso faz sentido zeroing' mordeu Chris, eles são duas coisas diferentes
Chopper3

11
if (time < 9am) chriss_try_again()
Chris S

haha - não se preocupe cara :)
Chopper3

Embora verdade sobre os dados, menos verdade sobre o assassinato. Os "Enterprise Flash Drives" têm uma longevidade e tamanho bastante melhores do que os SSDs de consumo, mas, como os HDDs corporativos, você paga mais por desempenho. Segundo a Seagate, seu ESD "Pulsar" tem uma vida útil de 5 anos, o que equivale a cerca de 6 petabytes de gravações. anandtech.com/show/2739/2 - On Pulsar unidade virtualgeek.typepad.com/virtual_geek/2009/02/... - On EFDs
Daniel B.

3
Conheço Daniel, eu compro muitos SSDs corporativos que coloquei em um ambiente de leitura de mais de 99%, mas quando os testamos, ainda achamos surpreendentemente fácil matá-los, por exemplo, colocamos dois da HP como um par espelhado o disco de log para uma caixa Oracle 10 razoavelmente ocupada e as coisas começaram a dar errado dentro de 4 semanas. Agora, isso foi há ~ 10 meses atrás, por isso não era a versão rebadged da HP dessa unidade Pulsar. 6PB equivale a ~ 38MB / s em 5 anos ou ~ 180MB / s em um único ano - portanto, você não pode usar um Pulsar para capturar um único canal de vídeo em HD sem interromper em menos de um ano.
usar o seguinte comando

3

Portanto, vale a pena ler artigos como este . Se alguém tiver acesso físico ao disco, é mais fácil recuperar informações. Você já pensou em criptografar os dados no SSD e, em seguida, tudo o que você precisa fazer é esquecer com segurança a chave privada, que deve ser um problema mais fácil. Eu vejo o SSD sendo uma grande vitória nos vps devido ao desempenho de acesso aleatório muito melhor.


2

Você definitivamente não deseja usar métodos tradicionais de exclusão de SSDs, como ddzerar dados ou outros métodos que gravam dados aleatórios no disco. Esses métodos são mais adequados para discos baseados em prato. É eficaz para apagar o SSD, mas também utilizará desnecessariamente muitas operações limitadas de gravação do SSD, diminuindo assim a vida útil esperada do SSD. Isso ficaria caro rapidamente. Também pode diminuir o desempenho do SSD ao longo do tempo.

Os SSDs têm métodos diferentes para apagar com segurança. Eu direi que parece ser muito complicado de fazer, porque geralmente você precisa de um certo tipo de controlador SATA que possa executar a emulação IDE, e o procedimento pode ser complicado. Alguns fabricantes fornecem ferramentas para apagar com segurança seus próprios SSDs, mas você também pode fazê-lo com o hdparm no Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Mas você notará nessas instruções que precisa garantir que a unidade não esteja "congelada" antes de prosseguir. Essa é uma das etapas mais difíceis, pois exige encontrar uma placa-mãe e um controlador SATA que permitam "descongelar" a unidade enquanto o sistema é inicializado, o que geralmente envolve desconectá-la do cabo SATA e conectá-la novamente.

De qualquer forma, minha recomendação é fazer sua pesquisa e escolher um SSD que vem com um utilitário de apagamento seguro que pode ser usado em um sistema conveniente para você.


O uso de dd para zerar o disco, contanto que você use um tamanho de bloco adequadamente grande e não o padrão de 512 bytes, não utilizará muitos ciclos de gravação / exclusão. Usará aproximadamente 1. Digo aproximadamente, porque admito que, se o alinhamento do sistema de arquivos estiver incorreto, você pode acabar escrevendo no mesmo bloco flash duas vezes em alguns casos. A utilização dd bs=1Mresultará em desgaste mínimo.
Daniel Lawson

2

Embora uma resposta já seja aceita, acho que blkdiscard /dev/sdXvale a pena mencionar o comando aqui.

De acordo com o Arch Wiki: SSD , o blkdiscardcomando descartará todos os blocos e todos os dados serão perdidos. É recomendável usar antes de "você deseja vender seu SSD".

Não estou familiarizado com o funcionamento do TRIM, por isso não sei se há garantia de que os dados serão apagados. Mas acho melhor do que não fazer nada.

BTW, receio que este comando funcione apenas em um dispositivo inteiro, não em uma única partição.

Espero que isto ajude. :)


blkdiscardparece não ser seguro em todos os casos, porque em TRIMsi é apenas uma solicitação e nem todos os controladores SSD a respeitam. Você pode ler mais sobre isso aqui e aqui . Mas, como explicado lá, o kernel do Linux mantém uma lista branca de quais dispositivos são conhecidos por honrar o TRIM.
Nh2

Portanto, se hdparm -I /dev/theSSDcontiver Deterministic read ZEROs after TRIM, blkdiscarddeve haver zeros rápidos e garantidos sendo lidos posteriormente. Caso contrário, um apagamento seguro parece ser a melhor solução. No entanto, considerando que a pergunta é sobre segurança do cliente, o Secure Erase pode ser a melhor solução, pois parece projetado para esses casos de uso.
Nh2

1

A melhor maneira de limpar dados de uma imagem de máquina virtual é usar o recurso TRIM. Muitos sistemas operacionais mais novos suportam isso. Quase todos os SSDs atuais também são compatíveis.

E o que torna essa opção ainda melhor é que m qualquer SAN também suporta esse recurso com o nome SCSI de UNMAP . É um ótimo comando para SANs que implementam provisionamento esparso, que é um ótimo recurso para máquinas virtuais, especialmente quando combinadas com a desduplicação de bloco.

Quando o comando TRIM é dado a um SSD, o firmware marca imediatamente esses blocos livres para reutilização. Alguns SSDs sempre retornam zeros para blocos TRIM'd . Outras unidades retornarão dados definidos pela implementação (ou seja, aleatórios).

Nos sistemas operacionais que suportam TRIM, uma simples exclusão do arquivo marcará os blocos do TRIM. A operação TRIM real pode ocorrer imediatamente ou pode ser agrupada em lotes para ser executada mais tarde. Às vezes, existem ferramentas que forçam a TRIM de um arquivo ou a varrer uma partição em busca de todos os blocos não utilizados.

O desempenho do TRIM no Linux ainda é fraco, portanto, se você estiver usando isso, desejará investigar suas opções. No Windows, parece bastante sólido.


Desculpe, mas isso não faz nenhum sentido. O TRIM, até onde eu sei, não tem nada a ver com o provisionamento thin, ele simplesmente diz a um SSD para não incomodar os setores de nível de desgaste que não sabe que foram excluídos pelo sistema de arquivos, mas também muito especificamente não o faz. zere os blocos.
precisa saber é o seguinte

@ Chopper3: Você não vê que ATA TRIM e SCSI UNMAP são o mesmo comando? O UNMAP é definitivamente usado no provisionamento dinâmico. O TRIM zera os blocos em pelo menos algumas unidades SSD. Após o TRIM, os dados desaparecem : não há método suportado para recuperá-los, a unidade também pode retornar zeros e alguns o fazem.
Zan Lynx

"a unidade pode retornar zeros" e "os dados são irrecuperáveis" são duas coisas muito diferentes. De qualquer forma, o usuário realmente não quer apagar o SSD, apenas não quer que o próximo cliente consiga obter os dados do cliente antigo, o que também não é a mesma coisa.
Chris S

0

Você precisa de um "SSD Secure Erase Utility". Se você usar algo como ddo nivelamento de desgaste, poderá surgir e você acabará com setores de reserva que ainda contêm dados antigos do cliente. Um utilitário de exclusão segura apaga todos os setores do dispositivo (não apenas aqueles apresentados como um disco no sistema operacional).

Alguns desses utilitários são específicos de um fabricante específico. Peça ao fabricante de sua unidade (s) sua recomendação, eles saberão melhor que nós.


Desculpe, não é isso que estou procurando, pois não pretendo apagar todo o disco. Não estou preocupado com os dados do cliente ainda estarem disponíveis no disco SDD físico - só não quero que outro cliente possa acessar é através do vazamento de dados no LV.
jtnire

0

Eu não acho que escrever 0s o ajudará a impedir que outro cliente leia o disco.

Nos SSDs, quando você escreve algo, o processo é muito diferente de um disco rígido normal.

Imagine a seguinte situação: uma célula de memória "vazia" em uma unidade SSD é preenchida com 1s. Quando você escreve algo, anote os 0s e deixe os 1s inalterados.

Depois, quando você quiser salvar algo diferente, o conteúdo anterior e o novo serão comparados. Se o anterior puder se tornar o novo anotando alguns 0s, ok. Se não for possível, outra célula de memória é usada.

"limpar": 11111111 1º salvamento: 11011011

novos dados: 00110011 não há como fazer com que 11011011 se torne 00110011 (observe que seria necessário virar um de 0 para 1, e não é possível fazer isso em SSDs). Portanto, outra célula de memória será usada.

Ao TRIMAR uma unidade, você redefine todas as células de memória não utilizadas para 1. Portanto, elas ficarão claras para serem usadas novamente. E os dados salvos são preservados.

Para fazer o que você deseja: primeiro, apague (exclua) os arquivos. As células de memória desses arquivos serão marcadas como livres. Então faça um TRIM: todas essas células de memória se tornarão 1s, sem nenhum sinal de dados.


0

Fácil de responder: use o Linux para reformatar a partição como EXT4, que informa ao SSD que todos os blocos estão prontos para serem apagados, como ajustar todos os setores de uma partição. O efeito colateral é um pequeno número de gravações (estruturas EXT4).

Esqueça ˋddˋ aleatoriamente, isso reduzirá muito a vida útil do SSD. Alguns SSD são inteligentes e, se virem um setor cheio de zeros que não escrevem, marcam para apagar.

Como você não pode conhecer os componentes internos dos firmwares, sua melhor opção é reformatar a partição como ext4 (sem reformatar totalmente, apenas uma rápida, apenas estruturas) em um kernel Linux moderno, ele fará um ajuste em toda a partição antes de formatá-lo.

Para todos aqueles que falam sobre apagamento seguro, ou seja, para o SSD inteiro de uma só vez, o que é solicitado é apenas uma partição do SSD e SEM perder o restante das informações armazenadas nele (no nível da partição, não no nível do SSD).

Conclusão: reformate como Ext4; se você precisar de outro formato, reformate novamente em outro formato.

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.