NFS(Network File System)是一种网络文件系统协议,它允许在网络上共享文件和目录。NFS是由Sun Microsystems开发的一种分布式文件系统协议,它允许不同的计算机之间通过网络透明地访问和共享文件。
NFS 的主要作用包括:
- 文件共享: NFS 提供了一种在不同计算机之间共享文件和目录的机制。这样,一个计算机上的应用程序可以访问位于另一台计算机上的文件,就像它们是本地文件一样。
- 透明性: NFS 提供了透明性,用户可以访问远程文件系统而无需关心底层的物理细节。通过 NFS,用户可以像本地文件一样操作和管理文件,而不用担心文件存储在哪里。
- 跨平台: NFS 是一个标准的网络文件系统协议,因此它能够跨越不同的操作系统和计算机体系结构。这使得在异构网络环境中实现文件共享变得更加容易。
- 数据一致性: NFS 提供了一些机制来确保对共享文件的并发访问不会导致数据不一致。它采用一些缓存管理和文件锁定机制来维护文件系统的一致性。
- 简化管理: 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
接下来我们在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中