在 Linux 中使用 Smartmontools 检查 HDD 或 SSD 的健康状况

固态驱动器 (SSD) 和硬盘驱动器 (HDD) 是任何计算机系统的支柱,监控它们的运行状况以防止数据丢失和硬件故障至关重要。Smartmontools 是帮助您实现这一目标的一个出色实用程序。这个开源工具集可用于 Linux,并提供有关 HDD 或 SSD 的大量信息。在本文中,我们将深入探讨在 Linux 中使用 Smartmontools 来维护和排除驱动器故障,使它们保持最佳状态。

什么是Smartmontools?

Smartmontools 是一组命令行实用程序,旨在与大多数现代 HDD 和 SSD 中内置的自我监控、分析和报告技术 (SMART) 系统配合使用。Smartmontools 的两个主要组件是 smartctl 和 smartd。我们将在本文稍后部分深入探讨这些工具中的每一个。让我们首先在我们的 Linux 系统中安装 smartmontools。

安装 Smartmontools

大多数 Linux 发行版的存储库中都提供了 Smartmontools。要安装它,请为您的发行版运行适当的命令:

  • Debian/Ubuntu: sudo apt-get install smartmontools
  • Fedora:sudo dnf install smartmontools
  • CentOS/RHEL:sudo yum install smartmontools

对于这篇文章的插图,我将它安装在我的 Pop!_OS Linux 发行版上。

在 pop 操作系统上安装 smartmontools

在 Pop!_OS 上安装 smartmontools

就是这样!现在 smartmontools 已安装在您的 Linux 系统上,让我们使用它。

使用 Smartctl 检查驱动器健康状况

您可以使用 smartctl 获取有关驱动器的信息。但是,您需要先确定 HDD 或 SSD 的设备名称,然后才能执行此操作。

列出所有可用驱动器:使用 lsblk 或 sudo fdisk -l 命令查看已连接驱动器及其设备名称的列表。

sudo fdisk -l

硬盘驱动器或 SSD 详细信息

硬盘驱动器或 SSD 详细信息

1. smartctl

它是一个命令行工具,允许您从驱动器检索 SMART 数据、执行自检等。我认为解释该工具用法的最佳方式是通过实际示例。让我们来看一个场景,当您想要检查特定驱动器的整体健康状况、温度和开机时间时。我们假设驱动器的设备名称是“sda”。按着这些次序:

首先,通过运行以下命令在驱动器上启用 SMART:

sudo smartctl -s on /dev/sda

智能启用

启用smart

接下来,使用 -a 标志显示所有可用的 SMART 数据:

sudo smartctl -a /dev/sda

显示所有智能数据

显示所有 SMART 数据

查看输出以查找有关驱动器运行状况的相关信息。在这种情况下,我们正在寻找三个特定的属性:

属性 ID 194:Temperature_Celsius(驱动器温度)
属性 ID 9:Power_On_Hours(驱动器已通电的总小时数)
属性 ID 5:Reallocated_Sector_Ct(已重新映射的坏扇区数)

例如,在输出中,您可能会看到如下内容:

从我的流行音乐中获取健康数据! 操作系统

从我的 Pop!_OS 系统驱动健康数据

解读结果:

  • 驱动器温度为 33°C,记录的最低温度为 33°C,最高温度为 33°C。
  • 驱动器已通电总计 17857 小时。
  • 没有重新映射的(坏的)扇区,因为 Reallocated_Sector_Ct 的 RAW_VALUE 为 0。

请记住,您看到的确切值和属性可能因驱动器型号和制造商而异。始终查阅制造商的文档以更好地了解驱动器的 SMART 属性。

运行自检并分析结果

现在我们已经获得了关于驱动器的基本健康信息,让我们执行一个简短的自检以确保一切正常。SMART 自检是主动检查驱动器问题的绝佳方式。

Smartctl 支持三种类型的自检:

  • 简短:需要几分钟才能完成的简短测试。
  • Long:一项综合测试,可能需要几个小时。
  • 运输:特定于 ATA 驱动器,它检查运输过程中发生的损坏。

在驱动器上运行一个简短的自检:

sudo smartctl -t short /dev/sda

您会收到这样的消息:

START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION
Please wait 2 minutes for the test to complete.

测试的持续时间可能因驱动器型号而异。对于短期测试,通常只需几分钟。等待指定时间,然后查看测试结果:

sudo smartctl -l selftest /dev/sda

输出将显示测试结果,类似于以下内容:

SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 17058 -

运行短路自检

Running short self-test

在此示例中,简短的自检完成且没有错误,这是驱动器正常运行的好兆头。

如果您想定期监控驱动器的健康状况,请考虑设置一个 cron 作业以自动运行自检并将结果通过电子邮件发送给您。例如,要每月运行一次简短的自测并将结果通过电子邮件发送到 [email protected],请将以下行添加到您的 crontab(使用 crontab -e 对其进行编辑):

0 0 1 * * sudo smartctl -t short /dev/sda && sleep 180 && sudo smartctl -l selftest /dev/sda | mail -s "SMART Self-test Results" [email protected]

