前言

开篇Tips:本文根据chatgpt的答案进行整理发布。


问题描述

在debian下使用smartmontools对硬盘进行long test

smartctl -t long /dev/sda

终端会显示smartctl开始在后台对硬盘进行长测试,预计97分钟。

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 97 minutes for test to complete.
Test will complete after Wed Dec 18 16:41:14 2024 UTC
Use smartctl -X to abort test.

但实际每次检测了10%以后这个long test任务就中止了,用smart -a可以看到检测记录

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%      2968         -
# 2  Extended offline    Interrupted (host reset)      90%      2967         -
# 3  Extended offline    Interrupted (host reset)      50%      2337         -

可以看到最近的两次long test(Extended offline)在进度还剩90%的时候都被中断了。


问题解决

这个问题的原因其实很简单,因为硬盘检测几分钟以后就自动休眠了。smartmontools的自检任务并不会让(usb外接的)硬盘保持运行状态,所以每次硬盘一休眠,自检任务就会被中断。

解决方法也很简单,让硬盘不要自动休眠即可。

linux下对硬盘进行电源管理用的工具时hdparm

hdparm -B 255 /dev/sda

参数释义:

  • -B:这里指battery,电源管理

-B的数值范围:

  • 0:完全禁用电源管理功能(即硬盘不会进入任何省电模式)。
  • 1 到 127:指定硬盘的电源管理级别。较低的值表示更积极的电源管理(例如,较频繁地进入休眠状态)。
  • 128 到 254:表示较低的电源管理级别,但不会完全禁用。
  • 255:表示禁用所有电源管理功能,硬盘将始终处于活动状态,不会自动进入睡眠模式或省电模式。

喝杯奶茶