NFS vs iSCSI访问VM数据

NFS vs iSCSI – 你应该选择哪种协议来存储 VMware VM 文件?当你需要配置共享存储以存储必须在 ESXi 主机之间迁移的虚拟机(VMs),以使用群集功能,并且没有空闲插槽可用于连接物理磁盘到服务器时,通常会出现这个问题。

在大型数据中心部署 VMware vSphere 的组织更喜欢使用昂贵的光纤通道(FC)或以太网上的光纤通道(FCoE)。然而,对于用于 VMware vSphere 基础架构的中小型数据中心,NFS 和 iSCSI 更具吸引力,因为使用这些共享协议配置文件共享所需的硬件更实惠。本博文比较了 NFS vs iSCSI,重点关注它们在 VMware vSphere 虚拟基础架构中的使用。

什么是 NFS?

网络文件系统(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 和更高版本支持 NFS 3.0 和 NFS 4.1。ESXi 包含内置的 NFS 客户端,可通过 TCP/IP 连接到 NFS 服务器。连接到 NFS 版本 3.0 和 4.1 时使用两个不同的 NFS 客户端。在创建新的 NFS 数据存储时,您可以选择使用哪个 NFS 版本。当使用 NFS v.4.1 时,VMware 不支持以下功能:

  • 存储 DRS
  • 存储 I/O 控制
  • 站点恢复管理器

在存储虚拟机模板和 ISO 映像以安装虚拟机操作系统时,使用 NFS 数据存储非常方便。

什么是 iSCSI?

Internet Small Computer Interface (iSCSI) 是一种网络协议,用于确保网络中对象(启动程序和目标)之间的交互以共享数据。在客户端上配置 iSCSI 启动程序,在服务器端配置 iSCSI 目标。

iSCSI 发起器可以是基于软件和硬件的。基于硬件的发起器有助于卸载客户机上的中央处理单元(CPU 或处理器),需要安装硬件主机总线适配器(HBA)。硬件 iSCSI HBA 是带有以太网接口的网络接口控制器(NIC)。在这个 iSCSI vs NFS 的比较中,我考虑使用基于软件的 iSCSI 发起器。iSCSI 于 2003 年引入,描述在 RFC 3720 中。

iSCSI 是会话层协议(在 OSI 模型的第 5 层工作),在 TCP/IP 栈之上运行。数据是在块级别共享的,与 NFS 不同但类似于 FC。这是 iSCSI vs NFS 比较中的一个重要点。SCSI 命令被封装在 TCP/IP 数据单元中,并通过使用标准以太网网络传输。因此,一台计算机可以通过网络向另一台计算机上的存储块设备发送 SCSI 命令。

描述
应用 文件系统,数据库等。
SCSI SCSI数据,SCSI命令,SCSI状态
iSCSI iSCSI协议服务,iSCSI合格名称(IQN),Internet存储名称服务(iSNS),CHAP身份验证等。
TCP 带有错误控制机制的协议(通常在TCP/IP堆栈中工作)
IP 用于网络通信和路由的协议
Ethernet 交换机,电缆,端口(连接器),协议

注意:有一个有趣的事实,关于iSCSI如何用于VMware VM恢复。例如,当您在NAKIVO备份与复制中使用即时VM恢复,直接从备份在ESXi主机上运行VM时,VM将在所选ESXi主机上创建,并且通过使用iSCSI协议将虚拟磁盘作为RDM磁盘以虚拟兼容模式挂载到VM。

VMware NFS vs iSCSI – 关键区别

NFS和iSCSI都可以在使用铜线部署的1千兆和10千兆以太网网络(1GbE和10GbE)中工作。更高的网络速度更好。了解更多关于网络拓扑的信息。在VMware vSphere中使用共享数据存储来存储虚拟机文件时,NFS和iSCSI都可以用于虚拟机的在线迁移、负载平衡以及数据存储之间的虚拟机迁移。这两种共享协议都受到由于多层数据封装机制导致的重大开销的影响。

NFS受到大多数供应商的NAS设备支持,例如,SynologyQNAP。然而,如今选择支持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 存储上的 VMFS 如果存储了虚拟机的 thin provisioned 虚拟磁盘,可能会变得脆弱。断电可能会使卷无法恢复。在这种情况下,NFS 数据存储的行为略微更可靠。如果定期执行 VMware 备份,您可以减轻这些问题。

安全

一般情况下,iSCSI 流量未加密,但这并不意味着您无法保护 iSCSI 流量。使用名称和密码对 iSCSI 共享进行身份验证是受支持的。挑战握手认证协议 (CHAP) 允许服务器和客户端确保彼此信任。

NFS 使用基于主机的身份验证。NFS 的默认配置不提供加密(sys=system),但使用启用了 Kerberos 的 NFSv4(sec=krb5p)时,连接是安全的。在 NFS 服务器配置中,您必须定义允许访问 NFS 共享的主机的 IP 地址。您还可以定义多个主机或整个子网。例如,广为人知的 SMB 基于文件的共享协议依赖于基于用户的身份验证。

使用专用VLAN或使用单独的(私有的)物理网络是在VMware vSphere中使用共享iSCSI和NFS存储的推荐做法。这种方法允许您将存储流量与其他类型的流量隔离开来。NFS v3没有类似于NFS v4.1中的安全功能。当不使用Kerberos时,ESXi服务器会以root访问权限挂载NFS共享。因此,在进行安全配置时,请牢记这一点。还要阅读有关VLAN和VXLAN的内容。

NFS v.4.1支持具有密码机制的Kerberos身份验证,除了数据加密标准(DES)之外的密码算法。Kerberos中的密码算法防止未经授权的用户访问NFS流量。ESXi支持Kerberos的krb5和krb5i实现。ESXi 7.0支持NFS 4.1 Kerberos加密和AUTH_SYS安全机制(但不能同时使用)。

VMware NFS与iSCSI – 原始设备映射

当使用 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 vs NFS 比较的原始设备映射类别中,获胜者是 iSCSI。

iSCSI vs NFS 性能

在软件 iSCSI 实现中,性能略高,但客户主机上的 CPU 负载也较高。iSCSI 还会对网络产生更高的负载。iSCSI 生成更多的网络流量和网络负载,而使用 NFS 更加平稳和可预测。当执行大量写操作时,您可能会注意到使用 NFS 共享时性能下降。

在vSphere中使用NFS时,最好在存储端支持vStorage API for Array Integration (VAAI)的NFS。VAAI允许您在NFS数据存储上创建厚配置的虚拟磁盘。默认情况下,在NFS数据存储上创建薄配置的磁盘。NFS和iSCSI都支持巨帧以提高网络性能。

在这个iSCSI与NFS速度比较的结尾,应该提到性能也取决于存储阵列供应商。

并发访问

iSCSI不支持对块设备进行并发或并行数据访问。数据需要在两个跳跃之间共享。但是,在支持文件并行访问的文件系统(例如VMFS或GFS)的级别上,允许并行访问。在VMware vSphere中使用iSCSI共享时,可以确保对共享的并发访问在VMFS级别上。

NFS通过使用锁定机制和近一致性机制来支持对共享文件的并发访问,以避免冲突并保持数据一致性。NFS v3和NFS v4.1使用不同的机制。NFS v3可以使用网络锁定管理器协议(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 通信的网络段,以提供更高的安全级别)。

阅读有关可以用于存储 VM 数据的 VMware 虚拟卷。

VMware vSphere 中 NFS 与 iSCSI 的比较 – 摘要表

在这个 iSCSI 对 NFS 的 VMware 比较中,让我们在摘要表中突出显示每个数据共享协议的主要特点。

iSCSI NFS
数据共享 块级 文件级
VM的原始设备映射
配置难度 中等 简单
从SAN启动
错误检查
安全功能 CHAP Kerberos
存储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/