Cero unidades SSD

18

Somos anfitriones de VPS para clientes. Cada VPS del cliente recibe un LVM LV en un disco duro de husillo estándar. Si el cliente se fuera, ponemos a cero este LV asegurando que sus datos no se filtren a otros clientes.

Estamos pensando en utilizar SSD para nuestro negocio de hosting. Dado que los SSD tienen la tecnología de "nivelación de desgaste", ¿eso hace que la puesta a cero no tenga sentido? ¿Esto hace que esta idea de SSD sea inviable, dado que no podemos permitir que los datos del cliente se filtren a otro cliente?

jtnire
fuente

Respuestas:

23

Suponiendo que lo que está buscando evitar es que el próximo cliente lea el disco para ver los datos del antiguo cliente, luego escribir todos los ceros funcionaría. Escribir ceros en el sector 'n' significa que cuando se lee el sector 'n', devolverá todos los ceros. Ahora el hecho es que los datos reales subyacentes aún pueden estar en los chips flash, pero como no puede hacer una lectura normal para obtenerlos, no es un problema para su situación.

ES un problema si alguien puede apoderarse físicamente del disco y desarmarlo (porque entonces podrían leer directamente los chips flash), pero si el único acceso que tienen es el bus SATA, entonces una escritura de todos los ceros al conjunto el disco funcionará bien.

Michael Kohne
fuente
1
Exactamente la respuesta que estaba buscando, y cuando lo pensé, llegué a la misma conclusión :)
jtnire
2
Me imagino (pero no lo sé con certeza, y ciertamente dependería del chipset del controlador que se use en el SSD) que escribir un sector de ceros en un SSD ni siquiera golpearía los chips flash reales. El controlador debe notar que todos son ceros y simplemente marcar ese sector como "puesto a cero" (o simplemente señalarlo a un sector que contenga todos los ceros). Escribir un sector de ceros es una cosa razonablemente común, y una carcasa especial sería una forma barata y fácil de reducir el desgaste del flash, por lo que me sorprendería si al menos Intel y Sandforce no lo hicieran.
poco
20

No rellene con cero un SSD, nunca. Como mínimo, esto desgastará parte de la vida útil de escritura del SSD por poco o ningún beneficio. En el peor de los casos, puede poner el controlador SSD en un estado de rendimiento reducido (temporalmente) .

De esta fuente :

Sobrescribir repetidamente todo el disco con múltiples repeticiones puede destruir con éxito los datos, pero debido a la capa de traducción de firmware (FTL), esto es considerablemente más complicado y lento que en las unidades de disco duro tradicionales. Según sus resultados, es una opción poco atractiva

Su mejor opción, borrado seguro mediante cifrado de disco completo:

Algunas unidades SSD modernas pueden usar cifrado de disco completo; por ejemplo, las nuevas unidades 320 de Intel y algunas unidades de la serie Sandforce 2200. Estas unidades se pueden borrar de forma segura de una manera simple y rápida, sin desgaste de la unidad. El disco utiliza el cifrado AES para todos los datos escritos, por lo que un borrado seguro simplemente significa eliminar la antigua clave AES y reemplazarla por una nueva. Esto efectivamente hace que todos los datos 'viejos' en el disco sean irrecuperables.

Sin embargo, el borrado seguro de Intel no es fácil de automatizar. AFAIK tiene que hacerse desde la aplicación GUI de Windows de Intel, solo se puede ejecutar en una unidad vacía que no sea de arranque, etc. Consulte la página 21 y más en los documentos de Intel.

Su otra opción, borrado seguro ATA:

Otra opción es emitir un comando ATA Secure Erase a través de fx HDPARM en Linux. Esto será mucho más fácil de automatizar mediante secuencias de comandos.

Siempre que la unidad implemente ATA Secure Erase de una manera 'buena', uno debería esperar que al menos elimine la "capa de traducción flash" (FTL). La tabla FTL contiene el mapeo entre los sectores lógicos (que el sistema operativo 've') y las páginas físicas de NVRAM en la unidad misma. Con esta tabla de mapeo destruida, debería ser muy difícil, pero probablemente no imposible, recuperar datos del disco.

Sin embargo, no conozco ningún estudio que haya demostrado que ATA Secure Erase esté implementado de manera consistente y bien en todas las unidades del fabricante, por lo que dudo en decir que siempre funcionará; debe leer la documentación técnica del fabricante.

