2011-06-16

Discos duros dañados, salvar datos y huir de SpinRite

Últimamente me he encontrado a gente hablando de usar SpinRite para recuperar discos duros (incluso en Macs!), así que quizás ayude si cuento mi experiencia.

Hace unos años (quizás 5?), el disco duro de mi iMac G3 de por entonces empezó a fallar. El ordenador se quedaba de repente congelado, sin responder a nada durante alrededor de 10 minutos, y luego de repente continuaba funcionando como si nada. Si recuerdo correctamente, las pausas siempre eran igual de largas, y ni siquiera respondía al ratón. No recuerdo si el disco hacía algún ruido extraño.

Cómo supe que era el disco duro? Probé con algún CD o DVD de Linux y todo parecía ir bien, excepto al acceder al disco duro.

Quería sacar los datos, así que empecé a buscar posibilidades. Una cosa que encontré fue SpinRite, que según lo que decía en su página web, sonaba a magia... lo cual en cosas de informática no es buena señal, creo yo. Se supone que SpinRite "revive" el disco duro. Pero bueno, llevaba tiempo con curiosidad, y tenía acceso a un PC y al programa, así que metí en él el disco duro y lo probé.
Lo dejé trabajar más de 24 horas, y sólo había recorrido unas cuantas KB de los alrededor de 100 GB que tenía el disco duro.
Lo paré y volví a empezar, esta vez esperando sólo unas 6 horas, pero seguía atascándose en el mismo punto. A ese ritmo tardaría meses en acabar (si es que acababa!), así que pasé a intentar otras cosas. Pero vamos, que por de pronto mi recomendación es clara: no perder el tiempo con SpinRite. Si tienes suerte sólo es una pérdida de tiempo; pero si no tienes suerte, todo lo que intenta hacer en el disco duro sólo lo acabará de estropear. (ya que cuando un disco duro empieza a fallar por algo mecánico, irá de mal en peor, así que hay que darse prisa para salvar lo que puedas)

Al final usé un LiveCD o LiveDVD de Linux (Knoppix primero y Ubuntu después), que llevaba dd_rescue y ddrescue (y si no los llevaba no eran muy difíciles de meter con un pendrive o de descargar de la red, no recuerdo ahora). Se llaman así porque dd es la herramienta básica y tradicional en unixes para copiar discos al más bajo nivel, pero que si encuentra errores se para. ddrescue es como dd pero si encuentra fallos intenta continuar. Y dd_rescue (nombre parecido pero herramienta bastante diferente) no sólo resiste fallos sino que cuenta con ellos, y hace lo posible por salvar la mayor cantidad de datos en el menor tiempo: si encuentra un error, salta adelante en el disco hasta encontrar una zona sin fallos y sigue leyendo; lee hacia delante y hacia detrás desde cada punto del disco (porque a veces eso ayuda); y recuerda todos los saltos dados para recomponer una imagen de disco lo más utilizable posible.

Por qué es importante lo de los saltos? Porque como he dicho, cada vez que el disco intentaba leer en un punto con errores, había un timeout de minutos. Y había muchos errores salpicados por el disco, así que cualquier intento de leer a lo loco se hacía imposiblemente lento. Además, acabé descubriendo que parte del problema era que para mejorar la velocidad (caché de lectura/read-ahead) el OS y el propio disco normalmente intentan leer bloques grandes del disco, en vez de sectores (que son sólo 512 bytes). Y en realidad cada sector con problemas tenía un timeout de quizás 2 segundos. Pero es típico que los sectores dañados están juntos, así que una lectura de digamos 8 MB (que parece un valor típico) podía estar tropezando con cientos de sectores dañados, multiplicando los tiempos de espera; por eso puede ser útil acercarse a un punto dañado "desde atrás", para tropezar sólo con un sector dañado en vez de con muchos.

Y no sólo eso, sino que además es posible desactivar los cachés y read-ahead con hdparm en Linux. Así que, añadiendo a dd_rescue la configuración del disco con hdparm para minimizar los timeouts, pude acabar de salvar más del 80% del disco en unas pocas horas.
dd_rescue sigue intentando leer las partes dañadas para extraer todo lo posible, pero llegó un momento en que el disco duro ni siquiera respondia ya. Quizás si no hubiese perdido tiempo con SpinRite hubiese conseguido sacar más, quién sabe.

