IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    NAS 未读写时的硬盘噪音问题

    ihainan\'s Blog发表于 2023-12-13 16:21:08
    love 0

    家里有台装有两块 14T 氮气盘的威联通 TS-264C,硬盘炒豆子的声音可以接受,但忍不了没有读写的时候硬盘也会隔几秒就哐当一下。小小研究了一下解决办法。

    根据 这篇帖子 可以得知威联通为了确保拔掉任何一块硬盘都能进系统,威联通会给所有硬盘分区,并把硬盘的第一块分区组 RAID 1 md9,用于存储固件,第四块分区组 RAID 1 md13,用于存放系统配置和应用数据。以 md9 为例。

    # ihainan @ TS-264C-NAS in ~ [15:25:20]
    $ sudo mdadm -D /dev/md9
    /dev/md9:
    ...
        Number   Major   Minor   RaidDevice State
           0       8        1        0      active sync   /dev/sda1
           1       8       17        1      active sync   /dev/sdb1
           2     259        1        2      active sync   /dev/nvme1n1p1
           3     259        7        3      active sync   /dev/nvme0n1p1
    ...
    

    当 SSD 存在读写的时候,数据也会同步到两块机械盘,基本就没法让硬盘进入休眠状态。

    让机械硬盘能够正常休眠的思路如下:

    首先需要将两块机械盘移除出 RAID,同时出于安全性考虑,需要添加两个深夜执行的定时任务,分别将硬盘添加回 RAID,和等待一段时间时候,再重新将硬盘移除,具体可以参见 原贴 的脚本。

    可以使用工具 hdparm 命令查看当前硬盘是否有读写,也可以使用 fatrace 来 监控当前目录所在分区 具体是哪个进程在读写什么数据(草考):

    $ sudo hdparm -C /dev/sda
    /dev/sda:
     standby
    
    $ sudo fatrace -c -t
    15:40:44.486460 momd(7203): RO  /share/CACHEDEV1_DATA/.qpkg/QKVM/usr/bin/pgrep
    15:40:44.486460 momd(7203): R   /share/CACHEDEV1_DATA/.qpkg/QKVM/usr/bin/pgrep
    15:26:13.080351 smbd(2587): O   /share/CACHEDEV2_DATA/Shares/Net_Storage/03_Media
    15:26:13.080582 smbd(2587): C   /share/CACHEDEV2_DATA/Shares/Net_Storage/03_Media
    # 注意访问 Web UI 的时候也会定时读写机械硬盘
    16:05:20.528158 chartReq.cgi(28645): CO  /share/CACHEDEV2_DATA
    16:05:21.322976 chartReq.cgi(28888): CO  /share/CACHEDEV2_DATA
    

    但是在两块硬盘都进入 standby 之后,实际上还是会隔几秒就听到哐当声,这时候还需要在威联通的控制台里面开启硬盘待机模式,并选择一个自己觉得合适的时间间隔。

    qnap_web

    可以通过 读取 LED 灯的值 来了解系统是否已经让硬盘进入待机模式, 0x00000001 表示已经休眠,0x00000000 则是未休眠。

    $ sudo cat /var/ledvalue
    0x00000000
    

    以我上面设置的五分钟为例,当两块硬盘的 Standby 状态持续超过五分钟之后,硬盘会进入休眠状态,这时候 NAS 基本是完全无声状态了,直到硬盘下次被唤醒。写了一个脚本检查硬盘和 LED 状态来验证结果:

    Wed Dec 13 16:05:14 HKT 2023  standby standby 0x00010000
    Wed Dec 13 16:05:24 HKT 2023  active/idle active/idle 0x00000000 # 有读写的时候硬盘被唤醒
    Wed Dec 13 16:05:50 HKT 2023  standby standby 0x00000000
    // ...
    Wed Dec 13 16:10:31 HKT 2023  standby standby 0x00000000
    Wed Dec 13 16:10:41 HKT 2023  standby standby 0x00010000 # 没有数据读写的五分钟,硬盘重新进入休眠
    

    顺便一提,频繁唤醒是否对硬盘有损是个 有争议的话题。相比硬盘的寿命,我更希望自己用得舒心一些。此外唤醒是需要时间的,因为会比较频繁出现读取磁盘(打开 SMB 目录、看剧看电影)时需要等待片刻的情况。



沪ICP备19023445号-2号
友情链接