节能降噪,让群晖真正实现稳定磁盘休眠

您所在的位置:网站首页 群晖raid1重建 节能降噪,让群晖真正实现稳定磁盘休眠

节能降噪,让群晖真正实现稳定磁盘休眠

2024-04-20 15:53| 来源: 网络整理| 查看: 265

醒目提醒:本方法涉及ssh命令执行,如产生误操作可能导致永久数据丢失,请务必确保数据已经在NAS外妥善备份。

前言:群晖系统,特别是升级7.x以后的群晖系统,硬盘稳定休眠变得非常困难。网上官方的[1]非官方的[2]已经有各种介绍说明哪些程序可能影响系统休眠,但是通过常规方法通常并不能实现稳定休眠的目的。硬盘频繁启停对寿命的影响要大于持续运行的影响,所以很多人索性放弃休眠。我家群晖在客厅,硬盘运转噪音和硬盘不工作时磁头定期移动的噪音难以接受,所以尝试各种办法,最终达到了机械硬盘稳定休眠的目的。本方法借鉴了大量前人的工作,将思路整理出来,权当笔记使用。大部分内容均为个人理解,欢迎交流。

适用范围:

群晖机型:DS923+,4盘位的,其他未测试;

硬盘:三星870QVO固态硬盘4T,希捷银河企业盘16T,希捷酷狼NAS盘4T,西数Elements拆机盘12T;

raid类型:均为basic或单盘shr,其他未测试;

套件:以下套件在休眠期间可正常运行,无需停用或卸载:Synology Drive,Synology Photos,DS Download,Surveillance Station,Plex;

服务:smb服务可正常使用;

【修订1】USB外接硬盘工作正常,不影响内置HDD休眠。

总体思路:把SSD当作单一系统盘,不休眠;全部套件的存储空间位置和常驻服务套件的数据存储位置都设在SSD。使用mdadm工具将机械硬盘的群晖系统分区脱离开,仅做数据存储使用。使用hdparm工具设置机械硬盘的自动休眠时间。使用计划任务每日自动同步系统分区的数据,使用hyper backup每日备份系统设置和套件设置,应对ssd崩溃。

基础知识:

本文假设读者已经充分理解存储池、存储空间、raid、磁盘分区、ssh连接、root权限的概念。

无论“存储管理器”中建立的存储池是什么raid类型,群晖的操作系统本身都会以raid1的形式分布在同一台机器的所有硬盘上,从而实现任一硬盘单独都能启动系统和实现热插拔。具体而言,对于我用的dsm7.1.1版本,群晖的操作系统存储在/dev/md0上,/dev/md0是所有磁盘的第一个分区组成的raid1;同时会有/dev/md1,是swap分区,是所有磁盘的第二个分区组成的raid1。在ssh界面中,可使用以下命令查看raid状态:

cat /proc/mdstat

从输出结果可以看到,md0和md1是多盘位的raid1状态,其中md0由sata(x)p1组成(x为硬盘编号),md1由sata(x)p2组成。可通过以下命令查看磁盘对应的设备名称(需root权限),避免热插拔和更换盘序之后,操作错误的硬盘:

fdisk -l

步骤一:使ssd成为第一盘位,承载套件和主要活动存储

【修订1】建议使用重装系统的方法给ssd安装全新系统。重装时仅保留ssd,其他硬盘待系统装好后再插入。这样可以避免后加ssd造成的部分系统软件依然默认存储文件到hdd的问题。重装系统务必使用官网介绍的方法,通过reset按钮进行。DSM里面的重置系统会删除用户个人数据。

【原文】

我的ssd是系统做好以后买的,经历了多次硬盘热插拔才将ssd变成各套件的主要存储位置(注意部分群晖不支持热插拔)。经过多次测试,对于raid类型basic或者单盘shr而言,拔除任一/任n个硬盘后再插入,改变硬盘的相对位置后再插入,拔除硬盘后删除相应的提示“已损毁”的存储池后再插入,均未导致个人数据的丢失。每次插入硬盘后,系统会提示存储池可以在线修复,点击“在线修复”以后,系统会将p1/p2分区加入md0/md1阵列,于是自动同步/重建该硬盘中p1分区的系统,自动挂载存储空间为只读,可点击选项更改存储空间为“读/写”后,正常使用。

如果不想重装系统加装ssd,首先通过hyper backup备份当前系统设置和必要的套件设置到非第一盘位硬盘(备份完应该是一个.hbk文件夹),保持hyper backup软件的打开状态,拔除第一盘位,删除第一盘位的存储池(通常是存储池1,注意一定先拔硬盘再删除,否则会造成数据丢失!)。插入ssd到第一盘位,新建存储池,新建存储空间(注意给ssd预留10-20%的保留空间不分配以延长寿命),顺利的话此时ssd就是存储空间1了。使用hyper backup还原设置。查看并确认套件中心的默认存储位置是存储空间1。关机。仅保留ssd。开机。系统应能正常启动,套件应能正常运行。插入其他硬盘并在线重建存储池即可,之前第一盘位的磁盘数据也在。尚不清楚不支持热插拔的机器是否能够按类似方法实现。

给ssd装一个新系统应该是更好的办法,但是我没有测试。流程应该是:关机,拔除全部硬盘,仅插入ssd到第一盘位,开机,按提示安装系统和需要使用的套件,插入其他硬盘并在线重建存储池。

