Cómo arreglar el disco duro GUID dañado 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 era una copy de security de arranque de un disco de 1TB. La copy de security fue realizada por Carbon Copy Cloner y se probó y verificó varias veces para asegurarse de que funcionara.

El otro era todos mis medios compartidos, como video y música.

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

Antes de hacer diagnósticos, lo intenté en un gabinete diferente. Eso no ayudó.

La Utilidad de Discos puede ver el disco pero no las particiones y las opciones para verificar que el disco estén atenuadas.

Utilicé la utilidad de disco desde el terminal y veo que todo el disco está listdo como 'Fdisk_partition_scheme'.

Creo que este es el problema ya que nunca he usado Windows y no habría formateado el disco duro con este formatting. Nunca he usado bootcamp o paralelos o progtwigs similares.

Estoy seguro de que formateé el disco en "GUID_partition_scheme" y el hecho de que lo usé sin problemas en mi Mac durante mucho time debería confirmarlo.

Creo que de alguna manera el formatting del directory estaba dañado y cambió de 'GUID_partition_scheme' a 'Fdisk_partition_scheme', lo que hace que la unidad sea ilegible.

Texto del terminal Disk Utility:

/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 

Leí un poco y descargué gdisk, pero aún no hice ningún cambio.

gdisk terminal de 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 es: ¿hay alguna manera de volver a formatear mi disco con el formatting GUID original con particiones de 1.5TB sin perder todos los datos?

Espero que con solo cambiar el directory de MBR al GUID original, se restaure la partición original y los files y directorys.

Gracias de antemano por cualquier ayuda.

editar: busqué en Google cómo verificar el último sector para la tabla de particiones GUID y no encontré mucha ayuda. Probé el command 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 del encabezado de dumping:

 sudo dd if=/dev/disk1 count=1 skip=8 | xxd Password: 1+0 records in 1+0 records out 512 bytes transfernetworking 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

Probé tu método y parece prometedor, pero me detuve después de unos pocos pasos. Primero, al abrir el volumen, veo a la derecha "Compartido" y "Copia de security", que son los nombres de mis dos particiones, por lo que es alentador.

Creo que algunos de sus numbers pueden estar apagados ya que mi disco tiene un tamaño de sector de 4096 bytes y veo 512 en matemáticas. Solo estoy comprobando si está bien.

Además, el valor inicial de 409642 no estaba cerca de un HFSJ y dejé el command find después de unos minutos. Buscando desde el inicio del disco HFSJ se encontró con el desplazamiento 0000209736666

También recalculé el centro del disco como sector 366283263 y de allí encontré la siguiente instancia de HFSJ en el desplazamiento 1500936938486

enter image description here

Entonces, en ese momento, estoy contento, pero dejé de esperar su consejo en las siguientes secciones para reconsiderar el tamaño del sector 4096.

Gracias por tu ayuda

editado para agregar una captura de pantalla solicitada de los primeros tres bloques:

captura de pantalla de los primeros tres bloques

El método para reparar su disco y recuperar la tabla de particiones 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 +, usar un poco de matemática simple y sentido común y tener algo de suerte para arreglar el GUID. Y no pierda de vista sus objectives frente a este muro de respuesta.

Además, hay algunos tamaños y reglas fijas (válidos para un tamaño de bloque lógico de 512b; las reglas para los dispositivos 4096b son ligeramente diferentes) que te ayudan a determinar algunos de los tamaños y algunos de los bloques inicial y final de tu " eliminado "particiones".

  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 

Este tutorial no funciona con discos internos o externos que contienen una Recuperación 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.

Finalmente, un command gpt debería dar como resultado algo similar a este resultado:

 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: dado que no puedo crear un disco del mismo tamaño que el tuyo en Parallel Desktop, algunos tamaños son diferentes a tus tamaños originales

Preparación:

Haga una copy de security de su Mac y luego separe todas las unidades externas excepto la que desea recuperar.
Descargue e instale wxHexEditor . Habilite el usuario raíz e inicie session como root.

Sugerencia: Mientras trabaja con wxHexEditor, no use copyr y pegar. ¡Ingresa todo manualmente! Es posible que accidentalmente escriba directamente en su disco.

Terminología

Bloque : Sector (en wxHexEditor)
Desplazamiento: el número del byte relativo al comienzo del dispositivo / volumen que comienza con "Byte 0". Por ejemplo, Block (512) 0 contiene Byte 0 – Byte 511.

Determine los límites de sus particiones:

Abra la Calculadora. Abra wxHexEditor. Compruebe que trabaja en modo de solo lectura ("Opciones" -> "Modo file" -> "Solo lectura"). En la barra de menu, vaya a "Dispositivos" -> "Abrir dispositivo de disco" -> select el diskNumber apropiado. Probablemente es disk1. El disco debe tener una partición (disk1s1). Intente organizar la window wxHexEditor como en los ejemplos a continuación con líneas rectas rojas.

Luego presione el button "Ir a desplazamiento" (marcado con el círculo verde) e ingrese 409640 exactamente como en la image de abajo. A veces tienes que hacer eso dos veces para saltar al sector correcto. Vuelva a verificar el sector correcto ingresando el desplazamiento (marcado en rojo) en la Calculadora y divídalo en 512.

enter image description here

Si ve una image similar, ya encontró el comienzo de su primera partición (observe la cadena HFSJ en el bloque 409642).

Ahora salte a la mitad de su disco: presione el button "Ir a desplazamiento" e ingrese el número de bloque (total de bloques de su disco / 2) ~ 2930266108.
Esto funciona si previamente ha particionado su disco con la Utilidad de Discos simplemente seleccionando 2 particiones en el menu desplegable. Si ha ajustado el control deslizante entre las dos particiones después, por ejemplo, la partición ampliada1 tiene que saltar a un desplazamiento ligeramente mayor.

