10 votos

Cómo identificar y arreglar archivos con bloques de disco dañados / inaccesibles

Tengo una Macbook Pro de fines de 2011, ejecutando Mavericks 10.9.2. Su único disco duro es un disco de 750GB, formateado con Bootcamp. Todavía funciona bastante bien, pero al ejecutar un pase de desfragmentación en él, identifiqué que hay un montón de archivos que se niegan a ser movidos por el desfragmentador (iDefrag).

iDefrag informa un código de error POSIX de 5 al acceder a los archivos. Escogiendo uno al azar e intentando copiar el archivo a otra ubicación en la terminal también informa un error, lo que me hace pensar que el problema es real y está relacionado con el disco / sistema de archivos. El resultado de cp es:

cp: unity_nophysx.nexe: Error de entrada/salida

El código de error 5 es 'acceso denegado' según mi conocimiento, pero el proceso de desfragmentación se está ejecutando como administrador y ejecutar cp usando sudo en el archivo sospechoso no hace ninguna diferencia.

Utilidad de Disco, fsck y la Prueba de Hardware de Apple afirman que el disco está bien. No se reportaron errores SMART, y aunque hubo algunos errores de permisos, no estaban relacionados con los archivos de los que se queja iDefrag, y Utilidad de Disco afirma haberlos corregido sin problema.

Puede que haya cien o más archivos dañados, pero sigue siendo una fracción muy pequeña del disco. Hasta donde puedo ver, no hay archivos de sistema o datos importantes afectados. Aunque sería bueno recuperar los datos, no me importa reinstalar o recurrir a copias de seguridad. En este punto no sé si realmente es el disco que se está muriendo, simplemente algunos sectores defectuosos debido a que el disco se movió mientras escribía, o alguna otra corrupción menor que se puede solucionar. Estoy asumiendo el peor caso, y lo más probable es que tenga que conseguir un disco duro ligeramente más grande y clonar el disco existente para evitar tener que reconstruir todo el sistema.

Mi pregunta realmente es cómo marcar esos archivos dañados como correctamente dañados y arreglarlos o eliminarlos, para que un clon del disco tenga éxito y no se detenga en archivos / bloques a los que no pueda acceder. Utilidad de Disco no está viendo el problema, y no conozco ninguna herramienta de línea de comandos o de terceros que haga el trabajo. No quiero dar por perdido el disco entero y empezar de cero, ya que el disco parece estar por lo demás saludable, por lo que estoy buscando herramientas de reparación / diagnóstico.

0 votos

Te recomiendo que leas esta discusión bastante detallada y similar en SuperUser: superuser.com/q/148227.

0 votos

Probé, lamentablemente en un disco saludable :), volitans-software.com/smart_utility.php. Parece ser una herramienta bastante simple y seria. Podrías probarla y, sobre todo, revisar el contador de "sectores realocados".

9voto

Rich Puntos 2429

Si te encuentras con un sistema de archivos sano a nivel de su estructura y deseas encontrar archivos que tengan bloques defectuosos en el disco, así es como procedería:

  1. Haz una copia de seguridad completa de tu disco con Time Machine o Carbon Copy Cloner

    Verifica esta copia de seguridad.

  2. Ejecuta el siguiente comando pesado y riesgoso (en caso de que tengas bloques defectuosos fuera de la estructura de tu sistema de archivos) (asegúrate de que las {} estén entre comillas para que los nombres de archivos que contienen espacios funcionen):

    find / -type f -print -exec dd if="{}" of=/dev/null bs=1m \;

Este pesado comando de find imprimirá para cualquier archivo plano su nombre (por lo tanto, no lo leerá, sino solo su entrada de directorio) y luego continuará haciendo una lectura completa y rápida de todos sus bloques de datos.

