恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2476|回复: 15

[k3] K3梅林外接硬盘自动休眠问题折腾记

[复制链接]
发表于 2020-4-27 23:28 | 显示全部楼层 |阅读模式
本帖最后由 cjchome 于 2021-1-9 00:53 编辑

家里一直用K3刷tb梅林做主路由,外接一个硬盘盒,开启梅林的各种服务,对内作文件共享影音服务,对外作简易云盘,用着还是蛮爽的。
平时这块硬盘用的也比较少,基本上一周访问不了几次,最近发现这块硬盘挂在路由上竟然7*24小时不停的转,不能这样消耗我的硬盘呀。
这我是不能接受的,于是折腾怎么让它休眠,网络上针对梅林硬盘休眠的文章还是比较少的,走了不少弯路,本人先绕出来了,发出来跟大家探讨一下。

首先,梅林Tools里有个硬盘休眠设置,对我来说没用,系统日志可以看到有执行sd-idle-2.6指令,但实际硬盘不休眠:
Tools.jpg
也刷过硬盘盒芯片固件,没用,问题可能出在梅林上。
这里有个问题,虽然说现在硬盘主控芯片基本都支持休眠功能,不过硬盘盒生产商可能没考虑移动硬盘盒长期挂路由的情况,也为了自己盒子的稳定性,有些就会在芯片量产时把休眠功能给屏蔽了
如果硬盘盒插电脑也从不休眠,可以拆开硬盘盒看看电路板上的主控芯片是什么,再上网搜搜这个芯片的固件,一般量产网会有刷录软件和固件,刷录软件可以设置休眠时间,顺便还可以升级一下固件。
比如我的两个盒子主控分别是NS1066和VL716,折腾过程中都被我刷过固件了

后来在网上找到了几条比较有价值的指令:
SSH进入梅林后台,如果没有ipkg命令,就先安装梅林的下载大师Download Master(装过Entware的用opkg)
安装休眠工具hdparm:
ipkg install hdparm
安装检查磁盘读写进程工具lsof:
ipkg install lsof
查看读写磁盘的进程:
lsof /dev/sd*
lsof /dev/sda1 |head
发现有mt-daapd(iTunes Server)和minidlna(UPnP)两项服务会访问磁盘
关闭 USB相关应用->媒体服务器(iTunes Server和UPnP 媒体服务器),应用并且提交。
hdparm直接休眠命令(-y:standby省电模式,-Y:sleep睡眠模式),有时要运行两次才有效,可能是因为它自身也是保存在硬盘上的:
hdparm -y /dev/sda
设置(60/12=5)分钟休眠命令(对我无效,返回不成功):
hdparm -S 60 /dev/sda
查看硬盘的电源模式状态(我的硬盘盒永远返回standby):
hdparm -C /dev/sda
备注:
设置开机启动休眠(存在则不创建):
touch /jffs/scripts/services-start
加入一行:
hdparm -S 60 /dev/sda1
支持通配符sd*,表示所有硬盘,180表示15分钟(180/12=15):
hdparm -S 180 /dev/sd*
Linux常用的硬盘管理指令有三个:梅林自带的sd-idle-2.6(对我硬盘无效)、sdparm(没有休眠功能)、hdparm(部分功能不可用)
这三个指令试来试去,只有hdparm可以让我的硬盘休眠,不过只支持-y立即休眠,不能用-S参数预设时间,可能是USB硬盘盒不能正常返回硬盘参数有关
个人分析可能tb梅林调用sd-idle-2.6这个小程序来实现硬盘休眠,但这个小程序不是Linux系统程序,是第三方开发的,兼容性欠佳,对个别类型的硬盘或硬盘盒无效,所以梅林Web设置里的休眠功能并不能休眠我的硬盘

继续折腾,配合crontab定时让hdparm发送休眠指令给硬盘,以下指令会让hdparm每15分钟发送一次休眠指令:
crontab -l | { cat; echo "*/15 * * * * hdparm -y /dev/sd*"; } | crontab -
crontab的任务重启路由后会丢,所以要把它加入到开机自启中。
理论上这样硬盘应该可以休眠了,不过实际发现硬盘还是呼呼呼的转,还有进程会不停的访问硬盘。