我存在ssd里的数据包括:Synology Drive的同步盘,Synology Photos的照片数据,DS Download的下载目的地(下载缓存盘建议使用外挂usb,方便管理),Surveillance Station的监控视频,Plex的媒体库;

步骤二:将机械硬盘的操作系统分区脱离raid

首先建议阅读网上关于mdadm工具的简单介绍。通过mdadm工具,可将sata(x)p1和sata(x)p2从md0和md1阵列中脱离。

注意:sata(x)p1中的(x)是磁盘序号,前面介绍了磁盘需要的查询识别方法;p是分区,每个磁盘只有p1和p2是操作系统分区,p3及以后是个人数据,所以除非故意,不要让p后面的数字大于等于3。使用如下命令查看md0和md1阵列包含的磁盘分区:

mdadm -D /dev/md0

mdadm -D /dev/md1

开始操作。使用以下命令将2、3、4号盘(并不总是与物理位置对应)的相应分区设置为fail:

mdadm /dev/md0 -f /dev/sata2p1

mdadm /dev/md0 -f /dev/sata3p1

mdadm /dev/md0 -f /dev/sata4p1

mdadm /dev/md1 -f /dev/sata2p2

mdadm /dev/md1 -f /dev/sata3p2

mdadm /dev/md1 -f /dev/sata4p2

然后从阵列中删除分区:

mdadm /dev/md0 -r /dev/sata2p1

mdadm /dev/md0 -r /dev/sata3p1

mdadm /dev/md0 -r /dev/sata4p1

mdadm /dev/md1 -r /dev/sata2p2

mdadm /dev/md1 -r /dev/sata3p2

mdadm /dev/md1 -r /dev/sata4p2

至此,操作系统相关的数据将仅在ssd上读写,不会同步到hdd上,hdd就有了定时休眠的条件。群晖会提示系统分区已降级,存储管理器中会有警告,注意不要点修复。

如果要将hdd加回到md0和md1阵列,有可通过--re-add和-a两种方法,分别是-f和-r的反向操作。具体命令示例如下,注意-r以后如需再次加入,仅使用-a即可:

mdadm /dev/md0 --re-add /dev/sata2p1

mdadm /dev/md0 -a /dev/sata2p1

步骤三:使用hdparm设置硬盘定时休眠

该功能不依赖群晖系统的硬盘休眠功能,所以为避免冲突,应将控制面板中的休眠功能关闭。

通过以下命令,设置硬盘闲置一小时以后休眠:

hdparm -S 242 /dev/sata2

hdparm -S 242 /dev/sata3

hdparm -S 242 /dev/sata4

可在此地址[3]查看hdparm的具体用法和-S参数后不同数字代表的时间意义。

可使用此命令查看磁盘的休眠状态:

hdparm -C /dev/sata2

hdparm -C /dev/sata3

hdparm -C /dev/sata4

此方法依赖硬盘的自动休眠功能,经过测试,希捷银河企业盘和希捷酷狼NAS盘都可以闲置时间后自动休眠,但西数Elements拆机盘不支持,表现为硬盘可以进入停转休眠状态,但立刻就会自动醒来并起转。而且这几个盘里面,闲置状态下,西数Elements拆机盘的磁头移动是最频繁的,5秒一次,说是让润滑油均匀分布以延长寿命的功能,叫PWL[4],不胜其烦。

这种硬盘休眠唤醒是不会被群晖系统的磁盘唤醒日志记录下来的,如果要记录磁盘唤醒状态,可以参照此文[5],设置好以后很方便。此文中的/dev/sd(x)在当前版本的群晖中应该是/dev/sata(x),注意修改。

步骤四:设置自动任务

通过计划任务,每天定时将sata(x)p1和p2加入阵列,大概15分钟后再脱离,可以实现系统分区的备份。

重启后,hdparm的设置会重置,所以也需要加入计划任务,定期执行。

其他可能需要注意的问题:

1. 当连接smb的pc打开时,可能会造成唤醒,主要是pc启动时会访问映射盘符的网络磁盘。经测试,不映射盘符的话,启动电脑并不总是会造成hdd唤醒。另外,可通过防火墙规则设置smb白名单,从而屏蔽局域网内可疑的smb广播数据包。

2. 【修订1】乱改SynoFinder权限可能导致Drive,Photos套件出现不能同步的问题。重装系统解决了。所以建议加ssd以后重装系统。系统索引服务会在随机的hdd中写入文件,文件夹是/volume(x)/@SynoFinder-etc-volume/和/volume(x)/@SynoFinder-log/,将这两个文件夹权限设置为0000可能解决系统索引带来的唤醒,后果尚不明确。

3. 技术支持中心内的磁盘唤醒记录每小时自动分页,可能造成整点唤醒,不需要分析的话就关掉吧。

后记:此方法目前运行了几天时间,很少有意外的唤醒,整体表现还是满意的。如有疑问或建议,欢迎交流。

【修订1】近日唤醒如下图,每日0点设置系统备份,唤醒一次,平时各种套件基本只需要访问ssd。

两个hdd的唤醒记录。WD Elements 12T拆机盘无法睡眠于是暂且拔出停用了。

参考文献:

https://kb.synology.com/en-global/DSM/tutorial/What_stops_my_Synology_NAS_from_entering_System_Hibernation

https://news.mydrivers.com/1/884/884966.htm?ref=

https://www.man7.org/linux/man-pages/man8/hdparm.8.html

https://community.wd.com/t/preventive-wear-leveling/249579

https://blog.csdn.net/w670165403/article/details/109606914



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3