linux smartctl是什么,怎么用?

用smartctl一条命令就能提前看穿硬盘的“亚健康”状态,避免服务器突然宕机、数据丢失的惨剧。

在Linux服务器运维中,硬盘故障是导致数据灾难的“头号杀手”之一,大量案例表明,硬盘在彻底罢工前,通常会通过S.M.A.R.T.数据发出预警信号,smartctl作为smartmontools套件中的核心命令行工具,可以读取这些信号,让运维人员提前介入。

Linux命令精讲之smartctl/hdparm(磁盘健康)
加载中
Linux命令精讲之smartctl/hdparm(磁盘健康)

smartctl是什么?为什么服务器运维离不开它?

几乎每一块现代机械硬盘和固态硬盘都内置了S.M.A.R.T.(自我监测、分析及报告技术)系统,它像硬盘的“体检医生”,记录着通电时间、启停次数、坏道数量、温度等关键指标,smartctl正是用来与这个“医生”对话的工具通过发送ATA/SCSI/NVMe指令,获取硬盘内部的健康数据。

行业共识认为,硬盘年故障率会随着使用年限增长显著上升,尤其在运行超过3万小时之后,但很多故障并非突然发生,重映射扇区数、待处理扇区数等指标往往在故障前几周就开始异常,定期用smartctl巡检,相当于给服务器硬盘做“预防性体检”,能大幅降低突发停机风险。

如何快速安装smartctl?(CentOS与Ubuntu演示)

smartctl由smartmontools包提供,几乎所有Linux发行版官方仓库都已收录,安装极其简单,是一个完全免费的硬盘检测方案。

  • CentOS/RHEL 7/8/9

    yum install smartmontools -y   # CentOS 7
    dnf install smartmontools -y   # CentOS 8+/Fedora
  • Ubuntu/Debian

    apt update && apt install smartmontools -y
  • 验证安装

    smartctl --version

安装后,smartd守护进程也会一并部署,可用于后台定时监控,但大部分场景下直接使用smartctl命令行就足够,如果执行时遇到“Device does not support SMART”类似错误,通常是因为硬盘通过RAID卡连接,需要指定设备类型,例如加上-d sat或者-d megaraid,N参数。

如何使用smartctl查看硬盘健康状态?

这个命令最常见的用法就是快速输出一份整体健康报告,让你一眼看出硬盘有没有“大毛病”。

查看所有硬盘设备列表

首先要知道系统里有哪些硬盘,可以用lsblk或fdisk -l,但更直接的方法是:

smartctl --scan

它会列出所有可识别的硬盘设备,例如/dev/sda、/dev/sdb,以及对应的磁盘类型(如sat、scsi、nvme),对于NVMe固态硬盘,设备路径一般为/dev/nvme0,命令用法类似。

获取整体健康报告

针对某块硬盘执行:

smartctl -H /dev/sda

linux smartctl是什么,怎么用?

输出会显示SMART overall-health self-assessment test result: PASSED或FAILED,如果显示PASSED,说明硬盘自我评估状态正常;如果FAILED,则表示硬盘已检测到严重问题,应立即备份数据并更换,但PASSED不代表完全健康,还需要查看详细属性。

输出所有S.M.A.R.T.信息

smartctl -A /dev/sda

或

smartctl -a /dev/sda

-A只输出属性表,-a则输出全部信息(包括设备信息、属性表、错误日志等),属性表是核心,通常包含数十个参数,后面会详细解读。

smartctl命令详解:常用参数组合

根据不同场景,smartctl可以搭配不同参数,完成信息查询、测试执行、属性监控等任务,下面梳理几个最常用的组合,并附上参数速查表。

参数 功能 示例
-i 查看设备基本信息 smartctl -i /dev/sda
-H 查看整体健康状态 smartctl -H /dev/sda
-A 查看S.M.A.R.T.属性表 smartctl -A /dev/sda
-a 查看所有信息(含日志) smartctl -a /dev/sda
-t short 执行短自检 smartctl -t short /dev/sda
-t long 执行长自检 smartctl -t long /dev/sda
-l error 查看错误日志 smartctl -l error /dev/sda
-l selftest 查看自检结果 smartctl -l selftest /dev/sda

