Linux 磁盘健康检查:用终端验证你的硬盘

一步步的终端检查清单:先排除空间和 inode 问题,再读取 SMART 自检结果,并查看每个进程的实时磁盘 I/O。

Linux硬件文件系统存储磁盘空间诊断中风险
先对硬盘执行一次 SMART 自检查询,立刻得到 PASSED 或 FAILED 的健康结论。

快速开始

I/O 变慢、系统卡顿或读取报错,可能来自正在损坏的硬盘——也可能只是更简单的原因。这份清单从代价最低的软件原因(空间占满、inode 耗尽、失控进程)查起,最后读取硬盘自身的 SMART 自评,让你清楚该继续排查软件还是准备换盘。

症状

?系统间歇性卡死、文件操作挂起或抛出 I/O 错误,或某块硬盘明显比平时慢。

先确认文件系统还有剩余空间

在深入检查硬盘硬件之前,先排除磁盘空间占满的情况——它的症状(卡顿、I/O 变慢)和硬盘故障很相似。运行检查后,确认所有挂载的文件系统使用率都没有达到 100%。如果某个分区满了,问题可能出在容量而不是健康状态。

以人类可读的单位显示每个已挂载文件系统的总容量、已用空间、可用空间和使用百分比。

命令
$ df -h

排除 inode 耗尽的可能

文件系统可能还剩很多 GB 空间,却因为 inode 耗尽而无法创建新文件。查看 IUse% 列,如果接近 100%,说明问题在元数据而不是硬件。这一步可选,但能避免误判。

Linux用 df -i 检查 inode 占用低风险步骤 2可选

磁盘明明还有空间却报“没有空间”?多半是 inode 被海量小文件耗尽了。

命令
$ df -i

查询硬盘的 SMART 自检结果

这是健康检查的核心。硬盘固件会给出一句自评:PASSED 表示暂未检测到 SMART 故障,FAILED 表示硬盘已预测到故障,应立即备份并更换。如果拿不到 SMART 数据,请确认硬盘支持 SMART 且已安装 smartmontools。

smartctl -H 查询硬盘的 SMART 自检结果,一行输出 PASSED 或 FAILED。

命令
$ sudo smartctl -H /dev/sda

检查是否有进程在持续占用磁盘

即使硬盘本身健康,某个进程持续读写也会让系统显得很卡。观察几分钟实时 I/O:如果某个进程占主导,说明是负载问题而非硬件问题。如果 I/O 空闲但磁盘依然很慢,上面 SMART 的结果就更有参考价值。

实时找出是哪个进程在大量读写硬盘,定位系统变慢的原因。

命令
$ sudo iotop -o -a

记录 BIOS 版本以备后续排查

有些磁盘问题(硬盘无法识别、SATA 链路不稳定)会在固件更新中修复。记下当前的 BIOS 版本和主板型号,如果各项健康检查都正常但问题仍存在,可以对照厂商的更新页面排查。

Linux在 Linux 里查看 BIOS 版本中风险步骤 5可选

dmidecode 读取 DMI 表,可查到准确的 BIOS 版本和主板型号,方便对照厂商更新页面。

命令
$ sudo dmidecode -s bios-version && sudo dmidecode -t baseboard
▾ 撤销
撤销
$ null
!SMART 显示 PASSED 并不等于绝对安全——硬盘随时可能毫无征兆地损坏。一旦 SMART 报告 FAILED,请立刻备份数据;之后每次开机都是借来的时间。

如何确认已解决

正常的结果是:没有任何文件系统使用率达到 100%,inode 使用远低于上限,SMART 结论为 PASSED,且没有单个进程独占磁盘 I/O。

一键全部撤销

上面每一条命令都可以撤销。按此顺序执行即可全部还原。

一键全部撤销
$ null

执行前请先确认——部分步骤之间可能并非相互独立。

来源

  • df(1) — report file system disk space usage
    man7.org · technical · 2026-09-17
    依据: The df man page documents '-h' / '--human-readable' as printing sizes in powers of 1024 with human-readable units like G.
  • df(1) — Arch Manual Pages
    Arch Linux · community · 2026-09-17
    依据: Same coreutils page: --inodes reports inode usage per filesystem instead of block usage.
  • df(1) — Debian bookworm
    Debian Manpages · community · 2026-09-17
    依据: Documents -i, --inodes: list inode information instead of block usage, with IUsed/IFree/IUse% columns.
  • smartctl(8) - Control and Monitor Utility for SMART Disks
    Ubuntu Manpages · technical · 2026-09-17
    依据: -H, --health: prints the SMART health status of the device; smartctl monitors SMART data and reports device health.
  • iotop(8) — Debian manpage
    Debian · community · 2026-09-17
    依据: Debian manpage for iotop documents -o (only show processes actually doing I/O) and -a (accumulated I/O) options
  • iotop(8) — Arch Linux manual
    Arch Linux · community · 2026-09-17
    依据: Arch manual describes iotop's --only (-o) option to show only processes or threads actually doing I/O
  • dmidecode(8) — DMI table dumper
    Debian · community · 2026-09-17
    依据: -s bios-version and -t baseboard extract DMI fields
  • Kernel admin guide
    kernel.org · community · 2026-09-17
    依据: background for firmware-related troubleshooting

最后验证: 2026-09-21

相关指南