Cómo identificar y reparar archivos con bloques de discos dañados o inaccesibles

8

Tengo un Macbook Pro de finales de 2011, ejecutando Mavericks 10.9.2. Su único disco duro es una unidad de 750 GB, formateada con Bootcamp. Todavía se está ejecutando razonablemente bien, pero al ejecutar un pase de desfragmentación, he identificado que hay un montón de archivos que se niegan a ser movidos por el desfragmentador (iDefrag).

iDefrag reporta un código de error POSIX de 5 al acceder a los archivos. Elegir uno al azar e intentar copiar el archivo en otra ubicación en el shell también informa un error, lo que me hace pensar que el problema es real y con el disco / FS. La salida de cp es:

cp: unity_nophysx.nexe: Input/output error

El código de error 5 es 'acceso denegado', según tengo entendido, pero el proceso de desfragmentación se ejecuta como administrador y la ejecución de cp usando sudo en el archivo sospechoso no hace ninguna diferencia.

La Utilidad de Disco, fsck y la Prueba de Hardware de Apple afirman que el disco está bien. No se informaron errores SMART, y si bien hubo algunos errores de permisos, no estaban relacionados con los archivos de los que iDefrag se está quejando, y los reclamos de la Utilidad de Discos los han solucionado sin queja.

Hay tal vez un centenar o más de archivos corruptos, pero aún una fracción muy pequeña de la unidad. Por lo que puedo decir, no hay archivos del sistema o datos cruciales afectados. Si bien sería bueno recuperar los datos, no me importa volver a instalar o ir a las copias de seguridad. En este punto, no sé si es realmente el disco el que se está muriendo, solo algunos sectores defectuosos debido a que el disco se movió mientras se escribía, o algún otro daño menor en el que se puede trabajar. Estoy asumiendo el peor de los casos, y lo más probable es que tenga que obtener un HDD un poco más grande y clonar la unidad existente para evitar tener que reconstruir el sistema.

Mi pregunta es realmente cómo hago para marcar los archivos rotos como correctamente rotos y para corregirlos o purgarlos , de modo que un clon del disco tenga éxito y no se cuelgue de los archivos / bloqueos. no puedo acceder. La Utilidad de Discos no está viendo el problema y no conozco ninguna línea de comandos o herramientas de terceros que hagan el trabajo. No quiero borrar todo el disco y empezar de cero, ya que la unidad parece estar bien, así que estoy buscando herramientas de reparación / diagnóstico.

    
pregunta MrCranky 28.04.2014 - 23:09

7 respuestas

6

Si se enfrenta a un sistema de archivos en buen estado en el nivel de su estructura y desea encontrar archivos que tengan bloques defectuosos en el disco, a continuación le indicamos cómo proceder:

  1. Haga una copia de seguridad completa de su disco con Time Machine o Carbon Copy Cloner

    Comprueba esta copia de seguridad.

  2. Ejecute el siguiente comando pesado y arriesgado (en caso de que tenga bloques defectuosos fuera de la estructura de su sistema de archivos) (asegúrese de que {} esté citado para que los nombres de los archivos que contienen espacios funcionen):

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

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

Al golpear el primer archivo que contiene bloques defectuosos, este find causará que el kernel registre read error en /var/log/system.log , y ralentizará o hará que su sistema se detenga por completo. Esto dependerá principalmente de la capacidad del disco duro para reubicar los bloques defectuosos encontrados en su grupo interno dedicado a esta tarea de reparación habitual. Este archivo que contiene bloques defectuosos será el apellido impreso por find .

¡Anote este nombre de archivo en una hoja de papel! Digamos que este nombre de archivo es:

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

En este punto, es posible que tengas la posibilidad de matar find rápidamente al presionar ctrl + C . Si matarlo bien está fallando, simplemente bloquea tu Mac.

Al reiniciar tu Mac, comprueba 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 ligero como para que el disco pueda leer este archivo y reasignar los bloques defectuosos.

  • Si el comando no finaliza, no podrás matarlo Normalmente, sus datos se pierden totalmente y tendrá que bloquear su Mac. una vez más.

En este último caso, debe considerar reemplazar su disco y trabajar desde sus últimas copias de seguridad. Algunos otros archivos también pueden contener bloques defectuosos y pueden haber permanecido sin ser detectados durante mucho tiempo, siempre y cuando no los haya leído.

El kernel no generará un error de lectura en un bloque que nunca has leído.

    
respondido por el daniel Azuelos 10.05.2014 - 13:03
4

