NFS服务搭建与配置


NFS介绍

NFS服务需要借助RPC协议实现通信

NFSNetworkFileSystem的缩写

1.NFS最早由Sun公司开发,分234三个版本,23Sun起草开发,40开始Netapp公司与并主导开发,最新为41版本

2.NFS数据传输基于RPC协议,RPCRemoteProcedureCall的简写。

3.NFS应用场景是:ABC三台机器上需要保证被访问到的文件是一样的,A共享数据出来,BC分别去挂载A共享的数据目录,从而BC访问到的数据和A上的一致

NFS架构

NFS服务搭建与配置_第1张图片

NFS原理图

rpcbind监听的是111端口

NFS服务搭建与配置_第2张图片


NFS服务端安装配置

首先要准备两台机器,一个作为它的服务端AAA-01一个作为他的客户端BBB-01。

第一步,在客户端和服务端上安装两个包:yum install -y nfs-utils rpcbind 

第二步,在服务端AAA-01编辑配置文件:vim /etc/exports //加入如下内容: 

/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

/home/nfstestdir 意思是你要分享出去的目录,这个目录是不存在的,你需要创建它;

192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)意思是指定你要跟哪台机器去分享共享这个目录他的IP段,小括号里边的选项下边有解释。

image.png

保存配置文件后,执行如下准备操作 

创建目录:mkdir /home/nfstestdir 

更改目录权限:chmod 777 /home/nfstestdir

查看一下监听端口:netstat -lntp 你会发现rpcbind(111)端口已经启动了

NFS服务搭建与配置_第3张图片

启动rpcbind端口:systemctl start rpcbind 一般安装完之后他自动就会起来

启动NFS服务:systemctl start nfs

查看一下:ps aux |grep nfs

NFS服务搭建与配置_第4张图片

rpcbind开机自启:systemctl enable rpcbind 取消:systemctl disable rpcbind 

nfs开机自启命令:systemctl enable nfs 取消:systemctl disable rpcbind 


客户端挂载BBB-01

yum install -y nfs-utils

假如有一台机器他做了nfs的服务,我想查看我到底有没有权限,用命令:

showmount -e 192.168.133.130 //该ip为NFS服务端ip,

他报错了,意思是网络不通。这时候你要排查,基本上有两种原因,一是服务端没有监听111端口,二是两边的防火墙没有关闭

image.png

查看他监听着111端口,很显然他是因为防火墙的原因

image.png

关闭客户端、服务端两端的防火墙:systemctl stop firewalld  关闭两端的selinxu:setenforce 0

做完以上操作后在:showmount -e 192.168.133.130 这时就能看到他共享的目录是home,后边是共享给那些机器他的IP段

image.png

现在就可以挂载了,-t指定类型是nfs,然后是远程的IP以及共享的目录,挂载到mnt目录下

mount -t nfs 192.168.133.130:/home/nfstestdir /mnt

查看一下:df -h

NFS服务搭建与配置_第5张图片

进到这个目录下:cd /mnt/

去创建一个文件:touch /mnt/aminglinux.111

ls -l /mnt/aminglinux.111 //可以看到文件的属主和属组都为1000

NFS服务搭建与配置_第6张图片

你可以看看服务端,他的id也是100,这是因为你限定了用户

NFS服务搭建与配置_第7张图片

NFS服务搭建与配置_第8张图片


NFS挂载选项

1.rw写

2.ro只读

3.sync同步模式,内存数据实时写入磁盘;他能很快的写入到磁盘里去,相应的她会降低磁盘的效率

4.async非同步模式,每隔一段时间写一次数据;好处是能提高磁盘的效率,缺点万一断电会丢失一部分数据

5.noroot-squash客户端挂载NFS共享目录后,root用户不受约束,权限很大

6.root-squash与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

7.all-squash客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

8.anonuid/anongid和上面几个选项搭配使用,定义被限定用户的uid和gid


exportfs命令

常用选项 

-a 全部挂载或者全部卸载

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

以下操作在服务端上

先挂载mut目录,这种情况两种解决办法:一是退出来在umount,二是umount -l /mut -l懒汉模式

image.png

exportfs -arv //不用重启nfs服务,配置文件就会生效

image.png

测试一下:

编辑配置文件:vim /etc/exports //增加

/tmp/ 192.168.65.136/24(rw,sync,no_root_squash)把tmp单独共享给一个IP,不再限制root用户

image.png

exportfs -arv //不用重启nfs服务,配置文件就会生效

image.png

在客户端上测试下,并没有重启nfs服务他也生效了

NFS服务搭建与配置_第9张图片


NFS客户端问题

客户端文件属主属组nobody,NFS 4版本会有该问题

问题1.客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody

解决办法1:客户端挂载时加上-o nfsvers=3

NFS服务搭建与配置_第10张图片

客户端和服务端都需要

解决方法2:编辑配置文件Vim /etc/idmapd.conf

把"#Domain=local.domain.edu"改为"Domain=xxx.com"(这里的xxx.com,随意定义吧),然后再重rpcidmapd服务没有这个服务启动rpcbind服务就行