Para una sola partición:

Mientras leo los comentarios a otras respuestas, parece que OP solo quiere borrar de forma segura particiones individuales. Una buena manera de hacerlo sería crear solo volúmenes cifrados , fx usando LUKS o TrueCrypt . De esa forma, puede borrar el volumen de forma segura tirando la clave de cifrado, de forma similar a lo que hace el esquema de cifrado de disco completo en la unidad.

Conclusión:

Si realmente desea saber, lea el documento vinculado al blog de Sophos y lea las notas técnicas de los fabricantes de unidades con respecto al borrado seguro. Sin embargo, si desea un borrado seguro 'bueno', entonces un SSD con cifrado de disco completo y un borrado y reemplazo seguro de las claves de cifrado es probablemente su mejor opción. Como alternativa, utilice el cifrado a nivel del sistema operativo y deseche la clave cuando desee borrar los datos de forma segura.

Jesper M
fuente
1
La precaución es buena, pero no estoy seguro de que citar un aviso de 2 años sobre un error del controlador que solo surgió en cargas de trabajo muy artificiales en un SSD específico que se ha solucionado hace mucho tiempo debería tener mucho peso.
Daniel Lawson
1
@Daniel Lawson: punto justo. :-) Reescribí esa sección y la cambié a una degradación temporal del rendimiento, y cambié el enlace a una revisión de la unidad M4 / C400 de Crucial (una unidad de envío actualmente) que exhibe una desaceleración importante después de operaciones de escritura intensas.
Jesper M
6

La nivelación del desgaste no tiene nada que ver con la puesta a cero de los datos.

Cero los datos para evitar que otras personas / aplicaciones lean esos datos. Los SSD 'nivelan' sus datos para garantizar que sigan siendo utilizables durante más tiempo debido al 'daño' que la escritura causa en los SSD. Además, los discos suelen hacer esto cuando no están ocupados, en situaciones de servidor, los tiempos de silencio no siempre están disponibles, por lo que este trabajo a menudo no se realiza.

¿Cobran a sus clientes por sus operaciones de IO? Si no, ¿qué es lo que les impide básicamente matar su parte de un SSD en horas / días simplemente escribiendo constantemente todo el tiempo? Los SSD son bastante más fáciles de matar de lo que la mayoría de la gente pensaría , especialmente en entornos de escritura pesada.

Chopper3
fuente
Me
refería a
1
if (time < 9am) chriss_try_again()
Chris S
jaja - no te preocupes amigo :)
Chopper3
Si bien es cierto sobre los datos, menos cierto sobre el asesinato. Las "unidades flash empresariales" tienen una longevidad y un tamaño bastante mejores que los SSD de los consumidores, pero al igual que los discos duros empresariales, usted paga la prima por el rendimiento. Según seagate, su ESD "Pulsar" tiene una vida útil de 5 años, lo que equivale a unos 6 petabytes de escrituras. anandtech.com/show/2739/2 - En Pulsar Drive virtualgeek.typepad.com/virtual_geek/2009/02/… - En EFDs
Daniel B.
3
Conozco a Daniel, compro muchos SSD empresariales que puse en un entorno de lectura de más del 99%, pero cuando los probamos, todavía encontramos sorprendentemente fácil 'matarlos', por ejemplo, colocamos dos HP como un par duplicado como el disco de registro para un cuadro de Oracle 10 razonablemente ocupado y las cosas comenzaron a fallar en 4 semanas. Ahora, esto fue hace ~ 10 meses, por lo que no era la versión reelaborada de HP de esa unidad Pulsar. 6 PB equivale a ~ 38 MB / s durante 5 años o ~ 180 MB / s en un solo año, por lo que no podría usar un Pulsar para capturar un solo canal de video HD sin que se rompa en menos de un año.
Chopper3
3

Por lo tanto, vale la pena leer artículos como este . Si alguien tiene acceso físico al disco, entonces es más fácil recuperar información. ¿Ha considerado encriptar los datos en el SSD y luego todo lo que necesita hacer es olvidarse con seguridad de la clave privada, que debería ser un problema más fácil? Puedo ver que SSD es una gran victoria en vps debido al mejor rendimiento de acceso aleatorio.

James
fuente
2

