调整或扩展CoreStorage卷


36

我买了一个750 GB的新SSD,并制作了两个分区:600 GB和150 GB。较小的一天被认为是一个Bootcamp分区,但到目前为止它只是另一个未使用的分区。当我需要更多空间时,我决定合并这两个分区。该分区是使用Mavericks创建的,合并是与Yosemite完成的。

我打开了磁盘工具和“减号”按钮。磁盘工具告诉我两个分区然后合并。然而它却失败了。我的主硬盘突然出现无法修复的错误,甚至我的其他两个外置硬盘也无法再安装。

我最终从Time Machine中恢复了硬盘,后者运行良好。

我的第二个分区现在被列为免费:

Disk Utility

不幸的是我无法调整600 GB分区的大小,也无法使用可用空间创建新分区。

Diskutil揭示了以下内容:

~  diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         599.6 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *599.3 GB   disk1
                                 Logical Volume on disk0s2
                                 XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
                                 Unencrypted

diskutil也提到了这个:

~  diskutil cs list
CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group 9D2BA4BA-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    =========================================================
    Name:         Macintosh HD
    Status:       Online
    Size:         599640592384 B (599.6 GB)
    Free Space:   6111232 B (6.1 MB)
    |
    +-< Physical Volume 29A9A02B-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk0s2
    |   Status:   Online
    |   Size:     599640592384 B (599.6 GB)
    |
    +-> Logical Volume Family 2FA7892F-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        ----------------------------------------------------------
        Encryption Status:       Unlocked
        Encryption Type:         None
        Conversion Status:       NoConversion
        Conversion Direction:    -none-
        Has Encrypted Extents:   No
        Fully Secure:            No
        Passphrase Required:     No
        |
        +-> Logical Volume 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx
            ---------------------------------------------------
            Disk:                  disk1
            Status:                Online
            Size (Total):          599282155520 B (599.3 GB)
            Conversion Progress:   -none-
            Revertible:            No
            LV Name:               Macintosh HD
            Volume Name:           Macintosh HD
            Content Hint:          Apple_HFS

我试过这个:

但它没有用。它说我无法恢复,因为它不是以它支持的方式创建的(抱歉错过了确切的消息)。

然后我了解到Apple_CoreStorage可能表明我的磁盘已加密,这可能解释了为什么我无法调整它的大小。它无法解释为什么我无法为我创建新分区。

有什么选择让我的硬盘在750 GB的单个分区中可用?


1
优胜美地似乎是为了开车。核心存储是一个充满痛苦的世界。简单的方法 - apple.stackexchange.com/questions/148645/... 困难的方式 - apple.stackexchange.com/questions/153523/...
Tetsujin

请加 diskutil cs list 输出到你的答案。您可能会争抢所有uuids,但为任何找到的UUID选择不同的字母,以便在有人碰巧回答时更好地区分它们
klanomath

TL:DR是Disk Utility无法做到的,需要命令行。我希望@klanomath可以帮助你完成它 - 他擅长这些东西。就个人而言,在Apple将其GUI工具与Core Storage保持一致之前,我不会去Yosemite附近。
Tetsujin

Answers:


41

在获得CoreStorage卷的一些经验之后,我重新设计了我的第一个答案,通过添加一些场景并删除一些可有可无的步骤来概括和促进它。

基本上有一个未记录的命令来调整或扩展CoreStorage卷组和固有的逻辑卷:

diskutil cs resizeStack LVUUID size  

该命令将整个CoreStorage卷组(包括物理卷,逻辑卷系列和逻辑卷)一步扩展或缩小到所需大小。

虽然将其缩小到逻辑卷中占用空间的大小应该不是问题(但不推荐,因为至少应留出10%的可用空间),除了恢复分区之外的任何阻塞分区都必须删除或在扩展CoreStorage堆栈之前减少了。

该命令在几种情况下派上用场:

  • 在同一设备上删除第二个旧式JHFS +卷后扩展CoreStorage卷(这可能发生在将您的磁盘拆分为Mavericks中的两个分区然后更新到Yosemite之后。第一个分区 - 您的系统卷 - 可能会转换为CoreStorage音量,而第二卷则保持不变。)

