¿Cómo actualizo el estado magnético en discos con copias de seguridad?


8

Tengo un par de discos grandes con material de copia de seguridad / archivo en ellos. Son ext4 . Con respecto a los que se almacenarán durante un par de años sin volver a leer el disco completo, he estado pensando en una forma de actualizar el estado magnético de los discos. La vida útil de las unidades parece ser un tema de debate en todas partes donde he estado buscando una respuesta, pero parece que después de un par de años (digamos 5 o más) de almacenamiento, sería aconsejable actualizar los datos de alguna manera (? )

He visto esto sugerido:

dd if=/dev/sda of=/dev/sda

¿Es seguro? ¿Es útil?

Lo que estoy buscando hacer es algo más que a fscko a dd if=/dev/sda of=/dev/null, los cuales probablemente descubrirán interrupciones magnéticas existentes en el disco.

Lo que quiero hacer es actualizar los datos magnéticos antes de que las cargas magnéticas en el disco bajen por debajo de un nivel legible. ¿Cómo puedo hacer esto?

Respuestas:


8

En general, no se puede actualizar todo el disco sin leerlo / escribirlo todo. fsckes poco probable que proporcione lo que necesita: funciona con el sistema de archivos, no con el dispositivo subyacente, por lo tanto, solo escanea los metadatos del sistema de archivos (inodos y otras estructuras del sistema de archivos).

badblocks -npodría ser una opción para dd if=X of=X. En cualquier caso, es probable que desee utilizar bloques grandes para acelerar las cosas (por ddejemplo bs=16M, para badblocksleer -b 16777216, o -b $((1<<24))en conchas razonables). Probablemente también quieras usar conv=fsynccon dd.

En cuanto a la seguridad ddcon el mismo dispositivo de entrada y salida: lee el bloque de la entrada y lo escribe en la salida, por lo que debe ser seguro (he reencriptado una partición encriptada como esta en varias ocasiones, creando dispositivos de bucle con el mismo dispositivo subyacente y contraseñas diferentes y luego ddde una a la otra), al menos para algunos tipos de medios físicos: por ejemplo, con unidades de disco no es obvio para mí, que es 100% a prueba de fallas.


¡Gracias por tu respuesta! Entonces conv=fsync, "escribe físicamente los datos del archivo de salida y los metadatos antes de terminar", ¿qué significa esto? ¿Es más seguro o por qué lo usaría?
PetaspeedBeaver

1
Esperaría que se asegurara de que todos los cachés del núcleo se vacíen a los medios antes de salir. Como solo está reescribiendo los mismos datos, en realidad no debería importar tanto. Simplemente asegura que, cuando ddfinalice, puede desconectar (bueno, puede haber un caché en el HDD, pero eso está fuera de la jurisdicción del software).
Peter

En resumen, el ddcomando completo debería ser algo así como dd if=/dev/sda of=/dev/sda bs=16M conv=fsyncmás, tal vez también status=progresspara mostrar el progreso. Esto llevará un tiempo, dependiendo del tamaño y la velocidad de la unidad. Supongo que cancelar este proceso intermedio con, por ejemplo, Ctrl + C es seguro.
Martin Spacek

1
Sí, interrumpir todo el proceso de cualquier manera debería ser, en teoría, seguro. Al menos para un accionamiento magnético giratorio sin tejas , esta es un área donde el principio físico y la tecnología exactos utilizados son importantes.
Peter

1

No conozco una manera de hacer esto con ninguna herramienta nativa desde * nix, pero algo que he hecho durante varios años es ejecutar un producto llamado Spinrite de GRC.com .

Tiene algunos modos, uno de ellos es para actualizar la superficie / datos ejecutando a través de cada sector invirtiendo el estado de cada bit varias veces y luego volviendo a ponerlo como estaba.

Lo ejecuto así varias veces al año en mis discos, y no es que quiera decir esto en voz alta, pero siento que tengo muy pocos problemas con mis discos duros, y hay bastantes.

Cuesta alrededor de $ 80-90 IIRC pero ese costo es relativo dependiendo de lo que creas que valen tus datos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.