基础信息查询

smartctl -i /dev/sda

显示设备型号、序列号、固件版本、传输模式、S.M.A.R.T.支持情况等,用来确认硬盘身份,避免操作错盘。

查看属性表并解读

smartctl -A /dev/sda

属性表每一行代表一个监控指标,由ID、属性名称、当前值、最差值、阈值、原始值等组成,关键字段:

  • VALUE(当前值):标准化后的数值,通常从100开始向下递减,越接近阈值风险越大。
  • WORST(最差值):历史记录中的最低值。
  • THRESH(阈值):厂商设定的警戒线,当VALUE低于阈值时,代表该指标异常。
  • RAW_VALUE(原始值):实际物理计数,如坏扇区数量、通电小时数。

执行后台自检

smartctl -t short /dev/sda   # 短自检(2分钟左右)
smartctl -t long /dev/sda    # 长自检(数小时,取决于容量)
smartctl -t conveyance /dev/sda  # 传输自检(针对运输损伤)

自检开始后,可以用smartctl -l selftest /dev/sda查看结果,如果自检失败,通常意味着硬盘存在物理损伤。

linux smartctl是什么,怎么用?

查看错误日志

smartctl -l error /dev/sda

输出盘片记录的读写错误历史,如果近期频繁出现错误,即便当前属性值正常,也需警惕。

启用/禁用S.M.A.R.T.

smartctl -s on /dev/sda   # 启用
smartctl -s off /dev/sda  # 禁用

一般出厂默认开启,但某些老服务器或RAID卡可能默认关闭,需要手动开启。

smartctl检测硬盘寿命:从数据看懂硬盘还能撑多久

硬盘寿命预测不是玄学,而是通过关键S.M.A.R.T.属性来判断,下面这些ID是“死亡预警”的核心指标,尤其在国内数据中心日常巡检中,运维团队会重点监控这几项。

必须盯紧的五个属性

  • ID 5 – Reallocated_Sector_Ct(重映射扇区数)
    硬盘内部将坏扇区重新映射到备用扇区的次数,原始值若持续增长,说明盘片表面出现物理损伤,备份数据刻不容缓。

  • ID 197 – Current_Pending_Sector(当前待处理扇区数)
    硬盘读取时遇到不稳定但尚未重映射的扇区,数值不为零且持续增加,即使当前VALUE正常,也是硬盘即将报废的强烈信号。

  • ID 198 – Offline_Uncorrectable(离线无法纠正的扇区数)
    读写时无法纠正的扇区数量,一旦出现,硬盘可靠性已严重下降,多数情况下建议立即更换。

  • ID 187 – Reported_Uncorrect(报告无法纠正的错误数)
    通过ECC无法恢复的错误次数,该指标上升,表明磁头或盘片介质存在缺陷。

  • ID 190 – Airflow_Temperature_Cel(或Temperature_Celsius)
    硬盘温度,机械硬盘超过50°C、固态硬盘超过70°C会加速老化,这个指标虽然不直接指向寿命,但长期高温会使故障率上升。

如何判断“还能用多久”?

没有一个绝对的时间公式,但有一条经验法则:当ID 5和ID 197的原始值同时大于0,且呈增长趋势,就应该在两周内完成数据迁移和更换。 如果ID 198出现任何非零值,则应立即停机更换。

可以用一个简单的脚本持续记录这些值,观察趋势:

#!/bin/bash
# 记录关键SMART指标到日志
date >> /var/log/smart_watch.log
for dev in /dev/sd[a-z]; do
  smartctl -A $dev | grep -E "Reallocated_Sector_Ct|Current_Pending_Sector|Offline_Uncorrectable|Temperature_Celsius" >> /var/log/smart_watch.log
done

配合cron每天执行,就能形成趋势图。

实战:用smartctl搭建自动化硬盘监控脚本

手动检查太累,我们完全可以写一个简单的监控脚本,结合cron定时任务,当硬盘出现异常时主动发送邮件或企微/钉钉告警,这个方案在国内很多机房托管服务器上被广泛采用,成本为零,可靠性却很高。

linux smartctl是什么,怎么用?

