一、系统环境

AlmaLinux9.4 nfs服务器

Centos7.9 nfs客户端

windows 11 nfs客户端(需要在添加与删除程序里安装nfs客户端程序)

移动ADSL+固定公网IP1个

二、NFS服务部署

# dnf install nfs-utils rpcbind

# mkdir -p /data/nastest

# more /etc/exports
/data/nastest 220.19.0.0/16(rw,sync,no_root_squash,no_subtree_check)
/data/nastest 192.168.10.0/24(rw,sync,no_root_squash,no_subtree_check)

#启动
systemctl start rpcbind 
systemctl start nfs-server 

#开机启动
systemctl enable nfs-server && systemctl enable rpcbind


#刷新-立即生效
exportfs -a

#验证配置
exportfs -rv

三、防火墙策略

#修改防火墙策略
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd

#重新加载配置
firewall-cmd --reload


#如果是通过互联网,互联网边界设备需要添加NAT策略


ps:------------
#查看端口
rpcinfo -p

#配置防火墙模块下的nfs服务端口
vim /etc/firewalld/services/nfs.xml

<service>
  <short>nfs</short>
  <description>nfs</description>
  <port protocol="tcp" port="111"/>
  <port protocol="udp" port="111"/>
  <port protocol="tcp" port="20048"/>
  <port protocol="udp" port="20048"/>
  <port protocol="tcp" port="2049"/>
  <port protocol="udp" port="2049"/>
</service>

nfs.XML文件内容信息解读:

<service> 参数:定义服务的名称和描述。
<port>参数:指定 NFS 使用的端口号或端口范围。
<protocol>参数:指定使用的协议(TCP或UDP)。
<module>参数:指定 Firewalld 使用的内核模块。
<source>参数:指定允许连接到 NFS 服务的来源 IP 地址或地址范围。
每次编辑 /etc/firewalld/services/nfs.xml 文件,都需要重新加载 Firewalld 配置才能使规则生效。

四、挂载

#Linux客户端检验
showmount -e 192.168.10.6

#客户端手动挂载,一般用v3版
mount -o vers=3 192.168.10.6:/data/nastest /data

#自动挂载
vim /etc/fstab
192.168.10.6:/data/nastest /data nfs defaults,vers=3 0 0

#排错,加v参数,显示交互式连接信息,vers设置nfsv3,还是nfsv4版协议,一般用v3
mount -t nfs  -o rw,nfsvers=3,vers=3 -v 11.223.22.42:/data/nastest /opt/lghnastest/

#若是跨互联网,又通过了NAT,需要在nfs服务端加insecure参数,insecure:允许客户端从大于1024的端口发送链接
[root@lrkj-jf-test-host226 ~]# mount -t nfs -v 11.223.22.42:/data/nastest /opt/lghnastest/
mount.nfs: timeout set for Mon Oct  7 14:50:25 2024
mount.nfs: trying text-based options 'vers=4.1,addr=11.223.22.42,clientaddr=192.168.10.226'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=11.223.22.42'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 11.223.22.42 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 11.223.22.42 prog 100005 vers 3 prot UDP port 20048
mount.nfs: portmap query retrying: RPC: Timed out
mount.nfs: prog 100005, trying vers=3, prot=6
mount.nfs: trying 11.223.22.42 prog 100005 vers 3 prot TCP port 20048
mount.nfs: mount(2): Permission denied
mount.nfs: Operation not permitted


# more /etc/exports
/data/nastest 253.19.0.0/16(insecure,rw,sync,no_root_squash,no_subtree_check)
/data/nastest 192.168.10.0/24(insecure,rw,sync,no_root_squash,no_subtree_check)

五、卸载

umount /data

六、优化

修改nfs进程数,默认为8

vim /etc/nfs.conf
# threads=8
threads=32

#查守护进程数
ps -ef | grep nfs

#查看nfs线程是否繁忙,看th开头的那列,最后10个数字是秒数的直方图,若最后2个数字为0或接近,表示线程还有冗余
more /proc/net/rpc/nfsd

同步、异步

同步写入,服务器仅在数据已写入稳定存储时才回复 NFS 客户端。

异步写入,服务器在处理完 I/O 请求后立即回复 NFS 客户端,同时将IO请求发送到本地文件系统,它不会等到数据写入稳定存储后才响应 NFS 客户端。

当文件系统挂载到客户端时,可以设置同步或异步模式,只需将sync或async放在挂载命令行或NFS 文件系统的文件/etc/fstab中。

同步相对来说,速度会慢一些,但丢失数据概率很小,异步在 I/O 请求到达磁盘之前崩溃,就可能会丢失数据。

挂载选项

noatime – 文件系统上的索引节点访问时间不更新。这有助于提高性能,因为文件的访问时间不会在每次访问文件时更新。

nodiratime – 目录 inode 在被访问时不会在文件系统上更新。这可以以与不更新文件访问时间相同的方式帮助提高性能。

relatime – 索引节点访问时间与文件的修改或更改时间相关,因此仅当先前的 atime(访问时间)早于修改或更改时间时,访问时间才会更新。

# 禁止更新目录及文件时间戳
mount -t nfs -o noatime,nodiratime 192.168.10.88:/data /mnt

MTU

默认交接机、服务器MTU为1500,若传输一个4KB的数据,则需要3个数据帧,若把MTU修改为9000(巨型数据包),则只需要1个数据帧,戴尔用Netperf作过测试,把1500修改为9000后,最大传输可增加33%。

安全加固

# 通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能
# mount -t nfs -o nosuid,noexec,nodev 192.168.10.88:/data /mnt

优缺点总结

NFS优缺点小结
# 1、NFS存储优点
1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。(2000w日pv以下网站没问题)
2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。
 
# 2、NFS存储局限
1)存在单点故障, 如果nfs服务器宕机,所有客户端都不能访问。
解决:需加backup机器,维护麻烦web->nfs()->backup
2)NFS数据明文, NFS并不对数据完整性做任何校验。
3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)
 
# 3、NFS应用建议
1)生产场景应将静态数据(比如:jpg\png\mp4\avi\css\js)尽可能往前端推,减少后端NFS存储压力。
比如使用CDN加速以及内网搭建文件缓存服务(Squid、Nginx、Varnish)
2)多个目录挂载到不同NFS服务器上(即NFS拆分为多台)
3)使用分布式文件系统(如MFS、FastDFS、GlusterFS)
声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。