缘由
在一些情况下,频繁的启动和停止(休眠)硬盘会导致电源循环次数增加,并减少其寿命或在运行硬盘 smart offline
或 extended test
时被强行终止。
依赖
- sdparm
查看设备属性
以移动硬盘 H1 为例。
sudo sdparm -l -a /dev/sda
/dev/sda: Phi H1 4101
Direct access device specific parameters: WP=0 DPOFUA=0
Caching (SBC) [ca] mode page:
IC 0 [cha: n, def: 0, sav: 0] Initiator control
ABPF 0 [cha: n, def: 0, sav: 0] Abort pre-fetch
CAP 0 [cha: n, def: 0, sav: 0] Caching analysis permitted
DISC 1 [cha: n, def: 1, sav: 1] Discontinuity
SIZE 0 [cha: n, def: 0, sav: 0] Size enable
WCE 1 [cha: n, def: 1, sav: 1] Write cache enable
MF 0 [cha: n, def: 0, sav: 0] Multiplication factor
RCD 0 [cha: n, def: 0, sav: 0] Read cache disable
DRRP 0 [cha: n, def: 0, sav: 0] Demand read retention priority
WRP 0 [cha: n, def: 0, sav: 0] Write retention priority
DPTL -1 [cha: n, def: -1, sav: -1] Disable pre-fetch transfer length
MIPF 0 [cha: n, def: 0, sav: 0] Minimum pre-fetch
MAPF -1 [cha: n, def: -1, sav: -1] Maximum pre-fetch
MAPFC -1 [cha: n, def: -1, sav: -1] Maximum pre-fetch ceiling
FSW 0 [cha: n, def: 0, sav: 0] Force sequential write
LBCSS 0 [cha: n, def: 0, sav: 0] Logical block cache segment size
DRA 0 [cha: n, def: 0, sav: 0] Disable read ahead
SYNC_PROG 0 [cha: n, def: 0, sav: 0] Synchronous cache progress indication
NV_DIS 0 [cha: n, def: 0, sav: 0] Non-volatile cache disable
NCS -1 [cha: n, def: -1, sav: -1] Number of cache segments
CSS 0 [cha: n, def: 0, sav: 0] Cache segment size
Power condition [po] mode page:
PM_BG 0 [cha: n, def: 0, sav: 0] Power management, background functions, precedence
STANDBY_Y 0 [cha: n, def: 0, sav: 0] Standby_y timer enable
IDLE_C 0 [cha: n, def: 0, sav: 0] Idle_c timer enable
IDLE_B 0 [cha: n, def: 0, sav: 0] Idle_b timer enable
IDLE_A 0 [cha: n, def: 0, sav: 0] Idle_a timer enable
STANDBY_Z 0 [cha: y, def: 1, sav: 1] Standby_z timer enable
IACT 0 [cha: n, def: 0, sav: 0] Idle_a condition timer (100 ms)
SZCT 1800 [cha: y, def:18000, sav:1800] Standby_z condition timer (100 ms)
IBCT 0 [cha: n, def: 0, sav: 0] Idle_b condition timer (100 ms)
ICCT 0 [cha: n, def: 0, sav: 0] Idle_c condition timer (100 ms)
SYCT 0 [cha: n, def: 0, sav: 0] Standby_y condition timer (100 ms)
CCF_IDLE 0 [cha: n, def: 0, sav: 0] check condition if from idle_c
CCF_STAND 0 [cha: n, def: 0, sav: 0] check condition if from a standby
CCF_STOPP 0 [cha: n, def: 0, sav: 0] check condition if from stopped
Code language: JavaScript (javascript)
编辑参数
关注在 mode page
的第三列。
- cha 的 y 和 n 分别表示可更改或不可更改
- def 为默认值
- sav 为手动保存后的值
通过观察,我们可以发现 STANDBY_Z
属性控制定时器,使用以下命令将其关闭。
sdparm --set=STANDBY_Z=0 -S /dev/sda
/dev/sda: Phi H1 4101
STANDBY_Z 0 [cha: y, def: 1, sav: 0]
Code language: JavaScript (javascript)
大功告成
不同硬盘的参数信息可能不一致,请根据实际情况设定。一些消费级机械硬盘可能会在不休眠模式下更加容易发生损耗,请自行确认你的硬盘是否需要关闭休眠。
Credit
- https://unix.stackexchange.com/questions/679158/turn-off-power-saving-mode-on-seagate-expansion-drive-with-sdparm
- https://unix.stackexchange.com/questions/5211/prevent-a-usb-external-hard-drive-from-sleeping
- https://arrfab.net/posts/2009/Jan/30/maxtor-external-usb-disk-not-linux-friendly/
了解 Starx's Home 的更多信息
订阅后即可通过电子邮件收到最新文章。