如果你是一名系统管理员,负责管理数据中心中的Linux服务器,那么建议定期检查SSD和HDD硬盘的健康状态。这有助于在数据丢失之前识别故障硬盘并及时更换。在Linux中检查SSD或HDD健康状态,可以使用smartctlsmartmontools软件包的一部分)和gnome-disks等工具。smartctl提供存储设备的详细信息和分析报告,包括错误率、温度和整体健康状态。可以通过包管理器安装。

前提条件

一台运行Linux操作系统的服务器或桌面电脑。

已配置root密码。

安装Smartctl

Smartctl包含在所有主流Linux发行版的默认仓库中。以下命令以root用户运行。如果未以root身份登录,请在命令前添加"sudo"。

对于Debian和Ubuntu发行版,使用以下命令安装Smartctl:

apt install smartmontools -y

对于RHEL、CentOS和Fedora发行版,使用以下命令安装Smartctl:

dnf install smartmontools

安装Smartctl后,使用以下命令启动Smartd服务:

systemctl start smartd

使用以下命令检查smartd服务状态:

systemctl status smartd

你应该看到以下输出:

? smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon\n     Loaded: loaded (/lib/systemd/system/smartmontools.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2024-07-02 08:58:33 UTC; 11s ago\n       Docs: man:smartd(8)\n             man:smartd.conf(5)\n   Main PID: 1042 (smartd)\n     Status: \"Next check of 0 devices will start at 09:28:33\"\n      Tasks: 1 (limit: 2353)\n     Memory: 1.2M\n     CGroup: /system.slice/smartmontools.service\n             ??1042 /usr/sbin/smartd -n\n\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sda, opened\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sda, [QEMU     QEMU HARDDISK    2.5+], 53.6 GB\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sda, IE (SMART) not enabled, skip device\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Try 'smartctl -s on /dev/sda' to turn on SMART features\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sdb, opened\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sdb, [AN       Volume           2.5+], S/N: sdb, 53.6 GB\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Device: /dev/sdb, IE (SMART) not enabled, skip device\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Try 'smartctl -s on /dev/sdb' to turn on SMART features\nJul 02 08:58:33 ubuntu2404 smartd[1042]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 0 NVMe devices\nJul 02 08:58:33 ubuntu2404 systemd[1]: Started Self Monitoring and Reporting Technology (SMART) Daemon.

测试SSD/HDD健康状态

安装Smartctl后,需要在硬盘上启用SMART功能。可以使用以下命令:

smartctl -s on /dev/sda

首先需要获取SSD或HDD的信息。可以使用以下命令:

smartctl -i /dev/sda

这将显示硬盘的详细信息:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF INFORMATION SECTION ===\nDevice Model:     WDC WD5000LPVX-75V0TT0\nSerial Number:    WXV1EC4KN2N7\nLU WWN Device Id: 5 0014ee 65af65611\nFirmware Version: 01.01A01\nUser Capacity:    500,107,862,016 bytes [500 GB]\nSector Sizes:     512 bytes logical, 4096 bytes physical\nRotation Rate:    5400 rpm\nDevice is:        Not in smartctl database [for details use: -P showall]\nATA Version is:   ACS-2 (minor revision not indicated)\nSATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)\nLocal Time is:    Fri Jul  2 14:39:33 2021 IST\nSMART support is: Available - device has SMART capability.\nSMART support is: Enabled

如果要对硬盘执行短时间测试,运行以下命令:

smartctl -t short -a /dev/sda

你应该看到以下输出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF INFORMATION SECTION ===\nDevice Model:     WDC WD5000LPVX-75V0TT0\nSerial Number:    WXV1EC4KN2N7\nLU WWN Device Id: 5 0014ee 65af65611\nFirmware Version: 01.01A01\nUser Capacity:    500,107,862,016 bytes [500 GB]\nSector Sizes:     512 bytes logical, 4096 bytes physical\nRotation Rate:    5400 rpm\nDevice is:        Not in smartctl database [for details use: -P showall]\nATA Version is:   ACS-2 (minor revision not indicated)\nSATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)\nLocal Time is:    Fri Jul  2 14:40:23 2021 IST\nSMART support is: Available - device has SMART capability.\nSMART support is: Enabled\n\n=== START OF READ SMART DATA SECTION ===\nSMART overall-health self-assessment test result: PASSED\n\nGeneral SMART Values:\nOffline data collection status:  (0x00)\tOffline data collection activity\n\t\t\t\t\twas never started.\n\t\t\t\t\tAuto Offline Data Collection: Disabled.\nSelf-test execution status:      (   0)\tThe previous self-test routine completed\n\t\t\t\t\twithout error or no self-test has ever\n\t\t\t\t\tbeen run.\nTotal time to complete Offline\ndata collection: \t\t( 9360) seconds.\nOffline data collection\ncapabilities: \t\t\t (0x7b) SMART execute Offline immediate.\n\t\t\t\t\tAuto Offline data collection on/off support.

