APFS 是一种写入时复制文件系统,这意味着任何修改(包括删除)都需要写入新元数据,而不仅仅是更改现有元数据。新元数据需要可用空间。至少在 OSX Mojave 上,这意味着如果根本没有剩余可用空间,您就无法再删除任何内容。
我不知道苹果怎么会把具有如此可用性问题的文件系统推为默认文件系统。
现在我的文件系统已满,我该如何解决这个问题而不重新格式化分区并丢失所有数据?
答案1
据我所知,没有办法在卷内解决此问题。我在网上找到了一些建议,说重新格式化是唯一的选择。幸运的是,这并不总是正确的。
要解决此问题,您需要查看容器内的其他卷和快照。可以使用 命令行列出容器和卷(以及其他分区)diskutil list
。APFS 容器中的所有卷共享可用空间,因此如果您设法清除另一个卷中的空间,则应该能够再次删除第一个卷中的文件。有几种方法可以创建更多空间:
Mojave 将其交换文件和休眠数据存储在名为“VM”的卷中。如果您的交换使用量当前大于默认值(我不确定默认值是多少),则完全重新启动系统会将“VM”卷缩小到其默认值,从而为您提供一些可用空间。请务必从已满的卷中删除一些文件以腾出更多空间。(免责声明:如果没有大于默认值的交换空间可用,您的计算机可能无法再启动,至少无法进入常规环境。我还没有尝试过。)
本地时间机器快照存储为 APFS 快照。如果您有这些快照,删除其中一些快照应该会给您一些空间。终端命令
tmutil listlocalsnapshots /
将列出它们。如果您创建了其他卷,您可能能够从这些卷中删除数据或删除其他卷。可用空间在容器内共享,因此这将为您提供一些可用空间。但是,默认只有一个主卷和几个系统卷(预启动、恢复、VM),您可能无法直接删除它们,因此这不适用于大多数用户。
如果容器末尾有可用空间,或者您可以移除/调整其他分区的大小,则您可以扩大容器以创建更多空间。这也不适用于常规安装。
也许可以从恢复环境等内部删除其中一个系统卷,但这只是猜测。也许它们被系统完整性保护锁定,您必须先禁用它。无论如何,这在某种程度上破坏了您的系统。删除(并可能重新创建)VM 卷可能是可能的,我不知道 OSX 在找到它或其中的文件丢失时是否会重新创建它。
不幸的是,上述选项并不总是适用,最终你可能会陷入(据我所知)重新格式化是唯一选择的情况。我希望苹果能尽快解决这个问题。
如果无法在容器中创建额外的可用空间,您仍然可以启动到目标磁盘模式或恢复模式来备份数据。如果主环境仍在运行,您应该能够从那里备份文件。这可能是重新格式化磁盘之前的最后手段。但无论如何,保留备份当然是一种很好的做法。