節(jié)能降噪,讓群暉真正實(shí)現(xiàn)穩(wěn)定磁盤(pán)休眠
醒目提醒:本方法涉及ssh命令執(zhí)行,如產(chǎn)生誤操作可能導(dǎo)致永久數(shù)據(jù)丟失,請(qǐng)務(wù)必確保數(shù)據(jù)已經(jīng)在NAS外妥善備份。
前言:群暉系統(tǒng),特別是升級(jí)7.x以后的群暉系統(tǒng),硬盤(pán)穩(wěn)定休眠變得非常困難。網(wǎng)上官方的[1]非官方的[2]已經(jīng)有各種介紹說(shuō)明哪些程序可能影響系統(tǒng)休眠,但是通過(guò)常規(guī)方法通常并不能實(shí)現(xiàn)穩(wěn)定休眠的目的。硬盤(pán)頻繁啟停對(duì)壽命的影響要大于持續(xù)運(yùn)行的影響,所以很多人索性放棄休眠。我家群暉在客廳,硬盤(pán)運(yùn)轉(zhuǎn)噪音和硬盤(pán)不工作時(shí)磁頭定期移動(dòng)的噪音難以接受,所以嘗試各種辦法,最終達(dá)到了機(jī)械硬盤(pán)穩(wěn)定休眠的目的。本方法借鑒了大量前人的工作,將思路整理出來(lái),權(quán)當(dāng)筆記使用。大部分內(nèi)容均為個(gè)人理解,歡迎交流。
適用范圍:
群暉機(jī)型:DS923+,4盤(pán)位的,其他未測(cè)試;
硬盤(pán):三星870QVO固態(tài)硬盤(pán)4T,希捷銀河企業(yè)盤(pán)16T,希捷酷狼NAS盤(pán)4T,西數(shù)Elements拆機(jī)盤(pán)12T;
raid類(lèi)型:均為basic或單盤(pán)shr,其他未測(cè)試;
套件:以下套件在休眠期間可正常運(yùn)行,無(wú)需停用或卸載:Synology Drive,Synology Photos,DS Download,Surveillance Station,Plex;
服務(wù):smb服務(wù)可正常使用;
總體思路:把SSD當(dāng)作單一系統(tǒng)盤(pán),不休眠;全部套件的存儲(chǔ)空間位置和常駐服務(wù)套件的數(shù)據(jù)存儲(chǔ)位置都設(shè)在SSD。使用mdadm工具將機(jī)械硬盤(pán)的群暉系統(tǒng)分區(qū)脫離開(kāi),僅做數(shù)據(jù)存儲(chǔ)使用。使用hdparm工具設(shè)置機(jī)械硬盤(pán)的自動(dòng)休眠時(shí)間。使用計(jì)劃任務(wù)每日自動(dòng)同步系統(tǒng)分區(qū)的數(shù)據(jù),使用hyper backup每日備份系統(tǒng)設(shè)置和套件設(shè)置,應(yīng)對(duì)ssd崩潰。

基礎(chǔ)知識(shí):
本文假設(shè)讀者已經(jīng)充分理解存儲(chǔ)池、存儲(chǔ)空間、raid、磁盤(pán)分區(qū)、ssh連接、root權(quán)限的概念。
無(wú)論“存儲(chǔ)管理器”中建立的存儲(chǔ)池是什么raid類(lèi)型,群暉的操作系統(tǒng)本身都會(huì)以raid1的形式分布在同一臺(tái)機(jī)器的所有硬盤(pán)上,從而實(shí)現(xiàn)任一硬盤(pán)單獨(dú)都能啟動(dòng)系統(tǒng)和實(shí)現(xiàn)熱插拔。具體而言,對(duì)于我用的dsm7.1.1版本,群暉的操作系統(tǒng)存儲(chǔ)在/dev/md0上,/dev/md0是所有磁盤(pán)的第一個(gè)分區(qū)組成的raid1;同時(shí)會(huì)有/dev/md1,是swap分區(qū),是所有磁盤(pán)的第二個(gè)分區(qū)組成的raid1。在ssh界面中,可使用以下命令查看raid狀態(tài):
cat /proc/mdstat
從輸出結(jié)果可以看到,md0和md1是多盤(pán)位的raid1狀態(tài),其中md0由sata(x)p1組成(x為硬盤(pán)編號(hào)),md1由sata(x)p2組成。可通過(guò)以下命令查看磁盤(pán)對(duì)應(yīng)的設(shè)備名稱(chēng)(需root權(quán)限),避免熱插拔和更換盤(pán)序之后,操作錯(cuò)誤的硬盤(pán):
fdisk -l

