Як виправити розділ жорсткого диска Mac, показаний як Fdsik_partition_scheme


8

Моя ситуація виглядає дуже схожою на те, як виправити жорсткий диск GUID зіпсований до MBR, але з достатньою різницею, що мені не вдалося зібрати впевнене рішення.

У мене 3TB накопичувач Toshiba у корпусі USB, який використовується на Mac з ОС X El Capitain 10.11.3.

Диск був налаштований з однією секцією. Диск не був завантажуваним і не було встановлено системи, тому я припускаю, що він також не мав би розділ відновлення. Я не можу сказати точно, що ніколи не було встановлено системи, але я не думаю, що так. Він не використовувався в Bootcamp або на будь-якому комп'ютері, який не є Mac.

Диск працював нормально довгий час, але потім його не вдалося розпізнати останнім часом. Під час дослідження за допомогою утиліти Disk, вона показує, що має тип розділу FDisk_partition_scheme . Я впевнений, що це був типовий типовий за замовчуванням карту розділів GUID, відформатовану як OS X Extended (Journaled) .

Я не можу придумати жодного конкретного використання чи події, які могли б спричинити зміни.

Ось інформація, яку я зібрав з накопичувача.

список дискутилів / dev / disk6

/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *3.0 TB     disk6
   1:                       0xEE                         375.1 GB   disk6s1

diskutil info / dev / disk6

   Device Identifier:        disk6
   Device Node:              /dev/disk6
   Whole:                    Yes
   Part of Whole:            disk6
   Device / Media Name:      DT01ABA300

   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 (3000592982016 Bytes) (exactly 5860533168 512-Byte-Units)
   Volume Free Space:        Not applicable (no file system)
   Device Block Size:        512 Bytes

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

   Device Location:          External
   Removable Media:          No

   Virtual:                  No
   OS 9 Drivers:             No
   Low Level Format:         Not supported

fdisk / dev / disk6

Disk: /dev/disk6    geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -  732566645] <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

gpt відновити / dev / disk6

gpt recover: /dev/disk6: no primary or secondary GPT headers, can't recover

gpt -r -vv show / dev / disk6

gpt show: /dev/disk6: mediasize=3000592982016; sectorsize=512; blocks=5860533168
gpt show: /dev/disk6: PMBR at sector 0
       start        size  index  contents
           0           1         PMBR
           1  5860533167

gdisk / dev / disk6

GPT fdisk (gdisk) version 1.0.1

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

Creating new GPT entries.

Ось знімок екрана першої частини накопичувача у wxHexEditor. Частина EFI починається з 4096 року.

Запуск диска в wxHexEditor

Я почав шукати рядок HFSJ, починаючи зі зміщення 409642, як було запропоновано в інших відповідях, але не знайшов його поблизу. Тож я шукав, починаючи з початку приводу, і знайшов перше явище в зсуві 314598400.

Однак, якщо я продовжую шукати явища HFSJ, я знаходжу багато таких, які виглядають точно так само і з великим нульовим простором навколо них, як перший. Вони починаються з 360424448 і розташовані на відстані 32768 один від одного. Наприклад, при компенсаціях 360424448 360457216 360489984 360522752 360555520

Я використав пошук Find All у wxHexEditor і зупинився через кілька хвилин. У той момент було знайдено пару тисяч. Я не впевнений, що з них зробити, якщо що.

Мені також вдалося знайти розділ із позначенням EFI System Partition при зміщенні 3000592961536. Це також показує назву накопичувача "Rosie".

Ось знімки екрана першого розділу HFSJ та розділу системи EFI. На основі коментарів доданий знімок екрана офсету 8192.

Перший розділ HFSJ, розділ EFI в кінці та зміщення 8192.

Дякуємо за будь-яку допомогу.


