smartctl 是 Linux 系统中用于管理和监控硬盘 S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology,自监测、分析及报告技术) 数据的核心命令行工具。它属于 smartmontools 软件包。
介绍
通过 smartctl,可以检查硬盘(HDD)和固态硬盘(SSD)的健康状况、查看累计通电时间、剩余寿命以及运行自检测试。
安装 smartctl
大多数 Linux 发行版默认不包含该命令,需要手动安装。
- Debian / Ubuntu / Kali:
sudo apt update
sudo apt install smartmontools
- CentOS / RHEL / Fedora:
sudo yum install smartmontools
# 或者
sudo dnf install smartmontools
- Arch Linux:
sudo pacman -S smartmontools
基本语法
sudo smartctl [选项] <设备路径>
- 注意:运行此命令通常需要
root 权限(sudo)。
- 设备路径:通常是
/dev/sda (SATA/机械硬盘) 或 /dev/nvme0n1 (NVMe SSD)。
最常用的命令
检查硬盘基本信息
查看硬盘的型号、序列号、固件版本、容量等。
sudo smartctl -i /dev/sda
Rotation Rate: 7200 rpm 硬盘驱动器(Hard Disk Drive, HDD)的参数,rpm 表示每分钟转数 (revolutions per minute)
检查硬盘健康状态
快速判断硬盘是否通过了 S.M.A.R.T. 的基本健康检查。
sudo smartctl -H /dev/sda
- 输出含义:
- PASSED: 硬盘目前状态良好(但不代表绝对不会坏)。
- FAILED: 硬盘即将损坏,立即备份数据。
显示所有信息
这会输出所有可用信息,包括设备信息、健康状况、S.M.A.R.T. 属性表、自检日志等。
sudo smartctl -a /dev/sda
仅查看 S.M.A.R.T. 属性表
查看具体的各项指标(如坏道数、温度、通电时间)。
sudo smartctl -A /dev/sda
关键列的解释:
| 列名 |
含义 |
| ID |
属性的编号。 |
| ATTRIBUTE_NAME |
属性名称(如温度、重映射扇区计数)。 |
| VALUE |
当前规范化值(通常由厂商定义,范围 0-255)。数值越高通常越好。 |
| WORST |
该属性历史上出现过的最差值。 |
| THRESH |
阈值。如果 VALUE 低于或等于 THRESH,表示硬盘已判定为“即将故障”。 |
| RAW_VALUE |
原始值。厂商特定的真实数据(如温度摄氏度、扇区数量)。 |
需要重点关注的属性(机械硬盘 HDD)
- Reallocated_Sector_Ct (ID 5): 重映射扇区计数。如果有数值(RAW_VALUE 不为 0),说明硬盘已经出现坏道并被替换。数值持续增加是硬盘损坏的前兆。
- Current_Pending_Sector (ID 197): 当前待处理扇区。无法读取的扇区,等待重写或修复。数值不为 0 很危险。
- Offline_Uncorrectable (ID 198): 无法校正的扇区计数。严重的物理损坏标志。
需要重点关注的属性(固态硬盘 SSD)
- Media_Wearout_Indicator / Percentage Used: 寿命损耗/已用百分比。
- Total_LBAs_Written: 写入总量(用于计算 TBW)。
- Available_Spare: 备用空间。如果过低,SSD 可能会锁定为只读。
运行硬盘自检测试
你可以命令硬盘在后台进行自我检测。
短测试 (Short Test)
通常耗时 1-2 分钟,检查电气性能和机械性能,以及读取部分磁盘表面。
sudo smartctl -t short /dev/sda
长测试 (Long Test)
耗时较长(几十分钟到数小时),完整扫描整个磁盘表面寻找坏道。
sudo smartctl -t long /dev/sda
查看测试结果
测试是在后台运行的。测试完成后,使用以下命令查看日志:
sudo smartctl -l selftest /dev/sda
常见实用场景示例
场景 1:我有一块 NVMe SSD,我想看它写了多少数据,还剩多少寿命。
sudo smartctl -a /dev/nvme0n1
在输出中寻找 Percentage Used(已用寿命百分比)和 Data Units Written(写入数据量)。
场景 2:服务器硬盘亮红灯了,我想确认是不是真的坏了。
sudo smartctl -H /dev/sda
sudo smartctl -A /dev/sda | grep -E "Reallocated|Pending|Uncorrectable"
如果 -H 返回 FAILED,或者后面那条命令输出的 RAW_VALUE 很大,准备换盘。
场景 3:开启 smartd 守护进程自动监控。
安装 smartmontools 后,系统通常会包含 smartd 服务。你可以编辑 /etc/smartd.conf 来配置自动邮件报警,然后启动服务:
sudo systemctl enable --now smartd
总结
smartctl -i: 看型号。
smartctl -H: 看是否要挂了(最快捷)。
smartctl -a: 看所有细节。
- 核心原则:如果 Reallocated Sector Count 开始增加,或者 Health Status 为 FAILED,请立即备份数据并更换硬盘。