本文摘自:http://tech.watchstor.com/storage-network-138184.htm
與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同等的位置上。
未來前景