NFS vs iSCSI – 您應該選擇哪種協議來存儲 VMware VM 文件?當您需要配置共享存儲以存儲必須在 ESXi 主機之間遷移的虛擬機器(VM),以使用集群功能,並且沒有免費插槽可用於將物理磁盤連接到服務器時,通常會出現這個問題。
在大型數據中心部署 VMware vSphere 的組織更喜歡使用光纖通道(FC)或光纖通道以太網(FCoE),這是昂貴的。然而,對於用於 VMware vSphere 基礎架構的中小型數據中心來說,NFS 和 iSCSI 更具吸引力,因為使用這些共享協議配置文件共享所需的硬件更經濟實惠。本博文將比較 NFS 和 iSCSI,重點是在 VMware vSphere 虛擬基礎架構中使用它們。
什麼是 NFS?
Network File System(NFS)是一種網絡協議,允許您與網絡中的其他計算機共享存儲在服務器的磁盤或磁盤數組上的文件。NFS 是由 SUN Microsystems 開發的,第一個版本於 1984 年發佈。截至撰寫本文時,NFS 的最新實現版本是 4.1。版本 4.2 正在開發中,尚未被用於生產。
每個新版本的 NFS 都添加了新功能和改進,包括對虛擬化存儲有用的功能。NFS v4.1 提供了一個機制,允許多個用戶共享相同的文件並確保數據一致性(並行訪問)。支持多線程操作。
NFS 是在開放系統互連模型(OSI)的應用層操作的協議。客戶端通過向 NFS 服務器發送遠程過程調用(RPC)請求來訪問文件,以便對 NFS 服務器上的文件和目錄進行操作。
RPC 請求被傳輸到在表示層上工作的 XDR 協議(外部數據表示),它是在平台之間進行數據抽象的標準。XDR 描述了統一且規範的數據表示形式,不依賴於計算系統的架構。當客戶端傳輸數據時,RPC 客戶端將本地數據轉換為規範形式,服務器執行相反的操作。
一旦數據統一完成,客戶端上的 RPC 服務確保了遠程過程的請求及其在服務器上的執行(提供會話層的功能)。在這個階段,NFS 特定層的解釋完成了。接下來,數據被封裝到標準的 TCP 或 UDP 數據單元中,並傳輸到 OSI 模型的底層。
OSI 層 | 協議 |
應用 | NFS |
表示 | XDR |
會話 | RPC |
傳輸 | TCP |
網絡 | IP |
數據鏈路 | Ethernet |
物理 | – |
NFS 分享資料在文件層級進行。具有以太網界面和 RJ-45 端口的標準網絡適配器可用於實現 NFS 共享存儲。
最古老的 NFS 版本通過 IP 網絡使用 UDP,而更新的版本(NFS v2 和 v3)可以使用 TCP 和 UDP。 NFS 4.0 和 4.1 使用 TCP over IPv4 作為標準。 NFS v4 可通過防火牆和通過互聯網工作。
VMware vSphere ESXi 6.0 和更高版本的 ESXi 支持 NFS 3.0 和 NFS 4.1。 ESXi 包含一個內置的 NFS 客戶端,可通過 TCP/IP 連接到 NFS 服務器。用於通過 NFS 版本 3.0 和 4.1 連接的兩個不同的 NFS 客戶端。您可以在創建新的 NFS 數據存儲時選擇使用哪個 NFS 版本。VMware 在使用 NFS v.4.1 時不支持以下功能:
- 存儲 DRS
- 存儲 I/O 控制
- 站點恢復管理器
使用 NFS 數據存儲在存儲虛擬機模板和 ISO 映像以安裝虛擬機上的操作系統時非常方便。
什麼是 iSCSI?
Internet Small Computer Interface(iSCSI)是一種網絡協議,確保網絡中的對象(發起者和目標)進行數據共享。 iSCSI 發起者配置在客戶端,而 iSCSI 目標配置在服務器端。
iSCSI 發起者可以是基於軟體和硬體的。硬體型的可以幫助卸載客戶機上的中央處理器(CPU 或處理器)並需要安裝硬體主機總線適配器(HBA)。硬體 iSCSI HBA 是具有乙太網接口的網路接口控制器(NIC)。在這個 iSCSI 對 NFS 的比較中,我考慮使用基於軟體的 iSCSI 發起者。iSCSI 於 2003 年推出,並在 RFC 3720 中描述。
iSCSI 是會談層協定(在 OSI 模型的第 5 層工作),作用於 TCP/IP 堆疊之上。 數據在塊級別上共享,與 NFS 不同但類似於 FC。這是 iSCSI 對 NFS 比較中的一個重要觀點。SCSI 命令被封裝在 TCP/IP 數據單元中,並通過使用標準乙太網路傳輸。因此,一台計算機可以通過使用網路將 SCSI 命令發送到位於另一台計算機上的存儲塊設備。
層 | 描述 |
應用 | 文件系統,數據庫,等等。 |
SCSI | SCSI數據,SCSI命令,SCSI狀態 |
iSCSI | iSCSI協議服務,iSCSI合格名稱(IQN),Internet存儲名稱服務(iSNS),CHAP身份驗證,等等。 |
TCP | 一種具有錯誤控制機制的協議(通常在TCP/IP堆棧中運行) |
IP | 用於網絡通信和路由的協議 |
乙太網 | 交換機,電纜,端口(連接器),協議 |
註: 有一個有趣的事實是關於iSCSI如何用於VMware虛擬機恢復。當您在NAKIVO備份與復原中使用即時VM恢復,例如,直接從備份在ESXi主機上運行VM時,VM將在所選ESXi主機上創建,並且通過使用iSCSI協議將虛擬磁盤掛載到VM作為虛擬兼容模式中的RDM磁盤。
VMware NFS vs iSCSI – 關鍵區別
NFS和iSCSI都可以在使用銅線部署的1千兆位和10千兆位以太網網絡(1GbE和10GbE)中工作。更高的網絡速度更好。閱讀更多有關網絡拓撲的信息。在VMware vSphere中使用共享數據存儲VM文件時,NFS和iSCSI都可以用於VM實時遷移、負載平衡和數據存儲之間的VM遷移。這兩種共享協議都由於在TCP/IP網絡上的多層數據封裝機制而產生了顯著的開銷。
NFS在大多數供應商的NAS設備上都得到支持,例如Synology和QNAP。然而,現在選擇支持iSCSI的NAS並不困難。
讓我們更詳細地比較一下VMware NFS和iSCSI。
負載平衡
當一條網絡路徑失效或過載時,多路徑提供了在服務器和存儲之間進行負載平衡的能力,如果存在多條路徑。
NFS 4.1支持多路徑,如果服務器上有會話幹線(但沒有客戶端ID幹線)。因此,您可以從多個IP地址訪問單個NFS卷。如果使用NFS v3,請使用DNS輪詢進行網絡負載平衡。
在VMware vSphere中,iSCSI多路徑工作在VMkernel網絡適配器的級別。對於vSphere中的iSCSI負載平衡,您可以使用端口綁定。
緩存
在使用NFS時,檔案系統具有檔案系統快取,位於NFS伺服器上,客戶端機器應該一致地在NFS伺服器上檢查元數據。NFS v3和v4支持異步數據寫入,但元數據更新是同步的。
在使用iSCSI時,客戶端設備在以區塊級別訪問共享存儲後創建檔案系統(例如,對於VMware vSphere,ESXi主機在iSCSI LUN上創建VMFS檔案系統)。檔案系統為iSCSI共享存儲定義了緩存策略,檔案系統快取位於客戶端。例如,如果您使用iSCSI作為共享協議,並使用ext3作為檔案系統,則數據和元數據更新具有完整的寫回快取。
最現代的檔案系統使用異步元數據更新,並且用於數據恢復的基於日誌的記錄。一般來說,異步數據更新(用於iSCSI)在數據和元數據持久性方面比NFS中使用的同步更新不夠可靠。
可靠性
NFS。可以使用NIC隊伍來防止網絡故障。如果一個NIC失效,另一個NIC可以繼續工作。
iSCSI。VMware可插拔式存儲架構(PSA)在與iSCSI數組一起工作時使用存儲數組類型插件進行故障切換實現。iSCSI綁定需要將多個iSCSI目標映射到不同子網上的iSCSI啟動器。
由於iSCSI和NFS都使用TCP進行封裝,因此在網絡層上檢查數據傳遞。
如果您在iSCSI存儲上存儲了VM的薄配置虛擬磁盤,則VMFS可能會變得脆弱。停電可能導致卷無法恢復。在這種情況下,NFS數據存儲的行為稍微更可靠一些。如果定期執行VMware備份,可以減輕這些問題。
安全性
一般情況下,iSCSI流量不加密,但這並不意味著您無法保護iSCSI流量。可以使用名稱和密碼進行iSCSI共享的身份驗證。挑戰-握手驗證協議(CHAP)允許服務器和客戶端確保彼此之間的信任。
NFS使用基於主機的身份驗證。NFS的默認配置不提供加密(sys=system),但在啟用Kerberos的NFSv4中(sec=krb5p),連接是安全的。在NFS服務器配置中,您必須定義允許訪問NFS共享的主機的IP地址。您還可以定義多個主機或整個子網。例如,廣泛使用的基於SMB的文件共享協議依賴於基於用戶的身份驗證。
在使用iSCSI作为共享存储时,您可以为VM配置原始设备映射。原始设备映射(RDM)是一项功能,允许您将整个物理磁盘或iSCSI LUN直接附加到VM作为设备(而不是在VM配置中附加虚拟磁盘)。基于RDM的方法与在LUN上创建数据存储、创建VMFS文件系统并将VM使用的虚拟磁盘存储在该数据存储上的传统方法不同。使用iSCSI时可以使用RDM,因为iSCSI共享在块级别上工作,VM可以使用VM上安装的客户操作系统使用的自定义文件系统格式化已附加的块RDM磁盘。
至于NFS,在NFS共享上附加为RDM磁盘不受支持,因为NFS共享在文件级别上工作,而RDM需要将块设备附加到VM。使用NFS共享只能创建NFS数据存储并在数据存储上存储VMDK虚拟磁盘文件。如果客户操作系统具有NFS客户端或iSCSI启动器,则可以在客户操作系统的级别上挂载NFS共享和iSCSI共享。因此,在VMware的iSCSI与NFS比较的原始设备映射类别中,iSCSI是胜出者。
iSCSI与NFS性能
在软件iSCSI实现中,性能略高,但客户主机的CPU负载也较高。iSCSI还对网络负载较大。iSCSI生成更多的网络流量和网络负载,而使用NFS更加平稳和可预测。当执行大量写操作时,您可能会注意到NFS共享的性能下降。
在vSphere中使用NFS時,最好在存儲端使用支持vStorage API for Array Integration (VAAI)的NFS。VAAI允許在NFS數據存儲上創建厚配置的虛擬磁盤。默認情況下,在NFS數據存儲上創建薄配置磁盤。NFS和iSCSI都支持Jumbo框架以提高網絡性能。
在進行iSCSI與NFS速度比較的末尾,應該提到性能還取決於存儲陣列供應商。
同時訪問
iSCSI不支持對塊設備進行同時或並行數據訪問。數據需要在兩個跳躍之間共享。然而,並行訪問在支持對文件進行並行訪問的文件系統層面是允許的,例如,VMFS或GFS。在VMware vSphere中使用iSCSI共享時,對共享的並行訪問是在VMFS級別上確保的。
NFS通過使用鎖定機制和接近開啟一致性機制支持對共享文件的並行訪問,以避免衝突並保持數據一致性。NFS v3和NFS v4.1使用不同的機制。NFS v3可以使用Network Lock Manager協議(NLM),而NFS v4.1使用本地指定的協議鎖定。如果在VMware ESXi上使用NFS v3來訪問文件共享,則ESXi不會使用NLM協議,因為在這種情況下VMware提供了自己的鎖定協議。在VMware vSphere中使用NFS v3共享時,當使用NFS v3共享時,在文件共享上創建具有.lck-file_id命名的鎖定文件。
NFS v4.1 使用預留來鎖定文件以進行同時訪問。如果您建立了一個 NFS 文件共享,所有客戶端都必須使用相同版本的 NFS 協議(例如,所有 ESXi 主機都通過 NFS v.4.1 連接到共享)。如果兩個不兼容的客戶端使用不同版本的 NFS 訪問 NFS 服務器上的文件,可能會出現不一致的行為和數據損壞。
配置的難度
使用 NFS 時,配置服務器和客戶端會更容易。使用 iSCSI 配置共享存儲會更加困難。您需要為存儲和主機配置 IQN;進行 iSCSI 服務、LUN 和掩碼的配置;並出於安全原因配置多個 VLAN(將用於 iSCSI 通信的網絡段隔離,以提供更高的安全級別)。
VMware vSphere 中的 NFS vs iSCSI – 摘要表
讓我們在摘要表中突顯每個數據共享協議的主要特點,在這個 iSCSI vs NFS VMware 比較中。
iSCSI | NFS | |
資料共享 | 區塊級別 | 文件級別 |
虛擬機器的原始裝置映射 | 是 | 否 |
配置難度 | 中等 | 簡單 |
從SAN啟動 | 是 | 否 |
錯誤檢查 | 是 | 是 |
安全功能 | CHAP | 凱羅斯 |
存儲vMotion | 是 | 是 |
存儲DRS | 是 | 是 |
結論
兩個共享協議都足夠成熟,可以在VMware vSphere中使用。 iSCSI和NFS之間的主要區別在於iSCSI在區塊級別上共享數據,而NFS在文件級別上共享數據。性能幾乎相同,但在某些情況下,iSCSI可以提供更好的結果。可以使用iSCSI與VM的RDM磁盤,但不能使用NFS。
無論是哪種網絡共享協議,都是可靠的。然而,您仍然需要使用第三方數據保護解決方案來避免數據丟失和停機時間。避免停電和其他硬件故障以避免在共享存儲上發生數據丟失。使用不間斷電源裝置並定期備份。
Source:
https://www.nakivo.com/blog/nfs-vs-iscsi-for-accessing-vm-data/