正在閱讀【NAS 系列】什麼都塞進 NAS? All-in-one NAS 簡單介紹

【NAS 系列】什麼都塞進 NAS? All-in-one NAS 簡單介紹

Ivan Wong

Ivan Wong

2022-03-21

Card image

前言

如果看過 NAS 系列的第一篇文章後,大家都會對 DIY NAS 與成品 NAS 的分別有更多了解 (還沒看過的可以點擊這裡)。上回說到,對於 8-Bay 或以上的 NAS,DIY 的性價比非常不錯。除了能提供更多 HDD 位之外,DIY NAS 在性能上亦能提供更優的選擇。一般而言,NAS 不需要太強的性能,畢竟主要用於存放檔案,使用低功耗的 CPU 已經十分足夠。不過,這次我要介紹的 All-in-one NAS,定位比較不同,需要強大的性能才能滿足它的應用需求。

甚麼是 All-in-one

簡單來說,All-in-one NAS 是一種高性能的 NAS,除了執行檔案伺服器等低需求的基本應用外,它亦可以同時執行更高需求的應用。Table 1 列了一些常見的低至高需求應用:

應用
高需求VM (虛擬機)、Kubernetes、Docker、LXC Container
中需求相片人臉識別、影片轉碼、Database、Web server
低需求VPN Server、BT server、私人雲端、影片串流、Surveillance server、軟路由

Table 1: 低至高需求的 NAS 應用,應用需求愈高,代表對 NAS 的性能要求愈高

一般來說,4000 - 5000 左右的成品 NAS,基本上都能流暢運行低需求的應用。如果用戶數量不多,那麼中需求的應用能支持的。不過,去到高需求的應用,CPU 和 RAM 的要求大增,對於一般成品 NAS 而言便會十分吃力,Synology 和 QNAP 甚至只在較高級的 NAS 才提供 Virtual Machine (虛擬機) 和 Docker 的支援。如果要流暢使用 VM 的話,至少要用上 Intel Xeon D-1527 的 DS1621xs+,價錢大約是 $14000 HKD 左右。雖然這個價位對於商用絕對算不上貴,畢竟都用上 VM、Container 等高級功能。但對於個人或家庭用戶,的確是需要深思熟慮的價錢。因此,All-in-one NAS 就因而誔生了,通過自行組裝硬件,並使用 open source 系統,降低價錢。

Figure 1: 外國網友的 Homelab 配置,這個是比較少規模的。Source: https://www.seeedstudio.com/blog/2020/12/22/what-is-a-home-lab-getting-started-and-recommendations/

Figure 1: 外國網友的 Homelab 配置,這個是比較少規模的。Source: https://www.seeedstudio.com/blog/2020/12/22/what-is-a-home-lab-getting-started-and-recommendations/

Figure 2: 外國網友的專業 Homelab 配置,都已經用上了專業的伺服器機櫃。Source: https://www.seeedstudio.com/blog/2020/12/22/what-is-a-home-lab-getting-started-and-recommendations/

Figure 2: 外國網友的專業 Homelab 配置,都已經用上了專業的伺服器機櫃。Source: https://www.seeedstudio.com/blog/2020/12/22/what-is-a-home-lab-getting-started-and-recommendations/

對於伺服器有一定認識的朋友,或者會問,All-in-one NAS 和 Homelab 是不是同一種東西。事實上,我偏向認為 All-in-one NAS 是 Homelab 的一種。首先,Homelab 意旨家用伺服器,一般用於業餘軟件開發、測試及部署。Homelab 不一定提供 NAS 功能,甚至無需要連接大容量硬碟。不過,完整的 Homelab 一般會由高性能的伺服器、大容量的 NAS 以及高階的 Network switch 組成。從 Figure 1 & 2 可以看到,外國網友的 Homelab,有時不止一套伺服器或 NAS,因此有時甚至需要用上類似 Datacenter 的機架放置它們。不過,對於亞洲地區的網友們,家中未必有如此大的空間放置一套完整的 Homelab。All-in-one NAS 正正能夠以一部機器,提供類似於一套完整 Homelab 的功能,因為它同時有高性能的 CPU,大容量的 RAM,而且整合了 NAS。由於伺服器和 NAS 都在同一部機器之中,也免卻了購置高階的 Network switch 的成本。例如 Figure 3 就是我最近組裝的 All-in-one NAS,對比之下是不是小很多? 之後有機會也會講一講這部機器的硬件配置。

Figure 3: 這是我自己組的 All-in-one NAS,可以看到機箱剛好能放進一塊 MATX Motherboard,對比外國的 Homelab 的確小很多

