NFS服务配置超详细版

版权声明:原创作品,请勿转载!

本文使用linux(centos7.9)系统做演示,共3台服务器,分别是1c1g+20G,需提前配置好yum源

1.服务器规划

|--------|--------------|-------------|--------|
| 角色 | IP1 | IP2 | 主机名 |
| NFS服务端 | 10.0.0.31/24 | 172.16.1.31 | nfs |
| 客户端1 | 10.0.0.7/24 | 172.16.1.7 | web01 |
| 客户端2 | 10.0.0.41/24 | 172.16.1.41 | backup |

2.配置

2.1 服务端配置

2.1.1 安装软件

复制代码
[root@nfs01 ~]# yum install -y nfs-utils
Loaded plugins: fastestmirror

2.1.2 修改配置文件

复制代码
[root@nfs01 ~]# vim /etc/exports
[root@nfs01 ~]# cat /etc/exports
/data/ 172.16.1.0/24(rw,sync,all_squash)

2.1.3 创建数据目录,并更改属主属组

复制代码
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# ll /data
total 0
[root@nfs01 ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
[root@nfs01 ~]# ll -d /data
drwxr-xr-x. 2 root root 6 Mar 29  2024 /data
[root@nfs01 ~]# chown nfsnobody.nfsnobody /data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 6 Mar 29  2024 /data

2.1.4 启动服务,开机自启

复制代码
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

2.1.5 检查服务

复制代码
[root@nfs01 ~]# cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)

参数补充:

复制代码
读写权限相关
rw:表示允许客户端对共享目录进行读写操作。

数据同步相关
sync:要求NFS服务器在将数据写入磁盘后才返回操作成功的响应,这样可以保证数据的一致性,但会降低性能。
wdelay:如果有多个用户要写入NFS目录,会延迟写入,以提高写入效率。当使用async参数时,无需此设置。

目录显示与挂载相关
hide:隐藏该共享目录的子目录,客户端无法直接访问子目录。
nocrossmnt:不允许客户端跨越挂载点进行访问,即只能访问共享目录本身,不能访问其挂载点之外的其他文件系统。

安全相关
secure:要求NFS通过1024以下的安全TCP/IP端口发送数据,增强安全性。
root_squash:将客户端的root用户的所有请求映射成如anonymous用户一样的权限,避免客户端的root用户在共享目录上拥有过高的权限,增强系统安全性。
all_squash:将所有客户端用户的请求都映射成NFS服务器上的匿名用户(通常是nfsnobody)的权限,进一步增强安全性。
secure_locks:使用安全的文件锁机制,确保文件操作的并发安全性。
acl:启用访问控制列表,允许对共享目录进行更细粒度的权限控制。
no_pnfs:禁用并行NFS(Parallel NFS)功能,并行NFS可以提高大规模数据存储和访问的性能,但可能会带来一些兼容性问题,禁用它可以避免这些问题。

用户映射相关
anonuid=65534:指定匿名用户的UID为65534,当使用all_squash参数时,客户端用户会被映射成该UID对应的用户。
anongid=65534:指定匿名用户的GID为65534,与anonuid配合使用,确保用户和组的映射一致。

安全机制相关
sec=sys:指定使用系统级的安全机制进行身份验证和授权,这是NFS的一种常见安全机制。

2.2 客户端配置

2.2.1 安装软件

复制代码
[root@web01 ~]# yum install -y nfs-utils

只需安装服务,不需要启动

2.2.2 识别服务端共享目录

复制代码
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

2.2.3 客户端挂载目录

复制代码
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt    #临时挂载
[root@web01 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           476M     0  476M   0% /dev
tmpfs              487M     0  487M   0% /dev/shm
tmpfs              487M  7.6M  479M   2% /run
tmpfs              487M     0  487M   0% /sys/fs/cgroup
/dev/sda3           18G  2.4G   16G  14% /
/dev/sda1          197M  110M   88M  56% /boot
tmpfs               98M     0   98M   0% /run/user/0
172.16.1.31:/data   18G  2.4G   16G  14% /mnt


[root@web01 ~]# vim /etc/fstab    #写入永久挂载
[root@web01 ~]# cat /etc/fstab 

172.16.1.31:/data	/mnt	nfs	defaults	0	0

3.测试

复制代码
[root@web01 ~]# cd /mnt
[root@web01 mnt]# ll
total 0
[root@web01 mnt]# touch test.txt
[root@web01 mnt]# ll test.txt 
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 24 00:23 test.txt
[root@nfs01 ~]# ll /data/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 24 00:23 test.txt

nfs服务就先介绍到这里啦~

相关推荐
qq_218753311 小时前
服务器查日志太慢,试试grep组合拳
运维·服务器
Jie_172 小时前
【linux】高可用集群Keepalived
linux·运维·服务器
思绪漂移2 小时前
阿里云【免费试用】Elasticsearch 智能运维 AI 助手
运维·elasticsearch·阿里云
aiprtem2 小时前
LVGL + ESP-Brookesia 嵌入式模拟桌面应用开发
linux·c语言·物联网
21号 13 小时前
4.应用层自定义协议与序列化
运维·服务器·网络
xx.ii4 小时前
4.Linux 应用程序的安装和管理
linux·服务器·网络
奋斗的蛋黄5 小时前
解析分区、挂载与块设备:Linux 存储管理核心命令详解
linux·服务器·网络
墨迹的陌离5 小时前
【Linux】重生之从零开始学习运维之Mysql
linux·运维·服务器·数据库·学习·mysql
Ray Song5 小时前
Linux DNS解析1--终端通过网关或者路由器进行域名解析的原理
linux·运维·服务器·dns解析
2025年一定要上岸5 小时前
【pytest高阶】源码的走读方法及插件hook
运维·前端·python·pytest