已整理完毕-nfs服务器配置与exports 配置文件详解

 

目录:

  1、NFS文件系统介绍与端口
  2、服务端安装软件包nfs-utils
  3、创建共享目录
  4、编辑exports配置文件
  5、启动服务
  6、/etc/exports 配置文件语法格式

  7、客户端挂载

   8、防火墙放行nfs服务端口

 

1、NFS文件系统介绍与端口

NFS-Network File System , 网络文件系统
-用途:为客户机提供共享使用的文件夹
-协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)

所需软件包:nfs-utils
系统服务:nfs-server

 

2、服务端安装软件包nfs-utils

# yum install nfs-utils

默认配置文件:

# ls /etc/exports

 

3、创建共享目录

# mkdir -p /data/public                #共享出public目录

# setfacl -m u:nfsnobody:rwx /data/public      #设置用户nfsnobody 对/data/public 的ACL 权限:rwx

 

4、编辑exports配置文件

# cat /etc/exports           #默认为空的
/data/public 10.10.0.0/24(rw)    #网段还可以用【*】,表示所有网段,rw 表只读写,ro 表示只读

 

5、启动服务

# systemctl start nfs-server.service 
# systemctl enable nfs-server.service

# showmount -e 10.10.17.161        #重启完后,可以查看nfs服务器共享了哪些目录
# exportfs -rv               #如果修改了/etc/exports 配置文件,此命令表示重读一遍/etc/exports,并生效

 

 

6、/etc/exports 配置文件语法格式
语法:
[共享的目录]    [主机名1或IP地址1(参数1,参数2)]      [主机名2或IP地址2(参数3,参数4)]

 

示例:

# cat /etc/exports
/data/public 10.10.0.0/16(rw,sync,insecure,all_squash,anonuid=1003,anongid=1003)

1)、授权网段或主机
a. 可以写网段:10.10.0.0/16
b. 可以写主机名:client.lab.com
c. 可以写域:*.lab.com
d. 可以所有,用【*】表示

2)、访问权限配置
ro    ->表示只读
rw    ->表示读写

3)、数据写入硬盘模式
async      ->异步写入,将数据先保存在内存缓冲区中,必要时才写入磁盘
sync      ->同步写入,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

4)、客户端使用的端口
insecure      ->允许客户端从大于1024的tcp/ip端口连接服务器;
secure      ->限制客户端只能从小于1024的tcp/ip端口连接服务器;

5)、账户映射
首先安装完:nfs-utils 包后,会自动添加用户:nfsnobody,可以查看文件:/etc/passwd

root_squash(默认)    ->如客户端登陆操作的是root用户,nfs服务器会将来访的root用户映射为匿名用户或用户组:nfsnobody ,如果是rw权限,就要求nfsnobody 对共享的目录有rw权限;
no_root_squash      ->来访的root用户保持root帐号权限;
all_squash        ->无论访问共享目录的用户身份如何,其权限将被镇压为匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份
no_all_squash(默认)    ->访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组: nfsnobody;

anonuid        ->匿名用户UID设置值,可自行设置,但必须在/etc/passwd中存在;在多台客户端共享一个nfs目录时,可通过此参数使得不同的客户端写入的数据保持相同的用户权限
anongid        ->匿名用户组

6)、其它参数
wdelay(默认)        -> 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay          ->若有写操作则立即执行,应与sync配合使用;
subtree_check(默认)    ->若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check      ->即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

 

7、客户端挂载

如果是写入/etc/fstab 配置文件:

# tail -1 /etc/fstab

10.10.17.161:/data/public  /opt/nfs   nfs   defaults,_netdev  0 0      #一定要加_netdev,表示延迟加载,等待网络服务OK后,再挂载

 

8、防火墙放行nfs服务端口

nfs通信是使用udp或tcp协议进行的,上面的nfs环境是建立在nfs服务器防火墙关闭的情况下的搭建,即需要已经放通相关的端口,一般线上环境要求较高,会开启防火墙并授权一些策略来控制访问,由于nfs默认除了用111(portmapper使用,客户端向服务器发出NFS文件存取功能的询问请求)和2049(nfs使用)端口是固定的,其他的几个端口是随机的,因此需要在nfs服务器(192.168.56.101)上配置成固定的端口,再通过防火墙进行开放,步骤如下:

修改配置文件

# vim /etc/sysconfig/nfs
# vim /etc/sysconfig/nfs        #在最后加上以下配置
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004    

 

重启服务

# systemctl restart rpcbind
# systemctl restart nfs

 

重新查看端口情况

# rpcinfo -p localhost     #可看到端口已经使用固定的端口

 

 

接下来进行相关的防火墙开放,授权在客户端机器10.10.0.0/16上能访问
nfs之防火墙配置:

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="111" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="111" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="2049" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="2049" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="30001-30004" accept"
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="30001-30004" accept"
# firewall-cmd --reload
# firewall-cmd --list-all

 

 

以上就是nfs实用的完整配置!

 

posted on 2022-06-07 18:47  tengq  阅读(6786)  评论(0编辑  收藏  举报

导航