與NFS和iSCSI是虛擬化所使用的兩大IP存儲協議。而與很多引起熱烈爭論的IT話題一樣,NFS或iSCSI,哪個更好?
要在任何兩種流行的競爭技術之間進行選擇,關注其整體更優的人并不多,更多的人關注的是它們能否最好地解決面前的挑戰。這兩種協議根據應用場合的不同,各自都存在優缺點。但是存儲的未來發展將會成為做出最終選擇的重要依據。
文件 vs 塊
我之前曾經說過,NFS和iSCSI兩者無論就實施狀況還是歷史發展來看,都不存在很大的差異。NFS是由Sun公司在上世紀80年代初開發的,當時是作為通用的文件共享協議,允許網絡用戶到網絡上的一臺文件服務器上去讀寫文件。iSCSI出現的較晚,最初是在2000年初,作為光纖通道(FC)的一種IP替代方案出現的,它和FC類似,都是將塊級SCSI命令進行封裝,然后在網絡上發送。
兩者間的主要差別在于文件系統的實施和管理上。NFS使用文件級別的實施,服務器或存儲陣列托管整個文件系統,客戶到文件系統上讀寫文件。而iSCSI和FC則使用數據塊,存儲陣列向客戶提供數據塊集合,賦予原始存儲數據一定的格式化,而不去管文件系統究竟如何使用。
雖然這種差異產生了諸多的后果,但最重要的后果可能在于,在諸如iSCSI和FC的塊級協議中,存儲陣列一般不會去管它存儲的內容是什么。它只知道分配塊集合給需要訪問的客戶。相反地,在諸如NFS的文件級協議中,存儲陣列對存儲在其中的應用數據具有充分的可視性。
從實用角度來看,對存儲在NFS系統上數據的這種陣列端感知能力可以讓存儲陣列更容易跟蹤實際的存儲使用情況——例如在精簡配置場合,它可以拍攝快照,或者對單個虛擬機做備份,甚至可以在陣列端對主存儲數據進行重復數據刪除。
不過最近在VMware的VAAI(vSphere API for Array Integration)中實現的SCSI T10增強功能為塊存儲也增加了類似的感知功能,通過支持UNMAP SCSI原始,可對空閑塊增加虛擬化堆棧能力(因而允許陣列回收這些塊)和陣列端副本卸載能力,可以加速虛擬機克隆等任務。從某種意義上說,一些智能化的hypervisor與陣列的集成也使得使用NFS的文件級系統可以移植到采用SCSI協議的塊級系統中去。
但我不能因此而肯定文件與塊的競爭是否已經結束。盡管增加了這些SCSI原始可允許基于SCSI存儲協議的系統執行某些類似NFS的功能,但在其他情形下,文件級協議依然擁有某些領先之處——延伸集群就是一個很好的例子。在此類可同步復制、地理分布不同的存儲系統中,存儲層具備將每個虛擬機視作單獨存儲資源的能力——可以單獨對其進行刪除和故障處理——這一點極其重要,也是使用塊存儲協議的系統所無法實現的。
在網絡上
從網絡角度看,NFS和iSCSI也存在明顯的差異。采用NFS,額外所需的吞吐量和冗余主要是通過網絡鏈路匯聚來獲得,還需小心注意去平衡陣列端多個IP地址別名上的存儲連接,以確保負載均衡能夠生效。而另一方面,iSCSI內置了多路徑能力,可提供更多的高級負載均衡算法,在多條服務器和陣列端存儲路徑上智能化地平衡存儲流量。
在這兩種情形下,10G以太網的使用可以減輕為提高存儲性能而采用多路徑的必要性,理由是絕大多數組織的吞吐量要接近1Gbps都是不可想象的(至少今天還是如此)。不過在這方面,iSCSI要略勝NFS一籌,尤其當匯聚多個1Gbps以太網鏈路時。
從網絡安全的角度看,iSCSI也有一定優勢。除了NFS和iSCSI都支持的源IP安全限制以外,iSCSI還內置了對雙向挑戰握手認證協議(CHAP)的支持,該協議可防止未經認證的服務器連接存儲資源,允許服務器去驗證他們準備連接的存儲陣列是否經過了認證。
關于現代NFS實施的一個常見誤區是,認為其實施是基于UDP/IP的。這一誤解通常來自NFS v2完全基于UDP這一事實。盡管UDP是一個相對低延遲的IP傳輸協議,但它缺少安全和交付機制,在跟蹤目前的TCP/IP網絡時難以保障狀態連接所帶來的好處。而從NFS v3開始,TCP成了它所支持的一個傳輸協議。這也是目前大多數NFS存儲陣列和hypervisor,如VMware vSphere所采用的辦法,把NFS放在了和基于TCP/IP的iSCSI同等的位置上。
未來前景
今天來看,iSCSI似乎更具贏家風范,至少從網絡角度看是這樣,因為它可提供更好的多路徑支持,更高程度的端到端安全。不過NFS仍然保有相當的優勢,尤其是在陣列端的適當使用,因為它能讓陣列擁有對虛擬化堆棧的可視性,可智能化地參與加速、快照和重復刪除等存儲流程。正是這些陣列端的智能優勢,再結合上多路徑與安全提升,有可能在NFS 4.1發布時有望實現NFS客戶端,最終刺激對NFS需求的長期規模增長。
不要讓自己輕易相信哪一種協議會徹底擊敗另一種。事實上兩者間存在差異是一件好事,因為當你在尋找一種可以滿足特定需求的IP解決方案時就有了兩次機會。請務必記?。哼@些協議發展史的最后一章尚未寫完。