macOS 不提供传统坏块扫描,而是通过 S.M.A.R.T. 状态、APFS 结构校验和内核 I/O 日志(如 media error、timeout)综合判断介质可靠性;三者任一异常均需立即备份并考虑换盘。
macos 不提供传统 linux 风格的“全盘坏块扫描”命令(如 badblocks),也不允许用户直接读取底层扇区做物理坏道检测。它的文件系统(apfs/hfs+)和磁盘管理机制是面向现代 ssd/nvme 设计的,坏块由固件自动隔离,系统层面不暴露原始坏块列表。你真正能获取的是:磁盘健康状态、s.m.a.r.t. 摘要、文件系统结构一致性结果——这些才是 macos 认可的“坏块级可靠性证据”。
查看磁盘 S.M.A.R.T. 状态(判断硬件是否预警)
这是最接近“硬件坏块风险”的指标。S.M.A.R.T. 由硬盘/SSD 自身报告,macOS 通过 smartmontools 工具读取(需手动安装):
- 先用 Homebrew 安装:
brew install smartmontools - 列出所有存储设备:
diskutil list,找到你的内置盘(通常是disk0) - 运行检测:
sudo smartctl -a /dev/disk0 - 重点关注字段:SMART overall-health self-assessment test result: PASSED(若为 FAILED 或 WARNING,说明固件已标记不可靠区域);同时查看 Reallocated_Sector_Ct、Current_Pending_Sector、UDMA_CRC_Error_Count 等值是否非零且持续增长
验证 APFS 容器与宗卷结构完整性
APFS 不维护“坏块表”,但会记录元数据损坏或无法写入的逻辑块。使用 diskutil 可触发只读校验:
- 查出启动容器标识:
diskutil apfs list,找到 Container Reference(如disk1) - 执行结构验证:
diskutil apfs verifyVolume /dev/disk1s1(将disk1s1替换为你实际的宗卷设备) - 若返回 “The volume … appears to be OK”,表示当前文件系统结构无矛盾;若提示 “Invalid block checksum” 或 “Corrupted node”,说明某逻辑块数据校验失败——这相当于 APFS 层面的“软坏块”证据
检查内核日志中是否有 I/O 故障痕迹
真正的读写失败(如因坏块导致的 I/O timeout、media error)会被内核记录。终端可快速筛查:
- 搜索最近 24 小时的磁盘 I/O 错误:
log show --predicate 'subsystem == "com.apple.driver.AppleAHCIDiskDriver" || process == "kernel" && eventMessage contains "I/O error" || eventMessage contains "media error" || eventMessage contains "timeout"' --last 24h - 重点看输出中是否含 “IOBlockStorageDriver”、“IOAHCIBlockStorageDevice”、“NVMe” 等驱动名,以及错误码如 0xe00002c7(I/O timeout)、0xe00002e2(media error)
- 反复出现同类错误,尤其集中在同一 LBA 地址段,即暗示该区域介质异常
补充:用磁盘工具 GUI 做最终确认(不可跳过)
终端指令不能替代图形化诊断的完整性。请务必同步操作:
- 打开“磁盘工具”,选取“显示”>“显示所有设备”
- 先点选最顶层物理磁盘(如
APPLE SSD AP0512M),点“信息” → 查看“S.M.A.R.T. 状态”是否为“已验证” - 再点选其下的 APFS 容器或宗卷,点“急救” → 若提示“正在验证宗卷……发现错误”或“无法修复”,说明文件系统已感知到不可恢复的数据块问题
不复杂但容易忽略:macOS 的“坏块”不在用户可见层面,而藏在固件、校验失败和内核 I/O 日志里。盯紧 S.M.A.R.T. 状态、APFS 校验结果、kernel 日志中的 media error,三者任一异常都值得立即备份并考虑更换硬盘。


















