¿Existe una manera más rápida de verificar que una unidad se haya puesto completamente a cero?

¿Existe una manera más rápida de verificar que una unidad se haya puesto completamente a cero?

En los próximos meses, necesitaré poner a cero muchos discos. Después de borrar cada unidad, necesito una forma rápida de asegurarme de que la unidad esté completamente llena de ceros.

Podría abrir cada uno en un editor hexadecimal, pero todo lo que esto hace es permitirme ver que ciertas partes se han puesto a cero, lo cual es cada vez más inútil cuanto más grande se vuelve una unidad, ya que no verifica con seguridad que no haya ningún error. No existen caracteres en él.

Decidí ejecutar algunos puntos de referencia para probar algunas herramientas que encontré. Cronometré cada herramienta en una serie de 3 ejecuciones separadas para verificar el borrado del mismo disco de 1 TB, y cada ejecución se ejecutó durante la noche con la misma carga del sistema. Para lidiar con el almacenamiento en caché, cada ejecución ejecutó las herramientas en posiciones aleatorias, con un descanso de al menos 500 segundos entre cada una.

A continuación se muestra la ejecución promedio de cada herramienta en las 3 pruebas, ordenadas de la más lenta a la más rápida.

De mi parte:

time hexdump /dev/sda

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
e8e0db6000

real    284m35.474s
user    223m4.261s
sys     2m49.729s

DeGordon Davisson:

time od /dev/sda

0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
16434066660000

real    148m34.707s
user    77m10.749s
sys     2m54.611s

Deneal:

time cmp /dev/zero /dev/sda 

cmp: EOF on /dev/sda

real    137m55.505s
user    8m9.031s
sys     3m53.127s

Debarbudo:

time badblocks -sv -t 0x00 /dev/sda

Checking blocks 0 to 976762583
Checking for bad blocks in read-only mode
Testing with pattern 0x00: done
Pass completed, 0 bad blocks found. (0/0/0 errors)

real    137m50.213s
user    5m19.287s
sys     4m49.803s

Dehennes:

time dd if=/dev/sda status=progress bs=4M | tr --squeeze-repeats "\000" "D"

1000156954624 bytes (1.0 TB, 931 GiB) copied, 8269.01 s, 121 MB/s
238467+1 records in
238467+1 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 8269.65 s, 121 MB/s
D
real    137m49.868s
user    27m5.841s
sys     28m3.609s

DeBeto1 :

time iszero < /dev/sda

1000204886016 bytes processed
0 nonzero characters encountered.

real    137m49.400s
user    15m9.189s
sys     3m28.042s

Incluso la más rápida de las herramientas probadas parece alcanzar un límite de 137 minutos, que son 2 horas y 16 minutos, mientras que un borrado completo del disco promedia solo 2 horas y 30 minutos.

Esto es lo que me impulsó a hacer esta pregunta: parece que debería ser posible que una herramienta de este tipo seaal menos la mitadla velocidad que se necesita para borrar una unidad, dado que solo es necesario leer y no escribir en el disco.

¿Existe una solución alternativa y más rápida a lo anterior?

En un mundo ideal, la solución que estoy buscando leería todo el disco e imprimiría cualquier carácter distinto de cero que encontrara, tal como el programa C++ de Bob. Esto me permitiría regresar y borrar selectivamente cualquier byte distinto de cero en lugar de todo el disco. Sin embargo, esto no sería un requisito estricto si la herramienta fuera muy rápida leyendo el disco.


1. Este es un programa C++ escrito por Bob, con el tamaño del búfer aumentado a 4194304 (4 MiB) y compilado con:

g++ -Wl,--stack,16777216 -O3 -march=native -o iszero iszero.cpp

Respuesta1

Las velocidades de lectura y escritura de los discos duros magnéticos son aproximadamente las mismas. Lo mismo se aplica a las unidades de cinta, RAM, CD-/DVD-/BD-R e incluso a los disquetes. Con los medios giratorios, depende principalmente de la velocidad con la que se mueven los datos debajo de los cabezales (o conjuntos láser para unidades ópticas). Si la lectura y la escritura no fueran a la misma velocidad, tendría que girar hacia arriba (o hacia abajo) el medio para cambiar de lectura a escritura y viceversa.

La lectura significativamente más rápida que la escritura es una cuestión de memoria flash.

información relacionada