NFS实现多服务器文件的共享的方法步骤

2025-01-23 16:50

本文主要是介绍NFS实现多服务器文件的共享的方法步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一...

一、简介

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

NFS实现多服务器文件的共享的方法步骤

因为NFS服务有很多功能,提供不同功能的进程使用的端口号也就会各不相同,如果客户端想要请求NFS服务器的某项功能,势必需要先知道其功能的目的端口号,才能从NFS服务器哪里获得服务。那么NFS服务这么多功能端口号,客户端如何知道NFS服务器的某项功能使用的什么端口号呢?这就需要RPC远程过程调用协议来记录NFS服务器各功能所使用的端口号。其过程如下:

1.首先在服务端,NFS服务启动以后,就会随机的使用一些端口号,然后NFS服务就会将自己使用的端口号告诉本系统内的RPC服务,RPC记录下NFS各个功能所使用的端口。并开启RPC服务的111端口等待客户端通过RPC请求来获取到NFS服务所使用的端口号。

2.客户端启动自身的RPC(portmap)服务,向服务端的RPC(portmap)服务请求NFS文件共享服务开放的端口号。

3.服务端RPC服务收到用户的请求后,查阅NFS服务所使用的端口号,并将其使用的端口号告诉给客户端。

4.客户端知道NFS服务器使用的端口号后,就可以通过获取到的目的端口号与NFS服务器进行数据传输。

注意:在服务端上,因为NFS服务需要向RPC服务注册自己所使用的端口号,因此RPC只有先于NFS服务启动,NFS服务才能将自己使用的端口号注册到本地的RPC服务上。

二、部署

1、准备

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

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

yum -y install nfs-utils

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

# 创建两个共享目录
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

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.1php68.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.56China编程.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、查看是否挂载成功
[root@localhost files1]# df -h
Filesystem                      Size  Used Avail Use% Mounted on
devtmpfs                        2.1G     0  2.1G   0% /dev
tmpfs                           2.1G     0  2.1G   0% /dev/shm
tmpfs                           2.1G   17M  2.1G   1% /run
tmpfs                           2.1G     0  2.1G   0% /sys/fs/cgroup
/dev/sda1                        40G  8.0编程China编程G   33G  20% /
192.168.56.10:/root/nfs/files1   40G  8.0G   33G  20% /root/nfs/files1
192.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

或者使用
#将会显示使用这个模块的pid
fuser -m /root/nfs/files1
#将会直接kill那个pid
fuser -mk /root/nfs/files1

三、附录

1、NFS服务基本命令

systemctl start nfs  	启动NFS服务
systemctl stop nfs 	停止nfs服务
spythonystemctl 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/biBkNxPLUWn之类的子目录时,强制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/78114809

https://blog.csdn.net/liebe_u/article/details/139708752

https://www.cnblogs.com/hanfe1/p/16642948.html

到此这篇关于NFS实现多服务器文件的共享的方法步骤的文章就介绍到这了,更多相关NFS 多服务器文件共享内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于NFS实现多服务器文件的共享的方法步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153202

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的