Después de todo esto acabé con una imagen de disco, que pude montar en OS X con hdiutil (creo recordar, eran tiempos de OS X 10.3 o 10.4) y semiarreglar con DiskWarrior. Aunque creo que también usé Data Rescue II para rebuscar ficheros sueltos, aunque eso ya es a lo desesperado y sin garantías de que valga la pena (porque los ficheros recuperados pueden estar corruptos). Aconsejable si tenías ficheros sueltos que aprecies, ya sean documentos o fotos; pero las cosas que iban en directorios (por ejemplo, programas) mejor darlos por perdidos, aunque a veces hay alguna sorpresa.
En vez de Data Rescue II creo que también probé otras herramientas, pero Data Rescue II fue lo mejor al final. Photorec es una opción, y gratis/open source; creo que la descubrí cuando ya había acabado con Data Rescue.

Cosas que aprendi con todo esto:
  • los discos duros fallan. Sin más.
  • Hacen falta backups. 
  • Linux da un nivel de control impagable para arreglar discos duros fallados. 
  • Se pueden salvar muuuchas cosas con herramientas gratuitas. 
  • Cuando el disco duro empieza a fallar mecánicamente, hazte a la idea de que tiene las horas contadas (literalmente!), y piénsate bien cómo las usas para salvar lo que puedas. 
  • Usar SMART puede avisarte con algo de tiempo de que el disco va a fallar.

Respecto a SMART, smartmontools (open source, disponible en macports) hace de todo: desde chequeos puntuales hasta tests en profundidad periódicos. Pero ojo, han habido un par de estudios (hechos por Google y otra empresa, analizando fallos en miles de discos de varios fabricantes) en que la conclusión es que SMART sólo detecta alrededor del 50% de los fallos. Pero eso sí, cuando avisa, al disco duro le quedan menos de 24 horas.
Y en cualquier caso para que SMART chequee todo lo que puede chequear hace falta usar sus tests periódicamente, como hace smartmontools (si lo configuras como toca).
Pero de todas formas, desde que pasó todo esto, me han fallado 2 discos duros más y SMART no avisó pese a los tests y bla bla bla. En fin, es gratis... menos da una piedra, supongo.
Ah, y aún no he visto ninguna caja externa que dé acceso a SMART. Y eso que tengo 5 (USB y Firewire, y de diferentes marcas).

Más cosas: cuando un disco duro "moderno" (los PATA ya contaban como "modernos"!) detecta que un sector está fallando, intentará recuperar la información automáticamente (por ejemplo repitiendo la lectura de un sector que da errores de lectura), y si lo consigue, lo substitutye por otro sector sano; los discos duros llevan ocultos unos cuantos sectores de reserva para ello. Esto sucede en el disco duro por sí mismo, sin que el OS haga nada. Cuando un sector realmente no se puede leer tras varios intentos, es cuando empezamos a recibir errores de lectura en el OS. Y en esa situación una posibilidad para ayudar a arreglarlo es escribir ceros en ese sector, lo cual puede hacerse sobreescribiéndo el fichero afectado con ceros, ... o simplemente formateando todo el disco (con ceros! ojo, que hay programas de formateo que no usan ceros! El de DOS por defecto no lo hace, el de Windows XP creo que tampoco, OS X tiene la opción). Cuando la unidad detecta la escritura de ceros, aprovecha para substituir los sectores dañados que tenía pendientes de leer, de forma que ya no darán problemas.
...pero en cualquier caso la existencia de esos fallos eso ya debería ser una mala señal sobre el futuro del disco!
Con smartmontools se puede consultar la lista interna de la unidad que dice cuántos sectores están en esa situación de mala lectura/esperando substitución. Si no recuerdo mal, si ese valor es mayor de 0, puede ser porque ya no quedan sectores de reserva para la substitución, ... así que la cantidad de errores seguirá aumentando. Hora de preparar un disco nuevo.

