威联通NAS上实现硬盘独立休眠

2022-05-30 15:34:45 51点赞 489收藏 27评论

前言

2019年参考了国外一篇文章,在某论坛写了一篇关于硬盘单独休眠的帖子,从反馈来看,大多数人按教程实现了无访问硬盘独立休眠,网上有人对我的教程进行了"改造", 他们的文章或多或少有的问题。我也想对那篇帖子进一步修订。

在威联通设置的硬盘待机实际上是所有硬盘整体休眠,也就是说要不同时运转,要不同时休眠。让NAS所有硬盘休眠很麻烦,考虑的因素有很多,即使好不容易休眠了,不知道什么系统程序又将硬盘唤醒,频繁唤醒和休眠不利于硬盘,以至于很多人关闭了硬盘休眠。网上大部分是讨论这种情况。比如检查cloudlink 、病毒防护 、NTP伺服器是否启用等等。

下面这个方法通过两个脚本实现威联通nas上的硬盘无访问独立休眠。我的nas是4盘位,1块ssd和3块机型硬盘,我把系统和应用套件安装在SSD固态硬盘上(称为系统盘,磁盘1,设为静态卷是必须的),其它硬盘空闲一段时间后处于休眠状态。我如果只访问一块机械硬盘,其它两块机械硬盘处于休眠状态。比如我pt下载,只访问一块硬盘,其它盘处于休眠状态。这样既能降低功耗和噪音,还能延长硬盘寿命(虽然这一点有争议)。

本文是一个偏技术类的文章,虽然说是技术类文章,但难度并不高。我相信大家在折腾nas的过程中,都或多或少的有了些基本的Linux知识。

一、原理:

先从硬盘分区说起(这部分介绍来自群晖官网,我估计也适用于威联通,顺便吐糟一些威联通,威联通的帮助文档太少):

系统分区:此分区存储操作系统、用户设置(例如,帐户凭据、网络设置和控制面板设置)和系统日志。默认情况下,系统使用 RAID 1 的镜像功能,并将一组相同的系统分区数据保存到 NAS 的每个硬盘上。当系统检测到NAS 中的硬盘损坏或发生故障时,仍可使用状态良好的硬盘中的系统数据来启动系统。如果有多个状态良好的硬盘可供系统启动,则将先使用硬盘编号较小的硬盘。例如,如果硬盘 1 和硬盘 4 都处于良好状态,则硬盘 1 将用于系统启动。(这是nas为什么采用raid1的原因,也是硬盘不能休眠的原因)

SWAP 分区:当 RAM 已满且系统需要更多内存资源时,此分区可用作临时内存资源。 默认情况下,系统使用 RAID 1 的镜像功能并将一组相同的 SWAP 分区数据保存到 NAS 的每个硬盘上。

数据分区:此分区由存储池和存储空间组成。所有数据和安装的套件都存储在此处

威联通nas的硬盘分区结构:(图1)

威联通NAS上实现硬盘独立休眠

威联通创建了2个内部 RAID-1 系统分区,该分区跨越所有驱动器并不断访问该分区。所以硬盘不能独立休眠。大家肯定注意到了,swap分区也组成了raid1,也就是说如果你任务很多,内存不够时,会使用swap分区,也会造成不能独立休眠。如果你任务多,也需要关闭swap分区,使用磁盘1的交换文件做缓存。上次教程没写,这次补上。

原因找到了,系统分区组成RAID 1造成了硬盘不能独立休眠。那么怎么做呢,那么就要非系统盘暂时脱离系统分区RAID 1。我们就设置一个定时任务,每天或每周定期让非系统盘“加入”这个分区,过15分钟后,然后再脱离系统分区RAID 1,硬盘又能独立休眠,同时保证系统安全。

威联通的系统分区RAID 1有两个,对于4盘位nas来说,硬盘第1分区sda1、sdb1、sdc1、sdd1组成一个系统分区RAID 1(路径/dev/md9),硬盘第4分区sda4、sdb4、sdc4、sdd4组成一个系统分区RAID 1(路径/dev/md13)。这两个系统分区是操作的重点。验证过程有点复杂,与后面操作也没多大关系,就略过了。感兴趣的可以看国外那篇文章.

原理有点复杂,但是操作很简单,操作的主角是mdadm,它是Linux下的一款标准的软件 RAID 管理工具。

对于硬盘sdb来说,执行下面这两个命令,硬盘“脱离”系统raid1分开,硬盘可以独立休眠:

mdadm /dev/md9 --fail /dev/sdb1

  • mdadm /dev/md13 --fail /dev/sdb4

执行下面这两个命令,硬盘“重新加入”系统raid1,恢复原设置:

mdadm /dev/md9 --re-add /dev/sdb1

mdadm /dev/md13 --re-add /dev/sdb4

二、添加定时任务

下面操作以4盘nas为例,第二块、第三块和第四块硬盘脱离系统RAID1,这三块硬盘独立休眠。系统盘为ssd,路径/dev/sda.

1、 首先在威联通上设置ssh允许访问,硬盘设置允许休眠

控制台 ->网络和文件服务->telnet/ssh,允许ssh连接。应用保存。

控制台 ->系统->硬件->常规,开启磁盘待机模式。应用保存。

2、 创建”脱离“系统RAID1的可执行脚本

ssh客户端登录,推荐Xshell,个人版免费,不要用破解版。还可用putty,win10以上版本powershell也自带ssh命令。

touch命令创建空文件:

touch /share/homes/admin/disconnect_internal_raid.sh

修改脚本文件为执行文件:

chmod +x /share/homes/admin/disconnect_internal_raid.sh

用vi命令或者winscp编辑脚本disconnect_internal_raid.sh,另外威联通应用市场有一个文本编辑器(Text Editor),可自行安装,用它编辑也很方便,推荐。脚本内容如下:

#!/bin/bash

echo "Disconnecting md9"

mdadm /dev/md9 --fail /dev/sdb1

mdadm /dev/md9 --fail /dev/sdc1

mdadm /dev/md9 --fail /dev/sdd1

echo "Disconnecting md13"

mdadm /dev/md13 --fail /dev/sdb4

mdadm /dev/md13 --fail /dev/sdc4

mdadm /dev/md13 --fail /dev/sdd4

威联通NAS上实现硬盘独立休眠

3 、创建“加入"系统分区的可执行脚本

touch /share/homes/admin/rebuild_internal_raid.sh

chmod +x /share/homes/admin/rebuild_internal_raid.sh

编辑脚本rebuild_internal_raid.sh,脚本内容如下:

#!/bin/bash

echo "Re-adding md9"

mdadm /dev/md9 --re-add /dev/sdb1

mdadm /dev/md9 --re-add /dev/sdc1

mdadm /dev/md9 --re-add /dev/sdd1

echo "Re-adding md13"

mdadm /dev/md13 --re-add /dev/sdb4

mdadm /dev/md13 --re-add /dev/sdc4

mdadm /dev/md13 --re-add /dev/sdd4

4、添加定时任务:

威联通比较特殊,不能用crontab -e添加任务,可直接编辑crontab,通过编辑添加任务.

ssh登录,执行下面命令, 每天1:00和1:15执行脚本同步系统raid一次:

echo "00 01 * * * /share/homes/admin/rebuild_internal_raid.sh" >> /etc/config/crontab

echo "15 01 * * * /share/homes/admin/disconnect_internal_raid.sh" >> /etc/config/crontab

可用命令crontab -l 查看定时任务,应该看到已经添加的2个任务。

执行下面命令,可不必重启系统就使定时任务立即生效。
crontab /etc/config/crontab && /etc/init.d/crond.sh restart

三 、开机自动运行(autorun.sh)

关机后,再启动nas会重新建立raid-1,所以为了避免每次手动操作,需要设置开机自动运行”脱离“系统raid1的脚本

我查看了威联通的帮助文档,威联通 的nas型号不同,设置autorun.sh也不同。如果你不是x86机型,去看原文链接。

具体操作如下:

控制台 ->硬件->常规:启动时运行用户自定义的进程前面打勾启用。(见下图)

ssh登录nas,对于x86机型来说,执行下面命令:

mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config #型号不同,这条命令也不同

touch /tmp/config/autorun.sh

chmod +x /tmp/config/autorun.sh


编辑脚本autorun.sh, 内容如下:

#!/bin/bash

/share/homes/admin/disconnect_internal_raid.sh

最后一定要执行下面命令,很重要,不然重启后脚本丢失。(有人写的文章这步漏掉了)

umount /tmp/config

至此,我们的工作完成,nas开机就能脱离系统raid1,并且每天在规定时间系统raid1同步一次。

威联通NAS上实现硬盘独立休眠


四 关闭swap分区(可选)

原作者认为swap分区组成 RAID 1也会导致硬盘不能独立休眠,关闭了swap分区,用系统盘的swap文件替代。但我没改swap分区也能独立休眠。如果运行程序很多,内存不够用,系统使用swap分区,也会导致硬盘不能独立休眠。所以这步是可选的。

创建swap文件(8G):
dd if=/dev/zero of=/share/homes/admin/swapfile bs=1024 count=8388608

创建可执行脚本(move_swap_to_file.sh):

touch /share/homes/admin/move_swap_to_file.sh

chmod +x /share/homes/admin/move_swap_to_file.sh

编辑脚本move_swap_to_file.sh,脚本内容如下:

#!/bin/bash

echo "Turning SWAP off"

swapoff -a

echo "Initializing file swap"

mkswap /share/homes/admin/swapfile

swapon /share/homes/admin/swapfile

参考上面方法将脚本加入到自启动脚本(autorun.sh)

#!/bin/bash

/share/homes/admin/disconnect_internal_raid.sh

/share/homes/admin/move_swap_to_file.sh

威联通NAS上实现硬盘独立休眠

五、 恢复原设置

改了这些内容后,有人想恢复原设置,也很容易。

1 删除2个脚本

2 编辑/etc/config/crontab文件,将添加的两条定时任务删除

3 编辑autorun.sh,步骤与第三步相同,只不过autorun.sh内容为空。

六、结论

假如你想检查你的硬盘sdc是否处于休眠状态,可用命令检查: hdparm -C /dev/sdc。如果显示idle/active, 硬盘没有休眠。 如果显示standby, 那么说明硬盘处于休眠状态。但是这条命令有的硬盘可能不准。

另外,我把nas电源插头插在功率测定仪上,用功率检测硬盘是否休眠。我的nas接1个ssd和3个机械硬盘。休眠后,平常nas功耗12-14瓦之间波动,硬盘运行时,功率30瓦左右。如果我用电脑访问其中一个hdd,功耗马上跳到20瓦左右,机械硬盘的功耗6瓦左右。我停止访问硬盘。空闲5分钟(我设了5分钟休眠)后,功耗又变为15瓦,证明这个hdd独立休眠了。

另外,磁盘做了raid也可用这个方法的,我没有试过。但是原作者使用的nas是4盘位的,一个用装ssd,2个机械硬盘组了一对raid1,一个硬盘设为静态卷。

硬盘是否休眠谈谈自己的看法:
在前文的留言,看到有人对硬盘可以延长硬盘寿命提出质疑,认为nas不要设置休眠,休眠反而会缩短寿命,在网上这种说法确实流传这种说法。先看看群晖官方是怎么说的,硬盘休眠降低功耗和延长硬盘寿命(下面有链接)。相信很多人家里的windows电脑一般都有两块以上的硬盘吧,默认设置是硬盘20分钟后硬盘休眠,windows电脑的硬盘是独立休眠的。现在比较火的unraid系统,优点之一是硬盘可以独立休眠。事实上,硬盘休眠本身不会缩短寿命,是硬盘频繁休眠和唤醒会缩短寿命。企业用户因为频繁访问硬盘,应该关掉休眠。
大家都知道,全球正在变暖,未来人类最大的危机是全球变暖,希望此文能为节能减排做一点微博之力。大家也应该能节能就尽量节能吧。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1179元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

1917.9元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1579元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1879元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3499元起

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

2099元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7460元起

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

799元起

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

1899元起
27评论

  • 精彩
  • 最新
  • 关于休眠是否造成硬盘更易损坏,其实答案是否。
    一般民用机的硬盘损坏主要是以下几个问题:1、温度!你看无论成品NAS还是硬盘自身S.M.A.R.T都在关注这个关键数据。2、电压电流!无论民用还是商用,PS(电源)都是重中之重。3、震动!商用设备的机箱还是机架服务器,那个硬盘是多么稳固。而很多人的电脑机箱薄铁板震动一点都不奇怪,或者机箱N个RGB风扇造成的震动,甚至机主抖腿都能踢到机箱。。。。能做好以上几点,我386年代的IDE硬盘,在我865主板上还能用。

    校验提示文案

    提交
    完全同意,但前提是硬盘不能频繁唤醒和休眠

    校验提示文案

    提交
    收起所有回复
  • 不能直接不要swap分区吗,一定要用个文件代替?

    校验提示文案

    提交
    如果不用swap分区,swap文件必须用的,因为这是缓存。除非你给你nas配置了很大的内存,比如16G。如果系统不配置缓存,会导致系统不稳定。你可以先试试不管swap分区,硬盘是否独立休眠,如果能休眠,那部分就不设置了

    校验提示文案

    提交
    收起所有回复
  • 这个适用黑群吗?我有一个监控盘要一直运行。

    校验提示文案

    提交
    这个方法不适合群晖

    校验提示文案

    提交
    收起所有回复
  • 这个确实可以,我用过半年左右的时间,现在又去掉了休眠,咱不差这点电 [doge] ,据说相对于不停起停,一直运行寿命更长

    校验提示文案

    提交
    主要还是威联通开机速度离谱,要是有windows的速度,完全可以现用现开机,当然也和我用的使用频率低有关

    校验提示文案

    提交
    根据使用习惯设置自动开关机,按这个教程让硬盘独立休眠

    校验提示文案

    提交
    收起所有回复
  • 我很好奇家庭用户会频繁访问硬盘,即使24小时pt下载,也只访问一块硬盘。看电影也只是一段时间访问一块硬盘。请问频繁同时访问多个硬盘的值友,用nas来干什么?

    校验提示文案

    提交
    raid而已

    校验提示文案

    提交
    请问有设置一块冷备盘,除了备份其他时间都在休眠的方法么?

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 居然刷到这么干的干货

    校验提示文案

    提交
  • 我有个疑问,S.M.A.R.T. polling time 轮询时间最大间隔才60分钟,不会把独立休眠的硬盘唤醒吗

    校验提示文案

    提交
  • 我是备份文件偶尔用下,需要用的时候远程开机,用完了不管它,设置每天凌晨3点自动关机。

    校验提示文案

    提交
  • 之前用的黑裙应该是不读数据硬盘就不转的

    校验提示文案

    提交
  • 太硬核了,先收藏了,支持技术贴

    校验提示文案

    提交
  • Raid0应该不行吧

    校验提示文案

    提交
  • 干货好评。话说威联通群晖这种行为多少有点智障啊。

    校验提示文案

    提交
  • 干货满满的,有时间我也试试我的威联通,我是一直都让它运行的,哈哈。

    校验提示文案

    提交
  • 曾经类似设置过,所以觉得作者写的很好

    校验提示文案

    提交
  • 这些事一直都是争论不休的,需要的就自己搞,出问题也自己负责,毕竟结果是自己选的,我建议评论区不要把自己的意见强行加在别人身上。

    校验提示文案

    提交
  • touch的第一步就是no such file or directory...

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
489
扫一下,分享更方便,购买更轻松