9 votos

Cómo arreglar el disco duro GUID corrompido a MBR

Estoy en OS X 10.9.5 con un iMac de finales de 2013.

Tengo un disco duro de 3TB que tiene un problema inusual.

Es un Western Digital 3TB Red WD30EFRX.

Lo formateé con dos particiones, ambas de 1,5TB.

Uno de ellos era una copia de seguridad de arranque de una unidad de 1TB. La copia de seguridad se hizo con Carbon Copy Cloner y se probó y verificó varias veces para asegurarse de que funcionaba.

La otra era todos mis medios compartidos, como el vídeo y la música.

Lo usé bien durante meses y luego un día no funcionó.

Antes de hacer cualquier diagnóstico en él, lo probé en una caja diferente. Eso no ayudó.

La Utilidad de Discos puede ver el disco pero no las particiones y las opciones para verificar el disco están en gris.

He utilizado la utilidad de discos desde el terminal y veo que toda la unidad aparece como 'Fdisk_partition_scheme'.

Creo que este es el problema ya que nunca he utilizado Windows y no habría formateado el disco duro con este formato. Nunca he utilizado bootcamp o parallels o programas similares.

Estoy seguro de haber formateado la unidad con 'GUID_partition_scheme' y el hecho de haberla utilizado sin problemas en mi Mac durante mucho tiempo debería confirmarlo.

Creo que de alguna manera el formato del directorio se corrompió y cambió de 'GUID_partition_scheme' a 'Fdisk_partition_scheme' haciendo que la unidad sea ilegible.

Texto de la terminal de la Utilidad de Discos:

/dev/disk1  
   #:                       TYPE NAME                    SIZE       IDENTIFIER  
   0:     FDisk_partition_scheme                        *3.0 TB     disk1  
   1:                       0xEE                         3.0 TB     disk1s1  

diskutil info disk1  
   Device Identifier:        disk1  
   Device Node:              /dev/disk1  
   Part of Whole:            disk1  
   Device / Media Name:      HGST Media  

   Volume Name:              Not applicable (no file system)  

   Mounted:                  Not applicable (no file system)  

   File System:              None  

   Content (IOContent):      FDisk_partition_scheme  
   OS Can Be Installed:      No  
   Media Type:               Generic  
   Protocol:                 USB  
   SMART Status:             Not Supported  

   Total Size:               3.0 TB (3000592494592 Bytes) (exactly 5860532216 512-Byte-Units)  
   Volume Free Space:        Not applicable (no file system)  
   Device Block Size:        4096 Bytes  

   Read-Only Media:          No  
   Read-Only Volume:         Not applicable (no file system)  
   Ejectable:                Yes  

   Whole:                    Yes  
   Internal:                 No  
   OS 9 Drivers:             No  
   Low Level Format:         Not supported  

He leído un poco y he descargado gdisk pero aún no he hecho ningún cambio con él.

gdisk terminal text:

GPT fdisk (gdisk) version 1.0.0  

Partition table scan:  
  MBR: protective  
  BSD: not present  
  APM: not present  
  GPT: not present  

Creating new GPT entries.  

Command (? for help):  

Por supuesto, mi última pregunta: ¿Hay alguna manera de reformatear mi disco al formato original GUID con particiones de 1,5TB sin perder todos los datos?

Tengo la esperanza de que sólo cambiando el directorio de MBR de nuevo a la GUID original se restaure el particionamiento original y los archivos y directorios.

Gracias de antemano por cualquier ayuda.

editar: Busqué en Google cómo comprobar el último sector de la tabla de partición GUID y no encontré mucha ayuda. Probé el comando gpt que no encontró encabezados primarios o secundarios:

sudo gpt recover /dev/disk1
Password:
gpt recover: /dev/disk1: no primary or secondary GPT headers, can't recover

editar: La salida de la cabecera de dumping:

sudo dd if=/dev/disk1 count=1 skip=8 | xxd
Password:
1+0 records in
1+0 records out
512 bytes transferred in 0.000337 secs (1518730 bytes/sec)
0000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

salida de fdisk:

sudo fdisk /dev/disk1
Disk: /dev/disk1    geometry: 45600/255/63 [732566527 sectors]
Sector size: 4096 bytes
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 - 4294967294] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused 

@klanomath

He probado tu método y parece prometedor, pero me he detenido después de algunos pasos. Primero al abrir el volumen veo a la derecha "Shared" y "Backup" que son los nombres de mis dos particiones, así que eso es alentador.

Creo que algunos de tus números pueden estar equivocados ya que mi disco tiene un tamaño de sector de 4096 bytes y veo 512 en tus cálculos. Sólo estoy comprobando si eso está bien.

También el valor inicial de 409642 no estaba cerca de un HFSJ y salí del comando find después de unos minutos. Buscando desde el inicio del disco se encontró el HFSJ con el offset 0000209736666

También he recalculado el centro del disco como el sector 366283263 y desde ahí he encontrado la siguiente instancia de HFSJ en el offset 1500936938486

enter image description here

Así que en ese punto estoy contento, pero me detuve a la espera de su consejo sobre las secciones posteriores reconsiderar el tamaño del sector 4096.

Gracias por su ayuda

editado para añadir la captura de pantalla solicitada de los tres primeros bloques:

screenshot of first three blocks

0 votos

Lo primero que haría sería ver si el Backup de la tabla GPT existe al final del disco.

0 votos

¿Cómo lo hago? He estado usando principalmente la Utilidad de Discos y he empezado a explorar el fdisk gpt. También tengo Data Rescue 3 que no ha sido útil.

0 votos

Puedes buscar esto en Google: La tabla MBR tiene un límite de 2,2 TB en el tamaño del disco que puede manejar. Esto funciona asumiendo que el tamaño del sector (bloque) es de 512 bytes. Usted tiene una unidad con formato avanzado. Esto probablemente significa que el tamaño de su sector (bloque) puede ser de 4096 bytes. En realidad, su salida publicada de distutil muestra esto. Esto permitiría a la tabla MBR manejar discos más grandes, pero cualquier herramienta de terceros que utilice para examinar el disco no puede ser capaz de manejar discos de formato avanzado. Muchas herramientas están codificadas para tamaños de sectores (bloques) de 512 bytes. Pueden leer incorrectamente estos discos.

10voto

klanomath Puntos 19587

El método para reparar el disco y recuperar la tabla de partición GUID está relacionado con mis respuestas a preguntas similares: HFS+ número inválido de bloques de asignación y El disco duro ya no es accesible .

Básicamente tienes que encontrar las cadenas características de los volúmenes JHFS+, utilizar algunas matemáticas simples y el sentido común y tener algo de suerte para arreglar el GUID. Y no pierdas de vista tus objetivos cuando te enfrentes a este muro de respuestas.

Además, hay algunos tamaños y reglas fijas (válidas para un tamaño de bloque lógico de 512b - las reglas para dispositivos de 4096b son ligeramente diferentes) que le ayudan a determinar algunos de los tamaños así como algunos de los bloques iniciales y finales de sus particiones "eliminadas".

 1. 1st block (block 0)                             = PMBR
 2. 2nd block (block 1)                             = Pri GPT header
 3. 3rd - 34th block (block 2 - block 33)           = Pri GPT table
 4. 41st - 409640th block (block 40 - block 409639) = EFI (aligned)
 5. 409641st - ??? block (block 409640 - block ???) = partition 1 (aligned)
 6. empty space 262144 blocks (aligned)
 7. ??? - ??? block (block ??? - block ???)         = partition 2 (aligned)
 8. empty space 262144 blocks (aligned)
 9. 7 empty blocks to keep alignment
