基于 NFS 的文件共享实现

本文将介绍如下内容:

  • 一、什么是 NFS
  • 二、NFS 有哪些特征
  • 三、服务搭建过程

一、什么是 NFS

NFS(Network File System)是一种网络文件系统协议,旨在允许不同计算机之间共享文件和目录。它允许将远程文件系统挂载到本地计算机,使得可以像访问本地文件一样访问远程文件。通过 NFS,用户可以从一个计算机上的应用程序或操作系统访问另一个计算机上的文件。NFS 使得多个计算机之间的文件共享变得方便、高效,并提供了类似本地文件系统的访问体验。

NFS 使用客户端-服务器模型,其中 NFS 服务器提供共享文件系统,而 NFS 客户端通过网络连接到服务器并挂载(mount)远程共享目录。客户端可以读取、写入、修改和删除共享文件,就像它们位于本地计算机上一样。

NFS 支持在不同的操作系统之间进行文件共享,比如在 Linux、Unix 和 Windows 等系统之间。它已成为许多跨平台环境中常用的文件共享解决方案,特别适用于大规模网络和集群环境。

总结来说,NFS 是一种允许不同计算机之间共享文件和目录的网络文件系统协议,提供方便的文件共享和访问功能,使得跨平台环境下的文件共享变得更加简单和高效。

在 NFS 客户端上,公共数据不会存储在本地。NFS 是一种网络文件系统协议,它通过网络连接将远程文件系统挂载到本地客户端。当您在 NFS 客户端上挂载远程共享目录时,实际的数据仍存储在 NFS 服务器上。

当您在 NFS 客户端上访问共享目录时,客户端会通过网络请求从 NFS 服务器读取数据或向 NFS 服务器写入数据。这意味着客户端只是暂时获取或传输数据,并不会在本地存储数据副本。任何更改或操作都是直接在 NFS 服务器上进行的。

因此,对于 NFS 客户端来说,数据始终保留在 NFS 服务器上,而不是存储在客户端本
地。客户端上的数据访问只是通过网络与 NFS 服务器进行交互

二、NFS 有哪些特征

1、跨平台兼容性:

NFS支持在不同操作系统之间进行文件共享,包括Linux、Unix和Windows等。这使得在混合操作系统环境中实现文件共享变得更加方便。

2、透明性:

通过 NFS 挂载远程共享目录后,对用户来说,访问远程文件与访问本地文件没有明显的区别。用户可以像访问本地文件系统一样访问和操作远程文件,无需额外的复杂配置。

3、高效性:

NFS 使用了一系列优化技术,如读写缓存、数据压缩和异步传输等,以提高文件访问的性能和效率。这使得在大规模文件共享环境下,NFS 能够提供快速的数据传输和响应时间。

4、安全性:

NFS 支持基于身份验证和权限控制的安全机制,如使用 Kerberos 进行认证和使用访问控制列表(ACL)进行权限管理。这有助于保护共享文件的机密性和完整性,并限制未经授权的访问。

5、可扩展性:

NFS 设计用于支持大规模网络环境和集群架构。它可以通过添加更多的 NFS服务器和客户端来扩展文件共享的规模,并在负载平衡方面具有一定的灵活性。

6、灵活性:

NFS 允许管理员根据实际需求进行配置和调整。可以选择共享整个文件系统或特定目录,以及定义不同的权限级别和访问控制策略。

综上所述,NFS 具有跨平台兼容性、透明性、高效性、安全性、可扩展性和灵活性等特点,使其成为广泛使用的网络文件共享协议之一。

三、服务搭建过程

1、在服务器和客户端上安装 NFS 软件包:

sudo yum install nfs-utils(ubuntu)
sudo apt install nfs-kernel-server(centos)

2、在服务端创建共享目录:

sudo mkdir /home/ai_data2/nfs

3、编辑 NFS 服务器的配置文件/etc/exports,添加以下行:

vim /etc/exports

/home/ai_data2/nfs 10.13.26.11(rw,insecure,sync,all_squash) 
10.13.26.15(rw,insecure,sync,all_squash) 10.13.26.21(rw,insecure,sync,all_squash) 
10.13.26.22(rw,insecure,sync,all_squash)

保存并退出 /etc/exports 后,刷新 nfs 配置文件

exportfs -r

参数详解:

  • rw:read-write,可读写;
  • ro:read-only,只读;
  • sync:同步写入(文件同时写入硬盘和内存),适用在通信比较频繁且实时性比较高的场合;
  • async:异步写入(文件先写入内存,稍候再写入硬盘),性能较好(速度快),适合超大或者超多文件的写入,但有数据丢失的风险,比如突然断电等情况;
  • root_squash(默认):将来访的 root 用户映射为匿名用户或用户组;no_root_squash:来访的 root 用户保持 root 帐号权限(可能会不安全);no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
  • all_squash: 将来访的所有用户映射为匿名用户或用户组;
  • secure(默认):限制客户端只能从小于 1024 的 tcp/ip 端口连接服务器;
  • insecure:允许客户端从大于 1024 的 tcp/ip 端口连接服务器;
  • anonuid:匿名用户的 UID 值,通常是 nobody 或 nfsnobody,可以在此处自行设定;
  • anongid:匿名用户的 GID 值;
  • no_subtree_check:如果 NFS 输出的是一个子目录,则无需检查其父目录的权限(可以提高效率)

4、启动 NFS 服务并设置开机自启:

sudo systemctl start nfs-server
sudo systemctl enable nfs-server

5、在客户端创建本地挂载点:

sudo mkdir /home/ai_data2/nfs

挂载 NFS 共享到客户端:

mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,n
oresvport 10.13.26.10:/home/ai_data2/nfs /home/ai_data2/nfs

以下是对 mount 命令中使用的参数进行解释:

  • -t nfs: 指定文件系统类型为 NFS。
  • -o: 用于指定挂载选项。下面是每个选项的解释:
  • vers=3: 指定使用 NFS 版本 3 进行通信。
  • nolock: 禁用文件锁定机制,这意味着不会使用 NFS 锁定协议来处理文件锁。
  • proto=tcp: 指定使用 TCP 协议进行 NFS 通信。
  • rsize=1048576: 指定读取数据的块大小(以字节为单位)。
  • wsize=1048576: 指定写入数据的块大小(以字节为单位)。
  • hard: 使用硬重试模式。当与 NFS 服务器的连接中断时,会进行持续而坚决的尝试重新连接。
  • timeo=600: 设置超时时间(以十分之一秒为单位),如果在该时间内无法获得响应,则认为请求超时。
  • retrans=2: 设置重传次数,当发生超时后将尝试重新发送请求的次数。
  • noresvport: 禁止使用保留端口号,即使用动态端口号进行 NFS 通信。最后两个参数是挂载源和目标路径:
  • 10.13.26.10:/home/ai_data2/nfs:NFS 服务器的 IP 地址和共享目录路径。
  • /home/ai_data2/nfs:本地文件系统上用于挂载的目标路径。

综上所述,该 mount 命令使用 NFS 版本 3 通过 TCP 协议挂载位于 10.13.26.10 服务器上的/home/ai_data2/nfs 共享目录到本地文件系统的/home/ai_data2/nfs 路径。并且设置了一些特定的选项来控制 NFS 通信和挂载行为。

6、确认挂载是否成功:

使用 df -h 查看是否成功
在这里插入图片描述

7、NFS 重启、查看状态命令:

sudo systemctl restart nfs-server
sudo systemctl status nfs-server

8、卸载挂载

umount /home/ai_data2/nfs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值