看完搞不好會放棄 TrueNAS 自組 NAS 的 10 個經驗(含WOL喚醒與AWS雲端備份)

近幾年來常聽到某幾間 NAS 品牌套裝硬體廠商的使用者中勒索病毒的新聞,而且就算沒用 admin 預設帳號、開了 fail2ban、MFA 之類的防護也通通都沒用,就是有一些漏洞可以繞過去,頻率高到感覺每個人家中都有好幾台 NAS 一樣。

自己以前沒買過 NAS,從這些新聞討論中發現 NAS 不只是拿來當共享硬碟而已,還有像是影音伺服器、多媒體檔案處理、各種工作協作應用程式,更細微的權限控管、網站架設、手機自動同步與備份…功能非常豐富,明明只是一台使用省電型低效能 CPU 的超小型電腦,然後上面灌了比網站伺服器還要多的功能,想一想就覺得神奇。

從去年就看到一些中國或台灣的 YouTuber 開始自組 NAS,有的標題甚至是用舊電腦之類的,讓我也動起了自組 NAS 的想法。需求很簡單:
– 硬碟會故障很正常,先用最基本 2 顆硬碟組 Raid1,稍微安心一點。
– 讓不同電腦/筆電/手機/平板之間,有一個共同存取檔案的中心化設備。
– 不會把檔案直接放在 NAS 上面作業,也不需要架站、與外網連線、自動備份、檔案傳輸一秒要 200MB 以上…之類的高級功能。
– 用閒置的舊電腦零件來組,能不花錢就不花錢。
– 有要用到才開機,不會全年運轉。

因為沒有要連外網,所以本文不會研究從外面要連進來 NAS 要怎麼設定。

用 PC 零件/舊電腦組 NAS 有什麼好處?

  1. NAS 這個中心化管理的東西壞掉,就讓資料和檔案無法存取,工作流程幾乎中斷,非常麻煩。用一般 PC 零件組 NAS,壞掉了就買一般電腦零件來換就好。品牌套裝 NAS 雖然骨子裡幾乎也是電腦(CPU+主機板+RAM+電源供應器等零件),但卻有點像蘋果電腦或是一些工業的機器,少部分零組件是無法擴充的、焊死的,或是特規,從軟體到硬體有少部分跟「平常的電腦」有不同之處,不過電或無法開機通常就只能等原廠處理,或是花幾萬塊再買台新的。
  2. 不用擔心買一台幾萬塊的品牌套裝 NAS,用沒幾年就壞掉,或是過保就壞掉變廢鐵,還要看網路上一些像是 「S 牌 NAS 焊電阻」的影片自己 DIY 修理? 自組 NAS 零件壞掉就自己去買回來換就好。
  3. 一般規格好一點的 2 BAY 品牌套裝 NAS 通常上萬元起跳,願意等特價的話,華芸 ASUSTOR 還有一些 5000 元以下的 2BAY 機型(價格不含硬碟)。但 NAS 一台上萬塊很合理,畢竟這是一台設計用來全年運轉的機器,零組件都經過專業測試跟認證,但又要在效能和省電之間取得平衡,有些 NAS 機型還設計就是要讓多人同時操作的,跟高階伺服器一樣,但是 NAS 價格不用幾百萬,也不用每年簽金額好幾位數的維護費用。

自組 NAS 的缺點,就是碰到的所有問題都需要自己排除,

看到右上角跳通知說什麼 unrecoverable error, Failed to check for alert SMBLegacyProtocol 要怎麼辦? 自己去 Google。
開機進不去系統怎麼辦? 自己想辦法。
記憶體不知道怎麼插拔? 開機版子有過電但是沒畫面? 自己想辦法。
不知道怎麼把資料夾權限設成自己想要的? 自己去官方論壇發問
網卡裝上去認不到怎麼辦? 自己想辦法。
軟體有重大更新怎麼沒第一時間通知? 自己去官網看,或是自己關注。
不小心點了郵件附件,電腦跟NAS一起中毒怎麼辦? 去買比特幣付贖金吧

自組 NAS 的好處在於自由度,不在於各種附加功能的完整性和穩定性。
因為自組 NAS 和本身的專業技能電腦組裝、網站佈署有點相關,小問題還能自己處理。如果中樂透頭獎或是家裡挖到石油的話,當然直接買現成的 NAS,有問題通通丟給客服或請專人處理啊,自己當個快樂的使用者就好,還組裝什麼?