脚本思路

  1. 遍历所有SATA/SAS硬盘(可从/dev/disk/by-path/或smartctl --scan获得)。
  2. 对每块硬盘执行smartctl -H,检查PASSED状态。
  3. 提取关键属性ID 5、197、198的原始值,与预设阈值比较。
  4. 异常时调用告警命令(如mail、curl发送webhook)。

示例脚本(简化版)

#!/bin/bash
ALERT_LOG="/tmp/smart_alert.log"
> $ALERT_LOG
for disk in /dev/sd[a-z]; do
  if smartctl -H $disk | grep -q "FAILED"; then
    echo "$disk SMART Health FAILED!" >> $ALERT_LOG
  fi
  # 检查待处理扇区
  pending=$(smartctl -A $disk | grep "Current_Pending_Sector" | awk '{print $NF}')
  if [ -n "$pending" ] && [ "$pending" -gt 0 ]; then
    echo "$disk has $pending pending sectors!" >> $ALERT_LOG
  fi
done
if [ -s $ALERT_LOG ]; then
  mail -s "SMART Alert on $(hostname)" admin@example.com < $ALERT_LOG
fi

将此脚本加入/etc/crontab,每天凌晨2点执行一次:

0 2    root /path/to/script.sh

这样就能实现无人值守的硬盘健康监控,特别适合运行着多块硬盘的NAS、文件服务器或数据库服务器。

smartctl是Linux世界里最直接、最透明的硬盘健康检测工具,没有之一,它不依赖复杂的图形界面,一条命令就能直击要害,对于运维人员来说,与其等硬盘坏了再手忙脚乱地恢复数据,不如每天花几秒钟扫一眼S.M.A.R.T.属性,把灾难扼杀在萌芽里。

linux smartctl常见问题解答

怎么用smartctl检测硬盘寿命?

检测硬盘寿命主要观察几个关键S.M.A.R.T.属性:重映射扇区数(ID 5)、当前待处理扇区数(ID 197)、离线无法纠正扇区数(ID 198),执行smartctl -A /dev/sda,查看这三个属性的RAW_VALUE列,如果ID 5或ID 197持续增长,说明硬盘盘片已出现物理损伤;ID 198出现非零值则代表坏扇区已无法修复,需立即更换。

smartctl和badblocks的区别是什么?

smartctl读取的是硬盘内部固件记录的S.M.A.R.T.数据,属于被动监控,不产生额外磨损,反映的是硬盘全生命周期的状态,badblocks则是主动对磁盘表面进行读写测试,可以发现文件系统不可见的坏块,但测试过程会全盘读写,对盘片有磨损,适合在新盘或怀疑有坏道时进行销毁性验证,两者互补,通常先用smartctl筛查,再用badblocks确认。

linux smartctl命令详解在哪里看?

最权威的说明是内置的man手册,执行man smartctl即可查阅所有参数和用法,也可以访问smartmontools官网获取在线文档,对于中文用户,常见技术博客有大量参数翻译和案例,但版本迭代较快,建议以man手册为准。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/linux-smartctl%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%8c%e6%80%8e%e4%b9%88%e7%94%a8%ef%bc%9f/

赞 (0)
免费的cdn加速哪个好?免费的cdn加速推荐
上一篇 2026年7月21日 01:02
CDN的部署方法有哪些?,cdn部署方法怎么选最好
下一篇 2026年7月21日 01:08