10. the last 33 blocks except the very last one     = Sec GPT table
11. last block                                      = Sec GPT header
12. alignment rule: the start block and the sizes of all partitions (EFI, partition 1 & 2) and the major empty spaces are dividable by 8
13. The 3rd block of a regular JHFS+ volume contains the string "HFSJ" starting at offset 8

Esta guía no funciona con discos internos o externos que contengan un Recovery HD o discos con volúmenes CoreStorage/ExFAT/NTFS. Aunque principalmente el enfoque de una solución sería similar, algunas de las reglas anteriores son diferentes.

Por fin un gpt debería dar como resultado algo similar a esta salida:

root# gpt -r -vv show /dev/disk1
gpt show: /dev/disk0: mediasize=3000592498688; sectorsize=512; blocks=5860532224
gpt show: /dev/disk0: PMBR at sector 0
gpt show: /dev/disk0: Pri GPT at sector 1
gpt show: /dev/disk0: Sec GPT at sector 5860532223
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640  2930844728      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  2931254368      262144         
  2931516512  2928753528      3  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  5860270040      262151         
  5860532191          32         Sec GPT table
  5860532223           1         Sec GPT header

Sugerencia: Como no puedo crear un disco del mismo tamaño que el tuyo en Parallel Desktop algunos tamaños son diferentes a los originales

Preparación:

Realice una copia de seguridad de su Mac y, a continuación, desconecte todas las unidades externas excepto la que desea recuperar.
Descargar e instalar wxHexEditor . Habilite el usuario Root e inicie la sesión como Root.

Sugerencia: Mientras trabajas con wxHexEditor no uses copiar y pegar. ¡Introduzca todo manualmente! Podrías escribir accidentalmente directamente en tu disco.

Terminología

Bloque : Sector (en wxHexEditor)
Desplazamiento: El número del Byte relativo al principio del dispositivo/volumen empezando por el "Byte 0". Por ejemplo, Block(512) 0 contiene el Byte 0 - Byte 511.

Determine los límites de sus particiones:

Abra la calculadora. Abra el wxHexEditor. Compruebe que trabaja en modo de sólo lectura ("Opciones" -> "Modo de archivo" -> "Sólo lectura"). En la barra de menús vaya a "Dispositivos" -> "Abrir dispositivo de disco" -> elija el número de disco apropiado. Probablemente sea disk1. El disco debería tener una partición (disk1s1). Por favor, intente organizar la ventana del wxHexEditor como en los ejemplos de abajo con líneas rojas rectas.

A continuación, pulse el botón "Go to offset" (marcado con el círculo verde) e introduzca 409640 exactamente como en la imagen de abajo. A veces hay que hacerlo dos veces para saltar al sector correcto. Vuelva a comprobar el sector correcto introduciendo el offset (marcado en rojo) en la calculadora y divídalo entre 512.

enter image description here

Si ves una imagen similar, ya has encontrado el principio de tu primera partición (¡observa la cadena HFSJ en el bloque 409642!).

Ahora salta al centro de tu disco: Pulsa el botón "Ir al offset" e introduce el número de bloque (total de bloques de tu disco/2) ~ 2930266108.
Esto funciona si previamente has particionado tu disco con la Utilidad de Discos simplemente eligiendo 2 particiones en el menú desplegable. Si has ajustado el deslizador entre las dos particiones después, por ejemplo, ampliando la partición1, tienes que saltar a un desplazamiento ligeramente mayor.

Ahora pulsa el botón "Buscar" (marcado con el círculo verde) e introduce HFSJ como en la imagen de abajo y pulsa encontrar. Esto puede tardar un poco.

enter image description here

Si la búsqueda fue exitosa, has encontrado el comienzo de la segunda partición. Anote el desplazamiento del bloque (= BlockOffset2 ). En mi ejemplo el desplazamiento es 1500936455168. Si se desplaza a números de desplazamiento más bajos, el disco debería estar lleno de 0s.