要灌哪個系統?

上網找自組 NAS,會找到不少專為 NAS 用途設計的電腦作業系統,像 OpenMediaVault(OMV)、Rockstor、Unraid,那我用的是滿常聽到的 TrueNAS,這軟體非常有 SEO 行銷思維,舊版名稱就叫 FreeNAS,軟體本身是免費的,也沒有限制說幾個使用者以上要付費、不可商業使用之類的,但有個 ENTERPRISE 版本可以得到專人支援服務。

上網找 TrueNAS 的教學,也會跑出非常多 FreeNAS 的教學,兩者設定的大方向基本上差不多,只是 FreeNAS 是比較早期的版本,教學畫面截圖就是那種漸層立體按鈕風格,TrueNAS 就是黑色介面、平面化圖示,新版的一些細部設定也比舊版簡單許多。
注意! 這裡我講的簡單,是說使用者可能不用懂這麼多計算機和網管知識,也能勉強弄出一個可以網路共享的儲存裝置,不代表易用性跟 UI 比那些品牌套裝 NAS 設計得還好。這些免費 NAS 系統都是需要額外安裝作業系統,不是直接滑鼠點兩下就可以用的應用程式

FreeNAS 最早是從 2005 起一些外國工程師的個人專案,後來轉由 iXsystem 公司進行維護,目前免費版有 TrueNAS SCALE 和 TrueNAS Core 兩種,起初看到一個教學說 TrueNAS SCALE 是 2020 年開始更換作業系統重新開發的版本,比較不穩定、不完善,聽起來很可怕,所以我一開始先灌 TrueNAS Core。

灌完之後繼續看那個 YouTube 教學系列,過沒幾個月又出了一系列 TrueNAS SCALE 教學片,說 TrueNAS SCALE 看起來已經比較完善了,唉呀 ! 早知道應該整個系列看完再來安裝,不少網路教學都是以剪片、大檔傳輸、連外網設定為主,配備也非常高級,每個 TrueNAS 教學都各自著重不同的點,只能挑一些自己會用到的來看,

剛好 TrueNAS Core 用了之後有一些不知道怎麼解決的問題,就再灌成 TrueNAS SCALE 版本。

TrueNAS 是一個作業系統,但是開機之後只會有一個類似 DOS 畫面的黑色命令行輸入畫面,有人連線時或進行某些操作時,畫面上會跑出一些資訊。其餘大部分都要用其他同一個內網的電腦,在瀏覽器上輸入 Web UI 的網址,或是用 SSH Shell 連進去控制。

TrueNAS SCALE 22.02.3 灌好之後,在 shell 輸入 cat /proc/version 指令查看,顯示的是:

Linux version 5.10.131+truenas (root@tnsbuilds01.tn.ixsystems.net) (gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2)

TrueNAS SCALE 的 Web UI 主選單跟 Core 或舊版的不太一樣,所以照一些 N 年前的文章,常常會找不到別人講的東西在哪設定。

TrueNAS 的系統有繁體中文語系,但覺得應該是機器翻譯的,像設定憑證時碰到一個必填欄位叫「狀態」,想說這邊應該跟一般網站伺服器設定的東西差不多,啥時多了這個欄位? 切到英文版來看,原來是 State,如果是在 Plesk 或 cPanel 裡面是翻成州…。不過這問題不大,有些東西不管寫中文還是英文都看不懂。

值得稱讚的是,就算系統版本大改,本來的資料 pool 也可直接 import,不用重建,Storage 的 import 點了之後會自動認出之前建立的 pool 名稱,點了就掛載上去了。以後假如碰到系統碟 SSD 掛掉,應該不用怕資料遺失才是,但是額外安裝的應用程式跟系統設定可能就比較麻煩…

USB安裝碟跟系統碟要多大?

要灌 TrueNAS 首先要先做一個 USB 開機安裝碟,目前版本的檔案其實非常小,ISO 檔約 1.5GB,我是翻出一個舊隨身碟來用而已。

因為是舊電腦裝省錢 NAS,翻出一塊 101 年買的 64GB 的 SSD 來安裝 TrueNAS 的作業系統,也完全裝得下,安裝時會提示要不要分一塊 16GB 的暫存區域,所以可能還是不要拿太小或剛好的。
官網的 SCALE Hardware Guide – Minimum Hardware Requirements 是列說 2-Core Intel 64-Bit or AMD x86_64 processor、8 GB Memory、16 GB SSD boot device。

