SMB与NFS协议:深入比较

在计算机和用户之间共享文件可以更高效、更方便地进行通信和数据交换。您可以通过不同的方式在网络上共享文件,例如,在服务器和计算机上使用SMB或NFS协议。NAS(网络附加存储)设备也可用于通过SMB和NFS共享文件。

阅读NFS与SMB的比较,以了解在您的情况下应该使用什么,以及选择哪种协议。

什么是SMB协议?

SMB(Server Message Block)是一种文件共享协议,可通过网络访问共享数据。它在Windows环境中广泛使用,以在局域网(LAN)上访问文件。由IBM于1983年开发,Microsoft后来接管了该协议,并现在在Windows中提供内置的SMB支持。该协议不断发展,最新的SMB版本是v.3.1.1。

有时术语CIFS与SMB混淆。CIFS是SMP方言,即Microsoft的SMB v1实现。阅读此 CIFS vs SMB 比较以了解更多信息。

什么是NFS协议?

NFS(Network File System)是用于UNIX和Linux操作系统的文件共享协议。尽管名称中有文件系统一词,但NFS并不是文件系统。NFS协议最初由Sun Microsystems于1984年开发。

  • NFS版本1由Sun用于内部目的,从未发布。
  • NFS v2提供了基本的文件共享功能。
  • NFS v3支持可变大小处理和改进的错误报告,但与NFS v2客户端不兼容。
  • NFS v4是由Internet工程任务组(IETF)开发的最新NFS版本。它支持并行文件访问,并且在这个版本中改进了安全性。与NFS v2和NFS v3的向后兼容性。NFS v4支持Kerberos身份验证。

NFS与Samba – 主要区别

Samba是一个免费软件实现,在Linux上安装一个SMB服务器。请注意,Samba不包括SMB客户端。您应该安装cifs-utils软件包以在Linux中获取SMB客户端。

NFS是一个网络协议,不应与软件包(Samba)进行比较。但是,如果我们谈论Windows的NFS实现,则需要在Windows中安装适当的NFS服务器和/或NFS客户端角色(根据我们的任务)才能使用NFS。

NFS vs SMB – 功能概述

在本节中,我们将比较SMB和NFS在7个不同类别中的功能。

1. 网络连接/使用的端口

  • SMB和NFS共享协议都在OSI模型的应用层(第7层)上工作,并使用客户端-服务器架构。
  • SMB需要建立会话(NFS不需要)。
  • SMB还可以使用表示层进行操作(第6层)。
  • 这两个协议都经过优化,可在局域网(LAN)中使用,而不是在互联网上使用。 SMB和NFS共享协议不适用于进行网络地址转换和路由以在互联网上使用。
  • NFS使用端口2049(TCP和UDP)和端口111(TCP和UDP)。TCP 111由端口映射器使用。TCP 1110和UDP 1110用于群集和客户端状态。NFS锁定管理器使用TCP 4045和UDP 4045。
  • SMB使用TCP端口445,而不使用NetBIOS传输,直接使用TCP/IP(这是SMB从Windows 2000开始的工作方式,包括现在使用的最新SMB版本)。SMB使用TCP 139,UDP 137和UDP 138端口运行在TCP/IP上的NetBIOS之上。NetBIOS是一个会话层协议(在OSI模型的第5层工作),在Windows 2000之前的旧SMB实现中使用。

2. 共享打印机

SMB支持打印机共享,允许远程用户使用连接到特定计算机的打印机在网络上打印文件。NFS协议不提供打印机共享功能 – Linux具有其他机制用于网络打印。

3. 认证

A major difference between the NFS vs SMB protocols is how they authenticate.

  • SMB使用ACL(访问控制列表)概念与用户和组。SMB为选定的用户和组提供对共享文件的访问(基于用户的身份验证)。您可以灵活配置权限。要为允许的主机配置访问权限,您可以使用防火墙。
  • NFS传统上提供对允许的IP地址的访问。NFS使用基于主机的身份验证系统 – 您可以启用允许访问NFS共享的主机的IP地址。在这种情况下,允许的计算机的每个用户都可以访问NFS共享。

所有权和Linux样式权限是NFS协议的一个特点。Linux使用UID(用户ID)和GID(组ID),而Windows使用SID(安全标识符)。

NFS v4中的Kerberos支持增强了认证系统(以提高为选定用户提供访问权限的功能)。

4. 访问文件共享

SMB必须使用文件锁,而NFS则是建议性的。文件锁定机制用于确保用户打开的文件的一致性。有了锁定,其他用户在文件关闭之前无法向已打开的文件写入数据。

您可以通过以下方式访问SMB文件共享

在Windows中:

\\server\share\directory1\directory2

在Linux中:

smb://server/share/directory1/directory2

您可以通过Export File System(EFS)路径和以下格式访问NFS共享:

server:/directory1/directory2

5. 操作系统的支持和集成

NFS协议针对Linux进行了优化。SMB针对Windows进行了优化,并且是Windows中的本机文件共享协议,具有出色的集成性。

然而,这两种协议都可以在Windows和Linux上使用。您需要在Linux上安装SMB客户端(cifs-utils)或SMB服务器(Samba)以使用SMB协议。您需要在Windows中安装NFS客户端和/或服务器作为附加组件(角色)以使用Windows NFS配置。

在访问文件时,NFS协议区分大小写,而SMB协议不区分大小写。这会影响您搜索文件和输入文件名的方式。

NFS协议是一个开放标准,任何人都可以实现。

6. 安全性/加密

  • 基于请求-响应协议(RPC)的NFS通信在没有防火墙的情况下存在风险。当NFS使用底层的不安全的UDP协议时,整体安全级别会降低。NFS支持使用TLS(基于SSL的传输层安全协议)进行加密。
  • SMB支持使用AES-256加密标准进行端到端加密,比NFS的Kerberos加密更强。虽然SMB 1被认为是一个容易受到攻击的协议,但最新的SMB 3版本是安全的,使得与SMB相关的安全级别优于NFS。

7. NFS与SMB的性能

NFS是在网络上传输小型和中型文件的更好选择(例如,大小约为1MB或更小的文件)。当传输大文件时(例如,500MB文件),两种协议的性能相似。

在使用加密时,NFS比SMB更快。在SMB中,以4MB的速率进行读取事务更快。高流量负载可能会减慢数据传输过程。我们可以注意到,NFS v.4.2提高了最大带宽。

SMB与NFS:比较表

我们可以在我们的NFS与SMB比较表中总结主要区别。

SMB NFS
环境 原生于Windows系统 主要用于Linux系统
认证 便捷的基于用户的认证 基于主机的认证是主要方法
使用的端口 TCP 445; TCP 139, UDP 137, 138 TCP 2049, UDP 2049, TCP 111 和 UDP 111; TCP 1110, UDP 1110, TCP 4045, UDP 4045。
加密和安全性 是 – Kerberos,AES-256 是 – Kerberos 和 TLS
跨平台环境 支持 支持
文件锁定 强制 建议
打印机共享
访问资源 \\server\directory1\directory2 server:/directory1/directory2

结论

选择NFS与SMB作为文件共享协议取决于网络中计算机主要使用的操作系统以及其他因素。这两种协议都可靠,并可用于不同的操作系统和NAS设备。无论您选择哪种,重要的是在网络中使用文件共享时备份您的数据。NAKIVO备份与复制是一种全面的数据保护解决方案,可用于保护SMB和NFS共享数据,以及虚拟机、物理服务器和Microsoft 365中的数据。

Source:
https://www.nakivo.com/blog/nfs-vs-smb/