NFS服务搭建与配置
NFS介绍
NFS服务需要借助RPC协议实现通信
NFS是NetworkFileSystem的缩写
1.NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4,0开始Netapp公司与并主导开发,最新为4.1版本
2.NFS数据传输基于RPC协议,RPC为RemoteProcedureCall的简写。
3.NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
NFS架构
NFS原理图
rpcbind监听的是111端口
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段,小括号里边的选项下边有解释。
保存配置文件后,执行如下准备操作
创建目录:mkdir /home/nfstestdir
更改目录权限:chmod 777 /home/nfstestdir
查看一下监听端口:netstat -lntp 你会发现rpcbind(111)端口已经启动了
启动rpcbind端口:systemctl start rpcbind 一般安装完之后他自动就会起来
启动NFS服务:systemctl start nfs
查看一下:ps aux |grep nfs
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端口,二是两边的防火墙没有关闭
查看他监听着111端口,很显然他是因为防火墙的原因
关闭客户端、服务端两端的防火墙:systemctl stop firewalld 关闭两端的selinxu:setenforce 0
做完以上操作后在:showmount -e 192.168.133.130 这时就能看到他共享的目录是home,后边是共享给那些机器他的IP段
现在就可以挂载了,-t指定类型是nfs,然后是远程的IP以及共享的目录,挂载到mnt目录下
mount -t nfs 192.168.133.130:/home/nfstestdir /mnt
查看一下:df -h
进到这个目录下:cd /mnt/
去创建一个文件:touch /mnt/aminglinux.111
ls -l /mnt/aminglinux.111 //可以看到文件的属主和属组都为1000
你可以看看服务端,他的id也是100,这是因为你限定了用户
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懒汉模式
exportfs -arv //不用重启nfs服务,配置文件就会生效
测试一下:
编辑配置文件:vim /etc/exports //增加
/tmp/ 192.168.65.136/24(rw,sync,no_root_squash)把tmp单独共享给一个IP,不再限制root用户
exportfs -arv //不用重启nfs服务,配置文件就会生效
在客户端上测试下,并没有重启nfs服务他也生效了
NFS客户端问题
客户端文件属主属组nobody,NFS 4版本会有该问题
问题1.客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody
解决办法1:客户端挂载时加上-o nfsvers=3
客户端和服务端都需要
解决方法2:编辑配置文件Vim /etc/idmapd.conf
把"#Domain=local.domain.edu"改为"Domain=xxx.com"(这里的xxx.com,随意定义吧),然后再重rpcidmapd服务没有这个服务启动rpcbind服务就行