我尝试更新到 High Sierra(我落后了一年)。它失败了,提示“文件系统验证或修复失败”。它给我的唯一选项是重新启动,我试了好几次,但还是陷入了循环。
我尝试启动恢复模式并fsck
在卷上运行。但是,失败并显示“CreateNewBTree 返回 -34 磁盘已满错误”。我的磁盘实际上并未已满,磁盘实用程序报告有 33 GB 可用空间。
我认为删除一些文件也许会有帮助。我该如何挂载文件系统来删除东西?
启动到单用户模式实际上是从文件系统上带有“安装 macOS High Sierra.app”的磁盘启动,而不是从我的主要 Macintosh HD 卷启动。就好像我卡在了启动磁盘指向这个升级安装磁盘的某个位置。
如果我打开电脑而不做任何事情,它会要求我输入磁盘密码并显示我的用户头像,输入我的密码后会立即跳转到黑色的 macOS 加载栏并尝试安装 High Sierra,但由于磁盘问题,安装很快就会失败。
答案1
我的 iPad Pro 256GB 在多次完全填满磁盘后也遇到了同样的问题。我已经越狱,并获得了命令行单用户访问权限,以卸载用户分区,这样我就可以对其进行 fsck。
不幸的是 fsck_hfs -fdyr 失败了
** Rebuilding catalog B-tree.
BlockFindAll: found 33068 blocks but needed 450588
CreateNewBTree returned -34
Disk full error
** The volume Data could not be repaired.
磁盘扇区大小为 512 字节,但 df 显示“1K 块”,因此我不确定具体是哪个。但它可能表示我有 16MB 可用空间但需要 230MB(512 字节块),或者有 32MB 可用空间但需要 460MB(1K 块)。
我终于恍然大悟,因为我刚刚在别处了解到必须有足够数量的连续可用空间!而且我不知道如何从命令行对 HFS 驱动器进行碎片整理,甚至不知道如何诊断磁盘碎片化程度。在 Windows NTFS 中,使用 SysInternals Contig.exe 可以轻松完成此操作,它还可以方便地将各个文件重新排列为连续的。我不知道 iOS/MacOS 有任何等效工具。
我尝试删除我的 PhotoData\Thumbnails,它是 2x2.5GB 文件(总共 5GB),但这只会将可用块从 31000 增加到 33000...
我最后的尝试是尝试找到一个自从我买了 iPad 以来从未被修改或删除过的大型旧文件。如果我复制它并删除原始文件,那么它最有可能留下完整的碎片...
编辑:我与这个问题斗争了16个月,痛苦不堪。最终,尽管付出了令人难以置信的努力,我还是没能解决这个问题。我确信 BTree 在磁盘已满的情况下损坏是由于 iOS HFS 驱动程序中的一个错误。
挽救我数据的唯一解决方案是从 iOS 10 更新到 iOS 12.4,其中包括转换为 APFS- 完全回避了问题。转换过程基本没有问题。
然而,iOS/Mac 大师 Jonathan Levian 有一个命令行工具高频侦探(通用二进制文件,iOS/Mac)在 www.NewOSXBook.com 上,它让我看到我有一个 1.8GB 的 BTree 目录。不幸的是,我的 iPad Pro 9.7” 只有 2GB RAM,每次我尝试运行可能解决该问题的操作时,他的实验工具都会因“内存不足”错误而崩溃(可能该工具正在将整个 BTree 加载到 RAM 中)。在 Mac(或没有如此巨大的 BTree 的任何 iOS 磁盘)上,这不是问题,因为有足够的 RAM 可用。