Definitivamente no desea utilizar métodos tradicionales para borrar SSD, como usar ddpara poner a cero los datos u otros métodos que escriben datos aleatorios en el disco. Esos métodos son más adecuados para discos basados ​​en platos. Es eficaz para borrar la SSD, pero también utilizará innecesariamente muchas de las operaciones de escritura limitadas de la SSD, disminuyendo así la vida esperada de la SSD. Eso se pondría caro rápidamente. También puede disminuir el rendimiento del SSD con el tiempo.

Los SSD tienen un método diferente para el borrado seguro. Diré que parece muy engorroso, porque generalmente necesita un cierto tipo de controlador SATA que puede hacer la emulación IDE, y el procedimiento puede ser complicado. Algunos fabricantes proporcionan herramientas para borrar de forma segura sus propios SSD, pero también puede hacerlo con hdparm en Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Pero notará en esas instrucciones que debe asegurarse de que la unidad no esté "congelada" antes de poder continuar. Este es uno de los pasos más difíciles porque requiere encontrar una placa base y un controlador SATA que le permitan "descongelar" la unidad mientras se inicia el sistema, lo que generalmente implica desenchufarlo de su cable SATA y luego enchufarlo nuevamente.

De todos modos, mi recomendación es hacer su investigación y elegir un SSD que viene con una utilidad de borrado seguro que se puede utilizar en un sistema conveniente para usted.

churnd
fuente
El uso de dd para poner a cero el disco, siempre y cuando use un tamaño de bloque adecuadamente grande y no el predeterminado de 512 bytes, no usará muchos de los ciclos de escritura / borrado. Utilizará aproximadamente 1. Digo aproximadamente porque reconozco que si la alineación de su sistema de archivos es incorrecta, puede terminar escribiendo en el mismo bloque flash dos veces en algunos casos. El uso dd bs=1Mdará como resultado un desgaste mínimo.
Daniel Lawson
2

Aunque ya se acepta una respuesta, creo que blkdiscard /dev/sdXvale la pena mencionar el comando aquí.

Según Arch Wiki: SSD , el blkdiscardcomando descartará todos los bloques y se perderán todos los datos. Se recomienda usar antes de "quieres vender tu SSD".

No estoy familiarizado con el funcionamiento de TRIM, así que no sé si hay una garantía de que los datos se borrarán. Pero creo que es mejor que no hacer nada.

Por cierto, me temo que este comando solo funciona en un dispositivo completo, no para una sola partición.

Espero que esto ayude. :)

mksegv
fuente
blkdiscardparece no ser seguro en todos los casos, porque en TRIMsí mismo es solo una solicitud y no todos los controladores SSD lo cumplen. Puedes leer más sobre esto aquí y aquí . Pero como se explica allí, el kernel de Linux mantiene una lista blanca de los dispositivos que se sabe que cumplen con TRIM.
nh2
Por lo tanto, si hdparm -I /dev/theSSDcontiene Deterministic read ZEROs after TRIM, blkdiscarddebe ser rápido y garantizar la lectura de ceros después. De lo contrario, un borrado seguro parece la mejor solución. Sin embargo, dado que la pregunta es sobre la seguridad del cliente, Secure Erase podría ser la mejor solución porque parece diseñada para tales casos de uso.
nh2
1

La mejor manera de eliminar datos de una imagen de máquina virtual es utilizar la función TRIM. Muchos sistemas operativos más nuevos lo admiten. Casi todos los SSD actuales también lo admiten.

Y, lo que hace que esta opción sea aún mejor es que cualquier SAN también admite esta función bajo su nombre SCSI de UNMAP . Es un gran comando para las SAN que implementan un aprovisionamiento disperso, que es una gran característica para las máquinas virtuales, especialmente cuando se combina con la desduplicación de bloques.

Cuando se da el comando TRIM a un SSD, el firmware marcará inmediatamente esos bloques libres para su reutilización. Algunos SSD siempre devolverán ceros para los bloques TRIM . Otras unidades devolverán datos definidos por la implementación (es decir, aleatorios).

En los sistemas operativos que admiten TRIM, una simple eliminación del archivo marcará los bloques para TRIM. La operación TRIM real puede ocurrir de inmediato o se puede agrupar para realizar más tarde. A veces hay herramientas que obligarán a RECORTAR un archivo o escanear una partición en busca de todos los bloques no utilizados.

El rendimiento de TRIM en Linux sigue siendo irregular, por lo que si está utilizando eso, querrá investigar sus opciones. En Windows parece bastante sólido.