最终解决方案:
再用lsof /dev/sda1 |head指令可以看到还有个asus_lighttpd的服务会频繁访问硬盘asusware.arm文件夹中的文件,导致硬盘无法休眠
asusware.arm是下载大师Download Master生成的文件夹,里面有丰富的指令集和库文件、配置文件
停用Download Master没用,asus_lighttpd还是会访问asusware.arm,卸载Download Master并删asusware.arm文件夹,会导致ipkg和ipkg安装的指令如lsof/hdparm不能用,但asus_lighttpd总算不访问硬盘了
后来重装Download Master,系统会再次生成asusware.arm,然后再卸载Download Master,但不要删除asusware.arm文件夹,就可以实现asus_lighttpd不频繁访问硬盘,且ipkg指令集可用
关闭iTunes Server和UPnP两项服务,因为它们也会将数据写到asusware.arm中
再配合前面crontab定时指令,基本可以实现硬盘定时自动休眠
hdparm指令是通过ipkg安装在路由外接硬盘asusware.arm文件夹中的,每次运行这个指令需要访问外接硬盘,我是完美主义者,继续zuo
我们要把hdparm找出来,搬到路由内部存储空间中,这样执行hdparm指令时就不用再读取硬盘了
用WinSCP通过SCP协议登录路由,切换到/mnt/外接硬盘/asusware.arm文件夹,查找文件,输入hdparm,找到hdparm只是一个链接,右键-》属性,可以发现hdparm链接的实际文件指向hdparm-hdparm
将hdparm-hdparm拷到路由的/jffs/,右键属性给可执行X权限
X.jpg
然后到/jffs/scripts/services-start.sh中加入如下指令行(没有就新建,首行必须是#!/bin/sh,后面再跟上以下指令,保存后记得要给脚本文件X权限):
crontab -l | { cat; echo "*/15 * * * * /jffs/hdparm-hdparm -y /dev/sd*"; } | crontab -          #每15分钟发送一次硬盘休眠指令
crontab -l | { cat; echo "00 00 * * * /jffs/hdparm-hdparm -y /dev/sd*"; } | crontab -          #每天00:00发送一次硬盘休眠指令
services.jpg
再到路由Web设置-》Tools-》Script,添加类型WANSTART,脚本/jffs/scripts/services-start.sh的配置,这样每次触发WANSTART时(如开机),就会开启定时任务让硬盘休眠。
Script.jpg
至此,硬盘总算可以在空闲时自动安静下来了。















我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 00:33 | 显示全部楼层
很好的教程
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 06:47 | 显示全部楼层
感谢,我也是tb梅林不能休眠
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 07:30 | 显示全部楼层
牛人,向你学习
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 09:37 | 显示全部楼层
生命在于折腾,牛!
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 18:13 | 显示全部楼层
收藏备用,慢慢研究。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-28 20:00 | 显示全部楼层
为什么我安装不了,显示ipkg: no found

点评

先安装Download Master,装后就有了  详情 回复 发表于 2020-4-28 21:22
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-4-28 21:22 | 显示全部楼层
你个呆瓜 发表于 2020-4-28 20:00
为什么我安装不了,显示ipkg: no found

先安装Download Master,装后就有了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-29 13:32 | 显示全部楼层
cjchome 发表于 2020-4-28 21:22
先安装Download Master,装后就有了

按步骤弄了,但是貌似还是没休眠,开了易有云
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-4-29 16:36 | 显示全部楼层
本帖最后由 cjchome 于 2020-5-7 00:10 编辑

自己试了下,好像硬盘一休眠,就会把易有云的进程杀掉,不过硬盘还是会休眠的
(后来发现是易有云的Token过期了,重新设置新的Token后易有云进程正常,与休眠功能无关)
首先,你的硬盘盒或硬盘要支持休眠
先运行几次hdparm -y /dev/sd*指令试试硬盘能不能立即休眠,不行得另找指令再试,或硬盘盒不支持这个指令等等
多用lsof /dev/sda*查查是什么进程访问了硬盘的什么文件
比如这里,因为lsof是安装在硬盘asusware.arm文件夹里的,所以我运行lsof时查看硬盘访问情况时,它把它自己的访问信息也列出来了
QQ截图20200429163124.jpg









我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-4-30 23:57 | 显示全部楼层
cjchome 发表于 2020-4-29 16:36
自己试了下,好像硬盘一休眠,就会把易有云的进程杀掉,不过硬盘还是会休眠的
首先,你的硬盘盒或硬盘要 ...

lsof查看的时候只有lsof本身的访问信息了,但是我怎么感觉运行完休眠命令后还是在转呢?虽然读写指示灯没闪烁,难道是我的错觉吗

点评

我电脑就在路由旁边,SSH登录路由,边运行hdparm -y /dev/sd*边听硬盘盒的声音,听久了顺风耳就这么练出来了  详情 回复 发表于 2020-5-1 00:21
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-5-1 00:21 | 显示全部楼层
本帖最后由 cjchome 于 2020-5-1 00:50 编辑
你个呆瓜 发表于 2020-4-30 23:57
lsof查看的时候只有lsof本身的访问信息了,但是我怎么感觉运行完休眠命令后还是在转呢?虽然读写指示灯没 ...

我电脑就在路由旁边,SSH登录路由,边运行hdparm -y /dev/sd*趴在硬盘盒边上听声音,命令行回车下去后,硬盘会有卡嗒一声然后电机停转的声音,听久了顺风耳就这么练出来了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-5-1 10:02 | 显示全部楼层
cjchome 发表于 2020-5-1 00:21
我电脑就在路由旁边,SSH登录路由,边运行hdparm -y /dev/sd*趴在硬盘盒边上听声音,命令行回车下去后, ...

又试了一下,命令是有用的,执行完硬盘直接停止,但是过个两三秒又开始转,一直反复这样几次后就不转了,我的没杀易有云

点评

会不会是因为hdparm存硬盘的原因,刚开始我hdparm存硬盘,经常要连续执行两次才能休眠,所以后来才有搬到路由空间去的想法 如果不是这个原因,那可能还是有什么进程在访问硬盘  详情 回复 发表于 2020-5-1 14:27
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-5-1 14:27 | 显示全部楼层
本帖最后由 cjchome 于 2020-5-1 16:15 编辑
你个呆瓜 发表于 2020-5-1 10:02
又试了一下,命令是有用的,执行完硬盘直接停止,但是过个两三秒又开始转,一直反复这样几次后就不转了, ...

会不会是因为hdparm存硬盘的原因,刚开始我hdparm存硬盘,经常要连续执行两次才能休眠,所以后来才有搬到路由空间去的想法
如果不是这个原因,那可能还是有什么进程在访问硬盘
如果是易有云,那应该要有易有云进程访问硬盘的记录

我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-20 05:33 | 显示全部楼层
我说硬盘总是发烫的  这样可不行呀
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2021-7-24 13:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表