NFS(网络文件系统)是linux操作系统下的一种特殊的文件系统,使用这一文件系统,当前主机可以加载其他提供NFS服务的linux主机,这种
方式可以便捷的实现linux主机之间文件的互相访问。NFS文件系统仅占用系统挂载点,NFS客户端用户的PC将网络远程的NFS主机分享的目录挂载到本地计
算机中,可以运行相应的程序,共享应用的文件,但不占用当前的系统资源。
将NFS服务器的共享文件夹挂载到客户端,使用协议RPC(远程进程调度)
NFS使用rpc
1.当服务器端的nfs和rpc 服务 启动后会形成很多进程:mountd ,nfs,nlockmgr,status进程。
2. 客户端有rpc.mountd ,rpciod , nlockmgr,status进程。
3.客户端需要挂载服务器端的文件,使用rpc.mountd进程项服务器的portmapper 发送请求连接。
4.服务器端的portmapper 收到请求后,向客户端回应,同时告诉客户端使用哪个端口与服务器相连。
5.客户端使用rpc.mountd 请求服务器端进程mountd,进行挂载。
6.挂载完毕后,客户端使用进程rpciod 调用服务端的nfs进程,进行磁盘io操作。
7.两端都调用nlockmgr锁机制,当服务器端在编写文档时,禁止客户端的访问。
8. 为了维持连接,两端都使用status进程。
linux主机服务器端配置:
[root@lyt ~]# rpm -qa |grep nfs #查看nfs的服务是否安装
[root@lyt ~]# rpm -ql nfs-utils |less #分页查看nfs-utils软件包
[root@lyt ~]# rpcinfo –p #查看本地rpc进程
[root@lyt ~]# rpcinfo -p 192.168.101.36 #查看192.168.101.36的rpc进程
[root@lyt ~]# service nfs start #启动nfs服务
[root@lyt ~]# chkconfig nfs on #设置开机自动启动
[root@lyt ~]# mkdir /public #创建一个目录public
[root@lyt ~]# vim /etc/exports #编辑共享清单exports,该文件默认是空文件
[root@lyt ~]# cd /public/
[root@lyt public]# touch p1 #创建一个文件p1,用户在客户端上的测试
[root@lyt ~]# exportfs –rv #将设置共享的文件导出
linux主机客户端配置临时挂载:
[root@localhost ~]# rpcinfo –p #查看本地rpc进程
[root@localhost ~]# showmount -e 192.168.101.66 #测试是否具有权限查看192.168.101.66服务器上的共享文件
[root@localhost ~]# mkdir /mnt/nfs #创建一个挂载点nfs
[root@localhost ~]# mount 192.168.101.66:/public /mnt/nfs/ #将服务器上的共享文件临时挂载到本地的挂载点/mnt/nfs上
[root@localhost ~]# cd /mnt/nfs/ #切换到挂载点
linux主机客户端配置开机自动挂载:
[root@localhost nfs]# fuser -km /mnt/nfs/ #强制卸载,执行完后,再次使用umount /mnt/nfs进行卸载
[root@localhost nfs]# umount /mnt/nfs/ #如果还是不能卸载则可以重启系统即可
[root@localhost nfs]# vim /etc/fstab #编辑开机自动挂载文件
[root@localhost nfs]# mount -a
linux主机客户端配置连接自动挂载:
[root@localhost nfs]# umount /mnt/nfs/ #将上一步骤中的开机自动挂载卸载掉
[root@localhost nfs]# rpm -qa |grep auto #查看与自动挂载相关的软件包auto
[root@localhost nfs]# vim /etc/auto.master #编辑与自动挂载相关的配置文件
[root@localhost nfs]# cp -p /etc/auto.misc /etc/auto.nfs #产生auto.nfs文件
[root@localhost nfs]# vim /etc/auto.nfs #编辑该文件
[root@localhost nfs]# service autofs restart #重启autofs服务
[root@localhost nfs]# mount #查看挂载的目录
[root@localhost nfs]# cd server1 #其实在/mnt/nfs下并没有server1目录,强制切换到server1中后,会自动产生该目录,此时已经将服务器上的
共享文件挂载到了客户端
[root@localhost server1]# mount #使用mount查看是否挂载成功
[root@localhost server1]# cd #离开server1目录
[root@localhost ~]# mount #离开一份分钟后再次查看挂载情况,此时server1目录也不存在了