威聯通(QNAP)硬盤不休眠(待機)的解決方法

背景

好奇觀察了下 453Bmini 硬盤的休眠(待機)情況,發現在已有 SSD 作爲系統和軟件安裝區域後,HDD 仍不進入休眠狀態,或進入休眠短時間被喚醒。
我的 1 號硬盤位是SSD,所以以 2 號硬盤位的 HDD 舉例:查看硬盤是否休眠可通過命令 hdparm -C /dev/sdb,如果輸出 drive state is: active/idle 則表示硬盤是喚醒狀態,如果輸出 drive state is: standby 則表示硬盤已休眠(低功耗模式)。

調查

  1. 首先排查 NAS 系統中是否開啓了硬盤待機,在“控制檯”>“系統”>“硬件”中,我已經開啓;
  2. 排查了官方文檔中描述的其他場景,我用了 Container Station,但是全部都是在 SSD 上,應當也不會阻止 HDD 休眠。

這就比較奇怪了,只能網上搜索一番,直到找到下面這兩篇博客給我解了疑:

  1. 在威聯通NAS上完美實現硬盤單獨休眠
  2. QNAP 威聯通磁盤分區探索與數據導出

我將上面的博客內容總結一下,除系統盤之外的硬盤不能休眠,是因爲 QNAP 選擇將每一塊硬盤都分出來兩個區塊,然後將這部分區塊組成了 RAID1(下文稱爲“系統 RAID1”,路徑爲 /dev/md9 和 /dev/md13),也就是說只要系統有讀寫,那所有硬盤都將不能休眠。

那如何解決呢?很簡單,將非系統盤的分區移出“系統 RAID1”即可,這裏以我的第二塊硬盤舉例:

mdadm /dev/md9 --fail /dev/sdb1
mdadm /dev/md13 --fail /dev/sdb4

RAID1 的初衷是避免數據損壞,那我們也可以通過定時任務每天恢復“系統 RAID1”一段時間用於同步數據,之後再斷開即可。

添加定時任務

這裏我提供兩個腳本,一個用於斷開“系統 RAID1”,一個用於恢復“系統 RAID1”:

#!/bin/sh
# fail_raid1.sh(斷開系統 RAID1)
mdadm /dev/md9 --fail /dev/sdb1
mdadm /dev/md13 --fail /dev/sdb4
#!/bin/sh
# readd_raid1.sh(恢復系統 RAID1)
mdadm /dev/md9 --re-add /dev/sdb1
mdadm /dev/md13 --re-add /dev/sdb4
#!/bin/sh
# raid1_monitor.sh(監控 HDD 是否休眠)
echo `date` `hdparm -C /dev/sdb | grep state` >> /share/CACHEDEV1_DATA/my_cron/raid1_monitor.log 2>&1

需要注意的是,QTS(QNAP 的系統)不能通過 crontab -e 這個方式添加定時任務,因爲系統內部有一套邏輯會覆蓋通過這種方法增加的定時任務,詳情可參考官方文檔:Add_items_to_crontab

# 每天 0 點恢復系統 RAID1
$ echo "0 0 * * * /bin/bash /share/CACHEDEV1_DATA/my_cron/readd_raid1.sh" >> /etc/config/crontab
# 每天 0 點 15 分恢復系統 RAID1
$ echo "15 0 * * * /bin/bash /share/CACHEDEV1_DATA/my_cron/fail_raid1.sh" >> /etc/config/crontab
# 每 10 分鐘檢測 HDD 是否休眠,結果保存在 raid1_monitor.log 中
$ echo "*/10 * * * * /bin/bash /share/CACHEDEV1_DATA/my_cron/raid1_monitor.sh" >> /etc/config/crontab
# 重啓 crontab
$ crontab /etc/config/crontab && /etc/init.d/crond.sh restart

優化結果

優化效果顯著,監控日誌見文末附件。

附件

每 10 分鐘監控硬盤狀態日誌