Ahora presione el button "Buscar" (marcado con el círculo verde) e ingrese HFSJ como en la image siguiente y presione search. Esto puede tardar un rato.

enter image description here

Si la búsqueda fue exitosa, ha encontrado el comienzo de la segunda partición. Tome nota del desplazamiento del bloque (= BlockOffset2 ). En mi ejemplo, el desplazamiento es 1500936455168. Si se desplaza hacia numbers de desplazamiento inferiores, el disco debe llenarse con ceros.

Como ha encontrado los sectores de inicio de ambos volúmenes y el rest generalmente está 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 matemáticas:

La primera cadena HFSJ generalmente se encuentra en el tercer bloque de un volumen JHFS +.

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

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

Primer bloque del volumen 2 – 262144 (regla 6) – 1 = EndBlockOfVolume1 .

En mi ejemplo, eso es 2931516512 – 262144 – 1 = 2931254367

SizeOfVolume1 = EndBlockOfVolume1 – start block volume 1 (regla 5) + 1

En mi ejemplo, eso es 2931254367 – 409640 + 1 = 2930844728

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

Con las reglas 8-11 anteriores, ahora puede determinar 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 = LastBlockOfVolume2

SizeOfVolume2 = LastBlockOfVolume2StartBlockOfVolume2 +1


Rebuild un GPT adecuado:

Aquí supongo que el identificador de tu disco externo es disk1. Primero tiene que desmontar su disco externo en la Terminal:

 diskutil umountDisk disk1 

Elimine el fdisk mbr actual con gpt:

 gpt create -f /dev/disk1 

Primero reconstruya la input de EFI con:

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

A continuación, agregue la primera input de partición JHFS +:

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

Luego ingrese:

 diskutil umountDisk disk1 

y agregue la segunda input de partición JHFS +:

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

Luego, nuevamente ingrese:

 diskutil umountDisk disk1 

Ingrese exit y salga de la Terminal.

Abre la Utilidad de Discos y verifica 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 un recinto de 4k

Si tiene un disco duro de Formato avanzado que tiene un tamaño de sector de 4096 bytes (4K) en un receptáculo de solo 4k (un gabinete de disco duro con un controller que no informa correctamente un tamaño de bloque lógico de 512 bytes para el disco duro AF), algunas modificaciones tiene que hacerse a la solución anterior:

Para saltar a un sector dado, debes dividir los datos anteriores en ocho.

Ejemplos:

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

  • Para encontrar el centro de su HDD salte a los bloques totales (512b) de su disco / 16 en lugar de los bloques totales (512b) de su disco / 2

La parte matemática permanece igual. Aunque puede ser confuso, no hay gran diferencia al usar bloque (512b) o bloquear (4096b). Los cambios pueden adoptarse fácilmente introduciendo un factor 1/8 más adelante en la Reconstrucción de una parte adecuada de GPT .

Lo complicado es rebuild una parte adecuada de GPT . ¿El command gpt detectará bloques de 512 B o 4096 B?

De hecho, comenzaría con 512 B y agregaría la última partición primero (la razón se explica a continuación):

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

Desde que publicó las capturas de pantalla, incluso puedo ingresar los valores correctos:

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

El último bloque (4096b) del disco es el bloque 732566527 con el número de bloque 732566526. Con las reglas (regla 8-11) anterior, 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 bloque 5860532216 con el 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)

El command apropiado de gpt add espera 4096 bloques B sería:

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

El command apropiado gpt add esperando 512 bloques B sería:

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

Primero ingresaría el command gpt (512b) porque si gpt usa 4096 bloques B en su lugar, debería darle un error: el disco es demasiado pequeño: si secretamente se usan 4096 bloques B, el volumen2 comenzaría en ~ 12 TB y finalizaría a 24 TB Si ingresas el gpt (4096b) y secretamente se usan 512 bloques B, puedes destruir tu volume1 porque la partición comenzaría en 187 GB y terminaría en 373 GB.

En caso de que el command gpt (512b) sea incorrecto, y gpt (4096b) sería correcto, el post de error indica "gpt add: disk1: no hay espacio disponible en el dispositivo".
Luego use gpt (4096b) en su lugar y comience nuevamente con Rebuild un GPT correcto: pero divida todos los valores por 8. Una exception es el bloque de inicio de un volumen: como la cadena "HFSJ" ya está en el primer bloque (4096b), usted no no tiene que restar 2/8 bloques (512b).

En caso de que el command gpt (512b) sea correcto, su anterior volume2 se montará probablemente. Puede verificar el volumen con la Utilidad de Discos.

A continuación, desmonte el disco1 con:

 diskutil umountDisk disk1 

y eliminar la partición con

 gpt remove -i 1 disk1 

y comenzar de nuevo con Rebuild un GPT adecuado:

Por favor recalcula / vuelve a verificar todos los valores en la última parte de arriba. Aunque traté de ser lo más preciso posible, los commands / valores pueden estar defectuosos. Siempre considere que el número de bloque y el "número de bloques" son algo diferente: el número de bloque 0 es el primer bloque (o el número de bloque 455 es el bloque 456).


Finalmente, he creado una hoja de Excel para hacer los cálculos. Está disponible aquí .

Captura de pantalla:

enter image description here


Espero que esto recupere tus volúmenes faltantes.

Si tiene problemas (p. Ej., No puede encontrar el sector inicial apropiado para su segundo volumen), la verificación arroja muchos errores, dudas o preguntas que se detienen inmediatamente y contácteme con un comentario @klanomath.