当前位置:首页>Linux>Linux文件共享:NFS实现多服务器文件的共享

Linux文件共享:NFS实现多服务器文件的共享

  • 2026-09-04 16:22:45
Linux文件共享:NFS实现多服务器文件的共享

一、简介

NFS是network file sytem的缩写,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

二、部署

1、准备

我们这里准备了三台服务器,一台服务端,两台客户端进行测试。

1、服务端和客户端:安装nfs-utils

yum -y install nfs-utils

2、服务端:创建共享目录

# 创建两个共享目录mkdir -p /root/nfs/files1mkdir -p /root/nfs/files2# 创建测试文件touch /root/nfs/files1/111.txttouch /root/nfs/files1/222.txttouch /root/nfs/files2/333.txttouch /root/nfs/files2/444.txt

3、服务端:配置exports文件

# 默认是空的,需要编辑vi /etc/exports# 里面的内容,我们将两个目录共享给另外两台服务器,配置详细内容请查看下面的附录/root/nfs/files1 192.168.56.11(rw,sync,no_root_squash)/root/nfs/files2 192.168.56.11(rw,sync,no_root_squash)/root/nfs/files1 192.168.56.12(rw,sync,no_root_squash)/root/nfs/files2 192.168.56.12(rw,sync,no_root_squash)

导出(广播)编辑的文件,并启动nfs服务,如果已经启动可以直接重启或者exportfs -r

# 可以使用exportfs命令使新修改的配置文件生效exportfs -r# 启动systemctl start nfs# 重启systemctl restart nfs

4、客户端挂载

注意:两台客户端都需要执行以下命令!

# 1、显示NFS服务器(IP为192.168.56.10)的输出目录列表:#  showmount 选项# -d:仅显示已被NFS客户端加载的目录;# -e:显示NFS服务器上所有的共享目录。[root@localhost ~]# showmount -e 192.168.56.10Export list for 192.168.56.10:/root/nfs/files2 192.168.56.12,192.168.56.11/root/nfs/files1 192.168.56.12,192.168.56.11# 2、创建目录,用于挂载mkdir -p /root/nfs/files1mkdir -p /root/nfs/files2# 3、执行挂载mount -t nfs 192.168.56.10:/root/nfs/files1 /root/nfs/files1mount -t nfs 192.168.56.10:/root/nfs/files2 /root/nfs/files2# 4、查看是否挂载成功[root@localhost files1]# df -hFilesystem                      Size  Used Avail Use% Mounted ondevtmpfs                        2.1G     0  2.1G   0% /devtmpfs                           2.1G     0  2.1G   0% /dev/shmtmpfs                           2.1G   17M  2.1G   1% /runtmpfs                           2.1G     0  2.1G   0% /sys/fs/cgroup/dev/sda1                        40G  8.0G   33G  20% /192.168.56.10:/root/nfs/files1   40G  8.0G   33G  20% /root/nfs/files1192.168.56.10:/root/nfs/files2   40G  8.0G   33G  20% /root/nfs/files2# 5、测试# 任何一台服务器在/root/nfs/files1修改文件,都会同步修改。

5、客户端:卸载

#使用以下命令强行解除挂载umount -l /root/nfs/files2 umount -l /root/nfs/files1或者使用#将会显示使用这个模块的pidfuser -m /root/nfs/files1#将会直接kill那个pidfuser -mk /root/nfs/files1

三、附录

1、NFS服务基本命令

systemctl start nfs  	启动NFS服务systemctl stop nfs 	停止nfs服务systemctl restart nfs	重新启动nfs服务systemctl status nfs 	查看nfs服务状态systemctl enable nfs	设置开机自启动nfs服务

2、/etc/exports参数解释

/etc/exports是NFS服务器配置文件,它用于定义共享目录和访问权限。它的格式如下:

<目录路径> <允许访问的主机>(<选项>)

其中,目录路径表示要共享的服务端目录路径,允许访问的主机表示可以访问该目录的主机名或IP。

参数解释:(1) ro 该主机对该共享目录有只读权限

(2) rw 该主机对该共享目录有读写权限

(3) root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

(4) no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

(5) all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

(6) anonuid 将客户机上的用户映射成指定的本地用户ID的用户

(7) anongid 将客户机上的用户映射成属于指定的本地用户组ID

(8) sync 资料同步写入到内存与硬盘中

(9) async 资料会先暂存于内存中,而非直接写入硬盘

(10) insecure 允许从这台机器过来的非授权访问 (11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

(12) no_subtree_check 和上面相对,不检查父目录权限

(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)

(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

(15) hide 在NFS共享目录中不共享其子目录

(16) no_hide 共享NFS目录的子目录

(17) secure NFS通过1024以下的安全TCP/IP端口发送

(18) insecure NFS通过1024以上的端口发送

3、exportfs命令

exportfs命令提供了一系列参数,‌用于控制NFS共享的设置和状态。‌以下是一些常用的参数及其功能:‌-a:‌用于打开或取消所有目录的共享。‌-r:‌重新共享所有目录,‌使/var/lib/nfs/xtab和/etc/exports同步,‌删除/etc/exports中已删除的条目,‌并移除内核共享表中任何不再有效的条目。‌-u:‌取消一个或多个目录的共享。‌-f:‌在“新”模式下,‌刷新内核共享表之外的任何东西,‌任何活动的客户程序将在它们的下次请求中得到mountd添加的新的共享条目。‌-v:‌输出详细信息,‌显示在共享或取消共享时正在做什么,‌以及显示当前共享列表时的共享选项。‌使用exportfs命令时,‌无需重启NFS服务即可使配置文件生效,‌这对于动态调整NFS共享非常有用。‌例如,‌当修改了/etc/exports配置文件后,‌可以通过执行exportfs -arv命令来立即使更改生效,‌而不是重新启动NFS服务

参考资料

https://zhuanlan.zhihu.com/p/78114809https://blog.csdn.net/liebe_u/article/details/139708752https://www.cnblogs.com/hanfe1/p/16642948.html

#--------------------------------------

重磅推荐,人工智能学习网

真正从小白开始,从算法到原理,到深入:

https://www.captainbed.cn/art/

#----------------------------------------

重磅推荐,免费轻量级内网穿透

免费内网穿透工具,限时升级大流量,Cpolar:

https://i.cpolar.com/m/4Vce

#----------------------------------------

最新文章

随机文章