NFS实现多服务器文件的共享的方法步骤
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、简介</a></li><li><a href="#_label1">二、部署</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">1、准备</a></li><li><a href="#_lab2_1_1">1、服务端和客户端:安装nfs-utils</a></li><li><a href="#_lab2_1_2">2、服务端:创建共享目录</a></li><li><a href="#_lab2_1_3">3、服务端:配置exports文件</a></li><li><a href="#_lab2_1_4">4、客户端挂载</a></li><li><a href="#_lab2_1_5">5、客户端:卸载</a></li></ul><li><a href="#_label2">三、附录</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_6">1、NFS服务基本命令</a></li><li><a href="#_lab2_2_7">2、/etc/exports参数解释</a></li><li><a href="#_lab2_2_8">3、exportfs命令</a></li></ul><li><a href="#_label3">参考资料</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>一、简介</h2><p>NFS是network file sytem的缩写,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。</p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202501/20250123100511108.png" /></p>
<p>因为NFS服务有很多功能,提供不同功能的进程使用的端口号也就会各不相同,如果客户端想要请求NFS服务器的某项功能,势必需要先知道其功能的目的端口号,才能从NFS服务器哪里获得服务。那么NFS服务这么多功能端口号,客户端如何知道NFS服务器的某项功能使用的什么端口号呢?这就需要RPC远程过程调用协议来记录NFS服务器各功能所使用的端口号。其过程如下:</p>
<p>1.首先在服务端,NFS服务启动以后,就会随机的使用一些端口号,然后NFS服务就会将自己使用的端口号告诉本系统内的RPC服务,RPC记录下NFS各个功能所使用的端口。并开启RPC服务的111端口等待客户端通过RPC请求来获取到NFS服务所使用的端口号。</p>
<p>2.客户端启动自身的RPC(portmap)服务,向服务端的RPC(portmap)服务请求NFS文件共享服务开放的端口号。</p>
<p>3.服务端RPC服务收到用户的请求后,查阅NFS服务所使用的端口号,并将其使用的端口号告诉给客户端。</p>
<p>4.客户端知道NFS服务器使用的端口号后,就可以通过获取到的目的端口号与NFS服务器进行数据传输。</p>
<p>注意:在服务端上,因为NFS服务需要向RPC服务注册自己所使用的端口号,因此RPC只有先于NFS服务启动,NFS服务才能将自己使用的端口号注册到本地的RPC服务上。</p>
<p class="maodian"><a name="_label1"></a></p><h2>二、部署</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>1、准备</h3>
<p>我们这里准备了三台服务器,一台服务端,两台客户端进行测试。</p>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>1、服务端和客户端:安装nfs-utils</h3>
<div class="jb51code"><pre class="brush:bash;">yum -y install nfs-utils
</pre></div>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>2、服务端:创建共享目录</h3>
<div class="jb51code"><pre class="brush:bash;"># 创建两个共享目录
mkdir -p /root/nfs/files1
mkdir -p /root/nfs/files2
# 创建测试文件
touch /root/nfs/files1/111.txt
touch /root/nfs/files1/222.txt
touch /root/nfs/files2/333.txt
touch /root/nfs/files2/444.txt
</pre></div>
<p class="maodian"><a name="_lab2_1_3"></a></p><h3>3、服务端:配置exports文件</h3>
<div class="jb51code"><pre class="brush:bash;"># 默认是空的,需要编辑
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)
</pre></div>
<p>导出(广播)编辑的文件,并启动nfs服务,如果已经启动可以直接重启或者exportfs -r</p>
<div class="jb51code"><pre class="brush:bash;"># 可以使用exportfs命令使新修改的配置文件生效
exportfs -r
# 启动
systemctl start nfs
# 重启
systemctl restart nfs
</pre></div>
<p class="maodian"><a name="_lab2_1_4"></a></p><h3>4、客户端挂载</h3>
<p>注意:两台客户端都需要执行以下命令!</p>
<div class="jb51code"><pre class="brush:bash;"># 1、显示NFS服务器(IP为192.168.56.10)的输出目录列表:
#showmount 选项
# -d:仅显示已被NFS客户端加载的目录;
# -e:显示NFS服务器上所有的共享目录。
# showmount -e 192.168.56.10
Export 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/files1
mkdir -p /root/nfs/files2
# 3、执行挂载
mount -t nfs 192.168.56.10:/root/nfs/files1 /root/nfs/files1
mount -t nfs 192.168.56.10:/root/nfs/files2 /root/nfs/files2
# 4、查看是否挂载成功
# df -h
Filesystem SizeUsed Avail Use% Mounted on
devtmpfs 2.1G 02.1G 0% /dev
tmpfs 2.1G 02.1G 0% /dev/shm
tmpfs 2.1G 17M2.1G 1% /run
tmpfs 2.1G 02.1G 0% /sys/fs/cgroup
/dev/sda1 40G8.0G 33G20% /
192.168.56.10:/root/nfs/files1 40G8.0G 33G20% /root/nfs/files1
192.168.56.10:/root/nfs/files2 40G8.0G 33G20% /root/nfs/files2
# 5、测试
# 任何一台服务器在/root/nfs/files1修改文件,都会同步修改。
</pre></div>
<p class="maodian"><a name="_lab2_1_5"></a></p><h3>5、客户端:卸载</h3>
<div class="jb51code"><pre class="brush:bash;">#使用以下命令强行解除挂载
umount -l /root/nfs/files2
umount -l /root/nfs/files1
或者使用
#将会显示使用这个模块的pid
fuser -m /root/nfs/files1
#将会直接kill那个pid
fuser -mk /root/nfs/files1
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>三、附录</h2>
<p class="maodian"><a name="_lab2_2_6"></a></p><h3>1、NFS服务基本命令</h3>
<div class="jb51code"><pre class="brush:bash;">systemctl start nfs 启动NFS服务
systemctl stop nfs 停止nfs服务
systemctl restart nfs 重新启动nfs服务
systemctl status nfs 查看nfs服务状态
systemctl enable nfs 设置开机自启动nfs服务</pre></div>
<p class="maodian"><a name="_lab2_2_7"></a></p><h3>2、/etc/exports参数解释</h3>
<p><code>/etc/exports</code>是NFS服务器配置文件,它用于定义共享目录和访问权限。它的格式如下:</p>
<div class="jb51code"><pre class="brush:plain;"><目录路径> <允许访问的主机>(<选项>)
</pre></div>
<p>其中,目录路径表示要共享的服务端目录路径,允许访问的主机表示可以访问该目录的主机名或IP。</p>
<p>参数解释:<br /><strong>(1) ro 该主机对该共享目录有只读权限</strong></p>
<p><strong>(2) rw 该主机对该共享目录有读写权限</strong></p>
<p>(3) root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户</p>
<p><strong>(4) no_root_squash 客户机用root访问该共享文件夹时,不映射root用户</strong></p>
<p>(5) all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户</p>
<p>(6) anonuid 将客户机上的用户映射成指定的本地用户ID的用户</p>
<p>(7) anongid 将客户机上的用户映射成属于指定的本地用户组ID</p>
<p><strong>(8) sync 资料同步写入到内存与硬盘中</strong></p>
<p><strong>(9) async 资料会先暂存于内存中,而非直接写入硬盘</strong></p>
<p>(10) insecure 允许从这台机器过来的非授权访问<br /> <br />(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)</p>
<p>(12) no_subtree_check 和上面相对,不检查父目录权限</p>
<p>(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)</p>
<p>(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。</p>
<p>(15) hide 在NFS共享目录中不共享其子目录</p>
<p>(16) no_hide 共享NFS目录的子目录</p>
<p>(17) secure NFS通过1024以下的安全TCP/IP端口发送</p>
<p>(18) insecure NFS通过1024以上的端口发送</p>
<p class="maodian"><a name="_lab2_2_8"></a></p><h3>3、exportfs命令</h3>
<div class="jb51code"><pre class="brush:bash;">exportfs命令提供了一系列参数,用于控制NFS共享的设置和状态。以下是一些常用的参数及其功能:
-a:用于打开或取消所有目录的共享。
-r:重新共享所有目录,使/var/lib/nfs/xtab和/etc/exports同步,删除/etc/exports中已删除的条目,并移除内核共享表中任何不再有效的条目。
-u:取消一个或多个目录的共享。
-f:在“新”模式下,刷新内核共享表之外的任何东西,任何活动的客户程序将在它们的下次请求中得到mountd添加的新的共享条目。
-v:输出详细信息,显示在共享或取消共享时正在做什么,以及显示当前共享列表时的共享选项。
使用exportfs命令时,无需重启NFS服务即可使配置文件生效,这对于动态调整NFS共享非常有用。例如,当修改了/etc/exports配置文件后,可以通过执行exportfs -arv命令来立即使更改生效,而不是重新启动NFS服务
</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>参考资料</h2>
<p><a href="https://zhuanlan.zhihu.com/p/78114809" rel="external nofollow" target="_blank">https://zhuanlan.zhihu.com/p/78114809</a></p>
<p><a href="https://blog.csdn.net/liebe_u/article/details/139708752" rel="external nofollow">https://blog.csdn.net/liebe_u/article/details/139708752</a></p>
<p><a href="https://www.cnblogs.com/hanfe1/p/16642948.html" rel="external nofollow">https://www.cnblogs.com/hanfe1/p/16642948.html</a></p>
<p>到此这篇关于NFS实现多服务器文件的共享的方法步骤的文章就介绍到这了,更多相关NFS 多服务器文件共享内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]