NFS配置选项
- rw 读写
- ro 只读
- sync 同步模式,内存数据实时写入磁盘,相应的就会下降磁盘效率
- async 非同步模式,它会每隔一段时间才会将数据刷新到磁盘
- 优点:可以保证磁盘的效率
- 劣势:万一断电,就会有可能丢失一部门数据
- no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
- NFS,要想在客户端上去使用服务端上共享的目录,须要去把它挂载到客户端上的一个挂载点,那就跟本地上的目录是同样的,在操做本地的目录时候,确定会有一些权限设置,若是加上no_root_squash,这样root用户去共享目录下读写文件的时候,就不会受到限制(就至关于root用户在本地上读写)
- root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
- all_squash 客户端上全部用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
- anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端上挂载
- 首先在客户端B机器上安装了rpcbind,它是由nfs-utils 这个包自动安装的
yum install -y nfs-utils
- 在B机器上安装完成后不须要启动任何服务
- 在B机器上执行 showmount -e 命令
- showmount -e 192.168.74.129 //查看在NFS服务端是否有权限
[root@hf-02 ~]# showmount -e 192.168.74.129
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
[root@hf-02 ~]#
- 这时候会看到报错了,RPC: Port mapper failure说明网络不通,没法与192.168.74.129端口通讯
- 不能通讯的两种状况
- 要么是对方没有开启rpcbind的服务,没有监听111端口
- 要么是防火墙致使的缘由
- 由于以前在服务端已经开启了rpcbind服务,那这时只能说明是防火墙致使的,因此要想让NFS实现正常的通讯,还须要把防火墙关闭,由于NFS服务比较特殊,虽然rpc能够通讯,就算iptables把111端口放行但NFS也不必定能正常通讯,由于它们使用了一个不固定的端口
- 这时先把A机器服务端和B机器客户端,防火墙关闭,命令systemctl stop firewalld
A机器关闭防火墙
[root@hf-01 ~]# systemctl stop firewalld
[root@hf-01 ~]# getenforce
Disabled
[root@hf-01 ~]#
B机器关闭防火墙
[root@hf-02 ~]# systemctl stop firewalld
[root@hf-02 ~]#
[root@hf-02 ~]# getenforce
Enforcing
[root@hf-02 ~]# setenforce 0
[root@hf-02 ~]# getenforce
Permissive
[root@hf-02 ~]#
- 这时再去B机器客户端来showmount -e 192.168.74.129 ,这时会看到能够能show到远程服务端192.168.74.129这台机器,它共享的目录是/home/nfstestdir
[root@hf-02 ~]# showmount -e 192.168.202.130
Export list for 192.168.74.129:
/home/nfstestdir 192.168.74.0/24
[root@hf-02 ~]#
- 这时候在B机器客户端上来挂载了,而后查看——>挂载的时间可能有点慢
[root@hf-02 ~]# mount -t nfs 192.168.74.129:/home/nfstestdir /mnt/
[root@hf-02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 873M 17G 5% /
devtmpfs 489M 0 489M 0% /dev
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 494M 13M 481M 3% /run
tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/sda1 197M 75M 122M 39% /boot
192.168.74.129:/home/nfstestdir 18G 7.4G 11G 42% /mnt
[root@hf-02 ~]#
- 这个就是远程NFS服务端共享的目录
- 这时到B机器客户端共享的目录下建立文件
[root@hf-02 ~]# cd /mnt/
[root@hf-02 mnt]# ls
[root@hf-02 mnt]# touch aminglinux.111
[root@hf-02 mnt]# ls -l
总用量 0
-rw-r--r--. 1 1000 1000 0 8月 24 00:34 aminglinux.111
[root@hf-02 mnt]#
- 到A机器的服务端查看,能够看到文件的属主和属组都为1000
[root@hf-01 ~]# ls -l /home/nfstestdir/
总用量 0
-rw-r--r-- 1 mysql mysql 0 8月 24 00:34 aminglinux.111
[root@hf-01 ~]#
- 缘由是配置 /etc/export 文件时,配置了anonuid=1000,anongid=1000
- 客户端显示 1000 用户 是由于客户端机器上并无1000权限的用户
- 一样,服务端显示mysql,是由于服务端上的机器mysql 就是1000权限的用户
总结
- 在/etc/exports文件中的/home/nfstestdir 192.168.74.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) ,其中ip与(rw之间不能有空格, 不然客户端挂载的目录会变成只读..