仓库源文站点原文


layout: post title: 暢網先鋒版i3-N305 自組5bay全固態NAS 開箱與安裝紀錄 categories: [home_lab]

description: 換換病發作,順便來玩PCI直通

簡介

上一次買工控機已經是2021年,在京東花了699人民幣買了一台J1900回來當路由器。買回來之後安裝OpenWRT也跑得蠻順暢的,不曾有過當機的狀況。但俗話說需求會自己長出來,自從開始折騰NAS之後,發現了一些缺點:

  1. 封閉式系統在硬體或軟體損毀時,要想救資料的難度比較高,通常是要再買同品牌的機器,或是去借機器。
  2. arm架構的docker image有時候官方沒有build,要自己build或找社群build的版本。
  3. 備份設計有缺陷,硬碟都在同一台NAS上,應該至少有一份在其他地方。
  4. 網路安全設計的不夠嚴謹,對外服務跟家用網路在同一個LAN上,拿到一台機器就可以再攻擊其他機器。

基於這些毛病開始說服自己治療換換病。基本的構想是把對外服務都架在DMZ網段上,用DMZ和家用網路隔離。可以用cloudflare tunnel的服務擺在同一台實體主機(backend server)。需要開port forwarding的服務擺在同一台實體主機(cdn server),實體主機內部用vm+docker做進一步的限制。

backend server預期是做all ssd+RAID5。跑jellyfin、kavita等服務。

cdn server預期是以HDD為主,不做RAID(秉持著資料噴掉就算了的原則),可以的話會放1-2片SSD做快取加速。跑transmission和任何檔案分享服務。

研究了好幾種方案:

  1. argon eon pi nas Pi 4 Model B,走USB3連接硬碟。最多2x3.5方案+2x2.5方案。主要還是太貴了,成本大約6000台幣。擔心效能太差放棄。
  2. SATA HAT方案 在Pi版上面蓋一個SATA擴充版,可以連接4-5顆SATA。但機殼的部分就要自己想辦法。整體成本估計要5000台幣。
  3. QNAS mini用N100開發板的6x2.5吋方案。主要麻煩的地方是機殼,3D列印代工加上要買一些額外的線材回來DIY。另外如果用PLA列印的話貌似沒有很耐熱。主板4000+機殼等DIY材料成本大約6000台幣。
  4. ODROID H3Intel N5105的開發板。原廠的機殼看起來是壓克力板材要自己組裝,有2x2.5吋或2x3.5吋的樣式。如果用m.2轉SATA擴充版的話就要自己處理機殼了。主板成本5000+機殼500(壓克力)-1500(3D列印)。
  5. 自組NAS機殼(迎廣MS04、寶藏盒、半人馬座、御夫座、喬思伯 N2)。共通特點是很好看、台灣都沒賣、由於重量問題運費比較貴。加上ITX主板整機成本大約10000-12000台幣。
  6. N100工控機 加上轉接版可以插5條m.2 SSD。成本不到5000台幣。

到這邊我也開始考慮用USB3外接陣列盒的方式,不但有獨立供電可以更加穩定,選擇也比較多。4bay的陣列盒大約3000元新台幣。

  1. DeskMini J4205:成本大約4500台幣,但這價格我都可以買到N100了...
  2. 國內的迷你主機:最便宜是MSI CUBI的N100,定價4999台幣。
  3. 天钡发布 R1 迷你主机,搭载英特尔N100 內建兩個3.5吋、一個m.2可以做快取、有USB3可以再外接陣列盒,成本不到5000台幣,就決定是它了。

參考了下列文章,最後我決定買暢網N100先鋒版當backend server。而cdn server買天鋇R1試試,留待下期開箱。

開箱篇

大部分網路上看到都是N100的開箱,但淘寶店N305也到貨了,想說要買就一次攻頂,直接選擇了N305準系統,沒想到竟然和N100有點差異。

從淘寶購買直郵送過來,大概五天。本體+轉接版將近1900人民幣、運費94.5人民幣,總計成本將近一萬台幣(準系統不含RAM+SSD)。

配件盒只裝了一個USB外接風扇。外盒裝本體,長這樣:

裡面的配件有兩條SATA線、變壓器、一堆螺絲,電源線是台灣適用的:

SATA供電同樣取自主機板,而且是特規的,只能用他附的這種線來連接。

如果要裝SATA的話,就要裸露一顆2.5吋在外面,暫時先不裝...

隨便買了五條1T的貨來上機用,每條1111元,目前的2T-4T以性價比來說沒有特別划算,還是等資料有那麼多再上2T。

因為PCIE通道不夠,這台nvme最多只能跑在gen 3x1,也就是將近1GB/s,所以效能不用買太好。

SD卡拿來裝OS開機用,這樣也可以讓ssd就單純是資料,有需要搬家的時候比較方便。

記憶體一般人應該插8/16G就夠了,但我有插好插滿強迫症所以買32G。

背面IO跟N100版一樣

但是正面IO變多了!原本N100版是沒有USB3.0介面的。

這樣就多了接10G網路卡或外接硬碟陣列盒的擴充性。

MicroSD卡就一樣是2.0的速度,這在後續裝機就需要一點耐心了。

主機板也跟N100有點不一樣,而且還沒有說明書,只能自己猜用途。另外有一個SATA插槽,這部分貌似在N100是沒有的。WiFi網路卡的位置已經變成轉接版,可以插一條m.2 PCIE SSD (gen3 x4)。

