十四周一次课(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上的一致
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端口
服务端设置:
编辑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服务
systemctl start nfs //开启nfs 服务,会自动启动跟rpc相关的服务,这些服务都是跟nfs相关联的。跟上图相比,多了几个rpc的服务
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
报错,说明防火墙没有开启相应需要开启的端口,就算把111端口开启也没有用,要把服务端和客户端的防火墙都关掉
systemctl stop firewalld
getenforce
setenforce 0
可以看到192.168.37.101的共享目录为/home/nfstestdir,信任主机为192.168.37.0/24这个网段
也可以不关闭防火墙,在服务端可开启如下命令列出的所有端口即可
rpcinfo -p localhost
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
touch /mnt/aminglinux.txt //创建文件
ls -l /mnt/ //查看文件信息,属主和属组都是mysql,客户端是挂载服务端的/home/nfstestdir,所以其中uid和gid都是在服务端/etc/exports里设置的/home/nfstestdir/目录的权限:uid和gid都是1002,客户端机1002是mysql
ls -l /home/nfstestdir/ //在服务端查看共享目录,用户和属组都是aming,其中uid和gid都是在/etc/exports里设置的/home/nfstestdir/目录的权限:uid和gid都是1002,服务端机1002是aming
通过客户端ls -l /mnt/ 和服务端ls -l /home/nfstestdir/命令里看到的aminglinux.txt是同一文件
原文地址:http://blog.51cto.com/415326/2091362