稀疏包的文件大小会增大,但删除数据后文件大小不会减小。但我的稀疏包可以自动调整大小,这是为什么?

稀疏包的文件大小会增大,但删除数据后文件大小不会减小。但我的稀疏包可以自动调整大小,这是为什么?

我使用的是 macOS Sonoma,但自从 macOS Ventura 以来我就注意到了这一点。我在磁盘工具中创建了一个稀疏捆绑磁盘映像,容量为 100TB,已加密,并使用 APFS。

最近我一直面临存储空间不足的问题,并且发现从我的稀疏包中删除文件实际上会影响磁盘工具、Macintosh HD(从 Finder 获取信息)和系统设置上的可用存储空间。

据我所知,稀疏包的文件大小会增加,但不应该通过删除数据来缩小文件大小。回收空间是您必须在终端中执行的操作,即使这样,它也不会回收那么多。

我已经测试并确认,添加和删除卷中的内容确实会改变 Macintosh HD 的可用空间。它甚至允许我最大化外部空间,我本以为稀疏包已经用完了,这可能不准确。

但事实似乎并非如此。数据是否以某种方式泄露,或者稀疏束是否在某个时刻被更改了?

我应该澄清一下,我在卷之间移动文件,然后复制然后删除。也许移动实际上不同于复制然后删除。但我只是想澄清一下。

答案1

在 Apple 磁盘映像格式的世界里,稀疏文件磁盘映像是单个文件,当您将数据写入磁盘映像时,它们会增大,但当您从磁盘映像中删除数据时,它们不会缩小。您必须使用磁盘实用程序或 hdiutil 来缩小它们。

捆绑相反,存储为一个文件夹,里面装满了大小统一的“带文件”(如果我没记错的话,通常为 4KiB)。当您写入数据时,会创建更多带文件来存储它。如果您删除了恰好存储在给定带文件上的所有数据,则带文件将被删除。因此,sparsebundle 磁盘映像会自动回收其大部分未使用的磁盘空间,因此使用磁盘实用程序或 hdiutil 回收的空间并不多(只能回收部分空带文件的空部分)。

答案2

@Spiff 感谢您的解释。您是否知道是否可以再次关闭 macOS Sonoma 中的动态调整大小功能?

我之所以问这个问题,是因为自 BigSur(上一个没有自动大小调整的 macOS)以来,稀疏包的速度明显变慢,而且系统无法正常工作。自动缩小的稀疏包在安装时据说是空的,在 1 TB 硬盘上仍然需要 500 GB,而状态栏显示有 1 TB 可用(使用老旧的 hdiutil compact 没有帮助)。

相关内容