如果有時候可能要拿電腦來上網查資料,所以另外有一顆 SSD 灌普通的作業系統,開機時按 F8 選另一顆硬碟開機,就可以變成一般可以上網的電腦,如果又要上網又要用 NAS,那就先用 iPad 上網吧。

馬上遇到第一個奇怪的問題,BIOS 明明選第一順位 USB 開機,卻一直進不去,BIOS 設定有認出隨身碟,所以應該不是插槽或隨身碟壞掉,主機板手冊有說開機 USB 只能用 FAT32,檢查過也沒問題。因為一開始是依照網路教學,用 imageusb 把 iso 檔變成開機磁碟,後來改用 Rufus 來做開機磁碟,然後開機選有 UFEI USB 的那個,就能正常進去安裝了。

第二個問題是想要把 TrueNAS Core 的 USB 安裝隨身碟格式化,然後重新做成 TrueNAS SCALE 安裝碟。
但不管是先從 Windows 磁碟管理刪除分區或格式化,或是 Rufus 直接硬上都會出錯,顯示什麼有防寫保護之類的好幾種奇怪訊息。

最後是用 Win+R 執行 DiskPart,然後依照自己的條件修改,逐筆輸入指令(x 是要看 list disk 指令執行後,裡面顯示的硬碟或磁區編號)

list disk
select disk x
list partition
delete partition x

最後才把消失的隨身碟變回一般可以用的狀態。

對於 RAID 的美好想像破滅

在玩 NAS 前,對於 Raid 有各種美好的想像,實際使用後發現看起來沒有這麼簡單。

RAID1 (Mirror)的硬碟拿出來接到其他系統,可以讀到資料嗎?
實際使用發現硬碟進到 NAS 裡面之後,經過一些資料集、壓縮率之類的設定,用 Windows 的磁碟管理去看會變成下圖這樣,連想用 CrystalDisk 掃硬碟都不知道怎麼做。

本來有一顆資料裝滿的硬碟,可以直接塞進 NAS,再找一顆相同容量的空硬碟直接組 RAID 嗎?
本來只有兩顆硬碟跑 RAID1,可以直接再插一顆變 RAID5,加二顆變 RAID6?
儲存集區設定初始化的時候會把硬碟格式化,變成 TrueNAS 的 ZFS 檔案系統,資料會不見,所以這種事應該不用想了。

還有關於硬碟掛掉時,RAID1 就要花很長的時間跑 resilver 程序,如果是 RAID5 或 RAID6 就更久了,下面會再提到硬碟消失這回事。

自組 NAS 很耗電嗎?

很多東西都是循序漸進累積的,自組 NAS 跟電腦安裝、網站佈署有不少知識是相通的,而部落格之前的電量監測器文章中,我已經有設備可以測量電器的耗電量,本次用 Intel i3-4160 CPU+一顆 64GB SSD 當系統碟+2顆 4TB機械硬碟,實測複製檔案時耗電約40幾W,一天用 12 小時計,以往年電費階層計算,一個月電費約 30~50 元之間。


反倒是記憶體吃得比想像中還多

當然如果硬碟越多顆,理論上就會越耗電,SSD 也不一定比機械硬碟省電;每一顆 CPU 的 TDP 或是依個人 NAS 用途不同,功耗也不一樣,電費可能不只是幾十塊。
如果要省電和效能最佳化的話,花一萬多塊去收一台二手的 Mac M1 Mini,耗電量肯定更低,然後再花幾千塊找個有 Thunderbolt 4 的多槽硬碟櫃,只是但是 RAM 跟開機 SSD 是焊死的,也不曉得 Apple Silcon 的硬體跟 TrueNAS 系統合不合? 如果還要多花好幾萬,不如乾脆買現成的 NAS 就好了。

免費 NAS 的權限設定有比較簡單嗎?

市售的品牌套裝 NAS 對於資料夾操作權限(瀏覽、寫入、修改),還有使用者帳號權限設定都有點複雜,但不會用還可以問客服。TrueNAS 在這部分設定的複雜度當然也是不惶多讓。