Al encontrar el primer archivo que contiene bloques defectuosos, este find hará que el kernel registre un read error en /var/log/system.log, y ralentizará o detendrá completamente tu sistema. Esto dependerá principalmente de la capacidad del disco duro para reubicar los bloques defectuosos encontrados en su pool interno dedicado a esta tarea de reparación habitual. Este archivo que contiene bloques defectuosos será el último nombre impreso por find.

¡Escribe este nombre de archivo en un papel! Digamos que este nombre de archivo es:

/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9

En este punto, puedes tener la posibilidad de detener find rápidamente presionando ctrl+C. Si no puedes detenerlo correctamente, simplemente reinicia tu Mac de forma forzada.

Al reiniciar tu Mac, verifica directamente el archivo que contiene bloques defectuosos:

dd if='/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9' of=/dev/null bs=1m

Si el comando termina correctamente, entonces el error fue lo suficientemente leve como para que tu disco pueda leer este archivo y reasignar los bloques defectuosos.

  • Si el comando no termina, no podrás detenerlo normalmente, tus datos se perderán por completo y tendrás que reiniciar tu Mac una vez más de forma forzada.

En este último caso, debes considerar reemplazar tu disco y trabajar desde tus últimas copias de seguridad. Es posible que otros archivos también contengan bloques defectuosos y hayan permanecido sin ser detectados durante mucho tiempo, siempre y cuando no los hayas leído.

El kernel no mostrará un error de lectura en un bloque que nunca leíste.

0 votos

Aha, este es absolutamente el tipo de truco que estaba esperando. La primera pasada con el script find/dd toca todos los archivos/bloques en el disco, y efectivamente encuentro un montón de archivos que dan "error de entrada/salida", y simplemente puedo imprimir el registro del comando en un archivo y luego buscar en él para averiguar qué archivos están dañados. Parece que el comando dd no es suficiente por sí mismo para activar algún tipo de reparación automática (ni siquiera sabía que OS X hacía eso), pero al menos me da una forma fiable de identificar los archivos.

0 votos

En el lado positivo, cuando el sistema operativo intenta leer de los archivos con estos bloques defectuosos, no se bloquea ni se cuelga horriblemente. Veo que aparece un May 10 20:42:15 ICE kernel[0]: disk0s2: I/O error. en los registros, pero no hay ninguna pista sobre qué archivo lo desencadenó. Pero luego el comando se ejecuta bastante felizmente.

0 votos

Tu kernel no se cuelga con el BBFH porque tu disco todavía tiene suficientes bloques disponibles en su pool para reparar los bloques defectuosos. dd no repara nada, el propósito de este comando es copiar datos y convertirlos lo más rápido posible. El disco aún es capaz de reparar errores leves. Mantente atento, el precio de un disco no se compara con tu trabajo.

5voto

pgs Puntos 146

