Skip to content

Raspberry Pi NAS 方案研究

最近突然在想用 Raspberry Pi 來組 NAS 的想法,所以把一些資料記錄一下。

需求

  1. RAID。基本需求,軟體 RAID 的優勢是不會被硬體綁住,以 TrueNAS ZFS 來說,在 TrueNAS 上建立的 Pool 不受限於當前的 OS 或硬體,你把該硬碟(組)拔下來接到隨便一個有裝 ZFS 的 Linux 上都可以存取檔案。硬體 RAID 的話你不能期待在 A RAID 卡上做的陣列可以在 B RAID 卡上運作並存取。
  2. Snapshot。最重要功能,這是現階段無論是防禦勒索病毒還是手誤的最低成本也是最方便的手段,而且如果要進行更進一步的離線備份或鎖定功能(WORM)也可以基於 Snapshot 之上。
  3. 2.5GbE。有的話比較好,就算是 HDD,1GbE 也會造成讀寫速度瓶頸,更別說 RAID 的速度加成,甚至是 ZFS 的 Cache(ZIL、ARC、L2ARC)。
  4. SATA 12V。有些人可能會遺漏的點,3.5 HDD 基本上都要 12V 的供電,但有些比較便宜的方案的 SATA 可能只有 5V 供電,這樣就無法接 3.5 HDD。這種問題在 USB-to-SATA 上很常見。

軟體

重點應該是 ZFS 或 Btrfs,這兩個都是有 snapshot 和 RAID 功能的檔案系統。ZFS 的話因為我現在的 NAS 是 TrueNAS CE 所以對它稍微比較熟悉,Btrfs 的話沒有實際用過。

Btrfs 比較大的缺點應該是 RAID5/6 還不夠成熟,不過我自己的話是不會用它們所以沒差。我現在的 TrueNAS 是 3 個 HDD 組 Mirror(既傳統上說的 RAID1),可以同時壞 2 顆(N-1)。Btrfs 的 RAID1 和傳統說的 RAID1 行為上比較不同,無論組成數量它都只容許單一硬碟故障,如果我要重現上述 TrueNAS 的行為要使用 RAID1c3。

由於我的 NAS 其實沒什麼特別的功能或服務要跑,嚴格說起來有 SSH 和 SMB/NFS 就差不多了,所以不一定要用 OMV 這種 OS,直接用個 Headless Linux 應該也差不多。就算真的要跑服務,再拿個獨立的 RPi 跑也可以。

雖然網路上也有其他人在 RPi 上跑 ZFS,但我可能要實驗一下是不是 Btrfs 更適合 RPi,畢竟我的資料儲存需求其實沒要求那麼硬,ZFS 可能還是有點 Overkill 了。

硬體

以下規格僅供參考

配件

Radxa Taco

基本規格參考:

要連接 Radxa CM3 或 RPi CM4,不支援 RPi CM5。根據 Jeff Geerling 提供的資訊:

參考:

Radxa Penta SATA HAT

基本規格參考:

兼容於:RPi 5、Radxa ROCK 5C/5A/4A/4B/4A+/4B+/4SE/3C/3A,透過 PCIe 連接(IPEX)。SATA controller 是 JMB585。

參考:

Waveshare PCIe TO 2-CH SATA HAT+

主板

Raspberry Pi 5

Orange Pi 5 Max

Radxa ROCK 5A

Radxa ROCK 5C (非 Lite )

方案

Radxa Taco + RPi CM4

這可能是同時需要 SATA 和 2.5GbE 下的最好方案。

Radxa Taco 可以接 RPi CM4 或 Radxa CM3,前者的 CPU 是 BCM2711 4xA72 1.5GHz 和 LPDDR4 1/2/3/8GB,後者是 RK3566 4xA55 1.8GHz 和 LPDDR4 1/2/3/8GB,兩者的 CPU 性能差異不會很大,所以我的話可能會為了穩定性和資料豐富度更傾向 RPi CM4。

比較明顯的缺點可能是沒有 USB 3.0,但是如果是要做 NAS 的話,SATA 和 2.5GbE 都已經有了,好像也不需要 USB 3.0。如果要外接硬碟做離機備份,那也可以直接接 SATA。

有直接的 RTC 電池座也很方便,不用再找接頭接。

可能的陷阱是 SATA 和 2.5GbE 都是透過 ASM1806 擴充,而且 RPi CM4 提供的應該是 PCIe 2.0x1,所以不能期望這些 SATA 和 2.5GbE 可以同時完全跑滿。

Radxa Penta + RPi 5

想要 SATA 且 2.5GbE 需求較低。

RPi 5 的 CPU 多少比 4 代的強,Radxa Penta 透過 PCIe FFC 連接並擴展 4+1 個 SATA。但是和 Radxa Taco + RPi CM4 的組合比就缺少了 2.5GbE,如果真的想要的話可能要用 USB RJ45 網卡擴充,但是 USB 2.5GbE 網卡的穩定性有待商榷。

如果目標只需要 2 個 SATA 的話可以改成 Waveshare PCIe TO 2-CH SATA HAT+ 比較便宜。

如果想要 CPU 多核心性能更好的話可以把 RPi 5 改成 Radxa ROCK 5A/C。跑分上 RK3588S 的多核是比 BCM2712 強一點點,不過單核的話還是後者強一點。

Orange Pi 5 Max

一個可能但是詭異的方案是 OPi 5 Max。

它已經板載 2.5GbE 和 M.2 M-Key PCIe3.0。如果你只需要一個 M.2 2280 SSD 的話甚至不用其它配件,但是如果需要多個 SATA 的話可能就需要從 M.2 分出來了,也就是市面上常見的 JMB585 M.2-to-SATA 轉接板,但這種搭配的穩定度如何有待商榷,而且 SATA 供電也要另外處理。或是乾脆用 USB 3.0 的硬碟外接盒。

M.2 SSD NAS

如果目標是 M.2 2280 SSD NAS 的話,比較方便且便宜的配件應該是 Waveshare 的擴充板,他們有好幾種擴充板,你可以為 RPi 5 接上 1、2 或 4 個 M.2 2280 SSA。

其他可能性

ZimaBoard 2 有 2x 2.5GbE + 2x SATA III + 1x PCIe 3.0,CPU 是 Intel N150 (x86) 4C4T 3.6GHz,規格上來說很符合需求,2 個 SATA 可能有點少但是可以透過 PCIe 擴充。8GB RAM 的話跑 TrueNAS 勉強還行,焊死的 eMMC 可能是最大的隱患,但一樣可以透過 PCIe 來解決。


基於 USB PD 供電的可程式直流電源供應器研究