TrueNAS 的 Web GUI 的系統設定邏輯大致是這樣:
– 建立資料池(data pool),把實體硬碟加進去,再到資料池內建立資料集(dataset)。
– 除了自己可以建立的群組(group)和帳號(user),還有 linux 系統的各種預設群組與帳號,開通某些服務時會再自動建立相關的帳號。
– 在 Service 裡面啟用或停用某通訊協定的共享服務。
– 在 Shares 設定某通訊協定可以把 dataset 中的哪個資料夾共享出去,要叫什麼名稱…之類的,

上述每一層都有權限相關的設定。只要沒設定好或是覆蓋到,變成自己也看不到,或是 B 共享方式好不容易可以用了,但本來的 A 共享方式卻壞了,或是鎖起來的通通打開,變成 Always Open~

權限設定基本又有兩大方式,一個是基本的 Permission Editor,如下圖,其實就是簡易的 Read=4, Write=2, Execute=1,湊起來是 chmod 777 775 的那套,變成視覺化 UI…

另一個是進階的 ACL(Access Control List)

如果要幫 NAS 做很複雜的權限設定,哪個帳號是 readonly,哪個帳號不能瀏覽某資料夾,建議可以考慮關掉這篇文章,去買品牌套裝 NAS,然後把問題通通丟給客服了。

空的 NAS 裡面沒什麼檔案,設定錯誤要刪掉重建都很簡單,一點心理負擔都沒有。
如果等資料已經累積了一段時間,要是想到改個資料集權限或 SMB 權限,可能導致資料夾連不上去,檔案打不開,管理員還有調整權限設定的勇氣嗎?

檔案怎樣傳輸最方便?

在組 NAS 之前有試過其他檔案共享方式,但各有不少缺點:
– 用 USB 外接硬碟,可能會碰到 macOS 無法寫入 NTFS 檔案系統格式的硬碟,某系統認不得某某硬碟格式之類的問題,硬碟拿來拿去也很麻煩。
– 用 AirDrop 或 LANDrop 之類的直接無線傳輸,AirDrop 不能對 PC 傳檔,LANDrop 還要另外裝,傳大檔案時可能要傳很久。
– 例如手機照片傳到電腦,電腦的 PDF 傳到平板,裝置本身可以連 WiFi,為了傳一些檔案還要插 USB 線、插記憶卡,難免有點麻煩。
– 在路由器後面的 USB 孔接外接硬碟,然後用 FTP 存取,這種做法的功能完整性完全仰賴路由器,有些便宜的路由器甚至連 USB 孔都沒有,難以達成如同 NAS 細部的控制。
– 使用雲端硬碟或網盤之類的,大容量要額外花錢購買,家用網路上傳頻寬很小,檔案要傳很久。還有可能碰到線上服務倒閉,或是檔案違反平台政策被鎖起來。

現在使用 NAS 為中心,就輕鬆解決了這種硬碟檔案系統格式的難題,任何系統都可以輕鬆的上傳、下載檔案。

TrueNAS 也內建許多常見的傳輸方式,基本常聽到的 WebDAV、FTP、SMB 都有,但用起來各有各的難題,以下分享使用心得

Samba(SMB)

這是用來讓 UNIX 系列的作業系統與微軟 Windows 作業系統的SMB/CIFS(Server Message Block/Common Internet File System)網路協定做連結的方式,比較早期開始用 Windows 的可能聽過「網路上的芳鄰」,後來的 Windows 系統好像都改叫「網路」了。

只要在 TrueNAS 的 Shares 裡面把 SMB 服務打開 Managing SMB Shares,指定好資料夾,非常簡易就可以讓其他裝置連上。:
– 在 Windows 檔案總管網址列輸入 \192.168….. ,就可以用檔案總管瀏覽或存取檔案,(要先在 Service 跟 Share 裡面設定好 SMB 和要分享的資料夾)。
– 在 Windows 檔案總管側邊攔的「本機」按右鍵,選擇連線網路磁碟機,把路徑掛載成一個磁碟,以後就可以方便點進去。設備和網路環境很棒的,就可以像一些 NAS 文章秀傳輸速度一秒幾百 MB 的擷圖。
– 用 iPad/iOS 內建的「檔案」app,側邊欄選擇「連結伺服器」,輸入 smb://192.168…. 和帳密,就可以存取檔案。
– 在 macOS 也可以在 Finder 選擇「前往」>「連接伺服器⋯」,從清單直接點,或是一樣輸入smb://192.168…. 和帳密,就可以存取檔案。
– 在 Samsung 手機,可以用內建的 Samsung My Files app,在網路儲存空間中設定 SMB 連線,用 IP +帳密 + 連接埠445 完成設定,然後用複製操作,把檔案傳到 NAS 的資料夾內。