Reinicie en modo de usuario único manteniendo presionado Command + S durante el arranque. Cuando vea un indicador (debería parecerse a root # o algo similar), escriba fsck -f y presione Return. Esta es la herramienta de chequeo de consistencia del sistema de archivos incorporada en Mac y le permite encontrar y reparar errores en el sistema de archivos de inicio. Ejecute este comando hasta que no vea **The volume [volume name] was modified.** o la herramienta falle tres veces seguidas.

Si la herramienta falla, podría indicar un problema mayor (pero no podría decirle cuál sin ver la salida de la herramienta). En cualquier caso, asegúrese de haber respaldado todo lo que pueda antes de ejecutar cualquier herramienta de disco. Cuando haya terminado, escriba reboot en el indicador y presione enter para (¡adivinó!) reiniciar su computadora.

Para obtener información adicional, puede encontrar las páginas del manual de fsck aquí.

0 votos

Interesante, pero parece que fsck, incluso con -f y en modo de usuario único, está haciendo exactamente lo mismo que Disk Utility. Al igual que Disk Utility, no encuentra nada y cree que el disco está bien. Supongo que está escaneando los registros del sistema de archivos, pero creo que mi problema está a nivel de bloque, es decir, el sistema de archivos está bien estructurado, pero los datos reales dentro de los archivos no se pueden acceder al leer/copiar/defragmentarlos.

1 votos

MrCranky: ¡exacto! fsck y Disk Utility están verificando la integridad de la estructura del sistema de archivos. Leen los bloques de disco asignados a la estructura del sistema de archivos. No están hechos para verificar la integridad de los bloques de datos. Por lo tanto, pueden ejecutarse en un disco con bloques defectuosos sin causar ningún error de lectura. Si quieres verificar tu disco, incluso bloques que pueden ser defectuosos pero que en realidad están sin usar, simplemente usa una herramienta básica como dd if=/dev/disk0 of=/dev/null ibs=1k y en otra ventana de terminal ejecuta tail -f /var/log/system.log. Esto es gratuito, extremo y no ocultará ningún error.

2voto

tanveer malik Puntos 1

Recomendaría altamente DiskWarrior para reconstruir catálogos de disco y para escanear archivos potencialmente dañados.

Durante la reconstrucción del catálogo, también puede avisarte si experimenta algún retraso debido a un mal funcionamiento del disco.

0 votos

No me opongo a comprar una herramienta para ayudar, pero sin prueba y sin garantía de que esté diseñada para encontrar el tipo de errores que estoy experimentando, necesitaría muchas más recomendaciones para respaldar la tuya antes de estar dispuesto a gastar $100 en una herramienta.

0 votos

-1 No solo una respuesta, sino una mezcla de comentario y respuesta.

1voto

Buscar웃 Puntos 23467

Como dices, ni siquiera está claro si esos archivos están dañados, al menos tu Mac no lo cree así.

Cada sistema operativo crea archivos inamovibles necesarios para sus operaciones (puntos de restauración, archivos actualmente activos, etc.). Algunos desfragmentadores los mostrarán, otros no.

El hecho de que no puedas acceder o moverlos no significa que estén dañados.

Normalmente, las Mac son muy buenas para cuidarse a sí mismas.

Usar el mantenimiento de Apple se hace así: abre el Terminal y escribe:

sudo periodic daily weekly monthly

seguido de Enter, ingresa tu contraseña de administrador y OS X se encargará de las cosas por ti.

Mira en la Consola los informes sobre esto si estás interesado.

Mientras estés en la Consola, busca cualquier error de E/S que pueda indicar que tu disco está empezando a tener problemas, para complementar los hallazgos de Utilidad de Discos y fsck.

De vez en cuando, uso una herramienta gratuita llamada OnyX para tareas de mantenimiento adicionales. Es creada por franceses y, como su comida, ¡es genial! :)

OnyX es una utilidad multifunción para OS X que te permite verificar el disco de arranque y la estructura de sus archivos de sistema, ejecutar diversas tareas de mantenimiento del sistema, configurar algunos parámetros ocultos del Finder, Dock, QuickTime, Safari, Mail, iTunes, ventana de inicio de sesión, Spotlight y muchas de las aplicaciones de Apple, eliminar cachés, eliminar ciertos archivos y carpetas que pueden volverse pesados, y más.

Con todo lo dicho, no estoy cuestionando tu decisión de usar el desfragmentador (iDefrag) ya que no lo conozco, sino ofreciendo soluciones alternativas.

0 votos

El uso del desfragmentador no es el problema, estoy perfectamente consciente de lo que OS X hace y no hace en ese sentido. Los archivos definitivamente no estaban en uso, eran archivos de datos para una aplicación que no estaba activa, y de hecho la aplicación no se puede mover ahora.

0 votos

En Onyx, está haciendo poco más que lo que hace la Utilidad de Disco: revisar el estado SMART del disco y luego ejecutar el diagnóstico de estilo fsck (que, como hemos establecido, cree que no hay nada malo).

0 votos

