1. 为什么删掉Windows之后,磁盘空间并没有“自动回来”
很多人第一次在Mac上装Windows,都是冲着“偶尔要用某个只支持Windows的软件”去的。装的时候用“启动转换助理”一路下一步,它会问你给Windows分多大的盘,你随手拖了个100GB、150GB甚至更多。用了一段时间发现,那个软件其实有网页版,或者找到了Mac上的替代品,于是决定把Windows删掉。
删的时候也很顺利:打开“启动转换助理”,点“移除Windows”,确认,进度条走完,重启。回到macOS一看,磁盘工具里确实少了一个叫“BOOTCAMP”的分区,心里一阵轻松。但打开“关于本机”里的储存空间一看,傻眼了——可用空间并没有变多,那100多GB像是凭空消失了。
这不是系统出了bug,而是分区表层面的正常现象。启动转换助理在移除Windows时,做的是“删除Windows分区”,但它并不会自动把这个分区合并回macOS的主分区。原因很简单:macOS的主分区(通常是APFS容器里的Macintosh HD)和Windows分区(NTFS格式)在物理磁盘上是两个独立的区域,中间还隔着一个叫“Microsoft保留分区”或者“恢复分区”的小块。删除Windows分区之后,那块空间变成了“未分配”状态,游离在磁盘上,macOS的APFS容器并不会自动把它吃进去。
打个比方:你的硬盘是一块大蛋糕,macOS切走了大部分,Windows切走了一小块。你把Windows那块蛋糕扔了,但扔掉的只是蛋糕本身,盘子还在,而且盘子和macOS的盘子之间还隔着一道小隔板。你要做的,是把隔板拆掉,把空盘子也拿掉,然后让macOS的盘子扩大,把这块空地圈进来。
这个过程在“磁盘工具”里叫“合并”或者“扩容”,但实际操作起来,并没有一个按钮叫“一键合并”。你需要手动操作,而且操作的对象不是分区,而是APFS容器。这是很多人第一次操作时最容易搞混的地方——他们盯着那个“未分配”的空间想把它拖到macOS分区里,结果发现根本拖不动。
提示:在动手之前,先用Time Machine做一次完整备份。分区操作属于底层磁盘操作,一旦中途断电或者误操作,数据恢复的代价非常高。备份不是“以防万一”,而是“必须做”。
另外要说明的是,本文讨论的场景是Intel芯片的Mac,以及部分通过启动转换助理安装Windows的Apple芯片Mac(在支持的机型上)。不同macOS版本(Ventura、Sonoma、Sequoia)的磁盘工具界面略有差异,但核心逻辑是一致的。下面我会以最常见的场景为主线,把每一步的原理和操作都拆开讲清楚。
2. 动手前必须搞清楚的三个磁盘概念
在打开磁盘工具之前,如果连“分区”“容器”“宗卷”这三个词都分不清,操作起来很容易点错。我用最直白的方式解释一下,不堆术语。
2.1 物理磁盘、分区、容器、宗卷的层级关系
一块物理硬盘,比如你Mac里那块512GB的SSD,是最底层的“物理磁盘”。在这块磁盘上,会有一个“分区表”(通常是GPT格式),它把磁盘划分成若干个“分区”。每个分区是一段连续的物理空间。
在macOS这边,情况稍微复杂一点。macOS不会直接把一个分区当成一个盘来用,而是会在分区之上再建一层“容器”(Container)。容器是APFS文件系统的概念,你可以把它理解成一个“池子”,这个池子里可以放多个“宗卷”(Volume)。宗卷才是你平时看到的“Macintosh HD”“Macintosh HD - 数据”这些盘。
所以层级是这样的:
- 物理磁盘(512GB SSD)
- 分区1(EFI系统分区,约200MB)
- 分区2(APFS容器,占了大部分空间)
- 宗卷:Macintosh HD
- 宗卷:Macintosh HD - 数据
- 宗卷:其他系统宗卷
- 分区3(原来的Windows分区,NTFS,现在已删除,变成未分配空间)
- 分区4(Microsoft保留分区,约16MB到几百MB不等)
当你“移除Windows”之后,分区3和分区4被删掉了,它们所在的空间变成了“未分配”。但分区2(APFS容器)的大小并没有变,它还是原来那么大。所以你要做的,是把分区2这个容器“撑大”,让它把后面的未分配空间吞进去。
2.2 为什么不能直接拖动分区大小
在磁盘工具的图形界面里,你会看到一个饼图或者条状图,显示各个分区和未分配空间。很多人第一反应是点中macOS分区,然后拖拽它的边缘,想把未分配空间拖进来。但这个操作在APFS容器上是不生效的,或者会提示你“无法调整大小”。
原因在于,APFS容器的扩容有一个前提:未分配空间必须紧挨着容器的末尾。如果未分配空间和容器之间还隔着别的分区(比如那个Microsoft保留分区),容器就无法直接扩容。这时候你需要先删掉那个碍事的小分区,让未分配空间和容器连成一片。
另一个原因是,磁盘工具的图形界面在调整APFS容器时,有时候不会实时刷新。你拖了之后看起来没变化,其实是因为界面没有重新读取磁盘布局。这种情况下,用命令行工具diskutil反而更可靠。
2.3 那个不起眼的Microsoft保留分区
很多人删Windows的时候,只删了那个几十GB的主分区,忽略了前面还有一个很小的“Microsoft保留分区”。这个分区通常只有16MB到500MB,格式是NTFS或者FAT32,里面存的是Windows启动相关的一些元数据。它虽然小,但位置很关键——它往往夹在APFS容器和Windows主分区之间。
如果你只删了Windows主分区,保留分区还在,那么未分配空间和APFS容器之间就隔着这个保留分区,容器无法扩容。所以第一步应该是确认这个保留分区是否还在,如果在,先把它删掉。
在磁盘工具里,点左上角的“显示”菜单,选择“显示所有设备”,这样你才能看到物理磁盘和所有分区,而不是只看到宗卷。然后找到那个名字类似“Microsoft Reserved”或者没有名字的小分区,确认它的格式是NTFS或FAT32,大小很小,然后选中它,点“抹掉”或者“删除”。删掉之后,它所在的空间也会变成未分配,和后面的未分配空间连成一片。
注意:删除分区之前,一定要反复确认你选中的是Windows相关的分区,而不是macOS的APFS容器或者EFI分区。EFI分区通常约200MB到300MB,格式是FAT32,名字叫“EFI”或者“EFI System Partition”。这个分区不能删,删了Mac可能无法启动。
3. 用磁盘工具完成合并的完整操作链路
搞清楚上面的概念之后,实际操作其实不复杂。我下面按顺序把每一步写清楚,包括界面上会看到什么、该点哪里、可能遇到什么提示。
3.1 第一步:确认磁盘布局,找到“未分配”空间
打开“磁盘工具”(可以在“启动台”的“其他”文件夹里找到,或者用Spotlight搜索)。打开之后,先点左上角的“显示”菜单,选择“显示所有设备”。这一步很重要,默认的“仅显示宗卷”模式会隐藏物理磁盘和分区信息,你会看不到未分配空间。
然后在左侧列表里,选中最顶层的物理磁盘,通常是“APPLE SSD”或者类似的名称,下面会列出它的所有分区。你会看到类似这样的结构:
- APPLE SSD AP0512Q Media
- EFI(约200MB,FAT32)
- Container disk3(APFS容器,大小是原来macOS分区的大小)
- Macintosh HD
- Macintosh HD - 数据
- 未分配(大小等于原来Windows分区的大小)
- Microsoft Reserved(如果还在的话,会显示在这里)
如果“未分配”和“Container disk3”之间还有“Microsoft Reserved”,那就先选中它,点工具栏上的“删除”按钮(减号图标),确认删除。删除之后,未分配空间应该会和后面的空间连在一起,显示为一个更大的“未分配”块。
3.2 第二步:选中APFS容器,而不是宗卷
这是最容易出错的一步。在左侧列表里,你要选中的是“Container disk3”这一行,而不是它下面的“Macintosh HD”或“Macintosh HD - 数据”。因为扩容操作的对象是容器,不是宗卷。宗卷的大小是容器内部动态分配的,容器本身的大小才是物理磁盘上的实际占用。
选中容器之后,工具栏上的“分区”按钮会变成可用状态(如果选中的是宗卷,这个按钮可能是灰的,或者点了之后行为不一样)。点击“分区”按钮,会弹出一个界面,显示一个圆形的饼图,代表整个物理磁盘的空间分配。
在这个饼图里,你会看到APFS容器占了一块,未分配空间占了一块。选中APFS容器那一块,它的右下角会出现一个可以拖拽的圆点。按住那个圆点,往未分配空间的方向拖,直到容器占满整个饼图,未分配空间变成0。
拖完之后,点“应用”,系统会提示你“正在调整分区大小”,进度条走完就完成了。这个过程可能需要几分钟,取决于磁盘速度和数据量。期间不要关机,不要拔电源。
3.3 第三步:如果图形界面拖不动,用命令行兜底
有时候磁盘工具的图形界面会抽风,比如拖拽的圆点拖不动,或者拖了之后点“应用”没反应,或者提示“无法调整分区大小,因为空间不足”。这种情况下,用命令行工具diskutil更直接。
先打开“终端”(在“启动台”的“其他”文件夹里,或者Spotlight搜索“终端”)。然后输入以下命令查看磁盘列表:
diskutil list你会看到类似这样的输出:
/dev/disk0 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *500.3 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_APFS Container disk1 350.0 GB disk0s2 3: Microsoft Reserved 16.8 MB disk0s3这里disk0s2是APFS容器,disk0s3是Microsoft保留分区。如果保留分区还在,先删掉它:
diskutil eraseVolume free none disk0s3这个命令会把disk0s3抹掉,变成未分配空间。然后确认一下容器和未分配空间是否相邻:
diskutil list如果看到disk0s2后面直接跟着未分配空间(没有其他分区),就可以扩容容器了。先查看容器的当前大小和可用空间:
diskutil apfs list找到容器的标识符,通常是disk1。然后执行扩容命令:
diskutil apfs resizeContainer disk1 0这里的0表示“扩展到最大可用空间”。命令执行后,系统会开始调整容器大小,把后面的未分配空间全部吞进去。这个过程可能需要几分钟,终端会显示进度。
提示:如果
diskutil apfs resizeContainer disk1 0报错,提示“目标大小无效”或者“空间不足”,可能是因为未分配空间和容器之间还有别的分区。再用diskutil list确认一下,把所有碍事的小分区都删掉。
3.4 第四步:验证合并结果
扩容完成后,再次运行diskutil list,你会看到APFS容器的大小变大了,未分配空间消失了。然后在“关于本机”里点“储存空间”,应该能看到可用空间增加了。
如果“储存空间”里显示的还是旧数据,可以重启一次Mac,让系统重新读取磁盘布局。重启之后再看,应该就正常了。
4. 操作过程中最容易踩的五个坑
上面讲的流程看起来不复杂,但实际操作中,很多人会在一些细节上卡住。我把自己和身边人踩过的坑整理出来,你对照着检查,能省不少时间。
4.1 坑一:在“仅显示宗卷”模式下操作
磁盘工具默认的显示模式是“仅显示宗卷”,这个模式下你只能看到Macintosh HD这些宗卷,看不到物理磁盘和分区。很多人打开磁盘工具,发现左侧列表里只有一两个盘,找不到“未分配”空间,就以为磁盘没问题。其实要切换到“显示所有设备”才能看到完整布局。
这个坑的隐蔽之处在于,它不会报错,只是让你找不到该操作的对象。所以打开磁盘工具的第一件事,就是点“显示”菜单,选“显示所有设备”。
4.2 坑二:误删EFI分区导致无法启动
EFI分区是Mac启动必需的,大小通常在200MB到300MB之间,格式是FAT32,名字叫“EFI”。在磁盘工具的列表里,它和Microsoft保留分区看起来有点像,都是很小的分区。如果不小心把EFI分区删了,Mac重启后会找不到启动盘,只能进恢复模式修复。
区分方法:EFI分区的大小通常是200MB以上,而Microsoft保留分区通常只有16MB到500MB,但更常见的是16MB或128MB。另外,EFI分区的名字明确写着“EFI”,而Microsoft保留分区可能没有名字,或者写着“Microsoft Reserved”。删之前多看一眼,确认无误再动手。
4.3 坑三:扩容时提示“无法调整大小,因为空间不足”
这个提示通常出现在图形界面拖拽的时候。原因可能是未分配空间和容器之间还有分区,或者未分配空间在容器的前面而不是后面。APFS容器只能向后扩容,不能向前扩容。如果未分配空间在容器前面,容器无法直接吞掉它。
解决办法:先用diskutil list确认未分配空间的位置。如果在容器前面,那就没办法直接合并,需要更复杂的操作(比如备份数据、抹掉整个磁盘、重新分区)。这种情况比较少见,通常发生在手动分区的时候把顺序搞乱了。
4.4 坑四:扩容过程中断电或强制关机
分区调整是底层操作,过程中断电或者强制关机,可能导致分区表损坏,甚至数据丢失。如果只是分区表损坏,可以用磁盘工具的“急救”功能尝试修复。如果数据丢失,就只能从Time Machine备份恢复。
所以再次强调:操作前备份,操作中接好电源,不要中途强制关机。如果扩容过程卡住超过半小时,先检查磁盘活动指示灯是否还在闪,如果还在闪就继续等,不要急着强制重启。
4.5 坑五:合并后可用空间没有立即更新
扩容完成后,有时候“关于本机”里的储存空间不会立即刷新,还是显示旧的数据。这不是操作失败,只是系统缓存没有更新。重启一次Mac,或者等几分钟再看,通常就正常了。
如果重启后还是不对,打开“磁盘工具”,选中Macintosh HD宗卷,点“急救”,让系统检查一下文件系统。急救完成后,空间信息应该会更新。
5. 合并之后的空间管理建议
磁盘合并完成,可用空间回来了,但这并不意味着可以随便造。macOS的APFS文件系统虽然灵活,但空间管理还是有一些讲究的。
5.1 理解APFS容器的“共享空间”机制
APFS容器里的多个宗卷是共享容器空间的。也就是说,Macintosh HD和Macintosh HD - 数据并不是各自固定占一块空间,而是动态共享整个容器的空间。你往“数据”宗卷里存东西,容器会自动分配空间,不需要手动调整。
这个机制的好处是灵活,不会出现“系统盘满了但数据盘还有空间”的情况。但坏处是,如果某个宗卷里的快照或者缓存占用了大量空间,可能会影响整个容器的可用空间。定期用“储存空间”里的“管理”功能清理一下,能避免空间被莫名其妙占满。
5.2 定期检查“系统数据”占用
在“关于本机”的“储存空间”里,有一个类别叫“系统数据”,它包含了缓存、日志、快照、临时文件等。这个类别有时候会膨胀到几十GB甚至上百GB,让人以为磁盘被塞满了。实际上,这些数据大部分是可以清理的。
清理方法:重启Mac,系统会自动清理一部分临时文件。如果还是很大,可以用终端命令sudo tmutil listlocalsnapshots /查看本地快照,然后用sudo tmutil deletelocalsnapshots删除不需要的快照。不过删除快照要谨慎,确认没有正在进行的备份任务再操作。
5.3 如果以后还想装Windows,怎么分区更合理
有些人删了Windows之后,过段时间又需要用了。再次安装的时候,建议给Windows分一个够用但不浪费的大小。根据经验,如果只是偶尔用某个软件,80GB到100GB足够了。如果要在Windows里装大型软件或者游戏,那就至少150GB起步。
另外,再次安装Windows之前,确保macOS这边有足够的可用空间。启动转换助理在分区时,会从macOS的可用空间里划走一块给Windows。如果macOS本身可用空间就不多,分区后可能会影响系统运行。
提示:如果只是偶尔用Windows软件,可以考虑用虚拟机(比如Parallels Desktop或VMware Fusion)代替启动转换助理。虚拟机不需要单独分区,磁盘文件放在macOS里,用的时候启动,不用的时候关掉,空间管理更灵活。不过虚拟机对性能有一定影响,大型游戏或者专业软件还是双系统更合适。
6. 命令行工具diskutil的进阶用法
对于喜欢用命令行的朋友,diskutil还有很多实用的子命令,可以在不打开磁盘工具的情况下完成大部分磁盘管理操作。下面列几个常用的,以备不时之需。
6.1 查看磁盘和分区信息
diskutil list这个命令列出所有物理磁盘和它们的分区。加上-plist参数可以输出XML格式,方便脚本处理。
diskutil info disk0s2查看指定分区的详细信息,包括大小、格式、挂载点等。
6.2 删除分区并转为未分配空间
diskutil eraseVolume free none disk0s3这个命令把disk0s3抹掉,变成未分配空间。free表示不格式化为任何文件系统,none表示不命名。
6.3 调整APFS容器大小
diskutil apfs resizeContainer disk1 0把容器disk1扩展到最大可用空间。也可以指定具体大小,比如diskutil apfs resizeContainer disk1 400g,把容器调整为400GB。
6.4 检查APFS容器状态
diskutil apfs list列出所有APFS容器和它们包含的宗卷,显示容器大小、可用空间、宗卷列表等信息。扩容前后对比这个输出,可以确认操作是否生效。
6.5 修复文件系统
diskutil repairVolume disk1对指定宗卷或容器进行文件系统检查和修复。如果扩容后系统运行异常,可以试试这个命令。
注意:
diskutil的命令行操作没有二次确认,回车即执行。所以输入命令之前,反复确认磁盘标识符(如disk0s3、disk1)是否正确。输错一个字符,可能就把macOS分区删了。
7. 从这次操作中我学到的几件事
第一次做这个操作的时候,我也被“删了Windows但空间没回来”搞懵了。后来查了不少资料,动手试了几次,才把整个逻辑理顺。现在回头看,这件事其实不复杂,但有几个关键点如果没人告诉你,自己摸索会走很多弯路。
第一,磁盘工具默认不显示所有设备,这个设计对普通用户友好,但对需要分区操作的人来说是个障碍。知道要切换显示模式,就成功了一半。
第二,APFS容器和宗卷的区别,是理解整个操作的核心。很多人卡住,就是因为一直在宗卷层面找“合并”按钮,而实际上操作对象是容器。
第三,命令行工具diskutil在图形界面失灵的时候,是可靠的兜底方案。尤其是diskutil apfs resizeContainer这个命令,比图形界面拖拽更精准,也更少出bug。
第四,备份永远不嫌多。分区操作有风险,Time Machine备份是最低成本的保险。我现在的习惯是,任何涉及磁盘分区的操作之前,先手动触发一次Time Machine备份,确认备份完成再动手。
第五,如果以后还要用Windows,虚拟机可能是更省心的选择。双系统虽然性能好,但分区管理确实麻烦。虚拟机把整个Windows装在一个文件里,删掉就是删掉一个文件,不会留下未分配空间这种尾巴。
最后再分享一个小技巧:如果你不确定某个分区能不能删,先在终端里用diskutil info看一下它的详细信息。命令输出里会显示分区的类型、格式、大小、挂载点,这些信息比磁盘工具界面里显示的更全面。确认无误再动手,比事后恢复数据要轻松得多。