博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NFS 网络文件系统测试笔记
阅读量:6329 次
发布时间:2019-06-22

本文共 3527 字,大约阅读时间需要 11 分钟。

  NFS(Network Files System),网络文件系统是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法。它是一种文件系统协议:支持应用程序在客户端通过网络存取位于服务器磁盘中的数据。NFS的基本原则是让不同的客户端及服务器通过一组RPCs共享相同的文件系统,它独立于操作系统,允许不同硬件及操作系统的系统共同进行文件的共享。

  虽然NFS可以在网络中进行文件共享,但NFS在设计时并没有提供数据传输的功能。需要借助RPC(Remote Procedure Calls,远程过程调用)。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。
当一个RPC连接建立开始阶段,客户端建立过程调用,将调用参数发送到远程服务器进程,并等待相应。请求到达时,服务器通过客户端请求的服务,调用指定的程序。并将结果返回客户端。当RPC调用结束,客户端程序将继续进行下一步的通信操作。
NFS依赖RPC与外部通信,为保证NFS服务正常工作,其需要在RPC注册相应的服务端口信息,这样客户端向服务器的RPC提交访问某个服务的请求时,服务器才能够正确作出相应。
  注册NFS服务时,需要先开启RPC,才能保证NFS注册成功。并且如果RPC服务重新启动,其保存的信息将丢失,需重新启动NFS服务以注册端口信息,否则客户端将无法访问NFS服务器。

NFS服务使用端口:2049此外还使用以下RPC服务的随机端口:RPC使用端口111:远程进程调用rpc.lock:随机端口rpc.mount:随机端口rpc.stat:随机端口

不同的功能nfs.server使用不同模块,模块的端口不固定

客户端连接到nfs服务器都向rpc服务来请求端口,rpc为nfs模块分配端口
rpc 远程进程调用(rpc端口tcp 111)
客户端先连接到nfs的2049,但是不能正常工作,nfs还要连接相应的模块,才可以正常工作。

安装NFS软件包:

# yum install nfs-utils  该软件包默认已安装

防火墙如何开启不固定端口?

systemctl restart nfsrpcinfo -p 192.168.100.1 #查看rpc注册的端口rpcinfo -p localhost #查看本地rpc注册的端口

再次重启nfs,发现rpc端口发生变化

如何固定rpc端口?

vim /etc/sysconfig/nfsLOCKD_TCPPORT=30000 #修改LOCKD_UDPPORT=30000 #修改systemctl restart nfs

防火墙规则需要允许所有相关服务和端口

netstat -antulp | grep -i rpcfirewall-cmd --permanent --add-port=20048/tcpfirewall-cmd --permanent --add-port=20048/udpfirewall-cmd --permanent --add-port=2049/tcpfirewall-cmd --permanent --add-port=2049/udpfirewall-cmd --permanent --add-port=30000/tcpfirewall-cmd --permanent --add-port=30000/udpfirewall-cmd --permanent --add-service=nfsfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --permanent --add-service=mountd #即20048端口,二者填一个即可firewall-cmd --reload

附加权限参数

参数 作用
ro 只读
rw 读写
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

RHEL7默认已安装NFS,所以在测试过程中不需要安装任何软件包,配置完成,启动即可。

[root@rhel1 ~]# rpm -qa | grep nfs-utilsnfs-utils-1.3.0-0.48.el7.x86_64[root@rhel1 ~]# rpm -qa | grep rpcbindrpcbind-0.2.0-42.el7.x86_64[root@rhel1 ~]#

实验1-普通挂载

在RHEL1上

vim /etc/sysconfig/nfsLOCKD_TCPPORT=30000 #修改LOCKD_UDPPORT=30000 #修改systemctl restart nfs#添加防火墙策略firewall-cmd --permanent --add-port=20048/tcpfirewall-cmd --permanent --add-port=20048/udpfirewall-cmd --permanent --add-port=2049/tcpfirewall-cmd --permanent --add-port=2049/udpfirewall-cmd --permanent --add-port=30000/tcpfirewall-cmd --permanent --add-port=30000/udpfirewall-cmd --permanent --add-service=nfsfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --permanent --add-service=mountd #即20048端口,都可以生效firewall-cmd --reload#创建需要共享出去的测试目录及文件mkdir /share1mkdir /share2touch /share1/file{
1..99)touch /share2/file{
100..199}#修改exports配置文件vim /etc/exports/share1 192.168.100.0/24(ro)/share2 192.168.100.0/24(ro)systemctl restart nfs

NFS的安装配置很简单,总的来说,包括以下几步:

1、安装(在RHEL7上默认已安装)

2、添加防火墙策略

3、创建共享目录,并修改exports配置文件,指定共享权限

在RHEL2上

showmount -e 192.168.100.1  --查看RHEL1上共享出来哪些目录mkdir /mnt/nfs1mkdir /mnt/nfs2mount 192.168.100.1:/share1 /mnt/nfs1   --挂载目录到本地mount 192.168.100.1:/share2 /mnt/nfs2ll /mnt/nfs1ll /mnt/nfs2

实验2-fstab开机挂载

vim /etc/fstab192.168.100.1:/share1 /mnt/nfs1 nfs defaults 0 0mount -all /mnt/nfs1

实验3-autofs自动挂载

yum install -y autofsvim /etc/auto.master/mnt/nfs2 /etc/auto.nfs2 --timeout=30 #增加cp /etc/auto.misc /etc/auto.nfs2vim /etc/auto.nfs2nfs2 -fstype=nfs,ro 192.168.100.1:/share2 #增加systemctl restart autofsll /mnt/nfs2 #发现什么都没有cd /mnt/nfs2cd nfs2ll #发现自动挂载,退出目录后30秒自动卸载

 

转载于:https://www.cnblogs.com/rusking/p/7630721.html

你可能感兴趣的文章
聊聊sentinel的DataSource
查看>>
Maven的聚合模块和继承
查看>>
ELK的心脏,ElasticSearch学习方法论
查看>>
认识微服务
查看>>
Python3入门与实践(四): 面向对象
查看>>
OpenCV 入门
查看>>
Node中异步和同步的实现
查看>>
理解Underscore中的flatten函数
查看>>
强制类型转换——宽松相等和严格相等
查看>>
JavaScript 骚操作
查看>>
升级 Docker 中的 gitlab 服务
查看>>
构建无障碍 React Native 应用
查看>>
Flutter常用Widget详解(二)
查看>>
JavaSE基础:数组
查看>>
MarkDown自动生成目录(文章开头或者侧边目录)
查看>>
RxSwift 之 Observable
查看>>
互联网广告的背后是什么(3):今日头条DSP的基本信息和主要特点
查看>>
vimium
查看>>
我们的GIT工作流
查看>>
原型继承(翻译 vjeux 文章)
查看>>