文件VS.數據塊
NFS當時作為一種通用的文件共享協議,讓網絡客戶端可以通過網絡從服務器讀取文件,或將文件寫入到服務器。而iSCSI作為光纖通道之外的一種基於IP的替代協議與光纖通道一樣,iSCSI對數據塊級的SCSI命令進行封裝,然後通過網絡發送。
兩者的區別主要在於文件系統在哪裡加以實現和管理。對於像NFS這樣的文件級協議而言,服務器或存儲陣列托管文件系統,客戶端讀取文件,並將文件寫入到該文件系統中。而對iSCSI和光纖通道這樣的數據塊級協議而言,存儲陣列為客戶端提供數據塊集合,然後客戶端根據它決定所使用的任何一種文件系統,對該原始存儲數據進行格式化。
雖然這種區別具有許多影響,但最重要的影響可能在於,在像iSCSI和光纖通道這些數據塊級協議中,存儲陣列通常並不明白自己在存儲什麼內容,它只知道自己分配了數據塊集合,哪個或哪些iSCSI客戶端可能訪問它們。反之,在像NFS這些基於文件的協議中,存儲陣列完全瞭解存儲在其上面的應用數據,無論這是一般的文件共享數據,還是組成虛擬機集合的文件。
從實際的角度來看,由於存儲陣列端瞭解存儲在基於NFS的部署環境中的數據,因而存儲陣列更容易跟蹤實際的存儲使用情況,在自動精簡配置場合下,就能夠拍攝快照或備份單個虛擬機,甚至可以在陣列端對主存儲數據進行重複數據刪除。
網絡上各異
從網絡的角度來看,NFS和iSCSI也大不一樣。如果使用NFS,額外的吞吐量和冗余性主要通過兩種方法來實現,一個是基於網絡的鏈路匯聚,另一個是格外注意在多個陣列端的IP地址別名上均衡存儲連接,確保負載均衡卓有成效。另一方面,iSCSI擁有內置的多路徑功能,如果與支持該功能的廠商的技術配合使用,可以提供更高級的負載均衡算法,從而在多條服務器和陣列端存儲路徑上智能化地均衡存儲流量。在這兩種情況下,使用萬兆以太網可以減輕出於存儲性能的原因而採用多路徑的重要性,因為對絕大多數企業來說,接近千兆的吞吐量都是完全不可想像的,至少今天是這樣。不過,iSCSI在這方面仍比NFS更有優勢,尤其是在匯聚多條千兆以太網鏈路時。從網絡安全的角度看,iSCSI也具有優勢。除了NFS和iSCSI都支持的基於源IP的安全限制外,iSCSI還內置了對雙向的質詢握手驗證協議(CHAP)的支持,該協議可以防止未經授權的服務器連接至存儲資源,並讓服務器可以驗證它們所連接的存儲陣列的真實性。
關於現代NFS實現機制的一個常見誤解是,誤以為它們是基於UDP/IP的。這種誤解往往源自NFS版本2完全基於UDP這個事實,少數幾種定制的實現除外。雖然UDP是一種延遲比較低的IP傳輸協議,但是它缺少TCP/IP具有的狀態連接跟蹤功能所提供的安全性和傳輸有保障等優點。從NFS版本3開始,TCP成了一種得到支持的傳輸協議。這也是目前大多數基於NFS的存儲陣列和虛擬機管理程序(如VMware vSphere)採用的傳輸協議,使NFS與基於TCP/IP的iSCSI不相上下。