如果你是一名系统管理员,负责管理数据中心中的Linux服务器,那么建议定期检查SSD和HDD硬盘的健康状态。这有助于在数据丢失之前识别故障硬盘并及时更换。在Linux中检查SSD或HDD健康状态,可以使用smartctl(smartmontools软件包的一部分)和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。