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,5 TB.
Uno era una copia de seguridad de arranque de una unidad de 1 TB. Carbon Copy Cloner realizó la copia de seguridad y se probó y verificó varias veces para asegurarse de que funcionaba.
El otro era todos mis medios compartidos como videos y música.
Lo usé bien durante meses y luego un día no funcionó.
Antes de hacer algún diagnóstico, lo probé en un gabinete diferente. Eso no ayudó.
Disk Utility puede ver el disco pero no las particiones y las opciones para verificar el disco están atenuadas.
Utilicé la utilidad de disco desde la terminal y vi que todo el disco aparece 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 formato. Nunca he usado bootcamp ni paralelos ni programas similares.
Estoy seguro de que formateé la unidad a 'GUID_partition_scheme' y el hecho de que la usé 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', lo que hace que la unidad sea ilegible.
Texto del 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
Leí un poco y descargué gdisk, pero aún no he hecho ningún cambio.
texto del terminal gdisk:
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 forma de reformatear mi disco al formato GUID original con particiones de 1,5 TB sin perder todos los datos?
Espero que con solo cambiar el directorio de MBR al GUID original, se restaurarán las particiones y los archivos y directorios originales.
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 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 del encabezado de volcado:
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
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 seguridad", que son los nombres de mis dos particiones, por lo que es alentador.
Creo que algunos de sus números pueden estar mal ya que mi disco tiene un tamaño de sector de 4096 bytes y veo 512 en sus cálculos. Solo estoy comprobando si está bien.
Además, el valor inicial de 409642 no estaba cerca de un HFSJ y abandoné el comando de búsqueda después de unos minutos. Buscando desde el inicio del disco se encontró HFSJ con desplazamiento 0000209736666
También recalculé la mitad del disco como sector 366283263 y desde allí encontré la siguiente instancia de HFSJ en el desplazamiento 1500936938486
Entonces, en ese momento estoy feliz, pero dejé de esperar su consejo sobre las secciones posteriores al reconsiderar el tamaño del sector 4096.
Gracias por tu ayuda
editado para agregar la captura de pantalla solicitada 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 no válido de bloques de asignación y Disco duro ya no accesible .
Básicamente, debe encontrar cadenas características de los volúmenes JHFS+, usar algunas matemáticas simples y sentido común y tener suerte para arreglar el GUID. Y no pierdas de vista tus objetivos ante este muro de respuesta.
Además, hay algunos tamaños y reglas fijos (válidos para un tamaño de bloque lógico de 512b; las reglas para dispositivos 4096b son ligeramente diferentes) que lo ayudan a determinar algunos de los tamaños, así como algunos de los bloques iniciales y finales de su " 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
Este tutorial no funciona con discos internos o externos que contengan un HD de recuperación 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 gpt
comando 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 suyo en Parallel Desktop, algunos tamaños son diferentes a los tamaños originales
Preparación:
Haga una copia de seguridad de su Mac y luego desconecte todas las unidades externas excepto la que desea recuperar.
Descargue e instale wxHexEditor . Habilite el usuario root e inicie sesión como root.
Sugerencia: mientras trabaja con wxHexEditor, no use copiar y pegar. ¡Ingrese todo manualmente! Puede escribir accidentalmente 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:
Abre la Calculadora. Abra wxHexEditor. Comprueba que trabajas en modo de solo lectura ("Opciones" -> "Modo de archivo" -> "Solo lectura"). En la barra de menú, vaya a "Dispositivos" -> "Abrir dispositivo de disco" -> elija el número de disco apropiado. Probablemente sea disk1. El disco debe tener una partición (disk1s1). Intente organizar la ventana de wxHexEditor como en los ejemplos a continuación con líneas rojas rectas.
Luego presione el botón "Ir a compensación" (marcado con el círculo verde) e ingrese 409640 exactamente como en la imagen a continuación. 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 entre 512.
Si ve una imagen 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 botón "Ir a compensación" 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 Disco simplemente eligiendo 2 particiones en el menú desplegable. Si ha ajustado el control deslizante entre las dos particiones después, por ejemplo, la partición ampliada 1, debe saltar a un desplazamiento ligeramente mayor.
Ahora presione el botón "Buscar" (marcado con el círculo verde) e ingrese HFSJ como en la imagen a continuación y presione buscar. Esto puede tardar un rato.
Si la búsqueda tuvo éxito, 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 a números de desplazamiento inferiores, el disco debe llenarse con 0.
Dado que ha encontrado los sectores de inicio de ambos volúmenes y el resto 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 algunos cálculos:
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, eso es 1500936455168/512 -2 = 2931516514 -2 = 2931516512.
Con el bloque inicial del volumen 2 y el espacio vacío fijo de la regla 6 puedes 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 - volumen de bloque de inicio 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 = LastBlockOfVolume2 - StartBlockOfVolume2 +1
Reconstruir un GPT adecuado:
Aquí asumo que el identificador de su disco externo es disk1. Primero tienes que desmontar tu disco externo en Terminal:
diskutil umountDisk disk1
Elimine 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
Luego agregue la primera entrada 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 entrada de partición JHFS+:
gpt add -b StartBlockOfVolume2 -i 3 -s SizeOfVolume2 -t 48465300-0000-11AA-AA11-00306543ECAC disk1
Luego ingrese de nuevo:
diskutil umountDisk disk1
Ingrese exit
y salga 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 carcasa 4k
Si tiene un disco duro de formato avanzado que tiene un tamaño de sector de 4096 bytes (4K) en un gabinete de solo 4k (un gabinete de disco duro con un controlador que no informa correctamente un tamaño de bloque lógico de 512 bytes para el AF HDD) algunas modificaciones tienen que hacerse a la solución anterior:
Para saltar a un sector determinado, debe dividir los datos anteriores entre ocho.
Ejemplos:
En lugar de saltar al bloque (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 bloques totales (512b) de su disco/16 en lugar de bloques totales (512b) de su disco/2
La parte matemática sigue igual. Aunque tal vez resulte confuso, no hay una gran diferencia entre usar block(512b) o block(4096b). Los cambios se pueden adoptar fácilmente introduciendo un factor 1/8 más adelante en la parte Reconstruir una GPT adecuada .
Lo complicado es reconstruir una parte GPT adecuada . ¿El comando gpt detectará bloques 512 B o 4096 B?
De hecho, comenzaría con 512 B y agregaría primero la última partición (la razón se explica a continuación):
gpt add -b StartBlockOfVolume2 -i 1 -s SizeOfVolume2 -t 48465300-0000-11AA-AA11-00306543ECAC disk1
Dado que publicaste las capturas de pantalla, incluso puedo ingresar los valores adecuados:
El segundo bloque (4096b) del volumen 2 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 bloque (512 366 = 362 x 9b) 2931517456.
El último bloque (4096b) del disco es el bloque 732566527 con el número de bloque 732566526. Con las reglas (regla 8-11) arriba, el último bloque (4096b) del volumen 2 es 732533754 y el tamaño del volumen 2 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 volumen 2 es 5860270032 y el tamaño del volumen 2 es 5860270032 - 2931517456 = 2928752576 bloques (512b)
El comando adecuado gpt add
esperando bloques 4096 B sería:
gpt add -b 366439682 -i 1 -s 366094072 -t 48465300-0000-11AA-AA11-00306543ECAC disk1
El comando adecuado gpt add
esperando bloques 512 B sería:
gpt add -b 2931517456 -i 1 -s 2928752576 -t 48465300-0000-11AA-AA11-00306543ECAC disk1
Primero ingresaría el comando gpt(512b) porque si gpt usa bloques 4096 B en su lugar, debería darte un error: el disco es demasiado pequeño: si se usan bloques 4096 B en secreto, el volumen 2 comenzaría en ~ 12 TB y terminaría en 24TB. Si ingresa el gpt (4096b) y en secreto se usan bloques de 512 B, puede destruir su volumen 1 porque la partición comenzaría en 187 GB y terminaría en 373 GB.
En caso de que el comando gpt(512b) sea incorrecto, y gpt(4096b) sea correcto, el mensaje de error indica "gpt add: disk1: no hay espacio disponible en el dispositivo".
Luego use gpt (4096b) en su lugar y comience de nuevo con Reconstruya un GPT adecuado: pero divida todos los valores por 8. Una excepción es el bloque inicial de un volumen: dado que la cadena "HFSJ" ya está en el primer bloque (4096b) no No tienes que restar 2/8 bloques (512b).
En caso de que el comando gpt (512b) sea correcto, probablemente se montará su anterior volumen 2. Puede comprobar el volumen con la Utilidad de disco.
Luego desmonte disk1 con:
diskutil umountDisk disk1
y eliminar la partición con
gpt remove -i 1 disk1
y comience de nuevo con Reconstruir un GPT adecuado:
Vuelva a calcular/verificar todos los valores en la última parte anterior. Aunque traté de ser lo más preciso posible, los comandos/valores pueden ser defectuosos. Considere siempre 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:
Espero que esto recupere los volúmenes perdidos.
Si tiene problemas (por ejemplo, no puede encontrar el sector de inicio adecuado de su segundo volumen), la verificación arroja muchos errores, tiene dudas o preguntas, deténgase inmediatamente y contácteme con un comentario @klanomath.
david anderson
basura
david anderson
distutil
muestra esto. Esto permitiría que la tabla MBR maneje discos más grandes, pero es posible que cualquier herramienta de terceros que use para examinar el disco no pueda manejar discos de formato avanzado. Muchas herramientas están codificadas para tamaños de sector (bloque) de 512 bytes. Pueden leer incorrectamente dichos discos.david anderson
sudo dd if=/dev/disk1 count=1 skip=8 | xxd
. Podrías publicar la salida. La descripción de lo que debería ver se proporciona aquí . La mayoría de las personas no pueden interpretar la salida hexadecimal, por lo que no espero que lo haga. De todos modos, es lo que yo habría hecho a continuación. Si tampoco estaría de más agregar la salida desudo fdisk /dev/disk1
.