NFS 和 SMB 之间有什么区别?

网络文件系统(NFS)和服务器消息块(SMB)是用于通过网络进行高效文件共享的文件访问存储协议或规则。有效沟通、协作和共享文件的能力对于任何组织的日常运营都至关重要。使用 NFS,用户(或客户端设备)可以连接到网络服务器并访问服务器上的文件。该系统具有允许多个用户共享同一个文件而不会发生数据冲突的规则。同样,SMB 还允许用户读取服务器上的文件。但是,它可以提供更大的灵活性,因此客户端也可以相互共享文件。客户端可以使用 SMB 与任何其他联网设备(如打印机或文件服务器)建立连接。然后,客户端可以像访问客户端本地文件一样访问设备的文件。

什么是 NFS,它如何运作?

网络文件系统(NFS)协议由 Sun Microsystems 于 1984 年创建,是基于 Unix 的系统的有状态文件共享协议。此后,NFS 经历了几次更新。最新版本是 NFS 版本 4(NFSv4),它是由互联网工程任务组的一个工作小组开发的。NFS 在 Linux 用户中仍然很受欢迎。

以下是启用 NFS 的客户端与 NFS 服务器之间的通信方式。首先,客户端使用远程过程调用(RPC)向服务器请求文件或目录。然后,服务器会检查以下内容:

  • 文件或目录可用
  • 客户端具有所需的访问权限

然后,服务器将文件或目录远程安装在客户端上,并通过虚拟连接共享访问权限。对于客户端,NFS 像在操作期间访问本地文件一样使用远程服务器文件。

除其他功能外,NFS 客户端还可以缓存文件以提高访问速度,锁定多台计算机尝试同时写入的同一个文件,并提供同步的文件属性更新。

什么是 SMB,它如何运作?

自首次开发服务器消息块(SMB)协议以来,已经经历了几次不同的迭代。它由 IBM 的 Barry Feigenbaum 于 1983 年发布,适用于 DOS 操作系统,即 Windows 的前身。通过与 Windows 产品套件深度集成,SMB 仍然作为 Windows 操作系统的默认文件共享协议。 

SMB 的当前版本是 SMB 3.1.1,过去的版本包括 SMB 1.0、SMB 2.0、SMB 2.1、SMB 3.0 和 SMB 3.0.2。SMB 曾经更名为 CIFS(Common Internet File System,通用互联网文件系统),但是,这一名称更改最终被恢复。 

客户端-服务器通信的过程大体上与 NFS 类似,区别在于前者的细节和操作机制更加精细。例如,在 SMB 中,文件系统不安装在本地 SMB 客户端,而是通过网络路径访问托管在 SMB 服务器上的网络共享。

SMB 和 NFS 之间的相似之处

服务器消息块(SMB)和网络文件系统(NFS)协议都采用客户端-服务器模式运行,在这种模式下,文件在远程服务器上共享并由本地客户端使用。一旦协议设置正确,访问服务器上的远程网络文件和目录就会像访问客户端计算机文件系统上的本地文件和目录一样。

以下是 SMB 和 NFS 之间的其他相似之处:

  • 两者都允许客户端对服务器上的文件和目录执行创建、读取、更新和删除(CRUD)操作。
  • 您可以在多个不同的操作系统上使用它们。这包括每个主流操作系统、Windows 环境和 Linux 环境。
  • SMB 和 NFS 通常用于传统网络环境,尤其是在本地基础设施中。 

主要区别:NFS 与SMB

网络文件系统(NFS)和服务器消息块(SMB)在操作细节上有一些差异。

原创设计

尽管 NFS 和 SMB 都可以跨操作系统使用,但 SMB 协议是 Windows 原生文件共享的默认协议。Windows 功能是围绕 SMB 构建的。您需要 Samba 等外部工具才能在 Linux 计算机上使用 SMB 来访问远程 Windows 服务器文件。 

相比之下,NFS 协议是专门为 Unix 系统设计的。它是大多数 Linux 发行版中的原生文件共享协议,也是默认的文件传输协议。

共享资源

SMB 的构建使您可以共享各种网络资源,包括文件和打印服务、存储设备和虚拟机存储。

这与 NFS 不同,后者仅内置了对共享文件和目录的支持。

客户端之间的通信

SMB 允许客户端使用服务器作为调解器相互通信和共享文件。

NFS 仅允许客户端-服务器操作。

何时使用 NFS 与SMB