裝好之後疊疊樂,把轉接版鎖回去。

最後把一轉四的轉接版裝回去。廠家除了螺絲還附了四個絕緣墊片。

安裝篇

架構選擇

試了幾個系統都不滿意:

最後還是選pve,然後在VM裡面架設服務。

另外選擇pve的原因也跟下一節的問題有關。

莫名其妙觸發關機

這台機器硬體不知道有什麼bug,會偶而觸發關機。看log是收到了關機按鍵的指令。大致如下:

-- Boot c4d8e459c3fb4448836ff2b8ce8db210 --
Nov 04 14:35:49 pve-n305 systemd[1]: Starting systemd-logind.service - User Login Management...
Nov 04 14:35:49 pve-n305 systemd-logind[847]: New seat seat0.
Nov 04 14:35:49 pve-n305 systemd-logind[847]: Watching system buttons on /dev/input/event2 (Power Button)
Nov 04 14:35:49 pve-n305 systemd-logind[847]: Watching system buttons on /dev/input/event1 (Power Button)
Nov 04 14:35:49 pve-n305 systemd-logind[847]: Watching system buttons on /dev/input/event0 (Sleep Button)
Nov 04 14:35:49 pve-n305 systemd[1]: Started systemd-logind.service - User Login Management.
Nov 04 14:36:49 pve-n305 systemd-logind[847]: New session 1 of user root.
Nov 04 14:36:52 pve-n305 systemd-logind[847]: Session 1 logged out. Waiting for processes to exit.
Nov 04 14:36:52 pve-n305 systemd-logind[847]: Removed session 1.
Nov 04 14:37:07 pve-n305 systemd-logind[847]: New session 3 of user root.
Nov 04 14:39:32 pve-n305 systemd-logind[847]: Session 3 logged out. Waiting for processes to exit.
Nov 04 14:39:32 pve-n305 systemd-logind[847]: Removed session 3.
Nov 04 15:24:57 pve-n305 systemd-logind[847]: New session 6 of user root.
Nov 04 15:24:58 pve-n305 systemd-logind[847]: Session 6 logged out. Waiting for processes to exit.
Nov 04 15:24:58 pve-n305 systemd-logind[847]: Removed session 6.
Nov 04 17:16:01 pve-n305 systemd-logind[847]: Power key pressed short.
Nov 04 17:16:01 pve-n305 systemd-logind[847]: Powering off...
Nov 04 17:16:01 pve-n305 systemd-logind[847]: System is powering down.
Nov 04 17:16:01 pve-n305 systemd-logind[847]: Power key pressed short.
Nov 04 17:16:01 pve-n305 systemd-logind[847]: Power key pressed short.
Nov 04 17:16:01 pve-n305 systemd[1]: Stopping systemd-logind.service - User Login Management...
Nov 04 17:16:01 pve-n305 systemd[1]: systemd-logind.service: Deactivated successfully.
Nov 04 17:16:01 pve-n305 systemd[1]: Stopped systemd-logind.service - User Login Management.
-- Boot 1a0d773d5e9c4e37bf11d78d13801435 --

誰沒事會一秒按三次關機鍵...,不管裝什麼系統都會遇到,只是pve比較方便查log。workaround的解法是從作業系統把它忽略。

修改 /etc/systemd/logind.conf

把這兩行註解拿掉,然後改成以下的值

HandlePowerKey=ignore
HandlePowerKeyLongPress=poweroff

最後執行 systemctl restart systemd-logind

內顯sr-iov+直通

正常情況下如果把內顯直通給VM使用,等於把內顯控制權交出去,主機的畫面就看不到了,因此我們要用sr-iov讓內顯可以生出多個虛擬內顯,再搭配直通把虛擬內顯傳給vm使用,vm內部就可以使用內顯做硬解。

按照這邊的教學進行。我實測kernel 6.2編譯目前會失敗,因此退版到6.1。

apt update
apt search pve-kernel # 檢查有沒有6.1的版本號
apt install pve-kernel-6.1
proxmox-boot-tool kernel list
proxmox-boot-tool kernel pin 6.1.10-1-pve # 按照剛才list出來的6.1版本

重新啟動以後就可以執行一般的dkms編譯流程

虛擬機dkms

ubuntu的版本好像沒有設定這兩條,debian 11.7的kernel 6.5我看是有,所以可以跳過kernel重新編譯的步驟。

CONFIG_INTEL_MEI_PXP=m
CONFIG_DRM_I915_PXP=y

使用gre查看

grep I915_PXP /boot/config-6.5.0-3-amd64

都一樣的話可以直接走dkms編譯流程。但原本教學裡面會同時有stable和testing的源,我要把/etc/apt/source.list.d/stable.list移除才能正常執行,不然會出現很多版本衝突錯誤。

nvme SSD 直通

做完上面的內顯sr-iov + 直通以後,這邊應該不用再重新做一次,但如果只想設定nvme直通的話以下是步驟:

修改 /etc/default/grub

新增intel_iommu=on iommu=pt

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

執行 `update-grub


修改 `/etc/modules

新增

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

最後NAS vm的device應該如下,是選擇PCI Device而不是Hard Disk。這樣NAS才能看到是SMART資訊。

如果不確定要選哪條PCI的話,先執行lspci看看在哪條通道上。