短时间测试将检测电气属性和机械属性,以及读取验证。

要查找并打印自检结果,运行以下命令:

smartctl -l selftest /dev/sda

你应该看到以下输出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF READ SMART DATA SECTION ===\nSMART Self-test log structure revision number 1\nNum  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error\n# 1  Short offline       Completed without error       00%      7609         -\n# 2  Short offline       Interrupted (host reset)      90%      6972         -\n# 3  Short offline       Aborted by host               70%      6972         -\n# 4  Short offline       Interrupted (host reset)      70%         2         -

要运行长时间测试,使用以下命令:

smartctl -t long -a /dev/sda

你应该看到以下输出:

SMART Selective self-test log data structure revision number 1\n SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS\n    1        0        0  Not_testing\n    2        0        0  Not_testing\n    3        0        0  Not_testing\n    4        0        0  Not_testing\n    5        0        0  Not_testing\nSelective self-test flags (0x0):\n  After scanning selected spans, do NOT read-scan remainder of disk.\nIf Selective self-test is pending on power-up, resume after 0 minute delay.\n\n=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===\nSending command: \"Execute SMART Extended self-test routine immediately in off-line mode\".\nDrive command \"Execute SMART Extended self-test routine immediately in off-line mode\" successful.\nTesting has begun.\nPlease wait 107 minutes for test to complete.\nTest will complete after Fri Jul  2 16:30:41 2021\n\nUse smartctl -X to abort test.

长时间测试将检测短时间测试中的所有内容。

要停止测试,运行以下命令:

smartctl -X /dev/sda

你应该看到以下输出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===\nSending command: \"Abort SMART off-line mode self-test routine\".\nSelf-testing aborted!

要测试硬盘的整体健康状态,运行以下命令:

smartctl -d ata -H /dev/sda

你应该看到以下输出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF READ SMART DATA SECTION ===\nSMART overall-health self-assessment test result: PASSED

要检查测试的预计完成时间,运行以下命令:

smartctl -c /dev/sda

你应该看到以下输出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-148-generic] (local build)\nCopyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org\n\n=== START OF READ SMART DATA SECTION ===\nGeneral SMART Values:\nOffline data collection status:  (0x00)\tOffline data collection activity\n\t\t\t\t\twas never started.\n\t\t\t\t\tAuto Offline Data Collection: Disabled.\nSelf-test execution status:      (  25)\tThe self-test routine was aborted by\n\t\t\t\t\tthe host.\nTotal time to complete Offline\ndata collection: \t\t( 9360) seconds.\nOffline data collection\ncapabilities: \t\t\t (0x7b) SMART execute Offline immediate.\n\t\t\t\t\tAuto Offline data collection on/off support.\n\t\t\t\t\tSuspend Offline collection upon new\n\t\t\t\t\tcommand.\n\t\t\t\t\tOffline surface scan supported.\n\t\t\t\t\tSelf-test supported.\n\t\t\t\t\tConveyance Self-test supported.\n\t\t\t\t\tSelective Self-test supported.\nSMART capabilities:            (0x0003)\tSaves SMART data before entering\n\t\t\t\t\tpower-saving mode.\n\t\t\t\t\tSupports SMART auto save timer.\nError logging capability:        (0x01)\tError logging supported.\n\t\t\t\t\tGeneral Purpose Logging supported.\nShort self-test routine\nrecommended polling time: \t (   2) minutes.\nExtended self-test routine\nrecommended polling time: \t ( 107) minutes.\nConveyance self-test routine\nrecommended polling time: \t (   5) minutes.\nSCT capabilities: \t       (0x7035)\tSCT Status supported.\n\t\t\t\t\tSCT Feature Control supported.\n\t\t\t\t\tSCT Data Table supported.

要仅打印错误日志,运行以下命令:

smartctl -l error /dev/sda

要获取帮助信息,运行以下命令:

smartctl --help

总结

通过本教程,你学习了如何安装和使用S.M.A.R.T工具来检查SSD和HDD硬盘的健康状态。更多信息请参阅smartctl man page。