Создать новый раздел в нераспределенном пространстве с помощью diskutil

14

Я удалил первый раздел на моем внешнем жестком диске, так что теперь у него есть 100 ГБ свободного места в начале раздела. Я бы хотел освободить это место, но Дисковая утилита не позволяет мне создавать там новый раздел (она просто ничего не делает, когда я нажимаю «Применить»). Есть ли способ сделать это с diskutil? Я только нашел способы изменить (или стереть, или разделить и т.д.) существующие разделы, например, введя disk2s2 в качестве идентификатора устройства, но свободное пространство не имеет такого идентификатора устройства.

Выходы:

$ diskutil list disk2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  Apple_HFS Shared                  199.3 GB   disk2s2
   3:                 Apple_Boot Recovery HD             784.2 MB   disk2s3
   4:          Apple_CoreStorage                         500.0 GB   disk2s4
   5:                 Apple_Boot Boot OS X               134.2 MB   disk2s5
   6:          Apple_CoreStorage                         699.6 GB   disk2s6
   7:                 Apple_Boot Boot OS X               134.2 MB   disk2s7
$ sudo gpt -r show disk2
Password:
       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   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header
$ sudo fdisk /dev/disk2
Disk: /dev/disk2    geometry: -5415437/4/63 [-1364690128 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 - -1364690129] <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      
$ sudo pdisk --list /dev/disk2
pdisk: No valid block 1 on '/dev/disk2'
MrMage
источник
1
На терминале, пожалуйста , вы можете запустить эти команды и добавить вывод на ваш вопрос: diskutil list disk2, sudo gpt -r show disk2, sudo fdisk /dev/disk2и sudo pdisk --list /dev/disk2? Непонятно, почему Дисковая утилита не работает, возможно, есть проблема с одной из таблиц разделов. Кроме того, вы пытались выполнить «восстановление» как на всем жестком диске, так и на разделе?
pmdj
В этом списке показаны все запрошенные вами данные: gist.github.com/211c2bd5bc00a2f87b4c
MrMage,
Можете ли вы загрузиться с внешнего HD? Если да, у меня есть ответ.
duci9y
Не пытался, но я так думаю (по крайней мере, это работало в прошлом).
MrMage

Ответы:

18

(Прежде чем продолжить, убедитесь, что диск, о котором идет речь, все еще диск2, у вас есть резервные копии ваших данных и т. Д. - при этом изменения здесь не особенно опасны. Прежде чем что-либо предпринять, прочтите все инструкции, чтобы убедиться, что вы понимаете все шаги.)

Хорошо, ваши таблицы разделов выглядят нормально (действительный GPT и правильный защитный MBR), поэтому я не знаю, почему Disk Utility в этом случае не работает, но вы должны иметь возможность создать раздел в пустом пространстве с помощью gptкоманды Утилита Ваш GPT выглядит так:

       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   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header

Свободное пространство обозначается этой строкой (номера представляют собой сектора по 512 байт, поэтому чуть менее 100 ГБ свободного места:

      409640   195575768         

Apple требует 128 МБ (262144 секторов) свободного места после раздела, поэтому новый раздел может иметь 195575768-262144 = 195313624 секторов. Размонтируйте все тома на диске, используя:

diskutil unmountDisk disk2

Затем эта команда создаст раздел HFS + в свободном пространстве:

sudo gpt add -b 409640 -s 195313624 -t hfs disk2

Это только создает раздел, а не файловую систему. Чтобы убедиться, что все прошло хорошо, вы должны увидеть disk2s8, запускаете ли вы diskutil list disk2. Если это действительно так, вы можете отформатировать раздел следующим образом:

sudo newfs_hfs -v "Volume Name" -J /dev/rdisk2s8

Если disk2s8 не появился, вам необходимо перезагрузиться перед форматированием. Вместо запуска newfs_hfsвы также можете удалить раздел в Дисковой утилите.

Утилита gpt не переупорядочивает номера разделов, но на практике это не должно быть проблемой. Если вы сделаете какие-либо дальнейшие изменения с помощью дисковой утилиты, это, вероятно, все равно исправит порядок.

pmdj
источник
Ну, похоже, это сработало. Но Дисковая утилита теперь отображает неправильное расположение разделов: i50.tinypic.com/2qxc3r6.jpg (свободное пространство вверху расширяется немного - в представлении раздела теперь есть полосы прокрутки).
MrMage
Хм, это может быть вызвано нумерацией и, возможно, тем, что в первую очередь вызывает другую ошибку Дисковой утилиты. Реально, если все остальное работает, вы можете просто продолжать в этом состоянии. В противном случае вы можете попробовать изменить нумерацию разделов. Использование стандарта gptэто утомительно и несколько подвержено ошибкам / рискованно, поскольку единственный встроенный способ - удалить и воссоздать каждый раздел. На самом деле у меня есть некоторые патчи против gptэтих команд добавления нумерации и изменения типа - я могу привести их в порядок и опубликовать, если вы будете в порядке с перестройкой gptиз исходного кода в XCode ...
pmdj
У меня нет проблем со сборкой gtpиз исходного кода, но хорошо ли проверен код? Я не хочу испортить мою таблицу разделов. Кроме того, есть ли способ сделать его резервную копию?
MrMage
Чтобы добавить раздел, это gpt add.
pduey
1
@AeroCross Их политика опубликована здесь, developer.apple.com/library/mac/technotes/tn2166/_index.html#//… на практике она используется в качестве загрузочного раздела, если вы используете программный RAID или Core Storage (Fusion Drive и / или File Vault) или аналогичное программное обеспечение.
pmdj