使用diskutil在未分配的空间中创建新分区


14

我已经删除了外部HD上的第一个分区,因此该分区的开头现在有100GB的可用空间。我想回收该空间,但是“磁盘工具”不允许我在那里创建新分区(当我单击“应用”时它什么也没做)。有没有办法做到这一点diskutil?我仅找到了通过(例如)输入disk2s2作为设备ID 来更改(或擦除或拆分等)现有分区的方法,但是可用空间没有这样的设备ID。

输出:

$ 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'

1
在终端上,可以请你运行这些命令和输出添加到你的问题:diskutil list disk2sudo gpt -r show disk2sudo fdisk /dev/disk2sudo pdisk --list /dev/disk2?目前尚不清楚为什么Disk Utility无法正常工作,也许分区表(其中之一)有问题。另外,您是否尝试过在整个硬盘及其上的分区上运行“修复”?
pmdj 2012年

该要点显示了您请求的所有数据:gist.github.com/211c2bd5bc00a2f87b4c
MrMage 2012年

您可以从外部HD启动吗?如果是,我有一个答案。
duci9y 2012年

没有尝试,但我认为是这样(至少在过去有效)。
MrMage 2012年

Answers:


19

(在继续操作之前,请确保所涉及的磁盘仍为disk2,并且已备份了数据等。也就是说,此处的更改并不是特别危险。在执行任何操作之前请通读全部说明以确保您了解所有内容。步骤。)

好的,您的分区表看起来不错(有效的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字节的扇区,因此不到100GB的可用空间:

      409640   195575768         

苹果在分区之后需要128MiB(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实用程序不会重新排序分区号,但实际上这应该不是问题。如果您使用磁盘实用程序进行了进一步的更改,则可能仍可以解决该顺序。


好吧,这似乎奏效了。但是“磁盘工具”现在显示出混乱的分区布局:i50.tinypic.com/2qxc3r6.jpg(顶部的可用空间进一步扩大了-分区视图现在具有滚动条)。
MrMage 2012年

嗯,这可能是由于编号引起的,也可能是引起其他Disk Utility错误的任何原因。实际上,如果其他所有方法都起作用,则可以在此状态下继续进行。否则,您可以尝试重新编号分区。使用标准的gpt方法很繁琐,并且容易出错/容易出错,因为唯一的内置方法是删除并重新创建每个分区。我实际上有一些针对gpt该添加重编号和类型更改命令的补丁-如果您可以gpt从XCode中从源代码进行重建,我可以整理一下并发布它们...
pmdj 2012年

gtp从源代码构建没有问题,但是代码是否经过了良好的测试?我不想搞砸我的分区表。另外,有没有办法备份它?
MrMage 2012年

要添加分区,请添加gpt。
pduey

1
@AeroCross他们的政策在此处发布,developer.apple.com / library / mac / technotes / tn2166 / _index.html#//… 实际上,如果您使用软件RAID或Core Storage(Fusion Drive和/或File Vault)或类似软件。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.