我在2020年购入了群晖当年的新品DS920+,如今服役了5年有余了。白裙的稳定性毋庸置疑,目前为止没有发生过数据损坏的问题。性能我个人使用也绰绰有余。唯一让人苦恼的是硬盘的噪音,为了找出噪音产生的原因,也是熬了不少夜。好在功夫不负有心人,也是有了一点小心得。

噪音来源

我的群晖盘位情况大致如下:

盘位硬盘阵列存储池
SATA 1WD HC550 16TBRAID 1存储池 1
SATA 2WD HC550 16TBRAID 1存储池 1
SATA 3Intel S4510 960GBBasic存储池 2
SATA 4
M.2 1PM981a 256GBRAID 1SSD 缓存
M.2 2PM981a 256GBRAID 1SSD 缓存

有规律的噪音

有规律的噪音一般出现在系统无负载的时候,此时写入的数据基本上全是系统数据,比如系统日志、套件日志等。表现为固定几秒钟哒哒几声。

无规律的噪音

无规律的噪音一般是出现在访问群晖数据的时候,比如WebStation、Synology Photos等服务,这些服务需要频繁读取磁盘,并且大多是小文件,硬盘磁头来回摆动,出现类似炒豆子的声音。

解决方案

SSD 全备

土豪方案,所有硬盘全部采用固态硬盘,可以达到绝对安静。如果有M.2盘位,也可以创建成为存储池使用。代价是成本极高。群晖将只剩下散热风扇的声音,如果风扇吵换猫扇解决。

折衷方案是用SSD作为系统、套件、热数据存储池,HDD作为冷数据存储池。此方案还需要配合物理降噪阵列优化来达到完美状态。目前我使用此方案。

SSD 缓存

先说结论,SSD 缓存无法做到完全没有一点噪音,但是至少能减少80%的噪音。即使只是16GB的缓存,也有奇效!

起初我使用的是英特尔傲腾内存M10 16GB,一个是写入达到365TBW,“一盘传三代”不仅仅是网友相传的段子,而是这块盘真正的变态寿命。况且一块盘15块钱就能拿下。

后来我执着于那剩下的20%噪音,怀疑是缓存太小的缘故,因此升级到了256GB。结果让我失望了,和容量关系并不大。

虽然噪音没有什么缓解,但是容量大了,缓存的内容自然更多,一些数据淘汰前的留存时间也更久,如果访问到这些数据,还是会有加速效果。

条件允许的话,一定要加SSD缓存,体验会有质的提升!

物理降噪

受限于群晖的构造和做工,不但无法隔绝硬盘噪音,反而对噪音有放大作用!

为了消除这种共振效应,避免把主机放在一些容易加剧共振的位置上,例如一些木质桌子。可能整个桌子都能感受到震动。尝试使用一些减震的橡胶垫(用鼠标垫替代尝试)放在主机下面。

另外一个共振效应明显的地方出现在硬盘架上,硬盘架和硬盘之间存在缝隙,也会导致噪音变大。可以参考油管上的视频,用魔术贴填充硬盘之间的缝隙。

https://youtu.be/z-aTvVo59tY

使用物理降噪之后,噪音还是原来的噪音,但是不会那么刺耳。

阵列优化

可以注意到我的存储池2是一块固态硬盘,我计划再添加一块相同的固态,组成RAID 1,然后将系统转移到固态中。由于数据量过大(已使用8TB左右),还有大量套件和设置,还没有确定转移方案。

可以确定的是,将套件安装在固态存储池上,可以极大缓解机械磁盘读写噪音问题。

群晖的磁盘管理逻辑是:每一块加入的硬盘都会进行初始化,在初始化的过程中,硬盘会被分为3个区,第一个分区为rootfs系统分区,第二个分区为swap虚拟内存交换分区,第三个是用户分区。

第一个分区,所有加入的磁盘共同组成RAID 1(/dev/md0);
第二个分区,所有加入的磁盘共同组成RAID 2(/dev/md1);
第三个分区,由用户在存储管理器中创建存储池时的选择决定。