通常,网络文件系统(NFS)和服务器消息块(SMB)用于创建和管理具有同构操作系统环境的局域网(LAN)。在这些环境中,需要像访问本地文件一样访问共享存储。NFS 和 SMB 还用于传统的远距离联网环境,以及通过网关在混合云环境中使用。

SMB 文件共享

如果要在 LAN 中设置网络附属存储(NAS),那么 SMB 是通过网络共享和访问文件最简单的选择。无论您运行的是 Windows、Mac 还是 Linux 操作系统,都是如此。

以下是其他常见应用场景:

  • 基于 Windows 的局域网,适用于多台客户端计算机需要共享存储的组织
  • 具有较大存储阵列且优先考虑效率和可扩展性的企业环境
  • 需要原生支持的高级共享操作

了解 NAS »

NFS 文件共享

可以将 NFS 用于以下场景:

  • 您有一个本地网络,所有基于 Unix 的计算机(包括基于 Linux 的环境)都在该网络中
  • 需要较大的文件大小

关于云存储架构的说明

值得注意的是,在基于云的文件存储和共享架构中,SMB 和 NFS 都不用作主要文件共享协议。

云存储提供商使用专有系统来管理其内部配置,尽管它们可能基于 SMB 或 NFS。相反,提供商提供兼容性服务,允许现有或新的 NFS 和 SMB 系统与其云存储产品和服务互操作。 

实施 NFS 和 SMB 面临的挑战

服务器消息块(SMB)和网络文件系统(NFS)都需要在服务器和客户端计算机上进行配置才能正常运行。它们不是开箱即用的。必须在客户端计算机和服务器上正确配置访问权限和基于用户的身份验证系统。当客户端和服务器之间的操作系统类型不匹配时,可能需要额外的配置或软件。

配置 NFS 和 SMB 通常是系统管理员或网络管理员的工作。该任务需要了解协议的安全考虑因素,以确保安全操作和最佳效率。如果发布了新版本的 SMB 或 NFS,管理员必须根据需要升级系统和配置。

在基于云的文件存储架构中,许多组织使用现代的、完全托管的解决方案来共享文件,而不是 SMB 或 NFS 所需的自助式方法。这些解决方案在某种程度上使用 NFS 或 SMB,但管理员不再需要考虑管理中的复杂性。

这些解决方案通常提供了其他功能,可通过用户友好界面访问这些功能。例如,它们可能提供了自动身份验证系统、弹性存储管理、与其他云服务的自动集成以及高级安全控制。

 

差异摘要:NFS 与SMB

 

NFS

SMB

它是什么?

网络文件系统。

服务器消息块。

最适合

基于 Linux 的网络架构。

基于 Windows 的架构。

共享资源

文件和目录。

广泛的网络资源,包括文件和打印服务、存储设备和虚拟机存储。

客户端的通信对象

服务器。

服务器,客户端可以通过将服务器用作调解器来与其他客户端通信。

AWS 如何支持您的远程文件共享需求?

Amazon Web Services(AWS)针对服务器消息块(SMB)支持、网络文件系统(NFS)支持和其他远程访问需求提供一系列服务。

如果您已有自定义本地文件存储系统,则可以使用 AWS Storage Gateway 将其连接到基于云的存储,从而在混合云解决方案中实现无限存储和效率。与Amazon Simple Storage Service(Amazon S3)相结合,可以共享基于 SMB 或 NFS 的本地存储,同时具有低延迟和高效的云端访问权限。有关更多信息,请阅读如何使用自定义配置创建 SMB 文件共享

如果您想将 SMB 或 NFS 服务器迁移到云端以降低运营开销、利用弹性扩展或提高可用性,可以使用 Amazon FSx 来实现。Amazon FSx 与 NetApp 的 ONTAP、Windows 文件服务器、Lustre 和 OpenZFS 兼容。

对于不需要配置 SMB 或 NFS 的现代文件共享服务,Amazon Elastic File System(Amazon EFS)是一种无服务器、完全弹性、完全托管的文件存储解决方案。借助 Amazon EFS,您可以将网络文件系统安装在 Amazon Elastic Compute Cloud(Amazon EC2)容器、AWS 容器、Lambda 函数或本地服务器上。Amazon EFS 专为在现代 AWS 云和混合架构之间轻松实现弹性文件存储和共享而设计。

立即创建账户,开始在 AWS 上进行文件共享。