NAS簡介及軟硬體方案分析
什麼是 NAS
NAS(Network Attached Storage:網路附屬儲存)按字面簡單說就是連線在網路上,具備資料儲存功能的裝置,因此也稱為“網路儲存器”。
這是百度百科對 NAS 的定義。按照個人理解,NAS 誕生有如下原因和作用:
-
專業的人做專業的事 ,專業的裝置(硬體)承載專有的業務。
當今社會工作崗位被精細化分工,軟體工程上微服務概念也如火如荼,這些概念誕生的背後機理是相似的。回到 NAS,它將儲存業務從主伺服器剝離,軟體上實現了儲存和主業務的鬆耦合,硬體上實現了專有硬體裝置儲存。這樣做的好處顯而易見:
- 主伺服器崩潰不會導致儲存資料丟失。
- 獨立的儲存硬體方便進行資料備份,配套軟體能對儲存業務進行專門優化。
-
個人資料儲存方案多了一種選擇。
截至 2020 年 11 月,國內免費公有云只剩百度一家,其他諸如堅果雲,115 等都轉向收費市場。海外,谷歌宣佈 2021 年 6 月終止無限照片免費儲存,三星宣佈 2021 年 8 月底關閉雲相簿同步功能,並刪除相簿資料。
免費的才是最貴的
個人是贊同雲服務轉向收費模式的,前提是服務的穩定性,隱私性。動輒刪除使用者資料,關停伺服器的行為一直是懸在使用者頭上的達克莫里斯之劍。既然都接受收費模式了,為何不選擇自建雲呢?NAS 為我們提供了一種新的資料儲存方案,本質上跟多年前隨身帶個行動硬碟進行備份沒有區別。
個人使用 NAS 的好處:
- 隨時備份手機照片:免去 iCloud 等各種昂貴的雲端儲存服務。
- 家庭影音中心:手機上裝個媒體播放器,通過 samba,ftp,dlna 等方式播放 NAS 上的電影。
- 錄影儲存:部分 NAS 支援錄影儲存功能,可以將家庭攝像機的錄影儲存到 NAS 上,進行備份和回放。
- bt/pt 下載機[1]
- 其他資料中心:例如我個人就將 NAS 當作筆記資料的儲存中心。
NAS 軟硬體方案對比
軟硬體一體化方案
所謂軟硬體一體化,即是 NAS 廠家銷售硬體 + 軟體一整套 NAS 解決方案。市場上常見的 NAS 解決方案廠家有群暉,威聯通,鐵威馬等。
- 優點:使用者上手門檻較低,有廠家技術支援和成熟的軟體生態。
- 缺點:價格昂貴,例如群暉最低配的兩盤位 NAS 裸機[2]價格也要 2000 +。
通用硬體 + NAS 作業系統
Intel NUC 迷你主機,J1900 工控機,Gen10 伺服器
,有折騰過軟路由,HTPC 的朋友肯定對這些硬體耳熟能詳。從硬體角度看,NAS 也是臺獨立迷你主機,只要符合一定效能要求的裝置都能作為 NAS 主機。
淘汰的膝上型電腦,樹莓派,路由器,桌上型電腦,從技術上講這些硬體作為 NAS 主機都行得通,但各有各的侷限。個人認為 NAS 主機必須具備如下硬體條件:
- 低功耗:功耗控制在 15W 以下(不算硬碟功耗)。
- 24h 全天候執行:個人不贊同用到 NAS 再遠端喚醒的方式(WOL),一來不穩定,二來使用者體驗糟糕。
- 穩定:這是 NAS 最核心的功能訴求。
- 低噪音:有獨立機架和弱電間的土豪可忽略這一條。
- 至少兩個 SATA 口:最少接兩塊硬碟,一塊儲存,一塊備份。實在沒條件的可用 USB3.0 + 易驅線 擴充套件硬碟。
- 至少一個千兆網口:區域網資料傳輸速率至少保證千兆,有條件可上萬兆。
- 建議使用 x86 硬體,兼顧效能和軟體相容性。
說完硬體再講講軟體。NAS 作業系統是針對 NAS 業務功能做過定製裁剪的系統,使用者可以開箱即用。下面列出一些常用的 NAS 作業系統,個人沒有試用過也不做任何評價。
- 黑群暉 。
- FreeNAS 。
- OpenMediaVault 。
- RockStor 。
方案優缺點
- 優點:硬體自由度很高,使用者根據需求可以攢出超高性價比的裝置。軟體上也可以選擇自己心儀的 NAS 作業系統,不必被 NAS 廠家捆綁。
- 缺點:使用者上手門檻較高,需要具備一定的軟硬體專業知識。自建的 NAS 軟硬體穩定性是個很大問題,出問題後沒有廠家的專業技術支援。
通用硬體 + 通用作業系統
在前一種方案的硬體基礎上,直接使用 Ubuntu、CentOS 等通用作業系統作為 NAS 作業系統。
開篇提到過,NAS 是業務分離的產物。這裡卻又提到了 all in one 的需求,其實並不矛盾。
- 業務分離只是軟體上的分離,鬆耦。資金不富裕的情況下,硬體上 all in one 對家用來說價效比很高。
- 通過 docker 等軟體技術解決 all in one 的部分劣勢[5]。
小結
- 有自建 NAS 需求,且資金充裕不願意折騰的使用者,建議購買軟硬體一體化的 NAS 解決方案。隨著更多資本進入 NAS 市場,NAS 價格也會更親民。
- 不滿足 NAS 廠家提供的功能,想發揮閒置硬體餘熱,不想花太多時間維護軟體功能的使用者,可以選擇通用硬體 + NAS 作業系統的方案。
- 具備軟硬體專業知識,或想通過自建 NAS 學習軟硬體知識,喜歡折騰,想實現 all in one 的使用者,可以選擇通用硬體 + 通用作業系統的方案。
我的 NAS 軟硬體方案
我的硬體是一臺 5200U 的工控機:
- CPU:Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz,TDP 15W 。
- 記憶體:8GB DDR3L 1600。
- 儲存介面:1 x msata,1 x SATA3.0,2 x USB3.0。
- 網口:4 個 I211AT 千兆網絡卡。
工控機是兩年前買來折騰軟路由的,一直閒置吃灰[6],拿來當 NAS 主機綽綽有餘,但毫無價效比可言。
軟體方案上,為了最大發揮硬體效能和定製化 all in one 需求,選擇的是 Ubuntu + docker 方案。
- seafile:開源私有企業網盤,雲端儲存解決方案。
- chevereto:開源圖床解決方案。
- aria2:開源下載器,支援 HTTP/HTTPS、FTP、SFTP、BitTorrent、Metalink 協議。
- nginx-proxy:著名的反向代理軟體,支援 80/443 埠複用,分發二級域名請求給不同 docker 容器。
為什麼不用 ESXi 等虛擬機器方案
- 5200U 只有 2 個核心(4執行緒),頂配支援 8G 記憶體,多開虛擬機器比較吃力,降低使用者體驗。
- 使用 docker 也能實現各業務執行環境隔離目的。
為什麼使用 Ubuntu 而不是 CentOS,FreeNAS
- 宿主機選擇 Ubuntu 純粹是個人喜好,完全可以換成 CentOS,Debian,Archlinux 等其他 Linux 發行版。
- 不選擇 FreeNAS 等專用 NAS 作業系統則是為了最大程度的軟體自由度,實現 all in one 。
為什麼選擇 seafile 而不是 nextcloud
- seafile 技術棧是 c + python;nextcloud 是 php 。作為嵌入式開發者,自然更傾向於 seafile 。
- 檔案同步效能和穩定性:seafile 支援差分同步,雖然犧牲了傳統的檔案系統目錄結構,但有 SeaDriver,Fuse 等補救措施。nextcloud 使用標準檔案系統儲存資料,但網友反饋小檔案多了後 performance 極差,推測是 PHP 的鍋。
- 擴充套件需求:個人網盤的核心訴求是檔案同步穩定性,資料儲存安全性,而不是多人協作等邊角功能,nextcloud 外掛系統對我來說有點雞肋。
順帶吐槽下:nextcloud 外掛中心載入速度極慢,使用者體驗很差,主要原因是外掛中心伺服器位於國外。
為什麼使用 nginx-proxy
- 不必記憶容器埠號:docker 容器基於 web 管理,部署 nginx-proxy 反代,可以複用 NAS 主機 80/443 埠,通過二級域名訪問不同 docker 容器。
為什麼要使用 chevereto
- 問題等價於:什麼是圖床 + 自建圖床(chevereto)有什麼好處?
- 個人當前的筆記方案是 seafile + typora + chevereto 。
chevereto 用於解決圖片儲存問題:即使調整筆記目錄結構,也不會導致筆記中的圖片引用失效[7]。
為什麼不用 imgurl
- 首次嘗試的圖床軟體是 imgurl,但其 docker 版本無法使用,才切換成 chevereto 。
總結
自建 NAS 有幾個目的:
- 讓閒置硬體發揮餘熱。
- DIY 過程中學習完善前後端軟體知識體系。
本文是 NAS 系列文章的開篇,後面將陸續補充:
- seafile 個人網盤自建過程及注意事項。
- chevereto 個人圖床自建過程及注意事項。
- aria2 下載機部署方案。
- nginx-proxy 反向代理及 HTTPS 證書申請方法。
- 資料備份方案分析和 UPS 必要性分析。