Y volviendo a SpinRite: hay bastante gente online diciendo que va muy bien. Pero también hay mucha gente que cree en el horóscopo, y eso no hace que sea verdad. Y es interesante que normalmente la gente que está en contra de SpinRite son los que saben explicarse técnicamente. Es decir: la presentación oficial de SpinRite suena a basura de Teletienda, y los argumentos de la gente que lo defienden suenan también casualmente a "happy customers" de Teletienda (cosas como "hazme caso, soy informático en una gran empresa y SpinRite ha salvado mi culo más veces de lo que puedo recordar, te lo recomiendo, no te arrepentirás!": explicaciones muy técnicas, vamos). Me imagino que a veces puede ayudar, porque lo que hace SpinRite es básicamente lo mismo que he explicado de la lectura repetida de sectores y escribir ceros en sectores fallados. Pero lo hace de una forma absurdamente basta, provocando enormes timeouts, repitiendo cada operación varias veces incluso cuando es contraproducente, afectando igual a sectores sanos y dañados, ... y encima es de pago, cuando el mismo efecto lo puedes conseguir con herramientas gratuitas o incluso incluidas por defecto en el sistema.

Y por último, SpinRite hace una cantidad de estupideces asombrosa para dar la sensación de que hace algo realmente mágico. Parece que es el estilo general del autor ( www.grc.com ), que ya ha dado la nota alguna vez en otros temas, como cuando intentó convencer al mundo que un bug del formato WMF en Windows era una conspiración de Microsoft para controlar todos los PCs. Por suerte de vez en cuando hay alguien que da una referencia para ponerle en su sitio... como cuando un desarrollador de Snort desmontó las tonterías que decía sobre escaneo de redes.

