十四周一次课(3月26日)

14.1 NFS介绍

14.2 NFS服务端安装配置

14.3 NFS配置选项

14.1 NFS介绍

NFS是Network File System的缩写

NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本

NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。

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

2018.3.26 14周1次课_学习

2018.3.26 14周1次课_学习_02

NFS服务不监听端口,监听端口实现tcp/ip通讯服务的是RPC服务,,默认监听111端口。总之,NFS服务要借助RPC协议来进行通讯。

14.2 NFS服务端安装配置

在centos上是使用NFS服务需要安装两个包(nfs-utils和rpcbind),不过当使用yum工具安装nfs-utils时会一并安装rpcbind

在服务端192.168.37.101上安装nfs-utils:yum install -y nfs-utils

安装完nfs-utils包后,会自动打开监听111端口

2018.3.26 14周1次课_Linux_03

服务端设置:

编辑vim /etc/exports加入如下内容

/home/nfstestdir 192.168.37.0/24(rw,sync,all_squash,anonuid=1002,anongid=1002)

共分为三部分:

  • 本地要共享出去的目录:/home/nfstestdir

  • 允许访问的主机(可以时一个ip,可以是一个ip段):192.168.37.0/24

  • 小括号里面的是一些权限选项

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

mkdir /home/nfstestdir //创建nfstestdir共享目录

chmod 777 /home/nfstestdir //更改权限为777

systemctl start rpcbind //开启rpcbind服务

2018.3.26 14周1次课_Linux_04

systemctl start nfs //开启nfs 服务,会自动启动跟rpc相关的服务,这些服务都是跟nfs相关联的。跟上图相比,多了几个rpc的服务

2018.3.26 14周1次课_学习_05

2018.3.26 14周1次课_Linux_06

systemctl enable rpcbind //开机启动rpcbind

systemctl enable nfs //开机启动nfs

14.3 NFS配置选项

  • rw 读写

  • ro 只读

  • sync 同步模式,内存数据实时写入磁盘

  • async 非同步模式

  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大

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

  • all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

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

客户端挂载nfs

在客户端192.168.37.100上安装nfs-utils:yum install -y nfs-utils

在客户端挂载nfs之前,我们需要先查看服务端共享了哪些目录,可以用showmount命令查看

showmount -e 192.168.37.101 //该ip为NFS服务端ip

2018.3.26 14周1次课_Linux_07

报错,说明防火墙没有开启相应需要开启的端口,就算把111端口开启也没有用,要把服务端和客户端的防火墙都关掉

systemctl stop firewalld

getenforce

setenforce 0

2018.3.26 14周1次课_学习_08

可以看到192.168.37.101的共享目录为/home/nfstestdir,信任主机为192.168.37.0/24这个网段

也可以不关闭防火墙,在服务端可开启如下命令列出的所有端口即可

rpcinfo -p localhost

2018.3.26 14周1次课_Linux_09

NFS v4内置远程挂装和文件锁定等协议支持,因此NFS v4不再需要与rpcbind、rpc.mount、rpc.statd和lockd互动。

但是,当NFS服务器使用exports命令时仍然需要rpc.mount守护进程,但不参与跨越线的操作。NFS v4的NFS服务

仍然监听tcp:2049端口。

NFS服务与防火墙

对于v4服务,仅开启对tcp:2049端口即可

firewall-cmd --add-service=nfs --permanent

firewall-cmd -reload

对于v3服务除了rpcbind、rpc.mount、rpc.nfsd之外,其与NFS相关的基于RPC的服务每次启动是其他端口号会随机

生成这为服务器配置防火墙的NFS规则带来困难,这就要设置/etc/sysconfig/nfs文件中的端口号,使强制NFS服务使用

固定端口

最后在配置防火墙

客户端挂载nfs

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

df -h

2018.3.26 14周1次课_Linux_10

touch /mnt/aminglinux.txt //创建文件

ls -l /mnt/ //查看文件信息,属主和属组都是mysql,客户端是挂载服务端的/home/nfstestdir,所以其中uid和gid都是在服务端/etc/exports里设置的/home/nfstestdir/目录的权限:uid和gid都是1002,客户端机1002是mysql

2018.3.26 14周1次课_Linux_11

2018.3.26 14周1次课_学习_12

ls -l /home/nfstestdir/ //在服务端查看共享目录,用户和属组都是aming,其中uid和gid都是在/etc/exports里设置的/home/nfstestdir/目录的权限:uid和gid都是1002,服务端机1002是aming

2018.3.26 14周1次课_学习_13

2018.3.26 14周1次课_学习_14

通过客户端ls -l /mnt/ 和服务端ls -l /home/nfstestdir/命令里看到的aminglinux.txt是同一文件