服务采用高可用部署,如何实现服务之间文件共享,一秒教会你使用NFS

73 阅读4分钟

NFS(Network File System)是一种网络文件系统协议,它允许在网络上共享文件和目录。NFS是由Sun Microsystems开发的一种分布式文件系统协议,它允许不同的计算机之间通过网络透明地访问和共享文件。

NFS 的主要作用包括:

  1. 文件共享: NFS 提供了一种在不同计算机之间共享文件和目录的机制。这样,一个计算机上的应用程序可以访问位于另一台计算机上的文件,就像它们是本地文件一样。
  2. 透明性: NFS 提供了透明性,用户可以访问远程文件系统而无需关心底层的物理细节。通过 NFS,用户可以像本地文件一样操作和管理文件,而不用担心文件存储在哪里。
  3. 跨平台: NFS 是一个标准的网络文件系统协议,因此它能够跨越不同的操作系统和计算机体系结构。这使得在异构网络环境中实现文件共享变得更加容易。
  4. 数据一致性: NFS 提供了一些机制来确保对共享文件的并发访问不会导致数据不一致。它采用一些缓存管理和文件锁定机制来维护文件系统的一致性。
  5. 简化管理: NFS 简化了文件系统的管理,因为文件可以集中存储在一台或多台服务器上,并通过网络共享给其他计算机。这样,管理员可以更容易地进行备份、恢复和维护。

工作原理:

NFS 的工作原理涉及两个主要组件:

  • NFS 服务器: 提供文件共享的计算机。服务器上的文件系统可以通过 NFS 共享给其他计算机。
  • NFS 客户端: 访问共享文件的计算机。客户端通过 NFS 协议与服务器通信,请求远程文件的读取、写入和其他操作。

NFS 使用 RPC(Remote Procedure Call)来在客户端和服务器之间传递请求和响应。当客户端需要访问远程文件时,它向服务器发出请求,服务器执行相应的文件系统操作,并将结果返回给客户端。

接下来实战演练:

app1服务器作为nfs服务端,共享目录/data/nfs_work

app2、app3服务器作为nfs客户端进行文件共享,服务器目录/data/nfs_target 共享到 /data/nfs_work

首先app1执行安装命令安装nfs


建立共享目录  
mkdir -p /data/nfs_work 
 
#nfs 默认用户是nfsnobody 
给目录授权:

可以查看nfs的默认用户
grep nfs /etc/passwd 

chown nfsnobody:nfsnobody -R /data/nfs_work 
更改使用权限:chmod 766 -R /data/nfs



查看有没有安装这两个包  
rpm -qa |grep nfs-utils  
rpm -qa |grep rpcbind

1、安装软件包: 
yum -y install rpcbind nfs-utils  
2、启动服务: 先systemctl start rpcbind  
后systemctl start nfs-server.service  
查看启动状态systemctl status nfs  
3、设置开机自启:  
systemctl enable rpcbind.service  
systemctl enable nfs-server.service  
4、添加配置文件:/etc/exports,  
/data/nfs_work *(rw,sync)  
exportfs -rv 让配置文件生效  

格式:media代表是当前系统目录,  
*代表对所有网段开放权限,也可以设置特定网段。  
(rw)代表访问权限  
ro只读 rw读写访问 sync资料同步写入到内存与硬盘当中
查看服务器的共享目录
showmount -e app1

image.png

接下来我们在app2、app3服务器中安装nfs客户端,实现文件共享

客户端配置:关闭防火墙  
1、安装软件包: yum -y install rpcbind nfs-utils  
2、启动服务: 
systemctl start rpcbind  
systemctl start nfs-server.service  
3、设置开机自启:  
systemctl enable rpcbind.service  
systemctl enable nfs-server.service  
4、挂载 挂完后df -h 查看  
mount -t nfs app1:/data/nfs_work /data/nfs_target 
5、 添加配置文件到vim /etc/fstab,开机自动挂载  
app1:/data/nfs_work /data/nfs_target  nfs defaults,_netdev 0 0  
mount -a 查看有没有挂载错误

取消挂载  
sudo fuser -m -v -i -k /data/nfs  
sudo umount /data/nfs

此时app2和app3中任意一个/data/nfs_target目录中上传文件都能实现文件共享,目录最终保存在app1的/data/nfs_work中