苹果的 macOS 系统有个非常脑残的严重缺陷:居然能被 iCloud 的数据同步把整个硬盘写满,一点缓冲都不留的那种写满,然后系统无法启动。
这问题不是发生在我电脑上,而是我司二爷遇到的。如果你还没关注他的公众号,我建议你先关注起来:
昨天中午吃饭回来,二爷说自己电脑起不来了。我说不能啊,这款笔记本不是刚买没多久的 M1 芯片的机器来着,莫非是想换 M2?
他折腾了一会儿才想起来,说可能知道原因了,昨天池老师用 iCloud 给他共享了一个目录,里面都是一些大文件(不知道是不是不可描述之各种视频),居然把硬盘撑爆了。池老师,也就是池建强老师,前不久刚创业的那位,如果你没关注他公众号,我建议你也先关注起来:
按理说,既然遇到了电脑问题,这不是应该找池老师么?你看他公众号叫 MacTalk,没住儿有两下子。但他没遇到这问题,估计也搞不定,有那个网络沟通时间,我们自己没准儿就搞定了。
既然还不如我们来,于是这一折腾,俩人就折腾了数个小时,还没搞定,折腾得头晕脑胀,每解决一个问题,就总是出现一个新问题。
有人说启动不了,你倒是进系统恢复模式下啊,这个我还能不知道么?
基本思路是,进到恢复模式下,然后打开命令行终端,手动删除一些文件,不就有空余空间了?最开始我们也这么打算的,有 Linux 使用经验的人都知道这个操作,但是,到恢复模式下启动终端,rm 命令操作起来,发现一样没法删文件,反复提示:
no space left on device 
咦,这是为啥呢?这是因为 macOS 现在都是 APFS 文件系统,而这个文件系统有个特性叫 CoW (Copy on Write)。删除文件也必须要有空余空间。如果空间写满,就怎么也操作不了。 
为什么说这是 macOS 的设计缺陷呢?因为作为一款现代的操作系统,你不能允许 iCloud 这样的数据同步工具直接把空间写满。如果写满,那系统停留在图形界面不应该重启动,因为停留在图形界面还有救。
苹果公司的软件机制有时候就是这么一根筋。
不只是 macOS ,
iOS 用户也一样
会遇到这个问题,如果你手机空间用满了之后系统会白屏,然后只能重装系统,如果之前没备份数据的话,那只能接受系统全部丢失的后果。

所以,千万千万要小心。别说我没给你提醒。
前面提到如果停留在图形界面没重启,还有救,可以通过查看系统信息存储空间管理,来释放一些空间。 这时候是可以进行操作的。但如果被强制重启,那就麻烦了。
那是不是重启,就完全没机会修复了呢?进入到终端模式下,用如下命令查看空间情况:
diskutil list
注意这是正常系统的演示
在输出的信息里,如果 VM 卷占用了一定的存储空间,那么删除 VM 卷,是会腾出来一定空间。注意:M1 芯片系统的 macOS 的启动和恢复结构所有变化。具体操作不赘述。然后就可以删除其他文件了。

问题是,昨天这台机器 VM 卷占用的空间恰巧极小。一狠心,干脆把 Recovery 卷删了。这次可以命令行清理空间了,但因为有的数据没备份,也不好删除太多文件。问题就卡在这里。
如果空间不够,即使是选择恢复系统,也不行。恢复系统至少要 40GB 空余存储。而且,因为我们删除了 Recovery 卷,也意味着破坏了 
recoveryOS
,恢复也遇到了问题。

重启,发现还是不行。在恢复页面指定磁盘,启动,报错:

SDErrorDomain error 104

这个错误信息啥意思,网络上搜不到有价值的信息。

试过在恢复模式下,进行磁盘的急救和检测,然而并没有用,病急乱投医。

我们还先后试过把硬盘作为目标磁盘共享给另一台机器,但 Recovery 卷没删除之前也是不能删文件的,之后才可以。为啥也会这样?猜测原因很可能是因为文件系统的加密保护机制。这是我猜的,谁知道具体原因麻烦告知我一下。

恢复安装,安装不了,还是安装不了,还是安装不了。

这时候,还有一招是用 Apple Configurator 安装这台机器的 recoveryOS。虽然 Apple Configurator 这个应用说明没直接写支持 macOS,但其实是支持的。

把 recoveryOS 恢复之后,面临的情况是如果恢复系统,空间还是不够。干脆想办法,再找了一台机器,把需要备份的数据做好备份,然后命令行下删除文件,清理出足够多的空间。

再进行恢复。重新安装系统,注意不要选择格式化磁盘,那么,旧的系统环境和数据都还在

终于可以了。

总结教训:

  1. 做好数据备份,做好数据备份。
  2. 一定要注意自己系统的磁盘空间使用情况。iPhone 也要注意
  3. 各种尝试和操作的时候要做好日志和记录
  4. 这个问题去了苹果店找天才吧可能也没办法。

题图:高品图像 GaopinImages
提到的参考资料我放到知识星球里了,点 {阅读原文} 可以访问,不过一般人用不到。
继续阅读
阅读原文