enter image description here

  • 手动删除Boot Camp NTFS卷后扩展CoreStorage卷

enter image description here

  • 调整CoreStorage卷的大小以在同一设备上创建第二个旧式JHFS +卷

enter image description here

注意:该命令非常无证,因此具有潜在的破坏性。

制备:

  • 备份您的数据。
  • 分离任何外部驱动器(尤其是外部Time Machine备份驱动器)。
  • 按下重新启动到Internet恢复模式 ALT CMD [R 在启动时。
    先决条件是安装了最新的固件更新,以太网或WLAN(WPA / WPA2)和激活DHCP的路由器。
    在50 Mbps线路上,需要大约4分钟(呈现一个小的动画地球仪)才能启动到恢复网络启动图像,该图像通常是从apple / akamai服务器加载的。

    我推荐以太网,因为它更可靠。如果您受限于WIFI并且启动过程失败,只需重新启动Mac,直到您成功启动。

    或者,您可以从可启动安装程序的拇指驱动器(Mavericks或Yosemite)或包含完整系统(Mavericks或Yosemite)的拇指驱动器开始。

修改CoreStorage堆栈:

  • 在菜单栏Utilities / Terminal中打开

首先,您应该了解磁盘和分区布局:

  • 输入 diskutil list
    示例清单:

    /dev/disk0
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *68.7 GB    disk0
       1:                        EFI EFI                    209.7 MB    disk0s1
       2:          Apple_CoreStorage                         53.7 GB    disk0s2
       3:                 Apple_Boot Recovery HD            650.0 MB    disk0s3
       4:                        EFI No Name EFI            100.0 MB    disk0s4
    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     Apple_partition_scheme                         *1.3 GB    disk1
       1:        Apple_partition_map                         30.7 KB    disk1s1
       2:                  Apple_HFS OS X Base System        *1.3 GB    disk1s2
    /dev/disk2
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:                  Apple_HFS System                 *53.5 GB    disk2
    /dev/disk3-disk12 ...belong to the OS X Base System (your recovery system you booted to previously)
    

    Disk0是您的主要内部磁盘设备,包含EFI分区(dis0s1),CoreStorage分区(disk0s2)和Recovery HD(disk0s3)。 如果先前有Boot Camp分区并手动删除,则仅存在名称EFI(disk0s4)。

    Disk1是通过引导至netboot映像创建的逻辑磁盘,其中包含与Recovery HD类似的恢复系统(OS X Base System = disk1s2)。

    Disk2也是一个驻留在disk0s2中的逻辑磁盘,它包含CoreStorage堆栈。

  • 输入 gpt -r -vv show /dev/disk0
    示例清单:

    gpt show: /dev/disk0: mediasize=68719476736; sectorsize=512; blocks=134217728
    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 134217727
          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  104974016      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
      105383656    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      106653192     204800      4  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      106857992   27359703         
      134217695         32         Sec GPT table
      134217727          1         Sec GPT header
    

    索引号为1的分区是常规EFI分区,索引号为2的分区是CoreStorage分区,索引号为3的分区是Recovery HD。
    索引编号为4(=无名称EFI)的分区仅在先前具有Boot Camp分区并手动将其删除时才存在。 所有其余的都是未分配的可用空间(在示例中为27359703,块为512 B)。

  • 输入 diskutil cs list
    示例清单:

      CoreStorage logical volume groups (1 found)
    |
    +-- Logical Volume Group A629E051-D7B0-4B8C-A803-074F62704636
        =========================================================
        Name:         System
        Status:       Online
        Size:         53946696192 B (53.9 GB)
        Free Space:   16777216 B (16.8 MB)
        |
        +-< Physical Volume 90C09FC0-4215-4871-901B-70E2C9C7D464
        |   ----------------------------------------------------
        |   Index:    0
        |   Disk:     disk0s2
        |   Status:   Online
        |   Size:     53946696192 B (53.9 GB)
        |
        +-> Logical Volume Family F6962E38-50E4-4458-BFE6-CF2E179352F5
            ----------------------------------------------------------
            Encryption Status:       Unlocked
            Encryption Type:         None
            Conversion Status:       NoConversion
            Conversion Direction:    -none-
            Has Encrypted Extents:   No
            Fully Secure:            No
            Passphrase Required:     No
            |
            +-> Logical Volume BD36C73D-860D-4DC6-B125-AD624F448B88
                ---------------------------------------------------
                Disk:                  disk2
                Status:                Online
                Size (Total):          53496696192 B (53.5 GB)
                Conversion Progress:   -none-
                Revertible:            Yes (no decryption required)
                LV Name:               System
                Volume Name:           System
                Content Hint:          Apple_HFS
    
  • 要调整CoreStorage卷的大小,您必须先删除任何阻塞分区(Recovery HD不计算,因为它通常会使用resizeStack命令移动)。
    首先,您必须卸载disk0上的所有已装入卷(首先是CoreStorage卷,它具有自己的磁盘标识符disk2但位于disk0上,然后是disk0上的所有其他已装入卷 - 请检查 df ):

    diskutil unmountDisk /dev/disk2
    

    然后是额外的卷(如果你有的话)。例:

    diskutil unmount /dev/disk0s5 
    

    如果您有NoName EFI分区,请输入以下命令将其删除:

    gpt remove -i 4 disk0
    
  • 使用相反的顺序重新安装以前未安装的任何卷

    diskutil mount /dev/disk0s5
    diskutil mount /dev/disk2 
    
  • 由于删除了任何阻止分区,您现在可以使用以下内容调整CoreStorage卷的大小

    diskutil cs resizeStack LVUUID size 
    

    使用LVUUID:逻辑卷和大小的UUID:CoreStorage卷的最终大小。
    例子:

    diskutil cs resizeStack BD36C73D-860D-4DC6-B125-AD624F448B88 60g  
    

    将其扩展到60 GB

    diskutil cs resizeStack BD36C73D-860D-4DC6-B125-AD624F448B88 40g  
    

    将它缩小到40 GB

    diskutil cs resizeStack BD36C73D-860D-4DC6-B125-AD624F448B88 0g 
    

    将它扩展到完整的可用大小(这里0g是一个神奇的数字)。

    您的Recovery HD应自动移动 - 无论是缩小或扩大CS音量 - 都应该自动移动到最后。

  • 如果缩小CoreStorage卷,您现在可以使用gpt创建第二个分区。
  • 输入以下内容以获取新的分区方案:

    gpt -r -vv show /dev/disk0
    

    gpt add -b StartBlock -s NumberOfBlocks disk0
    

    创建一个新分区。 StartBlock是未分配空间中第一个块的编号,NumberOfBlocks是空闲块的数量或更小。 NumberOfBlocks必须可以通过8分割!

  • 输入 exit 并退出终端。
  • 打开磁盘工具(如果在最后一步中创建了新分区,则格式化新创建的分区)。
  • 然后检查扩展的CoreStorage卷以查找错误。
  • 退出磁盘工具。
  • 重新启动到您的主卷。

12

下列 diskutil cs resizeStack 命令是非常无证的,因此具有潜在的破坏性。可能有一个简单的方法首先概述和长期蜿蜒,耗时的艰难方式。

请在继续操作之前备份Mac OS X.

不那么长的预期方式:

使用stackexchange凭据进入网站或聊天的第二台计算机或iPhone是有用的。

桌面上可见的Mac OS X分区(Macintosh HD)相当于 Logical Volume 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  1. 首先,您必须备份Recovery HD:启动Terminal.app并输入
    defaults write com.apple.DiskUtility DUDebugMenuEnabled 1 按enter键退出 Terminal.app
  2. 启动“磁盘工具”并在“调试”菜单中启用“显示每个分区” 几秒钟后,所有分区都应该可见
  3. 选择左侧的“Recovery HD”并安装分区“Recovery HD”

    screen1

  4. 验证磁盘

    screen2

  5. 创建“Recovery HD”的磁盘映像并将其以只读方式保存在外部

    screen3

  6. 检查磁盘映像以进行还原

    screen4

  7. 分离所有外部驱动器

  8. 重启进去 Internet Recovery Mode 按下 ALT CMD [R
    或可启动的Mavericks或Yosemite Thumb Drive(完整系统或安装)。

  9. 开始 Terminal 来自菜单栏/公用事业
  10. 在终端提示符处输入以下命令:

    diskutil cs list
    
  11. 复制CoreStorage卷的逻辑卷(LV)字母数字UUID。 LVUUID应该是列出的第四个。在上面的例子中,字母数字是:
    7BF42B7B-XXXX-XXXX-XXXX-XXXXXXXXXXXX。
  12. 运行以下命令:

    diskutil cs resizeStack LVUUID partsize  
    

    根据上面找到的数字,它将是:

    diskutil cs resizeStack 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx 0g  
    

    这有望将您的CoreStorage卷扩展到完整的750 GB。根据您的磁盘,这将需要几秒钟(SSD)或几分钟(HDD)。成功调整大小后使用 diskutil list 如果'Recovery HD'仍然存在。
    (以前的命令是 diskutil cs resizeStack 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx 748g。经过一些测试,我们发现了这一点 diskutil cs resizeStack 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx 0g 是更聪明的命令。它应该将LVG扩展到最大尺寸,同时通常将“Recovery HD”移动到物理磁盘的最末端。在这种情况下,0g似乎是一个神奇的数字。)

  13. 退出'Terminal.app'并启动'磁盘工具'并验证扩展的卷。
  14. 重新启动到Recovery HD和主驱动器。如果一切按预期工作,请删除在步骤5中创建的磁盘映像

如果这不起作用那么更长更难的方式:

  1. 输入 diskutil list
  2. 擦除 Recovery HDdiskutil eraseVolume Free\ Space %noformat% IDENTIFIER_Recovery_HD
    在你的例子中: diskutil eraseVolume Free\ Space %noformat% disk0s3
  3. 在终端提示符处输入以下命令:     diskutil cs列表
  4. 复制CoreStorage卷的逻辑卷(LV)字母数字UUID。 LVUUID应该是列出的第四个。在上面的例子中,字母数字是:
    7BF42B7B-XXXX-XXXX-XXXX-XXXXXXXXXXXX。
  5. 运行以下命令:
    diskutil cs resizeStack LVUUID partsize

    根据上面找到的数字,它将是:

    diskutil cs resizeStack 7BF42B7B-xxxx-xxxx-xxxx-xxxxxxxxxxxx 748g  
    

    这有望将您的CoreStorage卷扩展到几乎全部748 GB(我已经为未来留下了一些空间 Recovery HD

  6. 为。构建分区 Recovery HD 如有必要
  7. 重建 Recovery HD 如有必要
    (正在进行中:在Parallels中测试但由于Parallels的限制可能无法重新启动到恢复模式,并且分区始终可见。看起来像Apple脚本处于 musings.silvertooth.us 不适用于Yosemite / CoreStorage。我正在调查那个)

如果您遇到问题,请回复评论(或聊天)


这看起来像一个很棒的回应。我今天下班后将执行这些命令,并将返回此处报告结果。在此先感谢您抽出宝贵时间进行此次回复!
Christian

我们可以开个聊天室,我可能会陪你。我整天都可以使用,直到UTC时间凌晨1点(或者你的时间是24.00 Uhr ;-))
klanomath

那太棒了,非常友好的你:)我希望我不需要进一步的帮助,但很高兴知道有一个地方可以去。
Christian

在开始之前请输入此内容 聊天室
klanomath

无法擦除恢复磁盘bc无法挂载。 Resize表示不可能安装bc boot helper。现在去聊天
Christian

11

我对这个问题的复杂性感到惊讶(参见@klanomath答案)并且很容易创建它。

这就是为什么我试着玩它并找到了解决方法。

  1. 我的问题如下:我有500GB磁盘。我使用“磁盘工具”在此磁盘上创建了150GB-Macintosh-HD分区,将350GB作为“可用空间”。当我尝试将可用空间格式化为第二个分区时,我没有这样做:当我按下它时,它忽略了我的命令并且表现得像我从未按下“应用”(当我想关闭“磁盘工具”窗口时它警告我有未应用的更改)。

  2. 我拿了第一卷(这是名为Macintosh HD的格式化卷,它有150GB大小)并询问磁盘工具 将其分为两个分区:100GB + 50GB。按下“应用”并神奇地为我创建了两个分区的磁盘工具:100GB + 400GB 。此时磁盘上的所有空间都变得有用,我对它非常满意。

  3. 然后我只需删除第二个分区,按“ - ”和“应用”。结果它与Macintosh HD合并,我回到了第一步之前。

  4. 最后,我把它分成了两个分区,大小分别为150GB和350GB。现在问题似乎已经解决了。


这似乎对我有用,但在退出并重新打开磁盘工具后,它似乎失败了。
ELLIOTTCABLE

@ELLIOTTCABLE,对我来说,它也可以在重新启动磁盘工具后运行。
klm123

也为我工作。感谢您提供详细信息
Lucas

1
我有这个确切的问题,谢天谢地,我没有做任何复杂的事情。这是我的解决方案。
Learn OpenGL ES

2
也为我工作,比上述解决方案更容易,更容易出错。谢谢。
Luca Bedeschi

0

我尝试了apple.stackexchange和其他博客的所有内容,但都没有奏效。 但这种方法有点像魅力:

  1. 使用bootcamp制作可启动的Windows USB。
  2. 不要分区或下载支持文件。
  3. 重启你的comp持“选项”键。
  4. 打开Windows分区并继续单击下一步,直到您必须选择格式化磁盘。
  5. 选择具有“自由空间”存储器的块,即未分配的空间。
  6. 单击安装窗口中的“新建”,然后单击“格式”
  7. 您将收到完全正常的错误。
  8. 退出安装并重新启动到Mac。
  9. 现在“freespace”是“windows NTFS”格式。
  10. 点击“ - ”符号即可。它恢复到你的全硬盘。

嘿,在尝试上述方法之前,请尝试关闭FileVault。
Kevin Prasanna R R

0

好文章!非常感谢您为此付出的努力 - 真的帮助了我!

我正在跟踪扩展我的Core Storage的用例,删除一个bootcamp卷并合并它。

我发现在继续执行命令之前我必须解锁我的核心存储

diskutil cs resizeStack 

很简单

diskutil cs unlockVolume <volume ID>

其核心存储的ID相同,格式为11111111-2222-3333-4444-555555555555

同样在OS X 10.11.1上,我发现0g不是resize值的有效参数。我被要求提供特定的尺寸。

最后,我强烈建议您在尝试调整大小之前验证并修复核心存储卷上的任何错误。解决调整大小过程之外的问题更容易。


0

我有这个问题,我认为最简单的解决方法是:单击分区布局底部的“+”符号,将第二个分区调整为您想要的大小,然后选择格式为“可用空间”。

您将看到布局中的第二个分区被空格替换。然后,只需选择“应用”。


0

我正在寻找一种解决方案,以非破坏性的方式缩小Sierra的音量,为High Sierra的测试安装腾出空间,并发现这个页面非常有用。

我在MacOS Sierra中使用加密卷HFS + Journaled。

Matt上面的建议非常好,但我找到了一个更快的机制,对于加密与否的CoreStorage卷。

从...开始:

使用CMD-R启动机器时启动恢复磁盘

进入恢复模式后,如果您有CoreStorage加密卷,请打开终端窗口并准备驱动器。否则请跳到下面的DiskUtility使用情况。

diskutil cs list

记下锁定卷的最后一个UUID(如果存在)。

diskutil cs unlockVolume UUID

上面的命令应该询问密码,这是您的普通用户密码。

如果您没有加密的CoreStorage卷,可以从这里开始:

从终端打开磁盘工具或从菜单返回,并使用主磁盘容器上的分区功能。

您应该能够使用“+”键可选地将分区添加到可用空间,根据您的偏好调整大小,然后使用“应用”启动现有分区的非破坏性,非擦除缩减。这将使您在较小的分区上保留原始数据,在剩余空间中保留空分区。只需确保将新分区设置为不与指示的交叉阴影数据重叠。

它会告诉你操作不会删除现有数据,我可以向你保证,在我的情况下它没有。

无论如何,通常需要注意的是,在开始此类操作之前,您应该始终备份。

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.