NFS是Network File System的缩写,即网络文件系统。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。

一、nfs为什么需要RPC?

因为NFS支持的功能很多,不同功能会使用不同程序来启动,因此,NFS对应的功能所对应的端口无法固定。

端口不固定造成客户端与服务端之间的通信障碍,所以需要RPC来从中帮忙。

NFS启动时会随机取用若干端口,然后主动向RPC服务注册取用相关端口和功能信息,RPC使用固定端口111来监听来自NFS客户端的请求,

并将正确的NFS服务端口信息返回给客户端,这样客户端与服务端就可以进行数据传输了。

二、NFS的工作流程

1、由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。

2、NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。

3、客户端获取正确的端口,并与NFS daemon联机存取数据。

4、存取数据成功后,返回前端访问程序,完成一次存取操作。

所以无论客户端,服务端,需要使用NFS,必须安装RPC服务。

NFS的RPC服务,在Centos5下名为portmap,Centos6下名称为rpcbind。

三、安装配置

1、首先关闭centos7上的firewalld防火墙和iptables防火墙,让其开机不能自启,等安装完毕后可以打开相应的防火墙。

2、安装。

1
yum install -y  nfs-utils rpcbind

3、安装完成后后首先启动,首先启动,首先启动rpcbind服务。

1
systemctl restart rpcbind.service

4、配置nfs配置文件(默认是空的)

首先我们应该建立一个数据文件夹,例如data文件夹也可以是单独的一个块硬盘风趣,都可以。

#mkdir data

#vim /etc/exports

1
/data   192.168.1.0/24(rw,no_root_squash,sync,fsid=0)

  

注:添加no_root_squash参数,表明此时客户端root用户的身份等同于NFS server上面的root用户,否则客户端只能同步到服务器的数据,无建立文件或文件夹等权限。

启动nfs

1
systemctl start nfs.service

  

客户端操作:

同样为了搭建顺利,可先关闭iptables和selinux、firewall。客户端只需要安装rpcbind服务即可,无需安装nfs或开启nfs服务。

#yum install -y rpcbind

#systemctl start rpcbind.service

在客户端建立文件夹,准备挂在nfs。

#cd /root

#mkdir nfstest

挂载

#mount -t nfs 192.168.1.238:/data nfstest

如果需要卸载的话,mount变成umount就行。

如下正常操作没有问题。

如上所示,这样的话在服务器或者在客户端写入对方都会发生变化。

注意:

服务器端:

1、先启动rpcbind,再启动nfs服务

2、如果配置文件发生变化可以使用exportfs -rv重新加载配置无需重启服务。

3、查看rpc服务器是否启动成功rpcinfo -p、netstat -anpt|grep rpc

4、查看共享目录是否存在showmount -e 192.168.1.238

5、如果开iptables防火墙的话可以使用rpcinfo -p命令查看都需要允许哪些端口。

客户端:

错误1,:Stale NFS file handle的解决方法

1、首先用umount卸载当前目录,如果卸载不了使用umount -f /root/nfstest强制卸载,然后再重新挂载即可。

错误2:touch: cannot touch ‘test2’: Permission denied nfs

1、这个是提醒你客户端挂载的nfs服务器的目录没有权限,你在nfs客户端给权限没用,要不就给nfs服务器目录777权限,这样显得啥,要不就配置文件里面如上加上no_root_squash参数。

注:当开启防火墙时,需要把rpcinfo -p查看到的端口都添加到防火墙规则中,否则会出现报错。

转载:https://www.cnblogs.com/lei0213/p/8570785.html

最新文章

  1. 如何部署Icinga服务端
  2. javascript(js)小数精度丢失的解决方案
  3. 软件工程-pair work
  4. osg 路径 动画 效果
  5. fedora Server 21 安装 Opera 29.0.1795.47
  6. 20150625_Andriod_01_ListView1_条目选中
  7. C线程同步/异步
  8. CSS优先级算法是如何计算?
  9. 【移动开发】安卓Lab2(01)
  10. SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
  11. Log4Net五步走
  12. Eclipse去除网上复制下来的来代码带有的行号
  13. 20172328 2018-2019《Java软件结构与数据结构》第四周学习总结
  14. 【Mac】-NO.161.Mac.1 -【MacOS Error running 'Tomcat 8.5.371': Cannot run program Permission denied】
  15. 潭州课堂25班:Ph201805201 django 项目 第二十五课 文章多级评论前后台实现 (课堂笔记)
  16. scala模式匹配及样本类
  17. 分布式计算课程补充笔记 part 2
  18. java 手动实现远程执行功能(深入理解java虚拟机)
  19. ffmpeg命令: 删除视频中不需要的音频流
  20. Spring3.x 版本和 JDK1.8 不兼容导致 java.lang.IllegalStateException: Failed to load ApplicationContext

热门文章

  1. Unity WebGL WebSocket
  2. 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
  3. 跨平台C# UI库
  4. ASP.NET Uploadify 上传文件过大 报错(http error)借鉴,以防忘记
  5. iptables实用知识 ,一文学会配置linux防火墙
  6. ElasticSearch7.6.1 安装及其head插件安装
  7. basicInterpreter1.02 增加对for循环的支持
  8. CSS特效(一)
  9. 《Head First 设计模式》:组合模式
  10. 安装paddle的问题,报错Can not find library: libcudnn.so. The process maybe hang.