Figure 3: 這是我自己組的 All-in-one NAS,可以看到機箱剛好能放進一塊 MATX Motherboard,對比外國的 Homelab 的確小很多

虛擬化系統

Type I 和 Type II Hypervisor 的架構對比 Source: https://www.nakivo.com/blog/hyper-v-virtualbox-one-choose-infrastructure/

Type I 和 Type II Hypervisor 的架構對比 Source: https://www.nakivo.com/blog/hyper-v-virtualbox-one-choose-infrastructure/

大部份 All-in-one NAS 的用戶,都會選擇虛擬化系統。對於 All-in-one NAS 強大的性能,如果只安裝一個普通的 NAS 系統,未免太過浪費了。執行 VM 的系統稱為 Hypervistor,有兩種,分別是 Type I 和 Type II。如 Figure 4 所示,Type I 的直接由 Hypervisor 虛擬化硬件並給予 VM 使用,減省了主系統 (Host OS) 的資源浪費和硬件的延遲。相反,在 Type II 的架構需要運行 Host OS,這部份已經浪費了 CPU 和 RAM。再者,Hypervisor 是置於 Host OS 之上,VM 對於硬件的存取和資源分配都要經過 Host OS,延遲較大。因此,不少人都認為 Type I 比 Type II 優勝。

但對於 All-in-one NAS 來說,Type II 其實並不會比 Type I 差,甚至在硬件支援上更有優勢。由於在 Type I 的 Hypervisor 需要直接存取硬件,所有的驅動 (Driver) 都要集成到 Hypervisor 之中。然而,Hypervisor 對於消費者導向或新發佈的硬件支持遠不及傳統 OS (Windows / Linux) 來得快和齊全。舉例來說,ESXi 對於 Intel 內顯的直通 (Passthrough) 支援較慢,到目前仍無法支援 11 及 12 代的 CPU。在效能上,Type II 和 Type I 一樣都支援硬件加速 (Hardware Acceleration) 技術,如 Intel VT-d 或 AMD-v,VM 的 CPU 指令不會經過 Host OS 作二進位翻譯 (Binary translation),而是直接交由 CPU 處理。只有其他資源,例如儲存裝置、網絡介面等需要經過 Host OS 處理。所以,只要 Type II 的 Host OS 所耗用的資源不大,在 All-in-one / Homelab 這種小規模的場景下與 Type I 差距很少。除此之外,Type II 亦可以令用戶對 NAS 的維護和設定變得方便,畢竟 Host OS 本身就是個 Linux / Windows,無論是要安裝什麼工具,或是通過 RDP/ SSH 進行遠端設定,都比較簡單。

總括而言,對於家用的 All-in-one NAS 來說,我還是比較偏好 Type II Hypervisor,因為硬件支援較廣,安裝和設定上也會比較簡單。不過要注意的是,基於 Windows Pro 或 Workstation 的 Type II 方案我是不建議的,因為 Windows 作為 Host OS 所耗用的資源實在太大。相較之下,基於 Linux 發行版的 Type II 在效能上十分優秀,例如基於 Debian 的 Proxmox 以及基於 Slackware Linux 的 Unraid。一般在 All-in-one / Homelab 社群中,會用到的 Type I 方案有 VMware ESXi 及 Microsoft Hyper-V。而 Type II 方案則有 Proxmox、Unraid、TrueNAS Scale 及 Windows 上的 Hyper-V。各方案互有優劣,大家可以先了解各系統的差別,從而選出合適自己的 Hypervisor。

硬件選擇

All-in-one NAS 的硬件選擇比起一般的 DIY NAS 更為講究,因為需求多了,對於硬件的性能和規格的要求都相應增加。

在性能方面,All-in-one NAS 需要較多的 CPU 核心及 RAM 容量,特別是要執行 VM 這些龐然大物。基本上多開幾部 VM,RAM 都耗盡了。如果是純命令介面 (CLI) 的 Linux VM,至少也需要 256 MB RAM。如果是有圖形介面 (GUI) 的 Linux VM,例如運行 LXDE 或 XFCE 作為 Virtual Desktop Infrasucture (VDI,即遠端桌面) 之用,那麼至少需要 512 MB - 2GB RAM 才能流暢運行了。當然,這只是粗略的估算,實際上運是要看 VM 的實際應用。除此之外,運行 Kubernetes 及 Docker Container 的 RAM 需求也不少,假設運行較輕量的 Kubernetes 發行版 K3s,根據官方數據,至少也需要 768 MB RAM 才能流暢運行一個 node 及一個 workload。因此,最好選擇有 4 條 RAM 插槽的 Motherboard,以預留空間作升級。CPU 方面,無論是 VM 還是 Container,也不會任何時間都處於高使用率,所以資源相對沒有 RAM 那麼緊張。不過,建議選擇有 Hyper Threading (超線程) 的 CPU,例如 4 核心的 CPU,就可以提供 8 個邏輯核心。