但這邊會遇到的問題是…

TrueNAS Scale 的作業系統是 Debian(Linux的一個 distro),傳檔案時一樣會踩到一些 Windows 跟 Linux 之間不同檔名規則的雷。

權限或不知道哪邊設定錯誤,各種無法登入或連不上

iPad 常常不知道為啥連不上,完全沒有顯示有用的錯誤訊息,而且照片資料夾沒縮圖啊

FTP/SFTP

FTP 算是一個經典的連線方式,各大系統都有 FTP 軟體,iPad/iOS 內建的「檔案」app,側邊欄選擇「連結伺服器」,輸入 192.168….:21 和帳密,一樣可以存取檔案。

這邊會遇到的問題,一樣是沒有縮圖,行動裝置上想找一些比較好用的 FTP APP,有的一次只能傳 10 個檔案,有的 SFTP 要付費購買。

SFTP 的設定方式又更多了,先略過不提。

Nextcloud 應用程式

Nextcloud 是一個免費開放原始碼的伺服器軟體+客戶端APP,讓人可以在自己的機器上架一個類似 Dropbox 的線上硬碟服務。
Nextcloud 除了有堪用的網頁版介面,行動裝置上 iOS 和 Android 都有免費 APP,對於一些檔案權限控制的需求,也可以在 Nextcloud 的應用商店裡面安裝 Files access control 之類的應用程式,

在 TrueNAS Scale 的 Apps 裡面就能找到這軟體。滑鼠點一點預設安裝基本上就能用了,系統會用 Docker 環境自動把資料庫跟軟體都裝好,不用像前幾年的舊版本這麼麻煩。在 YouTube 找近期的 truenas+nextcloud 影片,也只會看到一堆老外就一直按 Next 就裝好了,然後這樣就有上萬觀看? 擁有英語霸權真是方便。

但如果想要做一些進階的設定,就有機會碰到各種錯誤訊息…

測試更改一些安裝設定,不知道為什麼有這個經由不可信任的域名存取的錯誤訊息,裝好之後打都打不開,幸好系統提示很明確,一下就能解決:
1.打開 TrueNAS 裡面的 shell,或是先開通 TrueNAS 的 SSH,然後用自己慣用的命令列工具登入
2.下指令 cd /mnt/pool名稱/nextcloud安裝的資料夾,然後用 ls -a 找到 config_sample.php 檔案在哪邊
3.我是不會用 VIM,習慣用 nano config_sample.php 打開範例檔案看裡面是怎麼設定的,再到 config.php 加上一行 Nextcloud 的 192.168 子網 IP
4.存檔退出,把錯誤訊息解決掉,可以正常進去了。

幸虧我剛好知道怎麼找檔案跟編輯檔案,一般人真的知道要怎麼處理嗎?

Nextcloud 出錯,伺服器紀錄檔要從哪邊看呢?
從 TrueNAS 的 APPs,找到 NextCloud,點右下角的 log 就可以查看詳細錯誤訊息。

因為傳到 Nextcloud 的檔案,預設會藏在 /mnt/pool名稱/dataset名稱1/data/cloud/files 裡面,跟 SMB 共享檔案的地方是完全分開的,
所以想說調整 Host Path for Nextcloud Data Volume,看能不能把本來的資料集直接設成 Nextcloud 的檔案目錄。
或是把那個目錄設定成用 SMB 也能直接進去瀏覽,但都碰壁,日後有機會再研究…

但至少 Nextcloud 方便的解決了一些權限設定流程、讓照片資料夾有縮圖,跨系統跨裝置間更方便傳輸資料。
順便分享一個上傳大量檔案使用小技巧,iOS 上裝了 Nextcloud APP 之後,不要打開 Nextcloud 然後選擇上傳檔案,這樣要一張一張選很累,可以先在相簿或檔案 APP 用全選之類的一次選好,然後再用分享>Nextcloud 會比較快一點。

