自建 TrueNAS

由於現有 NAS 空間逐漸不夠,加上相機 RAW 檔越來越多,終於要採購新的 NAS 了。由於對 ZFS 以及其快照功能很有興趣,但又懶得從頭開始處理,也沒有特別想做虛擬化,所以選擇了 TrueNAS Scale 這個以 Debian Linux 為基礎的開源 NAS 作業系統。

配備:

  • 電源供應器:海韻 Focus PX-550
  • 處理器:AMD Ryzen 5 PRO 5650 G
    (APU 要 Pro 才有支援 ECC unbuffered 記憶體)
  • 主機板:華碩 PRIME B550M-A WIFI II
  • 記憶體:金士頓 32GB 3200MHz DDR4 ECC CL22 DIMM 2R*8 x 2
  • 硬碟:Seagate Exos X18 18TB x 4
    (OEM 拆機品,好便宜,意者洽)
  • 開機碟:美光 Micron Crucial BX500 240GB x 2
  • SATA 擴充卡:AUMLMASIG 全通碩 PCIe to 6xSATA3
    (這個有 PCI-E Gen3 x1)

機殼是最難找的(選擇困難)。本來屬意銀欣 CS382,但有點貴,好像也不需要那麼多硬碟插槽。最後在淘寶上買了御夫座,有 6 個插槽也支援 M-ATX 主機板,不必再買沒什麼選擇的 ITX 主機板,白金電源供應器也比較便宜。

TrueNAS Scale 安裝非常簡單,和一般 Linux 文字安裝沒什麼不同。不過在這張主機板上開進 kernel 之後會沒有 HDMI 畫面輸出,在 grub2 中修改啟動參數可以解決:

nomodeset amd_pstate.shared_mem=1 amd_pstate=passive acpi_enforce_resources=lax 

後面多設定了 AMD P-state scaling driver,在 kernel 6.1 之後引入,啟動之後耗電可以降低,性能也較好。這張主機板好像 ACPI 有衝突lm-sensors 沒辦法正常讀取及調整 PWM 風扇,透過 acpi_enforce_resources=lax 略過之後可以強迫忽略衝突。

修改完 P-state 之後,可以使用 cpupower 指令確認是否生效:

# cpupower frequency-info
analyzing CPU 0:
  driver: amd-pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 20.0 us
  hardware limits: 400 MHz - 4.46 GHz
  available cpufreq governors: performance schedutil
...
  current CPU frequency: 2.35 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.46 GHz.
    AMD PSTATE Nominal Performance: 145. Nominal Frequency: 3.90 GHz.
    AMD PSTATE Lowest Non-linear Performance: 88. Lowest Non-linear Frequency: 2.37 GHz.
    AMD PSTATE Lowest Performance: 15. Lowest Frequency: 400 MHz.

在 TrueNAS 裡面要調整開機參數,必須透過 CLI 修改,否則照一般的 Linux 修改邏輯,重開之後會被復原:

$ midclt call system.advanced.update '{"kernel_extra_options": "nomodeset amd_pstate.shared_mem=1 amd_pstate=passive acpi_enforce_resources=lax "}'

在設定定時快照任務之後,目前運作良好且穩定,滿足家用需求,也保留了未來升級 10 Gbps 網路的擴充性。

自建 TrueNAS