Якщо з'явився б, ваш диск мав розмір блоку 4096 байт і тепер має розмір 512 байт. Оскільки розмір блоку не зберігається на самому диску, моє запитання було б: Ви змінили обладнання будь-яким чином? Крім того, якщо розмір блоку становив 4096 байт, то ви повинні мати можливість читати старі записи таблиці GPT, починаючи з 8192 байт. Поки ви розмістили лише заголовок GPT, починаючи з 4096 байт. Шістнадцятковий дамп може бути перетворений назад в правильні десяткові значення з використанням інформації , наведеної тут .
Девід Андерсон

@DavidAnderson, апаратне забезпечення змінилося тим, що накопичувач знаходиться в іншому корпусі USB. Я міг би отримати оригінальний випадок, якщо це щось допоможе.
Дуг Сміт

@DavidAnderson Я змінив знімок екрана, щоб додати його для зміщення 8192. Тут відображається системний розділ EFI .
Дуг Сміт

@klanomath Так, ваша відповідна відповідь була правильною. Я змішав блок і зміщення. Це все нулі навколо зсуву 209736704, однак. Я також спробував розділити це на 8 (26217088), якщо виникла проблема розміру блоку 4096. Це вказує мені на безліч даних, але жодної рядки HFSJ не видно.
Дуг Сміт

@klanomath, я розпочав ваш процес. Моя спроба перезаписати перші 40 блоків насправді не записала жодних даних:0+0 records in 0+0 records out 0 bytes transferred in 0.000013 secs (0 bytes/sec)
Дуг Сміт

Відповіді:


9

Будь ласка, спробуйте наступне:

  • Отримайте ідентифікатор диска вашого зовнішнього накопичувача на 3 ТБ

    diskutil list
    

    Нижче я припускаю, що ідентифікатором диска є disk6

  • від'єднайте диск:

    diskutil umountDisk disk6
    
  • Перезапишіть перші 40 блоків:

    sudo dd if=/dev/zero of=/dev/disk6 bs=512 count=40
    
  • Створіть новий gpt:

    sudo gpt create /dev/disk6
    
  • Перевірте інформацію про диск за допомогою:

    diskutil info /dev/disk6
    

    Переконайтеся, що розмір блоку пристрою все ще становить 512 байт

    Ви також можете використовувати

    sudo gpt -r show /dev/disk6
    

    Якщо gpt показує:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
    

    у вас є контролер диска та диска, який повідомляє розмір логічного блоку в 512 байт. Будь ласка, продовжуйте з наступним кроком.

    Якщо gpt показує:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2           4         Pri GPT table
    

    у вас є контролер диска та диска, який повідомляє розмір логічного блоку 4096 байт. Зупиніться тут і додайте коментар.

  • Спочатку відновіть запис EFI за допомогою:

    sudo gpt add -b 40 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    

    Залежно від розміру диска та версії системи будуються різні розміри томів EFI, якщо вони розділені на Disk Utility: або один розміром 200 MiB, або один із 300 MiB. Тут очевидно, що ваш диск містить 300 MiB EFI і, ймовірно, 4096 байт нерозподіленого дискового простору: (314598400-1024) / 512 = 614448 (= Початковий блок основного обсягу) 614448-40-8 = 614400 (= розмір EFI)

  • Перебудуйте основний обсяг за допомогою:

    sudo gpt add -b 614448 -i 2 -s SizeOfVolume1 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    Розмір основного обсягу можна визначити за першим (зіпсованим та старим) записом другої таблиці GPT: (3000592961536/512) = 5860533128 - це номер блоку. Тоді розмір обчислюється 5860533128-614448 = 5859918680 блоків. Оскільки 5859918680 ділиться на 8 (4096 фізичний розмір блоку / 512 розмір логічного блоку), це гарна здогадка щодо розміру гучності.

    Найкраща здогадка, нарешті:

    sudo gpt add -b 614448 -i 2 -s 5859918680 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    Друга найкраща здогадка:

    sudo gpt add -b 614448 -i 2 -s 5859918672 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • Ймовірно, ваш втрачений обсяг зараз встановлюється. Перевірте гучність за допомогою:

    diskutil verifyVolume disk6s2
    

    При необхідності спробуйте відремонтувати гучність.

    diskutil repairVolume disk6s2
    