群晖这种处理方式目的在于:即使硬盘发生损坏,只要还有一块硬盘,系统都能正常运行。

由于所有磁盘都有系统分区的存在,那么在有固态存储池和机械存储池同时存在的情况下,即使将套件安装在固态存储池上,机械硬盘还是会产生读写。

群晖系统基于Linux,底层使用mdadm来管理软RAID阵列,这就给了我们操作空间。对于第三个分区用户分区,我们能够在存储管理器中调整阵列类型,但是第一个分区和第二个分区由系统自动完成,需要通过Shell进行操作,将机械硬盘系统分区和交换分区从RAID 1中剔除。

在进行此操作前,请务必备份数据,自行评估风险,数据无价!

如何通过SSH登录群晖不再赘述,相信看到这里的也不是普通玩家,如果连SSH都不会用,我并不建议你进行操作!

查看磁盘和阵列信息

首先要确定需要需要剔除的硬盘设备名。这里的编号并不一定和群晖硬盘架顺序一样,需要确认一下。

fdisk -l  | grep '^Disk' | grep -E 'sata|nvme'

mdadm --detail /dev/md0
mdadm --detail /dev/md1

cat /proc/mdstat

file-20250713161120024.png
file-20250713162200355.png
file-20250713162214866.png
file-20250713162640157.png

[UUU] 表示所有磁盘正常,[3/3] 表示 3 个设备都活跃。

实际上盘位1、盘位2我放入的是16TB硬盘,盘位3放入的是960GB固态硬盘,这里显示顺序并不正确。这种情况可能发生在创建存储池之后,拔出硬盘更改了顺序,但是并不影响系统正常功能。

调整阵列磁盘

接下来,先将机械盘标记为故障(fail),然后才能从阵列中移除硬盘。

# 系统分区
mdadm --fail /dev/md0 /dev/sata2p1
mdadm --fail /dev/md0 /dev/sata3p1

mdadm --remove /dev/md0 /dev/sata2p1
mdadm --remove /dev/md0 /dev/sata3p1

mdadm --detail /dev/md0

# 交换分区
mdadm --fail /dev/md1 /dev/sata2p2
mdadm --fail /dev/md1 /dev/sata3p2

mdadm --remove /dev/md1 /dev/sata2p2
mdadm --remove /dev/md1 /dev/sata3p2

mdadm --detail /dev/md1

由于我现在SSD只有一块,并没有组成RAID 1,避免产生严重数据损失,所以接下来操作使用交换分区演示,并且操作之前关闭了交换分区。

swapoff -a

file-20250713164636674.png

此时,存储管理器中应该会收到存储降级警告,不要修复,接下来通过调整阵列活跃设备数,将其他硬盘重新加入阵列作为备用盘(spare),消除警告。

mdadm --grow -n 1 --force /dev/md1

mdadm --detail /dev/md1

file-20250713165140321.png

!> 因为RAID 1只要需要2块硬盘,我目前只有1块SSD,这不符合阵列常规配置,因此出现了警告,添加--force强制执行。

!> 请不要像我这样操作,为了数据安全,这里至少使用两块SSD,并将活跃数量设置为2。mdadm --grow -n 2 /dev/mdX

mdadm --add /dev/md1 /dev/sata2p2
mdadm --add /dev/md1 /dev/sata3p2

mdadm --detail /dev/md1

file-20250713165758390.png

新加入的硬盘成为备用盘(spare),当活跃硬盘数量低于设定值(这里为1,推荐至少2)时,备用盘会自动替换故障硬盘。

到此,配置完成。系统分区的读写都在固态硬盘,备用盘并不会产生读写。存储管理器中警告也消除了。

参考:
https://www.freemindworld.com/blog/2018/180705_synology_dsm_ssd_cache_improved.shtml
https://community.synology.com/enu/forum/17/post/59407?reply=218363

最后修改:2025 年 07 月 13 日
如果觉得我的文章对你有用,请随意赞赏