Figure 5: 以 ASUS B560M Pro 4 為例子,它配有 4 條 RAM 插槽,6 個 SATA 接口,2 個 M.2 Key M 插口。比較特別的是,除了標準的一條 PCIe 4.0 x16 和一條 PCIe 3.0 x1 外,還有一條以 PCIe 3.0 x4 速度運行的 x16 插槽,擴展能力不錯。

Figure 5: 以 ASUS B560M Pro 4 為例子,它配有 4 條 RAM 插槽,6 個 SATA 接口,2 個 M.2 Key M 插口。比較特別的是,除了標準的一條 PCIe 4.0 x16 和一條 PCIe 3.0 x1 外,還有一條以 PCIe 3.0 x4 速度運行的 x16 插槽,擴展能力不錯。

此外,擴展能力亦十分重要,特別是 PCIe 接口。一般家用 Motherboard 最多只提供 6 個 SATA 接口,如果需要接駁更多 HDD,可以通過 PCIe 接口安裝 SATA 卡、HBA 卡或 RAID 卡。PCIe 接口也可以用於安裝林林總總的擴展卡,例如 10GbE 網卡、Wi-Fi卡、M.2 卡等。因此,選擇 Motherboard 時務必留意 PCIe 接口的數量。一般的家用 MATX 板都會載有兩個 PCIe 接口,第一個一般是 x16 的顯示卡接口,第二個則可能是 x1/ x4 / x8 的接口,視乎情況。這些倍數所指的是接口的頻寬,倍數愈大,頻寬愈大;另外,PCIe 的版本也對頻寬有影響,版本愈高,頻寬愈大 (關於 PCIe 的頻寬大家可以參考 PCI Express 的條目)。舉例說,如果要在支援 PCIe 4.0 的 Motherboard 接 SATA 卡,由於 SATA III 的最高頻寬最多為 6 Gbps,所以只需要使用 x1 的接口 (1969 MB/s,約等於 15.75 Gbps) 即可,不應該浪費 16x 或 4x 的接口。如果是 ITX 版的話,有機會只提供 mini PCIe 接口。一個 mini PCIe 接口相等於 PCIe x1 的接口 (mini PCie 的擴展卡也有很多,詳情可以看這裡)。

當然,已經是 2022 年了,M.2 接口也是很重要的。目前的家用 Motherboard 一般有 1 - 2 個 M.2 Key M 接口。對於家用電腦,M.2 接口的 SSD 多用於安裝系統;而在 All-in-one NAS 中多用於檔案系統的快取,例如 ZFS 中的 ZIL 寫入快取,或是 L2ARC 讀快取。如果 NAS 的儲存陣列以 HDD 組成,使用 M.2 SSD 作快取可以為隨機讀寫加速不少。其他功能方面,如果有影片轉碼的需求,要留意 CPU 有沒有帶內顯,例如非 K 字尾的 Intel CPU 都提供 Intel UHD 630 / 730 等內顯,可給通過直通 / 虛擬化給 VM 使用。至於 AMD 的 VEGA 內顯,雖然性能很強,但目前仍不支持對 VM 直通 / 虛擬化,所以不太適合 All-in-one NAS 了。最後,功耗也是絕對需要留意的,因為 NAS 不像個人電腦,每日只開幾小時,而是長開 24 小時哦。對於功耗的討論,這又是另一個複雜的課題,有機會我會另開一篇文章探討。

總結

關於 All-in-one NAS 的簡單介紹,先到這裡吧。總括而言,All-in-one NAS 就是一部 CPU 核心和 RAM 較多的一體伺服器,通過使用 Hypervisor,在伺服器上安裝不同用途的 VM 或 Container,同時執行多種應用,節省分體 Homelab 的硬件成本和空間。如果你覺得自己現有的 NAS 開始不夠用,希望能有一部執行更多應用的伺服器,可以考慮組一台 All-in-one NAS 哦。我之後亦會介紹 All-in-one NAS 上可以用到的 VM 和 Container。

參考資料

此文章撰寫自
Ivan Wong

Ivan Wong

@spectre

IT dog 一名,最近的興趣是 Blockchain、Container 和 NAS。平時閒在家喜歡聽音樂,什麼類型都聽。