WOL 網路喚醒 NAS

一開始的需求是有要用到才開機,不會全年運轉。TrueNAS 的網頁後台(webUI)上面直接有關機或重開機的按鈕,至於要遠端開機,則牽涉網卡和 Wake on LAN 的設定。

1.首先到主機板的 BIOS 設定找到 Wake on LAN 的相關設定,把它打開(設成 enabled)。
2.在 TrueNAS SCALE 的 network 的 interface 裡面找到網卡名稱(NIC),可能是叫 eth0,enp什麼的。
3.接著要檢查網卡的 WOL 功能有沒有啟用,到 system settings>shell,或是用 SSH 連上去,輸入指令 sudo ethtool 網卡名稱,檢查 Supports Wake-on 後面那串字裡面有 g,Wake-on 是 g,Link detected 是 yes,就代表可以用。

4.如果沒有,執行 ethtool -s 網卡名稱 wol g 指令之後,重開機再檢查看看。
5.用 ifconfig,應該會顯示好幾組資料。

[網卡名稱]:
flags=XXXX mtu XXX
inet [NAS的IP地址] netmask [子網路遮罩地址] broadcast [子網廣播地址]
inet6 XXX prefixlen XX scopeid XXX
ether [MAC地址] txqueuelen XXX (Ethernet)

6.到手機應用程式商店搜尋 wol,找一個評價看起來比較高的,把第 5 步顯示的那些資訊填上,就可以在同一個網路環境下,用手機 APP 輕鬆把 NAS 開機了。

尷尬的是有時候不知道為啥就是不開機,檢查設定也沒跑掉。

第一次硬碟降級&離線就上手

我是用兩顆硬碟 Mirror(Raid1),弄好之後沒多久,就發現儲存區顯示 DEGRADED,系統通知也跳 unrecoverable error,舊電腦零件組 NAS,連硬碟也不是全新的,但運氣有這麼差,這麼快就碰到問題喔?

後來發現應該是那顆電源供應器的老症頭,把硬碟換插到另外一個 SATA 電源接頭上,重開機就好了。

之後重灌成 TrueNas SCALE 版沒多久,又碰到儲存區顯示 DEGRADED,而且連硬碟都變成 unknown disk,還要自己用刪去法來推算是哪顆硬碟有問題。

更謎的是 disk 名稱前面有一個區域,滑鼠移過會變成可以點的狀態游標圖案,但畫面上什麼圖示都沒有,換成其他佈景主題也沒顯示出來,應該是 bug。

因為正在複製資料,所以就先讓單顆硬碟孤軍奮戰,等複製完再關機檢查,這次應該是舊機殼蓋起來壓到線導致接觸不良,重開機又好了。
重開機之後,因為之前複製資料時只有一顆硬碟有上線作業,另一顆複製到一半就變 unknown disk,所以系統又再自動處理,其實跑滿久的,至少超過一小時。

這邊發現所謂「舊電腦組 NAS 」有一個很大的誤區,
舊電腦的定義百百種,本來還有一套更舊的 LGA775 平台,但是常常開機開不起來,記憶體插拔幾下又會正常,這種不穩定的舊電腦每次開機時都得折騰一下,還能撐著用來文書上網用途,但要跑 NAS 顯然是不可能的。

再舉幾個 NAS 用途的電腦,跟一般電腦不太一樣的地方,如果有以下情況:
– 系統不穩,開機困難,甚至會自己關機的
– CPU 太耗電的
– 電源供應器的 SATA 電源接頭太少的
– 機殼不適合放多顆硬碟的(可能會機殼共振,或是根本沒位置)
– 主機板沒有這麼多 SATA 插槽的
– 機殼沒有熱插拔設計的
– 熱插拔硬碟就會震動到其他硬碟的
– 機殼散熱很差的
– 硬碟沒有獨立運作狀態燈的
有以上情況的舊電腦,拿來自組 NAS 主機會用得很痛苦,像我這次是用還有那種光碟機槽位的傳統機殼(光碟機當然也還在),整個硬體端的改進空間還很大。

更新: 用一陣子開機後遇到硬碟錯誤

Pool XXXX state is ONLINE: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected.

還會發信通知,登入網頁介面還會看到 NAS 自己在 scrub,但這種訊息內文有講跟沒講一樣,還是得要自己排查。