相关推荐

  • 华三r4900服务器功率是多少,影响功耗的因素有哪些?

    华三R4900服务器的功率由硬件配置决定,典型2路配置整机功耗在250W到450W之间,标配电源模块多为550W或800W,实际运行功耗需根据CPU、内存、硬盘数量综合估算,功率不是固定值,先看这三样配置华三R4900服务器是2U机架式通用服务器,支持双路CPU,它没有“一台统一功率”的说法,就像一台台式机,换……

    2026年10月3日
    000
  • 世界上到底有多少个根服务器,分布在哪几个国家?

    全球根服务器逻辑上只有13个,编号从A到M;但通过任播技术,物理实例早已超过1000个,分布在全球各地, 你问“世界有多少个根服务器”,答案必须分两层:逻辑根是13个,物理根是上千个,这个区别直接决定了解析速度、网络冗余和IDC选型,根服务器到底管什么?为什么偏偏是13个?根服务器的角色:互联网的“总机”你打开……

    2026年10月16日
    100
  • 上门服务器维保一次多少钱,收费标准怎么算?

    上门服务器维保多少钱?常见单次费用在300元到2000元之间,按故障类型、服务器品牌、响应距离和配件成本浮动;如果只是常规巡检,预算500元左右足够,一旦涉及主板、电源或硬盘更换,总费用可能超过3000元,很多运维朋友在服务器过保或者机房无人值守时,都会遇到这个现实问题:设备突然宕机,厂商原厂服务报价高得离谱……

    2026年10月4日
    000
  • 帕鲁联机服务器多少钱一个月?,哪个平台最便宜?

    2026年租一台帕鲁联机服务器,4到8人小队每月通常花80到200元,核心看内存和单核CPU;选简米科技或酷番云这类持牌自营机房,比找个人卖家稳得多,帕鲁服务器价格到底由什么决定很多玩家第一句话就问“多少钱”,但帕鲁服务端的资源消耗和普通网站完全不同,价格差异主要来自三个地方,内存比CPU更容易成为瓶颈帕鲁服务……

    2026年9月21日
    100
  • 服务器机房租赁一年要花多少钱,机房租赁收费标准是什么?

    服务器机房租赁没有统一价,2026年市场上1U机位的月租大致在几百元区间,整机柜普遍落在5000至12000元的月租区间,带宽和高电机柜会把总价推到两三万元甚至更高, 决定价格的不是“机房贵不贵”,而是你租了多少空间、多少电、多少带宽,以及服务商是持牌自营还是层层转租,机房租赁的报价单,通常由三块成本叠加而成很……

    相关资讯 2026年10月23日
    000
  • 购买ssr服务器一个月多少钱,哪家最便宜

    购买一台SSR服务器一个月的费用通常在几十元到几百元之间,具体取决于配置、带宽和机房位置,个人使用场景下月付50到100元足够,企业级需求则可能达到300元以上,影响价格的核心因素SSR服务器的价格不是一口价,配置、带宽、流量和机房这四个变量直接决定了最终账单,理解这些参数,才能避免多花冤枉钱,配置与带宽CPU……

    2026年8月4日
    600
  • 串口服务器默认网关到底填多少,如何设置?

    串口服务器的默认网关通常填写其所在局域网的路由器接口IP地址,常见为192.168.1.1或192.168.0.1,具体数值需根据实际网络环境设定,出厂默认值往往与设备IP同网段的路由器地址一致,理解串口服务器默认网关默认网关在网络通信中的角色默认网关本质上是子网中通往外部网络的出口,当串口服务器需要与不在同一……

    2026年8月20日
    1100
  • 民用服务器多少钱一个,正常价位大概是多少?

    民用服务器多少钱一个?当前市场主流价位段在3000元至20000元之间,具体取决于用途、配置与采购模式,这个价位区间覆盖了从家用NAS改装的迷你服务器,到可以支撑几十人办公业务的机架式企业级设备,如果你是个人开发者、小型工作室或初创团队,本文会帮你理清预算逻辑,避免花冤枉钱,按需拆解:不同用途对应的价格带服务器……

    2026年9月28日
    100
  • 做一个App需要多少台服务器,App服务器租用一年多少钱?

    做一个App初期通常1-3台云服务器就能跑起来,中后期根据用户量和架构复杂度逐步扩到3-10台甚至更多,核心不是数量,而是预留水平扩展能力和选对持牌服务商,影响服务器数量的三个核心变量做App需要多少服务器,先看三个直接决定资源消耗的条件,用户量级:日活几百、几万、几十万,服务器规划完全不同,用户量增长是服务器……

    2026年9月19日
    100
  • 一套服务器设备要多少钱,哪个配置性价比最高

    一台服务器设备多少钱?答案很明确:采购一台标准1U机架式服务器,入门级配置在5000元到10000元之间;中端主流配置通常在15000元到30000元;高性能GPU计算服务器则从40000元起步,上不封顶, 具体花多少钱,取决于你的应用场景、硬件选型和采购渠道,下面我从配置、用途、机房环境、租售对比四个维度,帮……

    2026年10月6日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注