Ya que ha encontrado los sectores de inicio de ambos volúmenes y el resto suele estar determinado por las reglas 1-12 mencionadas anteriormente, ahora puede arreglar la tabla GUID. Salga de wxHexEditor. Si se le pide que guarde los cambios, no los guarde.


Ahora tienes que hacer algunas cuentas:

La primera cadena HFSJ suele encontrarse en el tercer bloque de un volumen JHFS+.

Así, el primer volumen JHFS+ comienza en el bloque 409640 (también regla 5). El segundo volumen JHFS+ comienza en StartBlockOfVolume2 \= BlockOffset2 /512 - 2. En mi ejemplo son 1500936455168/512 -2 = 2931516514 -2 = 2931516512.

Con el bloque inicial del volumen 2 y el espacio vacío fijo de la regla 6 se puede determinar el bloque final del volumen 1:

Primer bloque del volumen 2 - 262144 (regla 6) - 1 = FinBloqueDeVolumen1 .

En mi ejemplo son 2931516512 - 262144 - 1 = 2931254367

TamañoDelVolumen1 \= FinBloqueDeVolumen1 - bloque de inicio volumen 1 (regla 5) + 1

En mi ejemplo son 2931254367 - 409640 + 1 = 2930844728

Lo único que le falta es el tamaño del volumen 2:

Con las reglas 8-11 de arriba puede determinar ahora el último bloque del volumen 2.

Tamaño total del disco en bloques - 1 (regla 11) - 32 (regla 10) -7 (regla 9) - 262144 (regla 8) - 1 = ÚltimoBloqueDeVolumen2

TamañoDelVolumen2 \= ÚltimoBloqueDeVolumen2 - StartBlockOfVolume2 +1


Reconstruir un GPT adecuado:

Aquí asumo que el identificador de tu disco externo es disk1. Primero tienes que desmontar tu disco externo en el Terminal:

diskutil umountDisk disk1

Eliminar el fdisk mbr actual con gpt:

gpt create -f /dev/disk1

Primero reconstruya la entrada EFI con:

gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk1

A continuación, añada la primera entrada de la partición JHFS+:

gpt add -b 409640 -i 2 -s SizeOfVolume1 -t 48465300-0000-11AA-AA11-00306543ECAC disk1

Entonces entra:

diskutil umountDisk disk1

y añade la segunda entrada de la partición JHFS+:

gpt add -b StartBlockOfVolume2 -i 3 -s SizeOfVolume2 -t 48465300-0000-11AA-AA11-00306543ECAC disk1

Entonces entra de nuevo:

diskutil umountDisk disk1

Entre en exit y salir de la Terminal.

Abra la Utilidad de Discos y verifique el disco y los dos volúmenes en busca de errores, pero no los repare. Si no se encuentran errores, monte los volúmenes.


Anexo: dispositivo 4k en una caja 4k

Si tiene un disco duro de formato avanzado que tiene un tamaño de sector de 4096 bytes (4K) en una caja de sólo 4k (una caja de disco duro con un controlador que no informa correctamente de un tamaño de bloque lógico de 512 bytes para el disco duro de formato avanzado) hay que hacer algunas modificaciones en la solución anterior:

Para saltar a un sector determinado hay que dividir los datos anteriores entre ocho.

Ejemplos:

  • En lugar de saltar al bloque(512b) 409640 para encontrar el supuesto sector de inicio del volumen 1, salta al bloque(4096b) 51205.

  • Para encontrar el centro de tu disco duro salta a bloques totales (512b) de su disco/16 en lugar de bloques totales (512b) de su disco/2

La parte matemática sigue siendo la misma. Aunque tal vez sea confuso no hay gran diferencia usando block(512b) o block(4096b). Los cambios se pueden adoptar fácilmente introduciendo un factor 1/8 más tarde en el Reconstruir un GPT adecuado parte.