Zan Lynx
fuente
Lo siento, pero esto no tiene ningún sentido. TRIM no tiene nada que ver con el aprovisionamiento delgado, simplemente le dice a un SSD que no moleste a los sectores de nivelación de desgaste que no sabe que han sido eliminados por el sistema de archivos, y muy específicamente no Cero bloques.
Chopper3
@ Chopper3: ¿No puede ver que ATA TRIM y SCSI UNMAP son el mismo comando? UNMAP definitivamente se usa en el aprovisionamiento delgado. TRIM hace cero bloques en al menos algunas unidades SSD. Después de TRIM desaparecer los datos : no hay un método compatible para recuperarlos, la unidad también podría devolver ceros y algunos lo hacen.
Zan Lynx
"la unidad también podría devolver ceros" y "los datos son irrecuperables" son dos cosas muy diferentes. En cualquier caso, el usuario en realidad no quiere borrar el SSD, simplemente no quiere que el próximo cliente pueda obtener los datos del cliente anterior, que tampoco es lo mismo.
Chris S
0

Necesita una "Utilidad de borrado seguro SSD". Si usa algo como ddla nivelación de desgaste puede entrar en acción y terminará con sectores de reserva que todavía contienen datos antiguos del cliente. Una utilidad de borrado seguro borrará todos los sectores del dispositivo (no solo los presentados como un disco para el sistema operativo).

Algunas de estas utilidades son específicas de un fabricante en particular, solicite al fabricante de su (s) unidad (es) su recomendación, lo sabrán mejor que nosotros.

Chris S
fuente
Lo siento, esto no es lo que estoy buscando, ya que no estoy buscando borrar todo el disco. No me preocupa que los datos del cliente sigan estando disponibles en el disco SDD físico, simplemente no quiero que otro cliente pueda acceder es a través de la fuga de datos en su LV.
jtnire
0

No creo que escribir 0 le ayude a evitar que otro cliente lea el disco.

En SSD, cuando escribe algo, el proceso es muy diferente de un disco duro normal.

Imagine la siguiente situación: una celda de memoria "vacía" en una unidad SSD está llena de 1s. Cuando le escribes algo, escribe los 0 y deja los 1 sin cambios.

Después, cuando desea guardar algo diferente, se compara el contenido anterior y el nuevo. Si el anterior puede convertirse en el nuevo escribiendo algunos ceros, está bien. Si no es posible hacer eso, se usa otra celda de memoria.

"borrar": 11111111 1er guardado: 11011011

nuevos datos: 00110011 no hay forma de hacer que 11011011 se convierta en 00110011 (tenga en cuenta que sería necesario convertir un 0 a 1, y no es posible hacerlo en SSD). Entonces, se usará otra celda de memoria.

Cuando CORTE una unidad, está restableciendo todas las celdas de memoria no utilizadas a 1. Por lo tanto, estarán claras para ser utilizadas nuevamente. Y los datos guardados se conservan.

Para hacer lo que quiera: primero, borre (elimine) los archivos. Las celdas de memoria para esos archivos se marcarán como libres. Luego haga un TRIM: todas esas celdas de memoria se convertirán en 1, sin ningún signo de datos.

woliveirajr
fuente
0

Fácil de responder: use Linux para reformatear la partición como EXT4, que le dice a SSD que todos los bloques estén listos para borrarse, como hacer un recorte en todos los sectores de una partición. El efecto secundario es un pequeño número de escrituras (estructuras EXT4).

Olvídese de ˋddˋ con aleatorio, eso reducirá mucho la vida útil de SSD. Algunos SSD son inteligentes y si ven un sector lleno de ceros que no escriben, lo marcan para borrarlo.

Dado que no puede conocer las partes internas de los firmwares, su mejor opción es volver a formatear la partición como ext4 (sin formateo completo, solo una rápida, solo estructuras) en un kernel moderno de Linux, hará un recorte en toda la partición antes de formatearlo.

Para todos aquellos que hablan de borrado seguro, es decir, para SSD completo a la vez, lo que se pide es solo una partición del SSD y SIN perder el resto de la información almacenada en él (nivel de partición, no nivel de SSD).

Conclusión: vuelva a formatear como Ext4, luego, si necesita otro formato, vuelva a formatearlo en ese otro formato.

Laura
fuente