关于OMV系统nas硬盘休眠的一些折腾
起因
我本来是用着truenas scale系统作为存储及部分docker服务
不过最近在官网看到truenas scale准备在2023.10的版本弃用移除docker
In October 2023, TrueNAS SCALE Cobia will be released. At that time, ix-systems is making the switch to containerd and Docker will be removed. While it may remain possible to enable apt and install docker, I have no plans to do so here.
当然官方又推出了其他方式systemd-nspawn来继续使用,但我还是感觉不怎么方便,scale官方已经很明确的向企业化靠拢
However, there is an alternative way of running docker, based on systemd-nspawn now available for testing!
又加上经过一段时间的实际使用,我对zfs并没有非常明确的需求
所以就准备从scale润了,切换到其他nas系统
核心需求
当nas硬盘多起来之后我慢慢就发现硬盘的功耗是一个不可小觑的问题, 至少对我来说是这样
对与我自己来说,除了部分docker服务及工作用的资料外,其他电影、音乐等数据基本就是周末去使用下,平常基本用不到,所以一直让硬盘跑着基本是浪费电,所以硬盘休眠是一个需要考虑的问题
方案选择
需要考虑硬盘休眠的话(黑)群晖,(黑)威联通基本就不用考虑了,他们的系统基本决定了很难实现休眠
网上一堆人的折腾,关掉一堆服务,最后也不一定能实现
这方面其实最好额系统应该是windows,其次可能是unraid
但我暂时不想用win,unraid收费,并且他的阵列方式我不太喜欢
我自己更偏向于单盘使用,不组阵列,重要的数据通过rsync或其他备份软件定时或实时异地备份,
同时更倾向于系统和数据盘分离,所有需要的服务通过docker实现,这样在系统折腾出问题时可以直接重装而不影响文件,更不会有阵列出问题的烦恼
最终我自己的选择就是omv,一个基于debain的轻量的nas系统,比较符合我的口味,基本规划是128g的ssd装系统,一块sata的ssd运行docker等程序,一块盘专门用来跑bt下载,其余机械硬盘个格式化为xfs或ext4直接挂载使用
问题及解决方案
安装和使用配置我这里不在赘述,站里有大佬已经给出文章,我这边要说的是遇到的一些问题,供大家参考
首先omv的硬盘休眠直接在存储器--磁盘--编辑中即可以配置
修改高级电源管理,状态根据自己需要,我改为1,就是停转,时间也根据需要配置即可
然后保存,应用,就可以等待看磁盘状态了,相比较unraid omv没有提供ui界面的查看,
需要登陆到ssh,使用命令
smartctl -i -n standby /dev/sdb|grep "mode"|awk '{print $4}'
这个就是查询sdb的状态,如果显示STANDBY就是已休眠,ACTIVE就是正在活动中(当然有些硬盘可能还有其他状态)
多盘查看的话可以使用站内大佬的脚本
OMV查询硬盘休眠状态(Linux通用)【加料版】
到这儿基本就算是完成了,给每个硬盘都设置下,应该就是完成了
然而在我给所有硬盘设置完成后,怪事出现了,同样的参数,部分硬盘正常休眠,部分硬盘打死不休眠
经过重装、换盘位等一番折腾,最终还是不行
没办法,去外网上找找吧,国内用omv的比较少,设计到硬盘休眠的更少了
记过一番搜索,可以了解到omv使用的是hdparm休眠硬盘,
在archlinux的wiki上了解到这么一段话
某些驱动器不支持通过 hdparm 降速。 类似以下诊断错误消息很好地表明了这种情况:
# hdparm -S 240 /dev/sda
/dev/sda:
setting standby to 240 (20 minutes)
HDIO_DRIVE_CMD(setidle) failed: Invalid argument
对于其他一些驱动器,会确认 hdparm 命令,但驱动器并不遵守参数(APM 或降速计时器)。使用 Toshiba P300(型号 HDWD120)HDD 时观察到这一点。
看了下我的硬盘,出问题就是那几个p300
所以问题找到了,p300的硬盘固件会响应hdparm,设置也是成功的,但是硬盘就是不休眠
解决问题方法就是不使用hdparm,改用hd-idle
对于omv,基本流程如下
安装hd-idel
1 安装“OMV-Extras”(通过 Web GUI)
2 启用 OMV-Extras--设置--Backports
3 通过shell执行apt install hd-idle
设置流程
1 禁用 OMV 中的所有硬盘降速和电源管理设置(通过 Web GUI)
2 使用vim或其他编辑器打开/etc/default/hd-idle,去除或注释其中的默认配置
3 插入配置信息 -a /dev/<...> -i <timeInSeconds>
HD_IDLE_OPTS="-i 0 -a /dev/disk/by-uuid/3411a0e5-1fb8-48d7-b412-46233cf284ad -i 1800 -a /dev/disk/by-uuid/b879cfdf-541c-45b7-b7b9-cdfa6374d23b -i 1800 "
START_HD_IDLE=true
配置文件就两行,第一行配置硬盘及休眠参数,最好使用uuid,sda/sdb这种硬盘顺序可能会变
至于查看uuid和硬盘对应关系,使用
ls -al /dev/disk/by-uuid/
即可看到
第一个磁盘前插入 -i 0 为默认配置,意思是所有硬盘不休眠,后面就是 -a 硬盘id -i 休眠时间
休眠时间单位为秒,我的设置就是1800秒,即30分钟
4 设置完成后重启hd-idle服务,systemctl restart hd-idle.service,后续hd-idle后跟随系统自启动,基本就不需要管了,也可以通过systemctl status hd-idle.service 或ui界面的诊断--进程查询hd-idle是否正常运行
5 如果omv的Autoshutdown插件启动了的话,需要执行一次,没装就没必要执行
systemctl enable hd-idle-restart-resume.service
至此,硬盘休眠就基本配置完成,hd-idle工作原理是使用一个特殊的系统文件来检测磁盘活动,检测到硬盘在一定时间没有活动就使硬盘休眠,相对于hdparm适用性更广,hdparm只是告诉硬盘该休眠,硬盘可以直接不理会,返回错误(这在早期一些西数盘有出现),或者就如东芝的p300一样,响应了但不执行
最后是关于硬盘唤醒的一些测试,不一定全,值友们可以后面补充
首先是omv的webui可能唤醒的地方,基本就是
omv唤醒休眠的几个地方,基本是设计到硬盘或共享文件
仪表盘-文件系统,smart
诊断--报告
存储器--smart
存储器--文件系统
存储器--共享文件夹
服务-smb、nfs-共享
以及其他需要选择硬盘、文件夹、共享文件夹的地方,都会唤醒所有磁盘
然后是网络上有人统计过的使用中的一些使用情况
DLNA浏览目录,不点开媒体文件---休眠
映射驱动器---休眠
映射驱动器后,硬盘休眠后后点开”计算机”图标---几秒后自动唤醒
添加网络位置后,硬盘休眠后点开”计算机”图标---休眠
登陆Web管理界面---休眠
登陆Web管理界面,点击硬盘设置相关页面---唤醒
打开Windows资源管理器,Quick access一栏中有NAS的文件记录 ---唤醒
根据测试情况,建议尽量不要映射网络驱动器,这样可以避免出现时常唤醒硬盘的情况,而且使用映射网络驱动器时如果NAS没开机而其他电脑先开机还会有错误框弹出。当然了如果有需求的话除外,说实话这个功能还是挺好用的。
一个比较好的替代方案是使用添加网络位置功能(OMV有效),这样在Windows中只会把NAS共享文件夹看成是文件夹,而不是一个驱动器,虽然损失了一些高级功能(把共享文件夹看作一个真实分区),但硬盘再也不会频繁休眠唤醒了。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
mimimiao
校验提示文案
值友9936659671
校验提示文案
即是
校验提示文案
即是
校验提示文案
值友9936659671
校验提示文案
mimimiao
校验提示文案