这个 cron 作业会在每个月的第一天午夜运行简短的自测,等待 180 秒(3 分钟)以确保测试完成,然后将结果发送到您的电子邮件地址。

通过以这种方式使用 smartctl,您可以有效地监控 HDD 或 SSD,确保您有一个早期预警系统来检测任何潜在问题,以免导致数据丢失或硬件故障。

运行扩展自检:

使用 smartctl 运行扩展测试类似于运行短测试,但长测试更全面并且需要更长的时间才能完成。要在驱动器上运行长时间自检,请执行以下步骤:

首先,确保在驱动器上启用了 SMART。在这个例子中,我们假设驱动器的设备名称是“sda”:

sudo smartctl -s on /dev/sda

在驱动器上启动长时间自检:

sudo smartctl -t long /dev/sda

您会收到这样的消息:

Starting extended offline self-test. Please wait 150 minutes for the test to complete.
The duration of the test may vary depending on the drive model. For long tests, it can take several hours to complete.

等待指定时间,然后查看测试结果:

sudo smartctl -l selftest /dev/sda

输出将显示测试结果,类似于以下内容:

SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 2118 -

在此示例中,长时间自检无误地完成,表明驱动器运行正常。

请记住,长时间的自检可能会花费很长时间,因此最好将其安排在系统活动较少或不需要使用计算机时进行。您还可以设置一个 cron 作业来自动运行长时间的自测并通过电子邮件发送结果,就像短测试一样。

2.smartd

smartd 是一个在后台运行的守护进程,它监视来自驱动器的 SMART 数据,并在检测到问题时执行指定的操作。下面是使用 smartd 监控 SSD 或 HDD 的示例,如果检测到问题,将发送电子邮件通知。

首先,确保在驱动器上启用了 SMART。在这个例子中,我们假设驱动器的设备名称是“sda”:

sudo smartctl -s on /dev/sda

为 smartd 创建一个配置文件。为此,我们将创建一个名为 /etc/smartd.conf 的文件:

sudo nano /etc/smartd.conf

将以下行添加到配置文件中,将 [email protected] 替换为您的实际电子邮件地址:

/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m [email protected]

此行告诉 smartd 使用以下选项监视 /dev/sda 驱动器:

  • -a:监视所有 SMART 属性。
  • -o on:启用自动离线测试。
  • -S on:启用自动属性保存。
  • -s (S/../.././02|L/../../6/03):每天凌晨 2 点运行一次简短的自测,每周六凌晨 3 点运行一次长时间的自测.
  • -m [email protected]:如果检测到问题,将电子邮件通知发送到指定的电子邮件地址。

保存配置文件并退出文本编辑器(例如,在 nano 中,按 Ctrl + X,然后按 Y,最后按 Enter)。

将 smartd 配置为在引导时自动启动。此过程可能因您的 Linux 发行版而异:

对于 Debian/Ubuntu 系统:

sudo systemctl enable smartd

对于 CentOS/RHEL 系统:

sudo chkconfig smartd on

启动 smartd 服务:
对于 Debian/Ubuntu 系统:

sudo systemctl start smartd

对于 CentOS/RHEL 系统:

sudo service smartd start

现在,smartd 在后台运行,监控指定驱动器的问题。如果检测到问题,它会向指定的电子邮件地址发送电子邮件通知,以便您采取适当的措施来保护您的数据和硬件。

请记住,smartd 可以监控多个驱动器。为此,在 /etc/smartd.conf 文件中为每个驱动器添加类似的行,相应地更改设备名称(例如,/dev/sdb、/dev/sdc 等)。

故障排除提示

  • 如果 smartctl 报告问题,请立即备份您的数据以防止数据丢失。
  • 某些驱动器可能需要特定于供应商的工具才能访问 SMART 数据。有关详细信息,请参阅驱动器制造商的文档。
  • 如果 SMART 数据指示大量坏扇区,请考虑更换驱动器,因为它可能已接近使用寿命。
  • 如果您在使用 smartctl 时遇到权限问题,请确保您使用管理权限运行该命令(使用 sudo)。
  • 并非所有驱动器都支持 SMART 自检。如果您在运行自检时遇到问题,请查阅驱动器的文档以确定其兼容性。

结论

监控和维护 HDD 或 SSD 的运行状况对于计算机系统的整体性能和稳定性至关重要。Smartmontools 为 Linux 用户提供了一个强大而灵活的解决方案来密切关注他们的驱动器的健康状况。通过使用 smartctl 和 smartd,您可以访问有价值的 SMART 数据、运行自检,甚至自动化监控任务。

在我看来,每个 Linux 用户都应该熟悉 Smartmontools 并定期使用它以确保他们的驱动器保持最佳状态。请记住,保持警惕和主动是防止灾难性硬件故障和数据丢失的关键。有了 Smartmontools,您将获得所需的信息,以便就驱动器的健康状况做出明智的决定。

所以,继续尝试 Smartmontools。您的驱动器将为此感谢您!

类似文章

发表回复

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