NAS 自架之旅:從 TrueNAS 到 Unraid 再到 OpenMediaVault 的魔幻之旅

9 min read

出現 IO Error

在上一篇文章中,我已經成功架好 TrueNAS on Proxmox 的環境。接下來本該是進入安裝各種應用程式的階段,但這部分我打算留到後面的文章再詳細說明,因為才架好沒過幾個月,就出現 io-error 😨

TrueNAS Error TrueNAS Error

一開始想說是不是線材的問題,就關機把硬碟拔出來重新插一次,重開機之後暫時看起來又恢復正常了,但沒過多久還是繼續出現 io-error,而且原本只有一顆,重開機之後變成兩顆 io-error,越變越多,感覺到不妙。最後直接整台送回去給 osslab 檢查,他們的人看來看去說硬碟沒問題,懷疑是 RAID Controller 的問題,所以就幫我換了一顆 RAID Controller。

投靠 Unraid 陣營

拿回機器後,我就看到 The Future of Electric Eel and Apps 這篇在 TrueNAS 論壇上的貼文,TrueNAS 預計要出新的大版本(免費大型 DLC!),要把 kubernetes 改回用 docker,大概是大家覺得 kubernetes 太難用了吧😂 如果我一樣重灌回 TrueNAS 的話,那沒過多久不就又要重新折騰了嗎,所以再三思索之後,我就決定要直接投靠隔壁 Unraid 陣營。

Unraid 是需要付費的,最便宜的 License 是 $49 美,一年內可以免費更新,算是買斷制。

Unraid Price

Unraid 的特點

Unraid 就如同他的名字所述,不是用我們熟知的 RAID 來做冗餘陣列,而是他自己有一套計算 parity 的算法,用軟體的方式做到冗餘計算。好處是彈性很高,每顆硬碟不需要同樣大小也可以算,但缺點也很明顯,就是,體感能感覺到的,必須要插條 SSD 當 cache 碟才能有比較正常的體驗。Unraid 還有另外兩個特點:一個是系統是裝在 USB 上的,而不是 SSD,所以會發現自己多了一條原本要當系統碟的 SSD,剛好可以當 cache 碟用。另一個特點是 Unraid 系統的 Linux 是用 Slackware 分支的版本,上面的套件管理器十分難用,盡量不要直接在上面裝東西。

Cache Pool 的建置

在 Unraid 6.12 版本開始支援 zfs,但目前看起來只能把 cache pool 做成 zfs,沒辦法把主硬碟陣列變成 zfs。
我的 Unraid 硬碟配置結果如下

Unraid Dashboard

Unraid 上的 cache pool 的運作方式十分土炮,就是有一個叫 mover 的程式會定期被觸發起來,幫你把資料從 disk 搬到 cache 或是從 cache 搬到 disk。 這邊的設定是基於文件夾去設定,每個文件夾可以有不同的設定,我把檔案切成 appdata 和 storage 兩個文件夾來分別管理

  • appdata
    • app 運作的時候需要用到的 Database 或是設定檔等等
    • 主儲存空間: cache
    • 副儲存空間: 無
  • storage
    • 這些是比較大的檔案,如影片、圖片等等
    • 主儲存空間: cache
    • 副儲存空間: disk
    • mover action: cache -> disk

這樣設定好之後,檔案落地都會先在 cache,而比較大的一些靜態檔案,最終會被 mover 搬到 disk 上定居。

出現 IO Error (第二次)

Unraid 的環境好不容易裝好,各種應用程式也都重新設置好了,以為可以高枕無憂,結果過不到一個月,又出現 io-error 😨

Unraid Error

一開始出現 32 個 ERRORS,但硬碟還是顯示綠燈,以為是正常的。但隔天硬碟就直接死掉了😭

Unraid Error Unraid Error

只好又送回去 osslab 檢查,這次他們測過幾次,說其中一顆硬碟跑半天以上就會出問題,終於幫我換了硬碟,但我看了一下他們實際上換掉了兩顆硬碟。

出現 IO Error (第三次)

都換了兩顆硬碟,感覺應該穩了吧,結果這次只過了兩個禮拜,依舊是熟悉的老朋友 io-error 😨
噩夢終究是沒有醒來😭

Unraid Error

而且他這次暴寫 syslog,寫了 160 萬行的 read error。

原本覺得自組 NAS 會踩一些雷也是正常,但你馬這雷也太多,光是來回送修的時間,還有每次都要重灌還原資料,再繼續下去我怕是折騰不動了...,已經開始思考退貨的可能性。後來我眼尖的同事看我貼的 log,發現每次出事都是同一顆硬碟,這樣就合理了,就那顆硬碟壞了吧,幫我換顆就行了吧。

之後還是跟 osslab 的人討論一下退貨的可能性,他們提出兩個方案

  • 第一個是整台退貨,但是需要支付折損費 6300
  • 第二個是他們再幫我換硬體,但需要使用他們指定的 NAS 系統,因為他們檢查過覺得是軟體相容性問題。我是覺得挺奇怪的,明明前面裝過 TrueNAS 後面又裝 Unraid,怎麼可能這兩大 NAS 系統都不相容。是硬碟壞掉的可能性比較大吧。

想了一下還是決定給他們一次機會,他們這次除了把那顆我覺得壞掉的硬碟換掉之外,也把整台的 Dell T3620 也換掉了,所以跟我剛買的時候比起來,幾乎是換了一整台新的阿(但還是二手的)。

最終的歸屬 OpenMediaVault

所以我又換了另一套 NAS 系統 OpenMediaVault,之前我完全沒聽過這套系統,但用過之後發現這套意外的十分全面,只能說該有的,有 ZFS 而且是用 docker compose,底層系統還是 debian linux,甚至想玩 kubernetes, kvm 都有插件可以裝,簡直完美🤩

OpenMediaVault 的安裝過程我就不贅述,實際玩過三套系統之後,最後我總結一下我對這三套系統的評價

  • TrueNAS
    • 社群廣大
    • 對 kubernetes 不熟悉的人會覺得比較難用,但目前使用 docker 的新版本 24.10 剛推出,所以可以再觀望一下
  • Unraid
    • 優點是硬碟的彈性比較高,如果硬碟買不一樣大小的可以考慮,但如果硬碟都一樣大小就沒必要
    • 缺點是慢...
    • 不需要系統碟,系統是裝在 USB 上
    • 底層是用 slackware linux
    • 需要購買 License (最便宜的 $49)
  • OpenMediaVault
    • 該有的都有,意外的好用
    • 但用的人好像比較少(至少我身邊的人沒有)

下一篇開始我就要來分享我內網的架構以及我裝了哪些應用程式。

底下是 NAS 本人的照片,有兩大神器鎮壓,一包乖乖和我去京都的電電宮帶回來的 Micro SD 御守🧘

NAS Photo