13 comments

  1. Spinrite es muy efectivo, pero si no tienes paciencia para usarle pues.. es una pena que hagas mala publicidad sobre el, osea que gente, hagan su propia idea antes de decidir !! saludos

    ReplyDelete
  2. Me alegro de que Spinrite fuese muy efectivo para ti. Para mi fue totalmente inútil, como puedes ver en mi explicación.

    Y no se trata de mi paciencia, sino de la paciencia que tenga el disco duro que está fallando. Y el problema es que suelen tener muy poquita. Así que Spinrite me hizo perder 30 horas en un disco duro que estaba muriendo. Quizás si no hubiese esperado a Spinrite hubiese podido salvar más del 80% del disco? Nunca lo sabré... Y por eso nunca volveré a arriesgarme a perder el tiempo con "magia" como la de Spinrite.

    ReplyDelete
  3. Ahora que has salvado el 80% del disco duro deberías probar Spinrite *DE NUEVO*, a ver si mejora algo.

    ReplyDelete

  4. Todo esto sucedió hace unos años, como sabrías si hubieses leído el post antes de comentar.

    En todo caso, cuando acabé con el disco duro, ya ni siquiera era visible para el ordenador. No recuerdo si ni siquiera aparecía como un dispositivo (ni siquiera en la BIOS) o si al poco de hacer cualquier cosa con él se ponía a hacer ruidos mecánicos y desaparecía del bus - las dos cosas me han pasado con diferentes discos. Así es como suelen morir los discos duros en mi experiencia, y por eso hay que sacar la información antes de que se ponga imposible.

    ¿O quizás esperas que SpinRite sea tan tan TAN mágico que incluso eso lo arregle? ;P

    ReplyDelete
  5. Completamente de acuerdo en todo lo que dices, que gran experiencias acabas de compartir y gran ayuda para aclararle el camino a otros. Y es una lástima que hayas tenido que pasar por una perdida para poder descubrirlo. Pero me ha servido de mucho para no tropezar con esta herramienta, Gracias MIL!
    En mi experiencia no manejo Linux, a pesar de que siempre he escuchado de los que saben, al igual que tu, que es lo mejor cuando se habla de recuperar datos protegiendo un poco la integridad de lo que aún se puede salvar. Y quería preguntarte, a falta de linux si ya conoces de alguna otra herramienta que me pueda ayudar con un disco duro que está en sus últimos días, aunque no del todo, ya que aún sube al o.s. de windows 7. O si hay alguna versión de linux que no sea complicada para iniciarse y hacerlo por la via linux, en la cual confío a ciegas, por la contundente experiencia de otros.
    Gracias Y un saludo desde Rep. Dominicana!!!

    Alejandro

    ReplyDelete
  6. Alejandro,

    Perdona, pero acabo de ver tu comentario. Parece que no recibí aviso en su momento.

    En fin, supongo que es demasiado tarde para tí, pero por si le sirve a alguien con la misma pregunta, te respondo: no conozco ninguna herramienta para hacer estas cosas en otros sistemas. Hace años DiskWarrior salvó un disco duro de Mac OS X (filesystem HFS+), y lo recomiendo, pero eso no era un fallo de hardware. No sé si sigue existiendo ni si sería bueno en esa situación.

    Hay distribuciones de Linux especializadas para salvar discos y arreglar problemas. Seguramente necesitarás tener idea de qué estás haciendo, pero las herramientas en sí son fáciles de utilizar. Que no te dé miedo que sea Linux! Los tiempos en que Linux tenía mala fama han pasado.

    Además, piensa que muchas veces un Windows o un Mac OS X se cuelga o se comporta "raro" cuando un disco está fallando. El sistema no sabe cómo reaccionar ante los fallos, y simplemente reintenta y reintenta acceder al disco. Linux normalmente haría lo mismo; pero al menos con Linux puedes decidir exactamente qué quieres hacer, y conseguir que el sistema te ayude en vez de quedarse "tonto". Ese nivel de control difícilmente lo conseguirás con Windows o Mac OS X. El mejor ejemplo que se me ocurre es lo que he comentado que hice con hdparm para que el disco duro hiciese exactamente lo que yo quería, evitando cache, read-ahead, etc etc.

    ReplyDelete
  7. Una curiosidad: me ha pasado un par de veces encontrarme por las internetes a alguien mencionando a Steve Gibson en el lugar más insospechado - y raramente de forma positiva. El tío se mete en cualquier cosa, y siempre con el mismo desparpajo, así que nunca sabes por dónde saldrá.
    Y eso me ha pasado hoy: en una discusión en la lista de correo de la librería FreeType, en que se discutía sobre la importancia (o no) de las patentes de Microsoft en su ClearType, el desarrollador de FreeType tenía un comentario sobre Steve "Boca Grande" Gibson… :D
    http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html

    ReplyDelete
  8. Estoy de acuerdo con el primer comentario.

    Spinrite es muy efectivo en lo que hace, la culpa es tuya por ser tan noob y no darte cuenta que tu disco duro estaba muriendo.

    Un buen IT hubiera utilizado otras herramientas para detectar si un disco duro está proximo a morir y entonces hacer lo que se hace en esos casos (como HDD Sentinel y leer los SMART y un HDD Scan para ver la forma en que accede al HDD y escuchar por ruidos raros provenientes del disco).

    Es una lastima que le hagas mala publicidad a un producto que quizas sea unico en su clase solo porque fuiste muy noob :(

    Spinrite hace a grandes rasgos un formateo normal o de bajo nivel a tu disco duro pero sin perder la información que ya tiene, lo cual renueva el performance del disco duro y en algunos sectores llega a recuperar la informacion dañada cuando no estan marcados como dañados (HDD Regenerator solo recupera sectores marcados como dañados, importandole un bledo el resto de los sectores que no lo estén).

    Cuando usar un spinrite ?
    Cuando requieras revitalizar tu información sin perder la información.
    Un ejemplo "clasico" son las PCs que solo tienen 1-2gb de RAM y están usando Windows 7. Con los años, la sobrepaginación tendrá muy "sucio" el disco duro, degradando su performance de un 30mb/s a un 1-5mb/s en algunos casos. Entonces es cuando spinrite hace su magia.
    Claro, lo ideal es respaldar y formatear... pero ¿ y si no dispones de las herramientas necesarias ? (que estés de viaje y no tengas ni una memoria usb, ni cd's virgenes, mucho menos otro disco duro), entonces ahi puede entrar spinrite a hacer su magia en una noche.


    No he leído tu blog pero con articulos asi, mejor deberías bloggear de otras cosas, cosas del estilo de "como hervir agua sin quemarla".

    ReplyDelete
  9. Supongo que "un buen IT" para ti es alguien que no sólo se para a "escuchar por ruidos raros", sino que paga por herramientas que hacen menos que las alternativas open source (como HDD Sentinel vs smartmontools), y que habla de "formateo de bajo nivel" en 2015 - aunque es algo que dejó de tener sentido en la década de los 90.

    Adivino que a ese "buen IT" también le parece que la teletienda de las 3 de la mañana está llena de grandes oportunidades!

    En fin, a ese "buen IT" le recomendaría que googlee "zero fill drive". O directamente mira lo que dicen los fabricantes de discos duros, como Seagate: http://knowledge.seagate.com/articles/en_US/FAQ/203931en

    Y también debería aclararse las ideas sobre "sobrepaginación", funcionamiento de memoria virtual, rendimiento… Y luego, buscar la relación entre esas cosas y formato/formateo del disco duro. Bueno, le daré una pista a ese "buen IT": no hay (casi) relación.

    En fin, buena suerte. La necesitarás, sobre todo si planeas usar la magia de SpinRite. ;)

    ReplyDelete
  10. Suerte necesitas tú :), que con claras muestras de que tu disco duro esta fallando aun te pones a estresarlo /duh:

    >el disco duro de mi iMac G3 de por entonces empezó a fallar. El ordenador se quedaba de repente congelado, sin responder a nada durante alrededor de 10 minutos
    (unos pocos sectores dañados no hacen eso)

    >No recuerdo si el disco hacía algún ruido extraño.
    (se nota que ni le prestaste atención)

    >Quería sacar los datos, así que empecé a buscar posibilidades.
    (¿tu primera opción un programa que desconoces ? ¿Sin revisar primero el registro de SMART y ver que tantos sectores dañados tiene antes de ponerte a recuperar la info ? Triple DUH)

    >Lo dejé trabajar más de 24 horas, y sólo había recorrido unas cuantas KB de los alrededor de 100 GB que tenía el disco duro.
    (Un sector dañado se recupera entre 1 y 5 minutos, quiere decir que tu disco duro estaba atascadisimo de sectores dañados, ¿cómo es posible que lo dejaras continuar por mas de media hora?!!!)

    Eso de hacer las cosas sin comprender completamente la situación es de noobs =)

    Que bueno que creas que ha dejado de tener importancia en el 2015, puesto que la herramienta fue creada hace mas de 10 años y explica como entiendes a profundidad el funcionamiento de un disco duro con un solo parrafo de de texto sin referencias ni detalles tecnicos.

    Menos mal que como buen IT tenias multiples copias de respaldo de tu importante información y no tuviste que hacer circo maroma y teatro para recuperar TÚ información.

    Interesante que creas que no existe relación entre el exceso de uso de la memoria virtual (aka paginación para Mijail) y el rendimiento del sistema. ¡Aplausos! ¿Para que comprar mas memoria ram, sí podemos aumentar el archivo de paginación? Total, "no hay (casi) relación"

    Por ultimo, siento pena por ti. Desconoces la diferencia de rendimiento de un disco duro antes y despues de un format, creyendo que como solo se cambia la informacion de un XX a un 00 el rendimiento será el mismo.

    Y ahí te ves. Si algo me da mas hueva que un noob, es un noob que siente que tiene la razón mientras usa un desarmador plano para desatornillar un torx y termina barriendo el tornillo.

    ReplyDelete
  11. >(unos pocos sectores dañados no hacen eso)
    Sí, lo hacen. Si te hubieses parado a leer antes de responder, quizás lo hubieses entendido. O eso espero.

    >(se nota que ni le prestaste atención)
    Si no hubiese prestado atención no hubiese pensado en nombrarlo, no crees?
    Cuando escribí este artículo, hacía más de 5 años desde que había sucedido todo, y desde entonces he tenido que pelearme con otros discos duros. Algunos fallaron silenciosamente, otros hacían todo tipo de ruidos. No recuerdo cómo falló aquél disco de hace casi 10 años. Lo siento. Podrás soportarlo?
    Lo interesante es que esos otros discos fallados desde entonces los he podido recuperar usando las herramientas open source que ya he comentado aquí. Por suerte la magia de SpinRite no fue necesaria. Qué alivio, no?

    >(Un sector dañado se recupera entre 1 y 5 minutos, quiere decir que tu disco duro estaba atascadisimo de sectores dañados, ¿cómo es posible que lo dejaras continuar por mas de media hora?!!!)
    Bueno, voy a intentar explicártelo despacito. Parece que no has leído todo el artículo, así que a ver si ahora lo consigues. Ánimo!
    Primero que nada: no sé qué significa para tí un "sector dañado". Si un sector tiene un problema fácilmente recuperable, entonces se recupera en pocos segundos (porque ése es el timeout típico de discos duros para usuarios domésticos), y esa recuperación la hace automáticamente el firmware del disco duro: se usa la corrección de errores interna del disco y el usuario generalmente ni se entera.
    Pero si mientras la unidad está intentando leer y releer el sector problemático llega el timeout, entonces la unidad sólo manda al Sistema Operativo un error. Y el SO tiene que reaccionar. Y muchas veces esa reacción es simplemente volverlo a intentar. Y a veces hay suerte y eso funciona, oye!
    Pero si el problema de la unidad es serio, entonces reintentarlo no sirve de nada.

    Así que llegamos a que un sector puede comportarse de dos formas:
    1) se recupera automáticamente en pocos segundos (yo no recuerdo que nunca costase más de 1 segundo en mis casos). Esta recuperación la hace automáticamente la unidad de disco.
    2) no se recupera por mucho que lo intentes.

    Resumiendo: si lo configuras todo correctamente, leer sectores problemáticos (o intentarlo al menos) es relativamente rápido: cosa de un segundo. Si no lo configuras todo correctamente, se vuelve lento, porque el SO reintenta leer, la unidad añade sus reintentos, los caches del SO y de la unidad intentan leer sectores que no te interesan y que a su vez también pueden estar dañados... así que se convierte en minutos.
    Pero aún puede ser peor: puede ser que uses una herramienta inútil que lo único que hace es repetir, y repetir, y repetir, y repetir, sin cambiar nada, sin intentar seguir adelante y salvar ALGO en vez de insistir en lo imposible. Suena tonto, no? Pues eso es exactamente lo que hace SpinRite.

    Y volviendo a tu pregunta: cómo es posible que lo dejase más de media hora? Porque confiaba en que SpinRite usaría su magia! Pero no lo hizo :/. Estoy de acuerdo en que fui tonto en esperar tanto. Por eso he escrito este artículo, para ayudar a otros a evitar caer en el mismo error que yo caí.
    De nada!

    >Que bueno que creas que ha dejado de tener importancia en el 2015,
    No lo creo yo, lo dice Seagate - entre otros. No has leído la página enlazada? Chico, qué poco te gusta leer :(

    >Menos mal que como buen IT tenias multiples copias de respaldo de tu importante información y no tuviste que hacer circo maroma y teatro para recuperar TÚ información.
    Yo no era un "buen IT" (como tú), yo era un estudiante - y ese disco duro no era exactamente mío. Pero no sé qué relación tiene esto con el tema. Estás nervioso?

    >Interesante que creas que no existe relación entre el exceso de uso de la memoria virtual [...] y el rendimiento del sistema. ¡Aplausos! ¿Para que comprar mas memoria ram, sí podemos aumentar el archivo de paginación?
    Venga, relee mi frase y cuando la entiendas escribe de nuevo. Prometo responder. Puedo incluso intentar hacerte algún dibujo...

    ReplyDelete
  12. Llevo 25 años en el área técnica en electrónica y TI, he utilizado cientos de aplicaciones, pero en el caso de rescate de discos duros siempre tuve suerte con Spinrite (formato a bajo nivel no destructivo), para mi experiencia (y conste que partí con discos rll donde usabas debug para formatear, debug era el lenguaje de maquina anterior al ensamblador, que estaba incluido en el sistema operativo como interface), Spinrite es uno de los mas eficientes, asimismo, para la recuperación de datos en bruto de un disco utilizo filescanvenger, una cosa muy diferente es "reparar o hacer asequible un disco" y otras es la recuperación de datos.

    ReplyDelete
  13. Realmente muy educativo el cambio de ideas los felicito, "sinceramente aprendí muchas cosas, Gracias"

    ReplyDelete