smartctl是 Linux 系统中用于管理和监控硬盘 S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology,自监测、分析及报告技术) 数据的核心命令行工具。它属于smartmontools软件包。
介绍
通过 smartctl,可以检查硬盘(HDD)和固态硬盘(SSD)的健康状况、查看累计通电时间、剩余寿命以及运行自检测试。
安装 smartctl
大多数 Linux 发行版默认不包含该命令,需要手动安装。
- Debian / Ubuntu / Kali:
bashsudo apt update sudo apt install smartmontools - CentOS / RHEL / Fedora:
bashsudo yum install smartmontools # 或者 sudo dnf install smartmontools - Arch Linux:
bashsudo pacman -S smartmontools
基本语法
sudo smartctl [选项] <设备路径>- 注意:运行此命令通常需要
root权限(sudo)。 - 设备路径:通常是
/dev/sda(SATA/机械硬盘) 或/dev/nvme0n1(NVMe SSD)。
最常用的命令
检查硬盘基本信息
查看硬盘的型号、序列号、固件版本、容量等。
sudo smartctl -i /dev/sdaRotation 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,请立即备份数据并更换硬盘。