随着智能化互聯時代的來臨,家中的智能裝置越來越多:電視機、平闆、遊戲主機、電腦、手機等遍及家中各個角落,同時裝置之間共享資料的需求變的越來越強烈。比如同步、備份手機上的照片和視訊,在電視機上觀看電腦中下載下傳的影片、手機拍攝的視訊,存儲高清電影、音樂、VLOG 素材等。這時候在家中搭建一台 NAS(Network Attached Storage:網絡附屬存儲)存儲伺服器是不錯的選擇,在備份保障資料安全的同時給家庭娛樂帶來更多友善。在企業中,NAS 也有着廣泛的應用,其部署簡單,擴充友善,在檔案共享、容災備份領域發揮了重要作用。
NAS 存儲伺服器有許多專業廠商,比如群晖( Synology)、鐵威馬(TerraMaster)等,動手能力強的使用者可以 DIY 硬體開源系統自己搭建。不過這些不是今天讨論的話題,今天我們來讨論一下 NAS 常見的共享通路協定:NFS、SMB、FTP、WebDav,哪些速度快,哪些相容性好,如何選擇。
NFS
NFS(網絡檔案系統 Network File System)是一種分布式檔案系統協定,力求用戶端主機可以通路伺服器端檔案,并且其過程與通路本地存儲時一樣,它由 Sun 公司(已被 Oracle 收購)開發,于 1984 年釋出,最新版本 NFSv4.2 于 2016 年釋出。NFS 基于開放網絡運算遠端過程調用(ONC RPC)協定:一個開放、标準的 RFC 協定,任何人或組織都可以依據标準實作它。
NFS 通常使用在 Unix 作業系統上(比如 Solaris、AIX 及 HP-UX)和其他類 Unix 作業系統(例如 Linux 及 FreeBSD),同時在 macOS 和 Windows 系統也提供了 NFS 實作。不過在 Windows 系統上挂載 NFS 共享目錄時,由于 Windows 自帶的 NFS 用戶端長久以來不支援 UTF-8,會緻中文檔案和目錄顯示為亂碼。
NFS 的優點是核心直接支援,部署簡單、運作穩定,協定簡單、傳輸效率高。
NFS 的缺點是沒有加密授權等功能,僅依靠 IP 位址或主機名來決定使用者能否挂載共享目錄,對具體目錄和檔案無法進行 ACL 權限控制(NFSv4 以前)。通常的做法是通過 Kerberos 對 NFS 進行認證及加密,不過部署配置比較麻煩。
SMB / Samba
Samba 是 SMB/CIFS(Server Message Block / Common Internet File System)網絡協定的重新實作,可以在區域網路不同計算機之間進行檔案、列印機等資源共享,和 NFS 功能類似。
SMB 最早是微軟為自己需求設計的專用協定,用來實作微軟主機之間的檔案共享與列印共享,并不支援在 Linux 上運作。著名黑客、技術大牛 Andrew Tridgell 通過逆向工程,在 Linux 上實作的 SMB / CIFS 相容協定,命名為 Samba,通過該程式實作了 Windows 和 Linux 之間的檔案共享。
SMB 協定是 C/S 類型協定,客戶機通過該協定可以通路伺服器上的共享檔案系統、列印機及其他資源。通過設定“NetBIOS over TCP/IP”,Samba 不但能與區域網路絡主機分享資源,還能與全世界的電腦分享資源。
SMB 的優點之一是相容性好,在各平台獲得了廣泛支援,包括 Windows、Linux、macOS 等各系統挂載通路都很友善。另外 SMB 也是各種電視、電視盒子預設支援的協定,可以通過 SMB 遠端播放電影、音樂和圖檔。
另外 SMB 提供端到端加密、安全性高,配置選項豐富,支援 ACL 并支援多種使用者認證模式。
SMB 的缺點是傳輸效率稍低,速度不太穩定,會有波動。
FTP
FTP(File Transfer ProtocoL)是TCP/IP應用層中的一個基礎協定,通常使用 21 端口,負責将檔案從一台計算機傳輸到另計算機,并保證檔案傳輸的可靠性。FTP 協定的曆史源遠流長,第一版 FTP 協定于 1971 年發表為 RFC 114,此後經過多年的發展和完善。通常所說的 FTP 既可指 FTP 協定,也可指 FTP 應用程式。
由于 FTP 是明文傳輸安全性不高,後來又出現了 SFTP 和 FTPS 等加密傳輸。FTP 的特點之一是獨立于系統使用者組,隻要通訊端口開啟就能友善通路,是以特别适合外網共享,一些老牌共享軟體就常常通過 FTP 釋出下載下傳連結。
FTP 主要用于用戶端和伺服器之間的檔案上傳和下載下傳,并不适用于伺服器上檔案修改。因為 FTP 通常需要先擷取遠端檔案的副本,然後對副本修改,最後再将修改後的檔案副本上傳伺服器。
雖然 FTP 的簡單友善、容易部署,但 FTP 的傳輸效率低、安全性不佳,目前并不推薦使用。
WebDAV
基于 Web 的分布式編寫和版本控制(WebDAV)是超文本傳輸協定(HTTP)的擴充,有利于使用者間協同編輯和管理存儲在網際網路伺服器文檔。WebDAV 由網際網路工程任務組的工作組在 RFC 4918 中定義。許多現代作業系統為 WebDAV 提供了内置支援。
WebDAV 除了建立、删除檔案等基本功能,它還具備檔案建立者管理、檔案編輯過程中禁止其他使用者内容覆寫的加鎖功能,以及對檔案内容修改的版本控制功能。
WebDAV 為實作遠端檔案管理,向 HTTP/1.1 中追加了以下這些方法。
- PROPFIND:擷取屬性
- PROPPATCH:修改屬性
- MKCOL:建立集合
- COPY:複制資源及屬性
- MOVE:移動資源
- LOCK:資源加鎖
- UNLOCK:資源解鎖
為配合擴充的方法,狀态碼也随之擴充。
- 102 Processing:可正常處理請求, 但目前是進行中狀态
- 207 Multi-Status:存在多種狀态
- 422 Unprocessible Entity:格式正确, 内容有誤
- 423 Locked:資源已被加鎖
- 424 Failed Dependency:處理與某請求關聯的請求失敗, 是以不再維持依賴關系
- 507 Insufficient Storage:儲存空間不足
由于 WebDAV 是基于 HTTP 的,是以具有 HTTP 的所有優點,包括容易穿越防火牆、使用 HTTPS 來傳輸資料,是以在很多方面可以替代 FTP。
WebDAV 可以通過 Nginx 或 Apache 等 Web 伺服器部署。在用戶端 WebDAV 也獲得了許多軟體的支援,比如 Office 就可通過 WebDAV 編輯遠端文檔。