NFS文件共享服务器

NFS文件共享服务器

NFS是network file sytem的缩写,他最大的特点就是可以通过网络,让不同的机器,不同的系统实现 文件共享。NFS客户端可以将NFS服务器共享的目录挂载在本地的文件系统中,访问目录就如同访问自 己本地目录一样。

NFS工作原理:

在这里插入图片描述

  • 首先NFS服务器端开启rpcbind;
  • 然后服务端开启NFS服务,这时NFS的各项功能都需要向RPC服务注册,这时rpc会通知portmap 模块将可用的端口分配给statd,rquotad等;
  • 然后NFS客户端RPC服务就会通过网络向NFS服务端的RPC服务的111端口发出NFS文件存取功能的 询问请求。
  • NFS服务端的RPC服务找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务。
  • 此时NFS客户端就可获取到nfs服务端各个进程的正确端口,然后通过客户端rpc就直接与NFS服务 器的rpc进行存取数据了(rpc知道了nfs的具体端口,就可以实现远程调用,即传输)。

NFS安装部署:

1、服务器和客户端都关闭防火墙,装好nfs服务组件:

  • nfs服务端:192.168.2.10
  • nfs客户端:192.168.2.20

1.1、关闭防火墙:

systemctl stop firewalld && systemctl disable firewalld 

1.2、临时关闭selinux

selinux: setenforce 0 

1.3、永久关闭selinux

[root@bogon sxy]# vim /etc/selinux/config
....
SELINUX=disabled
......

1.4、安装nfs服务组件:

yum -y intall nfs-utils

配置服务端

1、创建共享目录

[root@bogon sxy]# mkdir /data/ys  -p

2、编辑/etc/exports文件

[root@bogon sxy]# vim /etc/exports
/data/ys        192.168.2.0/24(rw,sync)
格式:
- /data/jfedu        要共享的目录,需要存在 
- 192.168.75.0/24   谁能挂载使用,可以是网段,也可以指定具体ip 
- (rw,sync)         挂载的一些参数,rw表示挂载为可读可写,sync表示同步

3、导出(广播)编辑的文件,并重启rpc和nfs服务

[root@bogon sxy]# systemctl restart rpcbind  ---重启rpcbind服务
[root@bogon sxy]# systemctl restart nfs		  ---重启nfs服务
[root@bogon sxy]# exportfs -r  ----刷新配置立即生效

查看 RPC 服务的注册状况

[root@bogon sxy]# rpcinfo -p localhost

 program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  55278  status
    100024    1   tcp  44340  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  58414  nlockmgr
    100021    3   udp  58414  nlockmgr
    100021    4   udp  58414  nlockmgr
    100021    1   tcp  43373  nlockmgr
    100021    3   tcp  43373  nlockmgr
    100021    4   tcp  43373  nlockmgr
  • 选项与参数:
    -p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;
    -t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;
    -u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;

配置客户端

1、安装nfs-utils

[root@bogon ~]# yum -y install nfs-utils.x86_64

2、搜索网络中可用的共享文件

[root@bogon ~]# showmount -e 192.168.2.10
Export list for 192.168.2.10:
/data/ys 192.168.2.0/24

3、创建挂载目录

[root@bogon ~]# mkdir -p /data/nfs

4、挂载

[root@bogon ~]# mount -t nfs   192.168.2.10:/data/ys  /data/nfs/
[root@bogon ~]# df -hT /data/nfs/
Filesystem            Type  Size  Used Avail Use% Mounted on
192.168.2.10:/data/ys nfs4   20G  1.7G   18G   9% /data/nfs
推荐使用: 
mount -t nfs -o soft,timeo=1   192.168.2.10:/data/ys  /data/nfs
soft:  软挂载,遇到报错会终止挂载,并返回信息,默认是硬挂载,一直尝试挂载。
timeo:  超时时间,如果不设置,一直链接,可以设置小点
  • 挂载完成之后,进入目录,可能会发现无法对目录中的文件进行修改。

这主要是因为客户端访问服务器时,身份被压缩成nobody,相对服务器文件系统来说,就是其他用 户。所以要想编辑,需要在服务端对文件授权或者更改exports文件,no_root_squash(不压缩客 户端root身份)。

5、解读exports文件