Solo para aclarar, para cualquier otra persona que lea esta respuesta, los archivos definitivamente estaban dañados, y la Mac lo sabía, porque no se me permitía leer de ellos (copiarlos, lo que sea). Esto no fue porque eran archivos del sistema, o estaban en uso en ese momento, era cierto incluso para archivos de datos de usuario. El mantenimiento periódico no ayudó con el problema, nuevamente porque al igual que fsck parece preocuparse solo por problemas del sistema de archivos, no por problemas de accesibilidad a bloques. La Consola mostraba errores solo cuando intentaba manualmente copiar/leer los datos de uno de estos archivos dañados, no fue útil para encontrarlos.

0voto

chillin Puntos 1997

Por muy irrazonable que parezca, antes de hacer cualquier cosa, debe duplicar todos sus datos en una unidad conocida como buena. Si al arrancar desde el instalador y copiar los datos falla, hay una utilidad de línea de comandos llamada 'dd' que puede hacer una duplicación a nivel bajo y de una manera mucho más implacable.

 man dd

para obtener más información sobre dd, incluido su uso y sintaxis adecuada.


Otro voto por el post de Matt, inicie en modo de usuario único y ejecute

 fsck -fy 

una y otra vez hasta que fsck deje de informar errores.


Un voto por el post de Adam, DiskWarrior es una aplicación fácil de usar pero muy potente que informará sobre fallas en el disco duro, verificará archivos individuales en busca de errores y los reparará si es posible, y reconstruirá y optimizará estructuras de directorios.


Otra posible solución que puede sonar irrazonable pero que a menudo es un último intento desesperado para recuperar datos con muchas pruebas anectódicas de éxito es sacar el disco, protegerlo de la humedad usando un par de bolsas de congelación, y colocarlo en el congelador durante 30-45 minutos. Luego, mientras el disco está frío, monte el disco en una base USB externa y utilice otro sistema temporal para intentar nuevamente copiar los datos corruptos a otro disco. Generalmente, esto se usa si hay un problema de hardware y el disco está fallando. Si puede duplicar todo el disco con sus datos intactos, esto es lo ideal, ya que a menudo una partición y reformateo le darán al disco una nueva vida.

0 votos

Como dije, fsck no reporta errores. El disco aún no es temperamental ni reporta errores aleatorios, y la lista de archivos que están dañados no parece estar creciendo, así que no creo que esté cerca de la etapa de 'congelarse para una última extracción de emergencia'. También tengo copias de seguridad muy bien respaldadas a nivel de archivo/carpeta, y no me preocupa perder datos, como dije en la pregunta. Es bueno escuchar otro voto a favor de DiskWarrior.

0 votos

@MrCranky: Creo que te refieres a algo publicado antes de que actualizaras tu pregunta; estaba reforzando la idea de fsck para cualquiera que encuentre esta página buscando una solución a síntomas similares. En cuanto a cualquier cosa que haya publicado sobre fallas en el disco duro, nunca está de más ser exhaustivo, nuevamente, para otros y no necesariamente para ti personalmente. He visto mi parte justa de fallas en discos duros. A menudo no hay indicación de falla, incluso con la tecnología SMART, hasta que ya no puedas acceder a los datos de ninguna manera. Si te importan los datos, te recomiendo encarecidamente que obtengas un nuevo disco duro y hagas una copia de seguridad de tus datos.

0 votos

Ciertamente no estoy en desacuerdo con la recomendación de hacer una copia de seguridad, pero el espíritu del formato de preguntas y respuestas es responder la pregunta que se plantea, no una pregunta genérica de "cómo arreglo un disco roto" (de las cuales hay muchas). Mucho antes de que lo editara para agregar fsck a la lista de "cosas que piensan que el disco está bien", ya había respondido a la respuesta mencionando fsck descartando su utilidad. fsck y Utilidad de Discos realizan casi la misma función, que es operar en las estructuras del sistema de archivos, no a nivel de bloque. Intenté ser bastante específico de que este es un problema de bloque, no un problema de sistema de archivos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X