Linux 中 Smartmontools 的 smartctl 实用程序指南
如果您正在使用 VPS 或专用服务器,磁盘稳定性并非可选项——它是至关重要的。一块故障驱动器就可能导致数据丢失、停机以及高昂的恢复成本。这就是为什么 Linux 系统管理员依赖 smartctl——这是一款强大的命令行工具,可通过 S.M.A.R.T. 让您直接访问驱动器诊断信息。
本指南将带您了解如何在 Linux 上使用 smartctl,包括实用命令、真实示例以及智能自动化。
什么是 smartctl?
smartctl 是 Smartmontools 软件包的一部分。它允许访问 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology),该技术内置于大多数现代 HDD 和 SSD 中。
使用 smartctl,您可以:
- 检查驱动器健康状态
- 运行短测试或扩展自检
- 查看温度和性能指标
- 及早发现硬件故障迹象
支持的硬件包括:
- SATA / IDE / SCSI / NVMe 驱动器
- SSD 和 HDD
- 大多数 Linux 服务器发行版和托管平台
为什么使用 smartctl?
| 优势 | 收益 |
|---|---|
| 及早发现故障 | 在数据丢失发生前加以防止 |
| 实时诊断 | 无需重启即可监控您的驱动器 |
| 易于自动化 | 可与 cron、脚本和告警良好配合 |
| 硬件级可见性 | 无需猜测——直接获取驱动器原始数据 |
| 适合 DevOps 和 sysadmin | 广泛用于数据中心和云服务器 |
如何安装 Smartmontools
安装取决于您的 Linux 发行版:
| OS | 安装命令 |
|---|---|
| Ubuntu/Debian | sudo apt update && sudo apt install smartmontools |
| CentOS/RHEL | sudo yum install smartmontools |
| Fedora | sudo dnf install smartmontools |
| Arch Linux | sudo pacman -S smartmontools |
安装完成后,可通过终端使用 smartctl 命令。
smartctl 基本命令
| 命令 | 作用 |
|---|---|
| smartctl -i /dev/sda | 显示驱动器信息 |
| smartctl -H /dev/sda | 检查整体健康状态 |
| smartctl -A /dev/sda | 列出详细的 S.M.A.R.T. 属性 |
| smartctl -t short /dev/sda | 启动短(2-min)自检 |
| smartctl -t long /dev/sda | 启动完整扩展自检(10–60 min) |
| smartctl -l selftest /dev/sda | 显示测试历史 |
| smartctl -l error /dev/sda | 显示错误日志 |
📌 请将 /dev/sda 替换为您的实际驱动器(例如,NVMe SSD 使用 /dev/nvme0n1)。
示例:检查驱动器健康状况
sudo smartctl -H /dev/sda
预期输出:
SMART overall-health self-assessment test result: PASSED
如果结果为 PASSED,则您的驱动器当前健康。
如果显示 FAILED——请立即备份并计划更换。
需要监控的关键 SMART 属性
| ID | 属性 | 含义 |
|---|---|---|
| 5 | Reallocated Sector Count | 坏扇区已重新映射到备用空间 |
| 197 | Current Pending Sector Count | 等待重新读取的扇区 |
| 198 | Offline Uncorrectable Count | 存在读/写错误的扇区 |
| 194 | Temperature (Celsius) | 为获得最佳性能请保持低于 50 °C |
这些字段的数值增加 = 驱动器正在劣化。
推荐监控计划
| 任务 | 频率 |
|---|---|
| -H health check | 每周 |
| Short test (-t short) | 每周 |
| Long test (-t long) | 每月 |
| Error log review | 在崩溃或 I/O 问题后 |
| Temperature monitoring | 持续(通过脚本) |
使用 Cron 自动化
示例:每周发送一份磁盘健康状况邮件报告
0 3 * * 1 smartctl -H /dev/sda | mail -s "SMART Health Report" you@example.com
📌 请确保已安装 mailutils 或 sendmail。
结论
smartctl 是一款轻量但强大的工具,任何 sysadmin 都不应忽视。借助它,您可以保持服务器健康,保护您的数据安全,并让您的基础设施保持主动防护。


