smartctl: 命令介绍

发布时间: 更新时间: 总字数:1275 阅读时间:3m 作者: IP上海 分享 网址

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)

  1. Reallocated_Sector_Ct (ID 5): 重映射扇区计数。如果有数值(RAW_VALUE 不为 0),说明硬盘已经出现坏道并被替换。数值持续增加是硬盘损坏的前兆。
  2. Current_Pending_Sector (ID 197): 当前待处理扇区。无法读取的扇区,等待重写或修复。数值不为 0 很危险。
  3. Offline_Uncorrectable (ID 198): 无法校正的扇区计数。严重的物理损坏标志。

需要重点关注的属性(固态硬盘 SSD)

  1. Media_Wearout_Indicator / Percentage Used: 寿命损耗/已用百分比。
  2. Total_LBAs_Written: 写入总量(用于计算 TBW)。
  3. 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 StatusFAILED,请立即备份数据并更换硬盘。
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics