奇技淫巧系列 群晖NAS HDD数据硬盘自动休眠
本文最后更新于 361 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。

对于群晖和威联通而言,正常情况下要想实现访问哪个硬盘的数据,只是这个硬盘本身工作,而其他无关硬盘保持休眠状态的理想状态默认是不行的,因为默认情况下,2个产品都是采用raid1技术将关键的系统数据同时写入所有硬盘里,这就会导致有读写时所有硬盘都会唤醒。要解决这个问题的前提条件,是在初始化nas的时候只插入一块硬盘(最好是SSD),等系统完全装好之后再插入其他数据硬盘(这样所有app都会只安装和运行在SSD上,所以至少系统的运行和这些app工作因素不会再影响其他数据硬盘。

其次,就是使用mdadm命令对数据硬盘进行处理。因为即便先在SSD上安装好了系统,但是后续往NAS上添加数据硬盘的时候,群晖和威联通依旧会向这些硬盘上添加多个raid1存放一些关键数据,所以要想按理想状态休眠,需要将各个数据硬盘从raid1里移除掉。但是由于安全性考虑,又需要每天短暂的将硬盘加回到各个raid1以同步数据,具体细节参看下面的实际步骤。

注:本篇文章只讲群晖,威联通的设置方式网上有博主已经写了很详细的教程,大家自行搜索即可。

首先通过ssh登录到群晖系统,如何ssh就不用我详细说了吧..

ssh以后切换到root用户

sudo -i

使用命令

cat /proc/mdstat

查看有几个md(md就是raid1),用到了哪些硬盘,下图就是我这台黑群晖的:

image.png

这里共有4个raid0:md0,md1,md2,md3,其中md0和md1使用了所有硬盘,而md3只使用了4个机械硬盘。md2对应系统所在的磁盘,由于我们前面推荐过初始化的时候只插SSD,所以这里只有sdf3。

注:在本文中sdf就是SSD固态硬盘,3表示该固态硬盘的第3个分区。

首先查看md0和md1,类似于qnap的md9和md13

mdadm -D /dev/md0

image.png

由上图可看出,md0包含了4个数据硬盘分别是sda,sdb,sdc和sdd,再加上sdf1,1是这个md中各个硬盘的分区的序号,后面类似。

mdadm -D /dev/md1

image.png

md1同样包含了4个数据硬盘分别是sda2,sdb2,sdc2和sdd2,再加上sdf2。

mdadm -D /dev/md3

image.png

md3只包含了4个数据硬盘分别是sda,sdb,sdc和sdd。所以接下来我们的目标也明确了,就是md0和md1,因为这2个raid同时包含了数据盘和系统固态盘,所以如果系统一读写数据就必然唤醒4个数据盘,将4个数据盘从md0和md1剥离开来就是我们接下来要做的事。 不过针对大家各自的群晖系统如何区分哪些是固态盘,哪些是HDD数据盘呢?(为啥我要说HDD数据盘?土豪用SSD做数据盘,会直接问,为啥要休眠?) 使用parted /dev/sd(#) print命令可以找到哪些是HDD数据盘,哪些是ssd硬盘。要想实现我们前面说的理想方式,为何需要将系统只安装在SSD上?因为安装系统的盘要一直运行,是不能休眠的。而其他的都是需要休眠的HDD数据盘,所以区分清楚是前提。

parted /dev/sdf print

parted /dev/sda print


可以看到我的sdf就是系统固态盘,其他a,d,c,b都是HDD硬盘,也就是我们的目标。 开始操作。使用以下命令将md0的sda1,sdb1,sdc1,sdd1的相应分区设置为fail:

mdadm /dev/md0 -f /dev/sda1
mdadm /dev/md0 -f /dev/sdb1
mdadm /dev/md0 -f /dev/sdc1
mdadm /dev/md0 -f /dev/sdd1

然后重新运行

mdadm -D /dev/md0

image.png

由上图看到运行命令后sda1,sdb1,sdc1,sdd1的状态均显示为faulty 同理对md1的sda2,sdb2,sdc2,sdd2进行同样的操作:

mdadm /dev/md1 -f /dev/sda2
mdadm /dev/md1 -f /dev/sdb2
mdadm /dev/md1 -f /dev/sdc2
mdadm /dev/md1 -f /dev/sdd2

然后重新运行

mdadm -D /dev/md1

image.png

运行命令后sda2,sdb2,sdc2,sdd2的状态也显示为faulty

接下来分别给4个硬盘设置10分钟休眠:

hdparm -S 120 /dev/sda
hdparm -S 120 /dev/sdb
hdparm -S 120 /dev/sdc
hdparm -S 120 /dev/sdd

注意:这里的120不是120秒,hdparm命令的-S参数指定的是多少个5秒,因为是120 * 5=600秒(10分钟)。所以运行这个命令需要简单的换算下,我相信只要会用计算器大家都能搞定。


等待10分钟以后,查看HDD状态查看是否成功:

hdparm -C /dev/sda | grep state


成功!

这里要分开说一些黑白群晖。白群晖和威联通一样,每次开机所有md都会恢复初始状态,所以每次关机后再开机,都需要重新运行脚本将HDD硬盘脱离md0和md1,脚本名称:disconnect_md,同时还需要运行命令让硬盘能够休眠,脚本名称:hdd_sleep.sh。因此推荐做法是设置开机自运行这2个脚本。 而黑群晖和白群晖不一样,重启不会恢复md0和md1的状态,所以不用像白群晖一样运行开机自运行脚本disconnect_md,但是仍旧需要自运行运行脚本hdd_sleep.sh。

注:原本在-f脱离以后还有-r直接从阵列中删掉,但是经过我测试之后,发现只要-f脱离之后,机械硬盘就可以休眠了,所以也没必要再-r删掉,并且,-r删掉之后我重启黑群晖,发现4个机械硬盘组成的JBOD出问题了,所以有危险性,建议还是不要删掉。

又考虑到每天要定时将硬盘恢复阵列状态让系统能够写入系统数据,不管黑白群晖,每天都需要定时将HDD硬盘恢复阵列状态让系统写数据,脚本名称:rebulid_md.sh,然后一段时间以后又脱离掉,脚本名称:disconnect_md.sh。所以这里一共需要3个脚本:hdd_sleep.sh,disconnect_md.sh,rebulid_md.sh。

vim /volume1/@userpreference/admin/rebulid_md.sh

(注意确认下自己nas用户的具体路径) 脚本内容如下:

#!/bin/bash 
echo Re-adding md0
mdadm /dev/md0 --re-add /dev/sda1
mdadm /dev/md0 --re-add /dev/sdb1
mdadm /dev/md0 --re-add /dev/sdc1
mdadm /dev/md0 --re-add /dev/sdd1
echo Re-adding md1 
mdadm /dev/md1 --re-add /dev/sda2
mdadm /dev/md1 --re-add /dev/sdb2
mdadm /dev/md1 --re-add /dev/sdc2
mdadm /dev/md1 --re-add /dev/sdd2
vim /volume1/@userpreference/admin/disconnect_md.sh

脚本内容如下:

#!/bin/bash 
echo Disconnecting md0
mdadm /dev/md0 --fail /dev/sda1
mdadm /dev/md0 --fail /dev/sdb1
mdadm /dev/md0 --fail /dev/sdc1
mdadm /dev/md0 --fail /dev/sdd1
echo Disconnecting md1
mdadm /dev/md1 --fail /dev/sda2
mdadm /dev/md1 --fail /dev/sdb2
mdadm /dev/md1 --fail /dev/sdc2
mdadm /dev/md1 --fail /dev/sdd2
vim /volume1/@userpreference/admin/hdd_sleep.sh

脚本内容如下:

hdparm -S 120 /dev/sda
hdparm -S 120 /dev/sdb
hdparm -S 120 /dev/sdc
hdparm -S 120 /dev/sdd

别忘了赋予脚本执行权限:

chmod +x /volume1/@userpreference/admin/rebulid_md.sh
chmod +x /volume1/@userpreference/admin/disconnect_md.sh
chmod +x /volume1/@userpreference/admin/hdd_sleep.sh

然后每天定时运行(我是定的19点30运行rebuild_md.sh,20点运行disconnect_md.sh,大家可以根据自己的实际情况修改):

202309062109593.png

202309062111280.png

202309062112035.png

image.png

同理创建disconnect_md.sh脚本计划任务:

202309062114271.png

202309062115309.png

202309062116330.png

hdd_sleep有点不同,是触发的任务:

202309062117975.png
202309062117636.png

自此大功告成。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。

评论

  1. Nosferatu
    Macintosh Chrome 131.0.0.0
    4 周前
    2025-1-09 2:02:30

    照做完全成功,12盘日常待机140w,休眠后,功率下降到75w,关键是休眠能大大减轻硬盘负担,感谢楼主无私分享!全网最详细说的最明白的一个教程了,虽然有一点点瑕疵就是无法访问系统分区的提醒,感觉群晖思维很僵化,完全可以学习truenas一样,系统盘单独设置出来,或者把boot分区的选择交给用户,企业级的产品其实还是挺在意电费吧。
    p.s. sleep脚本貌似也得root用户运行吧,admin用户好像无法运行。

    • 博主
      Nosferatu
      Macintosh Chrome 131.0.0.0
      4 周前
      2025-1-09 9:45:46

      对,肯定要root啊。不过,我虽然是以黑群晖来写得,但是我实际使用的是qnap(也做了类似的处理),折腾了半天黑群晖,结果现在基本都没用了~。

      • Nosferatu
        tangwudi
        Windows Chrome 131.0.0.0
        4 周前
        2025-1-09 10:58:01

        还有个小问题,不知道大佬遇到没有,我这机器总是自动后台唤醒,就是休眠会成功,但是维持不了多久,就会唤醒。

        • 博主
          Nosferatu
          Macintosh Chrome 131.0.0.0
          4 周前
          2025-1-09 11:03:01

          你最开始安装系统的时候是不是只插的系统盘安装?我记得文章里说过,如果你是插上所有盘安装的系统,就相当于每个盘上都有系统代码,肯定会动不动就自动唤醒的。

          • Nosferatu
            tangwudi
            Windows Chrome 131.0.0.0
            4 周前
            2025-1-09 11:06:46

            安装时候没插HDD,昨天刚插的新HDD,安装系统时侯就是两个虚拟硬盘,这个让我我很困惑,现在来上班登不了SSH,回去我具体查看一下唤醒日志。

          • Nosferatu
            Nosferatu
            Macintosh Chrome 131.0.0.0
            4 周前
            2025-1-09 18:55:46

            大佬,还有个小问题,rebuild_md.sh的脚本,为啥我现在一执行就提示:
            bash /volume1/@userpreference/admin/rebulid_md.sh
            Re-adding md0
            mdadm: –re-add for /dev/sata1p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata2p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata3p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata4p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata5p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata6p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata7p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata8p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata9p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata10p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata11p1 to /dev/md0 is not possible
            mdadm: –re-add for /dev/sata12p1 to /dev/md0 is not possible
            Re-adding md1
            mdadm: –re-add for /dev/sata1p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata2p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata3p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata4p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata5p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata6p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata7p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata8p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata9p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata10p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata11p2 to /dev/md1 is not possible
            mdadm: –re-add for /dev/sata12p2 to /dev/md1 is not possible
            全都是not possible,权限设置了,然后这个系统分区却可以在系统点修复进行恢复,这是系统暗改了么。

          • 博主
            Nosferatu
            Macintosh Chrome 131.0.0.0
            4 周前
            2025-1-10 11:38:49

            你这个设备路径有点奇怪啊,都是”/dev/sataxp?”,我这边正常是”/dev/sdx”这种形式,你之前说过什么虚拟盘,会不会这方面有啥问题?

          • Nosferatu
            tangwudi
            Windows Chrome 131.0.0.0
            4 周前
            2025-1-10 16:06:47

            我这个不知道为啥,用 cat /proc/mdstat 命令查看的设备路径就是sataX,估计因为我用的是pve虚拟机直通的原因吧,不过这个应该不重要,目前倒是能休眠,大不了每天我手动同步一下阵列数据就好。

  2. molezz
    Android Chrome 126.0.0.0
    6 月前
    2024-7-31 13:56:36

    我也是威联通和白群晖,威联通hddstandby很成熟了。白裙不是完美,定时开关机了。

    • 博主
      molezz
      Macintosh Chrome 127.0.0.0
      6 月前
      2024-8-02 21:43:17

      白群也不完美啊,我还以为只是黑群呢,还好我主力是威联通。

  3. Rinvay
    Windows Chrome 124.0.0.0
    9 月前
    2024-5-04 0:17:44

    博主这个方法很不错,但是会导致存储里面提示无法访问系统分区,请问有办法屏蔽掉这个吗

    • 博主
      Rinvay
      Macintosh Chrome 124.0.0.0
      9 月前
      2024-5-04 8:43:14

      的确,我也是会提示。其实我平时主力使用的是威联通,经过了类似的操作之后能正常休眠,也没有提示。我是看当时群晖好像没人写这个,才专门写的这篇文章,只不过因为我手头只有黑群晖,而引导的时候威联通和我手上的黑群晖又不太一样,我不确定是不是黑群晖的问题,我也不太确认白群晖上有没有这个问题,加上又不是主力使用需要24小时开机,所以没花精力去研究,能确认的不影响使用,就是看起来有点不爽。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       
error:
zh_CN
春节
快乐