Reinicie en modo de usuario único manteniendo presionado Command + S durante el inicio. Cuando veas un mensaje (debería verse como root # o algo similar), escribe fsck -f y presiona Retorno . Esta es la herramienta integrada de verificación de consistencia del sistema de archivos de Mac y le permite encontrar y reparar errores con 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 ser indicativo de un problema mayor (pero no podría decirle qué sin ver el resultado de la herramienta). En cualquier caso, asegúrese de haber hecho una copia de seguridad de todo lo que pueda antes de ejecutar cualquier herramienta de disco. Cuando haya terminado, escriba reboot en el indicador y presione Entrar para (¡lo adivinó!) Reiniciar su computadora.

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

    
respondido por el Matt 29.04.2014 - 00:33
2

Recomendaría encarecidamente DiskWarrior para reconstruir los catálogos de discos y para buscar archivos potencialmente dañados .

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

    
respondido por el Adam 29.04.2014 - 01:09
1

Como usted dice, ni siquiera está claro si esos archivos están dañados, al menos su Mac no lo cree.

Todos los sistemas operativos hacen archivos que no se pueden mover y que son necesarios para sus operaciones (puntos de restauración, archivos actualmente activos, etc.). Algunos defrags los mostrarán, otros no.

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

Normalmente, los Mac son muy buenos para cuidarse a sí mismos.

El mantenimiento de Apple se realiza mediante: abra la Terminal y escriba:

sudo periodic daily weekly monthly 

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

Busque en la Consola los informes sobre estos si está interesado.

Mientras se encuentra en la Consola, busque (o busque) cualquier error de E / S que indique que su disco está empezando a tener problemas, para complementar la Utilidad de Discos y los hallazgos de fsck.

En ocasiones uso una herramienta gratuita llamada OnyX para tareas de mantenimiento adicionales. Está hecho por francés y como la comida es simplemente genial :)

OnyX es una utilidad multifunción para OS X que le permite verificar el disco de inicio y la estructura de sus archivos de sistema, para ejecutar varias tareas de mantenimiento del sistema, para 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 para eliminar cachés, eliminar una cierta cantidad de archivos y carpetas que pueden volverse incómodos, y más.

Dicho todo esto, no cuestiono su decisión de usar el desfragmentador (iDefrag) ya que no lo sé, sino que estoy ofreciendo soluciones alternativas.

    
respondido por el Buscar웃 08.05.2014 - 20:34
1

Eliminando la respuesta de Buscar, puedes hacerlo automáticamente usando una línea de comando bastante pesada foo.

sudo find / -type f -print0  | xargs -0 -I{} dd if='{}' of=/dev/null bs=1m 2>&1 | grep 'error' >>badfiles.txt  & 
  • sudo: modo de administración
  • buscar -print0: ruta absoluta
  • xargs -0 -I {}: sustituye {} en el siguiente comando
  • dd 2 > & 1: redirigir el error estándar a stdout
  • canalizar stdout a grep buscando error de cadena
  • Agregue los resultados a un archivo de lista. ( nota : debe estar en medios externos si cree que su unidad interna es dudosa)
respondido por el awiebe 13.07.2017 - 22:04
0

Por irrazonable que parezca, antes de hacer algo, debe duplicar todos sus datos en un disco en buen estado. Si el arranque desde el instalador y la copia de los datos falla, hay una utilidad de línea de comandos llamada 'dd' que puede hacer una duplicación de bajo nivel y de una manera mucho más intransigente.

 man dd

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

Otro voto para la publicación de Matt, arranque el modo de usuario único y ejecute

 fsck -fy 

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

Un voto para la publicación de Adam, DiskWarrior es una aplicación fácil de usar pero muy poderosa que informará fallas de HDD, revisará los archivos individuales para detectar errores y los reparará si es posible, y reconstruirá y optimizará las estructuras de directorios.

Otra posible solución que puede parecer irrazonable, pero a menudo es un último intento para recuperar datos con una gran cantidad de pruebas anacdóticas de éxito, es extraer el disco, protegerlo de la humedad con un par de capas de bolsas para congelar y colocarlo Su congelador durante 30-45 minutos. Luego, mientras la unidad está fría, monte la unidad en una base USB externa y use otro sistema temporal para intentar copiar de nuevo los datos dañados en otra unidad. En general, esto se usa si hay un problema de hardware y la unidad falla. Si puede duplicar la unidad completa con sus datos intactos, esto es ideal, ya que a menudo una nueva partición y un nuevo formato le dará a la unidad una nueva oportunidad de vida.

    
respondido por el chillin 08.05.2014 - 20:06
0

Para un solo archivo que no se puede leer en su totalidad debido a un error de lectura del disco, puede usar la utilidad dd para duplicar el archivo en un volumen externo, sustituyendo los bytes NUL por los bloques que no se pueden leer. Se recomienda encarecidamente duplicar en un volumen diferente (por ejemplo, "Disco USB" en el ejemplo a continuación).

Ejemplo:

dd if=/path/to/damaged/file of=/Volumes/USB\ Disk/file bs=512 conv=noerror,sync

Al utilizar bloques de 512 bytes, se recuperará el número máximo de bloques legibles.

La recuperación puede llevar mucho tiempo, ya que el kernel se bloqueará durante algún tiempo en cada lectura fallida.

    
respondido por el bleater 29.02.2016 - 01:01

Lea otras preguntas en las etiquetas