Оскільки ви перенесли "пошкоджений" диск в інший корпус та контролер диска, розмір логічного блоку був змінений. Стара карта розділів, ймовірно, базується на логічному розмірі блоку 4096 байт.

Щоб відновити карту розділів у старому випадку (4096b), вам потрібно було б ввести наступне, щоб відновити GPT (на основі відповіді Девіда Андерсона):

  • Створіть новий gpt:

    sudo gpt create /dev/disk6
    
  • Спочатку відновіть запис EFI за допомогою:

    sudo gpt add -b 6 -i 1 -s 76800 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Перебудуйте основний обсяг за допомогою:

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • остаточна карта розділів виглядає так:

     sudo gpt -r show disk1
           start        size  index  contents
               0           1         PMBR
               1           1         Pri GPT header
               2           4         Pri GPT table
               6       76800      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
           76806   732457067      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
       732533873       32768         
       732566641           4         Sec GPT table
       732566645           1         Sec GPT header
    

На основі частини 4096b ця "повторна трансляція" після встановлення диска в корпусі розміру логічного блоку 512b:

  • Створіть новий gpt:

    sudo gpt create /dev/disk6
    
  • Спочатку відновіть запис EFI за допомогою:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Перебудуйте основний обсяг за допомогою:

    sudo gpt add -b 614448 -i 2 -s 5859656536 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

Це відрізняється від першої (прийнятої) частини моєї відповіді, але є правильною! Оскільки EFI насправді "порожній", а нерозподілені блоки 262144 містять нулі, "перша і якось неправильна" відповідь не впливає на працездатність гучності.


2

Це не відповідь, а скоріше приклад того, як витягти інформацію про розділи GPT з представлених вами даних. Вторинні (резервні) записи розділу GPT були використані, оскільки ви не публікували вміст первинних записів розділу GPT. Документ " Таблиця розділів GUID " був використаний для інтерпретації даних.

Останній придатний LBA можна знайти в заголовку GPT. Це відбувається за адресою 8244. Значення є

70 14 aa 2b 00 00 00 00 little endian = 0x2baa1470 = 732566640 @ 4096 bytes/block.

Початок вторинних (резервних) записів GPT починається з наступного блоку. Значення є

(732566640 + 1) * 4096 = 3000592961536 bytes.  

Використовуючи це як початок запису таблиці розділів EFI, я отримую наступні значення. Початок розділу EFI, знайдений за адресою 3000592961568, є

06 00 00 00 00 00 00 00 little endian = 0x6 = 6 @ 4096 bytes/block.

Кінець розділу EFI, знайдений за адресою 3000592961576, є

05 2c 01 00 00 00 00 00 little endian = 0x12c05 = 76805 @ 4096 bytes/block.

Що дає розмір розділу

76805 - 6 + 1 = 76800 @ 4096 bytes/block.

Початок розділу HFS, знайдений за адресою 3000592961696, є

06 2c 01 00 00 00 00 00 little endian = 0x12c06 = 76806 @ 4096 bytes/block.

Кінець розділу HFS, знайдений за адресою 3000592961704, є

70 94 a9 2b 00 00 00 00 little endian = 0x2ba99470 = 732533872 @ 4096 bytes/block.

Що дає розмір розділу

732533872 - 76806 + 1 = 732457067 @ 4096 bytes / block.

Якщо ви збираєтесь використовувати розмір блоку в 512 байт, наведені вище результати доведеться помножити на значення 8, щоб перетворити на 512 байт / блок.


+1 Ми отримуємо однаковий розмір і стартовий блок для EFI та ідентичний стартовий блок, але різний розмір основного обсягу.
кланомат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.