Lo difícil es el Reconstruir un GPT adecuado parte. ¿El comando gpt detectará bloques de 512 B o 4096 B?

Efectivamente, yo empezaría por la 512 B y añadiría primero la última partición (la razón se explica más abajo):

gpt add -b StartBlockOfVolume2 -i 1 -s SizeOfVolume2 -t 48465300-0000-11AA-AA11-00306543ECAC disk1

Ya que has publicado las capturas de pantalla, es posible que introduzca los valores adecuados:

El segundo bloque(4096b) del volumen2 comienza en el offset 1500936941568 -> El primer bloque(4096b) comienza en el offset 1500936941568 - 4096 = 1500936937472. Esto es bloque(4096b) 1500936937472/4096 = 366439682 o bloque(512b) = 8 x 366439682 = 2931517456.

El último bloque (4096b) del disco es el 732566527º con el número de bloque 732566526. Con las reglas (regla 8-11) anteriores el último bloque(4096b) del volumen2 es 732533754 y el tamaño del volumen2 es 732533754 - 366439682 = 366094072 bloques(4096b).
El último bloque(512b) del disco es el 5860532216º bloque con número de bloque 5860532215. Con las reglas anteriores el último bloque(512b) del volumen2 es 5860270032 y el tamaño del volumen2 es 5860270032 - 2931517456 = 2928752576 bloques(512b)

Lo que hay que hacer gpt add comando que espera 4096 bloques B sería:

gpt add -b 366439682 -i 1 -s 366094072 -t 48465300-0000-11AA-AA11-00306543ECAC disk1

Lo que hay que hacer gpt add comando esperando 512 bloques B sería:

gpt add -b 2931517456 -i 1 -s 2928752576 -t 48465300-0000-11AA-AA11-00306543ECAC disk1

Primero introduciría el comando gpt(512b) porque si gpt utiliza 4096 B bloques en su lugar, debería dar un error - el disco es demasiado pequeño: Si se utilizan secretamente 4096 B bloques, el volumen2 comenzaría en ~12 TB y terminaría en 24 TB. Si introduces el comando gpt(4096b) y secretamente se utilizan bloques de 512 B puedes destruir tu volumen1 porque la partición empezaría en 187 GB y terminaría en 373 GB.

En caso de que el comando gpt(512b) sea incorrecto - y gpt(4096b) sería correcto - el mensaje de error entonces dice "gpt add: disk1: no space available on device".
Entonces utiliza gpt(4096b) en su lugar y empieza de nuevo con Reconstruye un GPT adecuado: pero divide todos los valores por 8. Una excepción es el bloque inicial de un volumen: Como la cadena "HFSJ" ya está en el primer bloque (4096b) no tienes que restar 2/8 bloques (512b).

En caso de que el comando gpt(512b) sea correcto su antiguo volumen2 será montado probablemente. Puedes comprobar el volumen con la Utilidad de Discos.

Entonces desmonta el disco1 con:

diskutil umountDisk disk1

y eliminar la partición con

gpt remove -i 1 disk1

y empezar de nuevo con Reconstruir un GPT adecuado:

Por favor, vuelva a calcular/revisar todos los valores en la última parte anterior. Aunque he intentado ser lo más preciso posible, los comandos/valores pueden ser erróneos. Considere siempre que el número de bloque y el "número de bloques" son algo diferente: el bloque número 0 es el primer bloque (o el bloque número 455 es el bloque número 456).


Finalmente he creado una hoja de Excel para hacer las cuentas. Está disponible aquí .

Captura de pantalla:

enter image description here


Espero que esto recupere sus volúmenes perdidos.

Si tienes problemas (por ejemplo, no puedes encontrar el sector de inicio adecuado de tu segundo volumen), la verificación arroja muchos errores, tienes dudas o preguntas, ¡detente inmediatamente y contáctame con un comentario @klanomath!

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