[root@bogon sxy]# exportfs -v
/data/ys    192.168.2.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

其中:

  • rw:可读可写
  • ro:仅可读
  • sync:是指数据同步写入内存和磁盘
  • root_squash:如果客户端用root身份访问,则被压缩成nobody,权限也将受到限制。
  • no_root_squash:也就是不压缩,客户端使用root身份登录,全有所有权限,很危险。
  • all_squash:不管访问者是什么身份,包括root,全部压缩至匿名用户。
  • no_all_squash:保留访问用户的身份uid以及gid,一般只能查看,不能修改,权限问题,但是可以强制保 存。

深入理解NFS:

  • NFS并不是单独存在的,而是由NFS-server,RPC,PORTMAP这三个模块组成。
  • NFS-server只负责将数据通过以文件系统的方式共享出去,并进行登录管理和权限管理,并不负责数据 的传输,而数据的传输则有RPC来完成。
  • NFS客户端要想访问NFS服务器,就必须要知道对方的ip和端口,但是NFS服务除了启动nfsd本身监听 的端口2049/tcp和2049/udp,还会启动其它进程(如statd,rquotad等)以完成文件共享,这些进程 的端口是由PORTMAP随机分配的(每次NFS服务启动时向RPC服务注册,RPC服务会通知PORTMAP分 配剩余可用的端口)。所以NFS客户端是很难直接与NFS服务器通信的。
  • 不难想出,NFS的工作流程是,NFS客户端rpc服务就会通过网络向NFS服务端的rpc服务的111端口发出 NFS文件存取功能的询问请求,RPC服务获得请求,然后将NFS服务的各个进程端口号返给客户端的rpc 请求,客户端的rpc再拿着这些进程端口与服务端的rpc通信,进行数据传输。

RPC知识拓展:

  • RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程 序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或 UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。
  • RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客 户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持 睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信 息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继 续进行。

nfs自动挂载技术

1、自动挂载原理

  • autofs服务程序与mount命令不同之处在于它是一种守护进程,只有检测到用户试图访问一个尚未挂载 的文件系统时才自动的检测并挂载该文件系统。
  • autofs非常方便,主要有两点:
    1、设置不需要在开机就挂载的目录,当用的时候才实现自动挂载。
    2、用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟),可以在autofs.conf修改配 置。

2、自动挂载配置

2.1、在客户端安装autofs:

[root@bogon wo]# yum -y install autofs.x86_64

2.2、编辑/etc/auto.master

[root@bogon ~]# vim /etc/auto.master
/data/nfs       /etc/nfs.misc

2.3、编辑/etc/nfs.misc

[root@bogon ~]# vim /etc/nfs.misc
sxy		-fstype=nfs,rw,sync	192.168.2.10:/data/ys
  • ps:这里要注意/data/jfedu是nfs服务器的共享的目录,但是是在客户端编辑。 所以nfs服务端的exportfs文件中的权限会影响这级的权限。
  • 如果nfs服务端exportfs,设置的权限为ro,那么即使这里写rw,也是不可写的。 如果nfs服务端exportfs,设置的权限为rw,那么可以在这级设置rw或者ro。

启动autofs服务

[root@bogon ~]# systemctl start autofs.service

登录到目录访问:

  • 访问目录便可实现自动挂载
[root@bogon ~]# cd /data/nfs/sxy
[root@bogon sxy]# ls
wo

NFs常用命令

nfsstat :
-m, --mounts 显示已经挂载的nfs文件系统的详细参数
-c, --client 显示NFS客户端的统计信息
-s, --server 显示NFS服务器端的统计信息
-2 显示nfsv2的统计信息
-3 显示nfsv3的统计信息
-4 显示nfsv4的统计信息
-o [facility] 显示指定类型的统计信息
nfs NFS协议信息
rpc 一般RPC信息
net 网络统计信息
all 显示以上所有信息

rpcinfo :
-p 显示注册的端口
-m 显示 rpcbind 操作的统计信息表
-s 显示所有已注册的 RPC 程序的简明列表
-T 显示有关使用特定传输或协议的服务的信息
-t 探测使用 TCP 的 RPC 程序
-u 探测使用 UDP 的 RPC 程序
exportfs :
-r 重新共享目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值