威联通NAS上实现硬盘独立休眠
前言
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)
威联通创建了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
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同步一次。
四 关闭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
五、 恢复原设置
改了这些内容后,有人想恢复原设置,也很容易。
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系统,优点之一是硬盘可以独立休眠。事实上,硬盘休眠本身不会缩短寿命,是硬盘频繁休眠和唤醒会缩短寿命。企业用户因为频繁访问硬盘,应该关掉休眠。
大家都知道,全球正在变暖,未来人类最大的危机是全球变暖,希望此文能为节能减排做一点微博之力。大家也应该能节能就尽量节能吧。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
真大宝
一般民用机的硬盘损坏主要是以下几个问题:1、温度!你看无论成品NAS还是硬盘自身S.M.A.R.T都在关注这个关键数据。2、电压电流!无论民用还是商用,PS(电源)都是重中之重。3、震动!商用设备的机箱还是机架服务器,那个硬盘是多么稳固。而很多人的电脑机箱薄铁板震动一点都不奇怪,或者机箱N个RGB风扇造成的震动,甚至机主抖腿都能踢到机箱。。。。能做好以上几点,我386年代的IDE硬盘,在我865主板上还能用。
校验提示文案
Xiyanxue
校验提示文案
值友5058648181
校验提示文案
值友2870826131
校验提示文案
值友8260066977
校验提示文案
酸奶式沉淀
校验提示文案
阿空kkk
校验提示文案
值友8499875933
校验提示文案
这件事已经报警
校验提示文案
我就是cy
校验提示文案
Jearvino
校验提示文案
vision57
校验提示文案
Parval
校验提示文案
白菜按吨买
校验提示文案
灵KOYB
校验提示文案
值友8098597295
校验提示文案
值友8098597295
校验提示文案
值友8499875933
校验提示文案
阿空kkk
校验提示文案
灵KOYB
校验提示文案
白菜按吨买
校验提示文案
Parval
校验提示文案
vision57
校验提示文案
Jearvino
校验提示文案
我就是cy
校验提示文案
这件事已经报警
校验提示文案
值友5058648181
校验提示文案
真大宝
一般民用机的硬盘损坏主要是以下几个问题:1、温度!你看无论成品NAS还是硬盘自身S.M.A.R.T都在关注这个关键数据。2、电压电流!无论民用还是商用,PS(电源)都是重中之重。3、震动!商用设备的机箱还是机架服务器,那个硬盘是多么稳固。而很多人的电脑机箱薄铁板震动一点都不奇怪,或者机箱N个RGB风扇造成的震动,甚至机主抖腿都能踢到机箱。。。。能做好以上几点,我386年代的IDE硬盘,在我865主板上还能用。
校验提示文案
Xiyanxue
校验提示文案
值友8260066977
校验提示文案
值友2870826131
校验提示文案
酸奶式沉淀
校验提示文案