NFS
(Network File System)即网络文件系统,它允许网络中的不同计算机相互之间共享资源。NFS客户端可以透明地读写远程NFS服务器上的文件,就像访问本地文件一样。
NFS是1980年由SUN发展出来在UNIX&Linux系统间实现文件共享的一种方法。它支持应用程序在客户端通过网络存取位于服务器磁盘中的数据。
NFS只提供网络文件共享功能,不提供数据传输的功能。需要借助RPC(Remote Procedure Calls)远程过程调用协议实现数据传输。
NFS服务器自开启服务之后一直处于等待状态,由NFS客户端建立过程调用请求,将调用参数发送到远程NFS服务器,并等待响应。当请求到达远程NFS服务器后,NFS服务器处理客户端的请求,调用指定的程序,并将结果返回NFS客户端。NFS服务器上的目录如果可以被过程用户访问,就称为导出(export);客户主机访问服务器导出目录的过程称为挂载(mount)或导入(import)。
NFS的工作流程
步骤1:首先用户访问NFS共享资源,由程序在NFS客户端上发出NFS文件存取功能的询问请求,这时NFS客户端(即执行程序的服务器)RPC服务(portmap 或rpcbind服务)就会通过网络向NFS服务端的RPC服务(即portmap或rpcbind服务)的111端口发出NFS文件存取功能的询问请求。
步骤2:NFS服务端的RPC服务(即portmap或rpcbind服务)找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务(即portmap或rpcbind服务)。
步骤3:此时NFS客户端就可获取到正确的端口,然后就直接与NFS daemon联机存取数据了。
步骤4:NFS客户端把数据存取成功后,告诉用户存取结果。
部署nfs服务端
- 安装包
yum -y install nfs-utils rpcbind
- 启动服务,并做开机启动
[root@nfs_server ~]# systemctl enable rpcbind
[root@nfs_server ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs_server ~]# systemctl enable nfs-lock
[root@nfs_server ~]# systemctl enable nfs-idmap
[root@nfs_server ~]# systemctl start rpcbind
[root@nfs_server ~]# systemctl start nfs-server
[root@nfs_server ~]# systemctl start nfs-lock
[root@nfs_server ~]# systemctl start nfs-idmap
3.创建共享目录,并修改权限
[root@nfs_server ~]# mkdir -p /application/share
[root@nfs_server ~]# chmod -R 777 /application/share
4.配置共享目录
[root@nfs_server ~]# echo "/application/share 192.168.0.*(rw,sync,no_root_squash)" >> /etc/exports
[root@nfs_server ~]# exportfs -a
使exports的修改生效
5.检查配置是否设置正确
[root@nfs_server /]# showmount -e
Export list for nfs_server:
/application/share 192.168.0.*
部署nfs客户端
1.安装包
[root@nfs_client ~]# yum -y install nfs-utils
2.检查共享目录是否正确
[root@nfs_client ~]# showmount -e 192.168.0.240
Export list for 192.168.0.240:
/application/share 192.168.0.*
3.创建一个挂载点
[root@nfs_client ~]# mkdir -p /application/share
4.挂载
[root@nfs_client ~]# mount -t nfs 192.168.0.240:/application/share /application/share
5.永久挂载
vi /etc/fstab
添加 192.168.0.240:/application/share /application/share nfs defaults 0 0
挂载格式解读:
mount -t nfs -o nolock,vers=2 10.0.0.147:/work/nfs /mnt
解释一下:
mount :挂载命令
nfs :使用的协议
nolock :不阻塞
vers : 使用的NFS版本号
IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
/mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)
取消挂载(先df -h 查看分区挂载情况)
[root@localhost local]# umount 192.168.0.240:/application/share