先在 SSH 或 Shell 用zpool status -x 每顆硬碟的 READ WRITE CKSUM 都是 0,狀態都是 online,但唯獨有其中一顆硬碟的 READ 出現數字。
再用 smartctl -a /dev/sda(sda 要換成自己的硬碟代號,去 pool 設定裡面看),可以看到硬碟的 SMART 數據,因為我不是用全新硬碟來組,所以數字都不太好看,但兩顆都還是 SMART overall-health self-assessment test result: PASSED,所以就先繼續用。

如果用 One or more devices has experienced an unrecoverable error 這個訊息上 google 查詢,會查到非常多文章,起手式都是上面兩招,然後使用者要像機房的 infra 工程師一樣,依照訊息去分析檢查 log,再決定要怎麼處置。
看到這邊,如果只想買一台機器無腦爽爽用,有問題直接 call 客服的,有沒有想放棄了? 可以出門右轉去買品牌 NAS 囉!

更新:自組 NAS 1年半後更換故障硬碟

舊電腦組 NAS,想不到還用得滿久的,某一次開機時蜂鳴器又沒有叫,幸好先把其中一條記憶體拔掉就好了。
NAS 成功開機之後,發現硬碟運轉時會持續間歇性發出卡住的聲音,而且系統提示

Pool state is DEGRADED: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state.
The following devices are not healthy:
Disk ST4000DM000 is UNAVAIL

我就先關機,把壞掉的硬碟拆下來。
去買了一顆新硬碟裝上去,重新開機後自然沒有什麼自動開始重建陣列的事情發生,連要怎麼把新硬碟加到原本的 pool 都找不到,直接在 Disks 裡面可以幫硬碟檢查 SMART、加註釋,但沒辦法直接把硬碟從什麼下拉選單直接指定到某個 pool 裡面。

可能會找到像是 【司波图】TrueNAS新手视频教学(1.5)——阵列恢复,EMAIL提醒设置,這影片在這種情況可能沒用,影片中沒有真的換硬碟,只是做空操隨便帶一下,而且操作情境是以一換一的操作方式,直接在舊硬碟的選單裡面選擇 Replace。
官方也有Replacing Disks的教學,但會發現介面長得有點不太一樣,而且也是以一換一,因為我的硬碟是突然壞掉,不是那種硬碟明明跑得好好的,只是系統跑出一些警告的情況。我是屬於壞掉的硬碟直接消失或手工拔掉的情況。

最後還是摸索成功讓 pool 回到 online 狀態了,分享一下給跟我一樣的半路出家 NAS DIY 玩家。
目前試出來成功的操作方式如下:

1.從左邊選單 Storage 點進去,再到 Pool 箭頭的左邊有一個小齒輪圖示,這不是裝飾。就是要點那個才能進入 pool status,點左邊一大塊或其他地方只會讓 pool 的清單展開和收合而已。
2.在 pool status 選擇 extend。
3.選擇剛剛裝上去,還沒歸屬到任何 pool 的新硬碟。
4.等待系統處理…
5.可以看到新硬碟被放進去 pool,從1顆硬碟變2顆硬碟。
6.此時畫面右上角會看到一個東西一直在轉,點了之後會看到目前正在進行的 task,可以看到 Resilvering status。

我的是 2 顆 4TB 組 Mirror,Resilver 跑了大約 20小時,實際時間依每個人的資料量和系統狀況不同。最好祈禱,本來那顆僅存的舊硬碟不要在這時候也掛掉,不然就完全找不到資料了。

Resilver 跑完之後,要在選單中把那顆故障後直接拔掉的硬碟從 Pool 中 Detach。
最後就能從首頁 Dashboard 看到 Total Disks :2,Pool Status:ONLINE 的綠色打勾圖示,一切恢復正常。

異地備份到 AWS S3

自組 NAS,成功把資料放進去只是第一集,成功讓其他裝置讀到檔案只是第二集,後面還有很長的路要走。像主要用的電腦主機有裝不斷電保護系統,有時候碰到下大雷雨打雷時都會嗶嗶叫,雖然 NAS 不用全天運作,但有機會應該也會幫 NAS 裝一台。

理論上為了保險起見,應該還要再幫 NAS 做備份才對,不管是異地備份還是冷備份,TrueNAS SCALE 本身也提供了非常多方式,但看到有一個功能吸引我,就是可以把 NAS 備份到亞馬遜雲端 AWS 上面去。