...
Tue Mar 17 23:20:00 HKT 2020 drive state is: standby
Tue Mar 17 23:30:00 HKT 2020 drive state is: standby
Tue Mar 17 23:40:00 HKT 2020 drive state is: standby
Tue Mar 17 23:50:00 HKT 2020 drive state is: standby
Wed Mar 18 00:00:00 HKT 2020 drive state is: active/idle
Wed Mar 18 00:10:00 HKT 2020 drive state is: active/idle
Wed Mar 18 00:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 00:30:00 HKT 2020 drive state is: standby
Wed Mar 18 00:40:00 HKT 2020 drive state is: standby
Wed Mar 18 00:50:00 HKT 2020 drive state is: standby
Wed Mar 18 01:00:00 HKT 2020 drive state is: standby
Wed Mar 18 01:10:00 HKT 2020 drive state is: standby
Wed Mar 18 01:20:00 HKT 2020 drive state is: standby
Wed Mar 18 01:30:01 HKT 2020 drive state is: standby
Wed Mar 18 01:40:01 HKT 2020 drive state is: standby
Wed Mar 18 01:50:00 HKT 2020 drive state is: standby
Wed Mar 18 02:00:00 HKT 2020 drive state is: standby
Wed Mar 18 02:10:00 HKT 2020 drive state is: standby
Wed Mar 18 02:20:00 HKT 2020 drive state is: standby
Wed Mar 18 02:30:00 HKT 2020 drive state is: standby
Wed Mar 18 02:40:00 HKT 2020 drive state is: standby
Wed Mar 18 02:50:00 HKT 2020 drive state is: standby
Wed Mar 18 03:00:00 HKT 2020 drive state is: standby
Wed Mar 18 03:10:00 HKT 2020 drive state is: active/idle
Wed Mar 18 03:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 03:30:00 HKT 2020 drive state is: active/idle
Wed Mar 18 03:40:00 HKT 2020 drive state is: standby
Wed Mar 18 03:50:00 HKT 2020 drive state is: standby
Wed Mar 18 04:00:00 HKT 2020 drive state is: active/idle
Wed Mar 18 04:10:00 HKT 2020 drive state is: active/idle
Wed Mar 18 04:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 04:30:00 HKT 2020 drive state is: standby
Wed Mar 18 04:40:00 HKT 2020 drive state is: active/idle
Wed Mar 18 04:50:00 HKT 2020 drive state is: active/idle
Wed Mar 18 05:00:00 HKT 2020 drive state is: active/idle
Wed Mar 18 05:10:00 HKT 2020 drive state is: standby
Wed Mar 18 05:20:00 HKT 2020 drive state is: standby
Wed Mar 18 05:30:00 HKT 2020 drive state is: standby
Wed Mar 18 05:40:00 HKT 2020 drive state is: standby
Wed Mar 18 05:50:00 HKT 2020 drive state is: standby
Wed Mar 18 06:00:00 HKT 2020 drive state is: active/idle
Wed Mar 18 06:10:00 HKT 2020 drive state is: active/idle
Wed Mar 18 06:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 06:30:00 HKT 2020 drive state is: standby
Wed Mar 18 06:40:00 HKT 2020 drive state is: standby
Wed Mar 18 06:50:00 HKT 2020 drive state is: standby
Wed Mar 18 07:00:00 HKT 2020 drive state is: standby
Wed Mar 18 07:10:00 HKT 2020 drive state is: standby
Wed Mar 18 07:20:00 HKT 2020 drive state is: standby
Wed Mar 18 07:30:00 HKT 2020 drive state is: standby
Wed Mar 18 07:40:00 HKT 2020 drive state is: standby
Wed Mar 18 07:50:00 HKT 2020 drive state is: standby
Wed Mar 18 08:00:00 HKT 2020 drive state is: standby
Wed Mar 18 08:10:00 HKT 2020 drive state is: standby
Wed Mar 18 08:20:00 HKT 2020 drive state is: standby
Wed Mar 18 08:30:00 HKT 2020 drive state is: standby
Wed Mar 18 08:40:00 HKT 2020 drive state is: standby
Wed Mar 18 08:50:00 HKT 2020 drive state is: standby
Wed Mar 18 09:00:00 HKT 2020 drive state is: standby
Wed Mar 18 09:10:00 HKT 2020 drive state is: standby
Wed Mar 18 09:20:00 HKT 2020 drive state is: standby
Wed Mar 18 09:30:00 HKT 2020 drive state is: standby
Wed Mar 18 09:40:00 HKT 2020 drive state is: standby
Wed Mar 18 09:50:00 HKT 2020 drive state is: standby
Wed Mar 18 10:00:00 HKT 2020 drive state is: standby
Wed Mar 18 10:10:00 HKT 2020 drive state is: standby
Wed Mar 18 10:20:00 HKT 2020 drive state is: standby
Wed Mar 18 10:30:00 HKT 2020 drive state is: active/idle
Wed Mar 18 10:40:00 HKT 2020 drive state is: active/idle
Wed Mar 18 10:50:00 HKT 2020 drive state is: active/idle
Wed Mar 18 11:00:00 HKT 2020 drive state is: standby
Wed Mar 18 11:10:00 HKT 2020 drive state is: standby
Wed Mar 18 11:20:00 HKT 2020 drive state is: standby
Wed Mar 18 11:30:00 HKT 2020 drive state is: standby
Wed Mar 18 11:40:00 HKT 2020 drive state is: standby
Wed Mar 18 11:50:00 HKT 2020 drive state is: standby
Wed Mar 18 12:00:00 HKT 2020 drive state is: active/idle
Wed Mar 18 12:10:00 HKT 2020 drive state is: active/idle
Wed Mar 18 12:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 12:30:00 HKT 2020 drive state is: standby
Wed Mar 18 12:40:00 HKT 2020 drive state is: standby
Wed Mar 18 12:50:00 HKT 2020 drive state is: standby
Wed Mar 18 13:00:00 HKT 2020 drive state is: standby
Wed Mar 18 13:10:00 HKT 2020 drive state is: standby
Wed Mar 18 13:20:00 HKT 2020 drive state is: standby
Wed Mar 18 13:30:00 HKT 2020 drive state is: standby
Wed Mar 18 13:40:00 HKT 2020 drive state is: standby
Wed Mar 18 13:50:00 HKT 2020 drive state is: standby
Wed Mar 18 14:00:00 HKT 2020 drive state is: standby
Wed Mar 18 14:10:00 HKT 2020 drive state is: standby
Wed Mar 18 14:20:00 HKT 2020 drive state is: standby
Wed Mar 18 14:30:00 HKT 2020 drive state is: standby
Wed Mar 18 14:40:00 HKT 2020 drive state is: standby
Wed Mar 18 14:50:00 HKT 2020 drive state is: standby
Wed Mar 18 15:00:00 HKT 2020 drive state is: standby
Wed Mar 18 15:10:00 HKT 2020 drive state is: standby
Wed Mar 18 15:20:00 HKT 2020 drive state is: active/idle
Wed Mar 18 15:30:00 HKT 2020 drive state is: active/idle
Wed Mar 18 15:40:00 HKT 2020 drive state is: active/idle
Wed Mar 18 15:50:00 HKT 2020 drive state is: active/idle
Wed Mar 18 16:00:00 HKT 2020 drive state is: active/idle
...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章