在实际生产工作中,文件共享是一个不可或缺的需求。无论是企业内部的文件共享,还是分布式系统中的数据存储,NFS(Network File System)都是一种高效、可靠的解决方案。本文将带你从零开始,掌握NFS的安装、配置、优化等操作方法。
NFS(Network File System):是一种分布式文件系统协议,允许用户通过网络访问远程文件系统,就像访问本地文件一样。它最初由 Sun Microsystems 开发,现已成为Linux 和Unix系统中文件共享的标准协议。
NFS 的核心优势:
- 跨平台支持:NFS 支持多种操作系统,包括 Linux、Unix 和macOS
- 高效共享:允许多个客户端同时访问共享文件,提升协作效率
- 易于配置:通过简单的配置文件即可实现文件共享
- 高性能:通过缓存和优化机制,提供高效的文件访问速度
##安装NFS和RPC服务
yum install nfs-utils rpcbind -y
##之前已经安装过
[root@node-3 ~]# yum install nfs-utils rpcbind -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package 1:nfs-utils-1.3.0-0.68.el7.x86_64 already installed and latest version
Package rpcbind-0.2.0-49.el7.x86_64 already installed and latest version
Nothing to do
[root@node-3 ~]#
##创建共享目录
mkdir -p /data/nfs_share -m 777
[root@node-3 ~]# mkdir -p /data/nfs_share
[root@node-3 ~]# chmod 777 /data/nfs_share
##编辑NFS配置文件/etc/exports,添加共享目录和权限
vim /etc/exports
##添加如下内容
/data/nfs_share 192.168.10.0/24(rw,sync,no_subtree_check)
##参数解释:
rw:允许读写
sync:同步写入,确保数据一致性
no_subtree_check:禁用子树检查,提升性能
systemctl start nfs-server
systemctl enable nfs-server
[root@node-3 ~]# systemctl start nfs-server
[root@node-3 ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@node-3 ~]#
[root@node-3 ~]#
[root@node-3 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Wed 2025-03-05 03:58:45 CST; 15s ago
Main PID: 3731 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Mar 05 03:58:45 node-3 systemd[1]: Starting NFS server and services...
Mar 05 03:58:45 node-3 systemd[1]: Started NFS server and services.
[root@node-3 ~]#
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --reload
[root@node-3 nfs_share]# firewall-cmd --add-service=nfs --permanent
success
[root@node-3 nfs_share]# firewall-cmd --add-service=mountd --permanent
success
[root@node-3 nfs_share]# firewall-cmd --add-service=rpc-bind --permanent
success
[root@node-3 nfs_share]# firewall-cmd --reload
success
[root@node-3 nfs_share]#
yum install nfs-utils -y
##之前已经安装过
[root@node-2 ~]# yum install nfs-utils -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local | 3.6 kB 00:00:00
Package 1:nfs-utils-1.3.0-0.68.el7.x86_64 already installed and latest version
Nothing to do
[root@node-2 ~]#
mkdir -p /export/home/data01
mount -t nfs 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]# mount -t nfs 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]#
[root@node-2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 21M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 44G 20G 25G 46% /
/dev/sda1 1014M 172M 843M 17% /boot
tmpfs 797M 12K 797M 1% /run/user/42
tmpfs 797M 0 797M 0% /run/user/0
192.168.10.32:/data/nfs_share 20G 44M 19G 1% /export/home/data01
[root@node-2 ~]#
##客户端创建文件
[root@node-2 ~]# echo "test" >>/export/home/data01/test.txt
[root@node-2 ~]#
##服务端查看文件是否同步
[root@node-3 ~]# ls /data/nfs_share/test.txt
/data/nfs_share/test.txt
[root@node-3 ~]# cat /data/nfs_share/test.txt
test
test
[root@node-3 ~]#
1. 调整NFS版本
NFS支持多个版本(v3、v4、v4.1、v4.2),建议使用 NFSv4或更高版本,以获得更好的性能和安全性。
##查看nfs版本
[root@node-2 ~]# nfsstat -m
/export/home/data01 from 192.168.10.32:/data/nfs_share
Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.31,local_lock=none,addr=192.168.10.32
[root@node-2 ~]#
##vers=4.1,表示使用的是NFSv4.1
2.启用缓存
##调整客户端缓存参数,提升文件访问速度
mount -t nfs -o rsize=8192,wsize=8192 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]# mount -t nfs -o rsize=8192,wsize=8192 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]#
3. 使用TCP协议
##NFS默认使用UDP协议,但在高负载环境下,建议切换到TCP协议
mount -t nfs -o proto=tcp 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]# mount -t nfs -o proto=tcp 192.168.10.32:/data/nfs_share /export/home/data01
[root@node-2 ~]#
1. 限制访问范围
##在/etc/exports中,仅允许特定的IP地址或IP地址网段访问共享目录
/data/nfs_share 192.168.10.0/24(rw,sync,no_subtree_check)
##允许了192.168.10端的IP地址
NFS作为一种成熟的文件共享协议,广泛应用于企业IT基础设施中。通过本文的学习,你已经掌握了NFS的安装、配置、优化和故障排查技巧。无论是搭建内部文件共享系统,还是实现分布式存储,NFS 都能为你提供高效、可靠的解决方案。
如果您对NFS有更多疑问或需要进一步的帮助,欢迎在评论区留言!