步驟一:使ssd成為第一盤(pán)位,承載套件和主要活動(dòng)存儲(chǔ)
我的ssd是系統(tǒng)做好以后買(mǎi)的,經(jīng)歷了多次硬盤(pán)熱插拔才將ssd變成各套件的主要存儲(chǔ)位置(注意部分群暉不支持熱插拔)。經(jīng)過(guò)多次測(cè)試,對(duì)于raid類(lèi)型basic或者單盤(pán)shr而言,拔除任一/任n個(gè)硬盤(pán)后再插入,改變硬盤(pán)的相對(duì)位置后再插入,拔除硬盤(pán)后刪除相應(yīng)的提示“已損毀”的存儲(chǔ)池后再插入,均未導(dǎo)致個(gè)人數(shù)據(jù)的丟失。每次插入硬盤(pán)后,系統(tǒng)會(huì)提示存儲(chǔ)池可以在線(xiàn)修復(fù),點(diǎn)擊“在線(xiàn)修復(fù)”以后,系統(tǒng)會(huì)將p1/p2分區(qū)加入md0/md1陣列,于是自動(dòng)同步/重建該硬盤(pán)中p1分區(qū)的系統(tǒng),自動(dòng)掛載存儲(chǔ)空間為只讀,可點(diǎn)擊選項(xiàng)更改存儲(chǔ)空間為“讀/寫(xiě)”后,正常使用。
如果不想重裝系統(tǒng)加裝ssd,首先通過(guò)hyper backup備份當(dāng)前系統(tǒng)設(shè)置和必要的套件設(shè)置到非第一盤(pán)位硬盤(pán)(備份完應(yīng)該是一個(gè).hbk文件夾),保持hyper backup軟件的打開(kāi)狀態(tài),拔除第一盤(pán)位,刪除第一盤(pán)位的存儲(chǔ)池(通常是存儲(chǔ)池1,注意一定先拔硬盤(pán)再刪除,否則會(huì)造成數(shù)據(jù)丟失!)。插入ssd到第一盤(pán)位,新建存儲(chǔ)池,新建存儲(chǔ)空間(注意給ssd預(yù)留10-20%的保留空間不分配以延長(zhǎng)壽命),順利的話(huà)此時(shí)ssd就是存儲(chǔ)空間1了。使用hyper backup還原設(shè)置。查看并確認(rèn)套件中心的默認(rèn)存儲(chǔ)位置是存儲(chǔ)空間1。關(guān)機(jī)。僅保留ssd。開(kāi)機(jī)。系統(tǒng)應(yīng)能正常啟動(dòng),套件應(yīng)能正常運(yùn)行。插入其他硬盤(pán)并在線(xiàn)重建存儲(chǔ)池即可,之前第一盤(pán)位的磁盤(pán)數(shù)據(jù)也在。尚不清楚不支持熱插拔的機(jī)器是否能夠按類(lèi)似方法實(shí)現(xiàn)。
給ssd裝一個(gè)新系統(tǒng)應(yīng)該是更好的辦法,但是我沒(méi)有測(cè)試。流程應(yīng)該是:關(guān)機(jī),拔除全部硬盤(pán),僅插入ssd到第一盤(pán)位,開(kāi)機(jī),按提示安裝系統(tǒng)和需要使用的套件,插入其他硬盤(pán)并在線(xiàn)重建存儲(chǔ)池。
我存在ssd里的數(shù)據(jù)包括:Synology Drive的同步盤(pán),Synology Photos的照片數(shù)據(jù),DS Download的下載目的地(下載緩存盤(pán)建議使用外掛usb,方便管理),Surveillance Station的監(jiān)控視頻,Plex的媒體庫(kù);

步驟二:將機(jī)械硬盤(pán)的操作系統(tǒng)分區(qū)脫離raid
首先建議閱讀網(wǎng)上關(guān)于mdadm工具的簡(jiǎn)單介紹。通過(guò)mdadm工具,可將sata(x)p1和sata(x)p2從md0和md1陣列中脫離。
注意:sata(x)p1中的(x)是磁盤(pán)序號(hào),前面介紹了磁盤(pán)需要的查詢(xún)識(shí)別方法;p是分區(qū),每個(gè)磁盤(pán)只有p1和p2是操作系統(tǒng)分區(qū),p3及以后是個(gè)人數(shù)據(jù),所以除非故意,不要讓p后面的數(shù)字大于等于3。使用如下命令查看md0和md1陣列包含的磁盤(pán)分區(qū):
mdadm -D /dev/md0
mdadm -D /dev/md1
開(kāi)始操作。使用以下命令將2、3、4號(hào)盤(pán)(并不總是與物理位置對(duì)應(yīng))的相應(yīng)分區(qū)設(shè)置為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
然后從陣列中刪除分區(qū):
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
至此,操作系統(tǒng)相關(guān)的數(shù)據(jù)將僅在ssd上讀寫(xiě),不會(huì)同步到hdd上,hdd就有了定時(shí)休眠的條件。群暉會(huì)提示系統(tǒng)分區(qū)已降級(jí),存儲(chǔ)管理器中會(huì)有警告,注意不要點(diǎn)修復(fù)。
如果要將hdd加回到md0和md1陣列,有可通過(guò)--re-add和-a兩種方法,分別是-f和-r的反向操作。具體命令示例如下,注意-r以后如需再次加入,僅使用-a即可:
mdadm /dev/md0 --re-add /dev/sata2p1
mdadm /dev/md0 -a /dev/sata2p1

