NFS服务器课堂笔记

NFS服务器课堂笔记

NFS服务端概述:

NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

简而言之。他的最大功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。

NFS的挂载原理如图所示:
1

如上图示:

当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。

既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

RPC与NFS如何通讯:

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

提示:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs reload或exportfs –rv即可使修改的/etc/exports生效。

NFS客户端和NFS服务端通讯过程:

2

部署与配置

版权声明:这段为CSDN博主「元芳很忙」的原创文章,遵循CC 4.0 BY-SA版权协议。
原文链接:https://blog.csdn.net/lkolkolkol/article/details/104547728

1、NFS服务器
(1)安装:
①yum install -y nfs-utils
②yum install -y rpcbind
(2)配置:
①创建共享目录:
1)mkdir /public
2)chmod 777 /public
②修改配置文件:
1)vim /etc/exports
2)/public 192.168.11.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
(3)配置选项**

ro :Read-only表示只能读权限

rw : 表示可读写

root_squash :对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。

no_root_squash :访问nfs server共享目录的用户如果是root的话,它对该目录具有root权。这个配置原本为无盘用户准备的。用户应避免使用!

all_squash :不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用可以确保大家写入的数据的权限是一样的。

但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以

anonuid : anonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534.

anongid :同anongid,就是把uid换成gid而已

sync :同时将数据写入到内存与硬盘当中,保证数据不会丢失

async :优先将数据保存到内存,然后再写入硬盘;缺点:效率高,但可能会丢失数据

2、客户端
(1)安装
①yum install -y nfs-utils rpcbind
(2)连接服务器:showmount -e 192.168.11.30
①-e:显示NFS服务器的共享列表
②-a:显示本机挂载的文件资源的情况NFS资源的情况
③-v:显示版本
(3)挂载:mount -t nfs 192.168.11.30:/public /mnt**

3、注意
(1)如果要服务端要关闭或重启NFS,需要先把客户端挂载服务端的目录先卸载
(2)由于服务端不能随意关闭或重启nfs,会导致客户端正在挂载的目录读写会出现问题。引入了exportfs命令,不许重启NFS服务,配置文件也会生效
(3)重新挂载:exportfs -arv
①-a 全部挂载或者全部卸载
②-r 重新挂载
③-u 卸载某一个目录
④-v 显示共享目录
(4)开机自动挂载:
①vim /etc/fstab
②192.168.11.30:/public /nfs nfs defaults 0 0**

4、端口设置
(1)静态端口
①TCP/UDP 111
②TCP/UDP 2049
(2)动态端口设置
vim /etc/sysconfig/nfs
#RQUOTAD_PORT=6005
LOCKD_TCPPORT=6004
LOCKD_UDPPORT=6004
MOUNTD_PORT=6002
#STATD_PORT=6003
#STATD_OUTGOING_PORT=6006 **

ORT=6004
LOCKD_UDPPORT=6004
MOUNTD_PORT=6002
#STATD_PORT=6003
#STATD_OUTGOING_PORT=6006 **

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值