官方教學 Configuring S3 跟一些網路上的教學 TrueNAS S3 Backup 就寫得滿完整。
其實主要就 4 大步驟:
1.到 AWS 開一組 IAM 金鑰,因為後續設定步驟中要填 AccessKey 和 SecretKey,然後選擇放在哪個 S3 儲存體裡面。
2.到 System settings > Service 裡面把 S3 服務打開,設成開機自動啟動,進行一些服務設定。
3.到 Credentials > Backup Credentials 選擇要備份到哪邊去,其實不只是 AWS S3,其他各大公有雲、網路硬碟、Dropbox、Mega 之類的都有支援。

4.在 Data Protection > Cloud Sync Tasks 設定備份計畫,看是每天還是多久備一次,備份哪個資料夾、選擇要用 S3 的哪一個儲存體種類(Storage class)之類的,系統預設是用 AWS S3 裡面費用最貴的標準型,各種物件儲存類型可參考 Amazon S3 儲存類別,反正有一種最便宜的,但是檔案要從線上回來本地,需要先等待好幾個小時的擷取時間。
備份類型還有三種可以選:

  1. COPY: Files from the source are copied to the destination. If files with the same names are present on the destination, they are overwritten.
  2. SYNC: Files on the destination are changed to match those on the source. If a file does not exist on the source, it is also deleted from the destination.
  3. MOVE: After files are copied from the source to the destination, they are deleted from the source. Files with the same names on the destination are overwritten.

滑鼠點一點,輕鬆就將測試資料夾成功備份到 AWS S3 上面去。

其他系統設定

TrueNAS SCALE 內建有 VM 和 Docker 的功能,但我想直接透過程式存取檔案,可能直接灌在系統會比較方便? TrueNAS SCALE 既然是 Linux(Debian),看了一下 Install the .NET SDK or the .NET Runtime on Debian,Debian 10 可以跑 .NET 6,感覺是沒什麼問題。
如果安裝時碰到不給執行 sudo,要到 Web GUI 那邊,看有沒有把使用者帳號的 Permit Sudo 勾起來。
如果碰到 sudo: apt-get: command not found 跟 zsh: permission denied: apt-get,可以參考 TrueNAS-SCALE开启apt权限chmod +x /usr/bin/apt* 把權限打開。

TrueNAS 系統本身跟 NextCloud 都可以設定 SMTP,讓系統發送通知郵件給管理員,這個設定非常基本,就不再多說。

查詢可疑流量

本文幾乎只著重基本操作,而且沒有要通外網,還沒探討到資安的部分,但還是害怕有人猜到 WiFI 密碼連進來玩,或是內網的其他設備在作怪,到時候變殭屍 NAS。

從 Nextcloud 的網頁介面登入,可以看到當下一些使用情況
– 從右上角的設定>安全性,在「裝置和工作階段」可以看到目前哪些用 APP 或網頁瀏覽器連上 NextCloud 的,還有近期活動時間。
– 設定>系統,在「活動中的使用者」可以看到目前有幾個人在用
– 設定>紀錄,可以看登入失敗的紀錄

可以用 SSH 登入機器,或是在 Web GUI 的 shell 視窗輸入 smbstatussmbstatus -S 查看有哪些 IP 正在連 SMB。

Web GUI 網頁本身提供基本的 Reporting 圖表,其中有一項網路流量 In 跟 Out 的,如果 NAS 都沒人在用但流量卻很高,就要注意。

但訝異的是 TrueNAS SCALE 的系統功能好像看不到基本的登入紀錄、連線紀錄,像是幾點幾分有人登入/登入失敗 Web GUI、目前幾個人登入 Web GUI 之類的都找不到,把 /var/log 裡面的檔案翻過一遍,用 tail -F 顯示出後面幾行也都沒找到,目前是先把 Web GUI 先掛 2FA 比較安心一點。

展望

以後有空再挑戰 NAS 的更多功能,像是:
– 另外開一台連外網的
– 架 Home Assistant 服務,嘗試讓分散在各個 APP 的智慧家電可以統一控制。
– 做檔案驗證,以免資料看起來都在,結果都變壞檔打不開
– 設定 SyncThing 服務,讓某些電腦的資料夾自動備份到 NAS

近期熱門 Hot Posts