步驟三:使用hdparm設(shè)置硬盤(pán)定時(shí)休眠
該功能不依賴(lài)群暉系統(tǒng)的硬盤(pán)休眠功能,所以為避免沖突,應(yīng)將控制面板中的休眠功能關(guān)閉。
通過(guò)以下命令,設(shè)置硬盤(pán)閑置一小時(shí)以后休眠:
hdparm -S 242 /dev/sata2
hdparm -S?242 /dev/sata3
hdparm -S?242?/dev/sata4
可在此地址[3]查看hdparm的具體用法和-S參數(shù)后不同數(shù)字代表的時(shí)間意義。
可使用此命令查看磁盤(pán)的休眠狀態(tài):
hdparm -C /dev/sata2
hdparm -C /dev/sata3
hdparm -C /dev/sata4
此方法依賴(lài)硬盤(pán)的自動(dòng)休眠功能,經(jīng)過(guò)測(cè)試,希捷銀河企業(yè)盤(pán)和希捷酷狼NAS盤(pán)都可以閑置時(shí)間后自動(dòng)休眠,但西數(shù)Elements拆機(jī)盤(pán)不支持,表現(xiàn)為硬盤(pán)可以進(jìn)入停轉(zhuǎn)休眠狀態(tài),但立刻就會(huì)自動(dòng)醒來(lái)并起轉(zhuǎn)。而且這幾個(gè)盤(pán)里面,閑置狀態(tài)下,西數(shù)Elements拆機(jī)盤(pán)的磁頭移動(dòng)是最頻繁的,5秒一次,說(shuō)是讓潤(rùn)滑油均勻分布以延長(zhǎng)壽命的功能,叫PWL[4],不勝其煩。
這種硬盤(pán)休眠喚醒是不會(huì)被群暉系統(tǒng)的磁盤(pán)喚醒日志記錄下來(lái)的,如果要記錄磁盤(pán)喚醒狀態(tài),可以參照此文[5],設(shè)置好以后很方便。此文中的/dev/sd(x)在當(dāng)前版本的群暉中應(yīng)該是/dev/sata(x),注意修改。

步驟四:設(shè)置自動(dòng)任務(wù)
通過(guò)計(jì)劃任務(wù),每天定時(shí)將sata(x)p1和p2加入陣列,大概15分鐘后再脫離,可以實(shí)現(xiàn)系統(tǒng)分區(qū)的備份。
重啟后,hdparm的設(shè)置會(huì)重置,所以也需要加入計(jì)劃任務(wù),定期執(zhí)行。

其他可能需要注意的問(wèn)題:
1. 當(dāng)連接smb的pc打開(kāi)時(shí),可能會(huì)造成喚醒,主要是pc啟動(dòng)時(shí)會(huì)訪(fǎng)問(wèn)映射盤(pán)符的網(wǎng)絡(luò)磁盤(pán)。經(jīng)測(cè)試,不映射盤(pán)符的話(huà),啟動(dòng)電腦并不總是會(huì)造成hdd喚醒。另外,可通過(guò)防火墻規(guī)則設(shè)置smb白名單,從而屏蔽局域網(wǎng)內(nèi)可疑的smb廣播數(shù)據(jù)包。
2. 系統(tǒng)索引服務(wù)會(huì)在隨機(jī)的hdd中寫(xiě)入文件,文件夾是/volume(x)/@SynoFinder-etc-volume/和/volume(x)/@SynoFinder-log/,將這兩個(gè)文件夾權(quán)限設(shè)置為0000可能解決系統(tǒng)索引帶來(lái)的喚醒,后果尚不明確。
3. 技術(shù)支持中心內(nèi)的磁盤(pán)喚醒記錄每小時(shí)自動(dòng)分頁(yè),可能造成整點(diǎn)喚醒,不需要分析的話(huà)就關(guān)掉吧。

后記:此方法目前運(yùn)行了幾天時(shí)間,很少有意外的喚醒,整體表現(xiàn)還是滿(mǎn)意的。如有疑問(wèn)或建議,歡迎交流。
參考文獻(xiàn):
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