【Linux】部署NFS服务实现数据共享

👨‍🎓博主简介

  🏅CSDN博客专家
  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 一、NFS简介与RPC简介
    • 1. NFS服务简介
    • 2. RPC协议简介
    • 3. NFS工作流程
  • 二、准备工作
    • 2.1 服务器信息
    • 2.2 防火墙配置
    • 2.3 selinux沙盒
  • 三、部署 NFS 和 RPC 服务
  • 四、配置共享目录
  • 五、挂载共享目录及配置永久挂载

一、NFS简介与RPC简介

1. NFS服务简介

NFS是一种网络协议,NFS依赖RPC才能工作。(RHEL5.0上是NFS V3而RHEL6.0上是NFS V4)

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。

2. RPC协议简介

RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。其工作在TCP/UDP的111端口。建立在Socket之上的,主要是简化编程的工作在底层提供网络之间的通信。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

RPC远程过程调度:

  • NFS 协议本身并没有网络传输功能,而是基于远程过程调用协议实现的
  • 提供一个面向过程的远程服务的接口
  • 可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术的协议
  • 工作在 OSI 模型的会话层,它可以为遵从 RPC 协议应用层协议提供端口注册功能
  • 事实上,有很多服务(NFS 和 NIS 等)都可以向 RPC 注册端口
  • RPC 使用网络端口 111 来监听客户端的请求

3. NFS工作流程

1.首先服务器端启动RPC服务,并开启111端口
2.然后还需要服务器端启动NFS服务,并向RPC注册端口信息
3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

image-20240514135352731

  • 挂载原理

  当我们在NFS服务器设置好一个共享目录/opt 后,其他人是有权访问/opt这个共享目录的,NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点(这个挂载点可以自己定义),路径不同也可以;如下图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/opt下的所有数据。

image-20240514135433772

二、准备工作

2.1 服务器信息

主机IP服务端口
服务端172.16.11.201nfs、rpc2049、111
客户端172.16.11.202nfs、rpc2049、111

2.2 防火墙配置

  • 关闭防火墙服务
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机自启
systemctl disable firewalld
  • 如果是必须要开启防火墙,可以使用两种方法,开端口或服务
# 开启nfs和rpc服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
# 重载防火墙规则
firewall-cmd --reload
# 放行端口
# nfs端口为:2049、rpc端口为:111
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udp
# 重载防火墙规则
firewall-cmd --reload
  • 如果使用的是iptables防火墙,可以使用以下命令:
iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables-save > /etc/sysconfig/iptables

2.3 selinux沙盒

# 临时关闭
setenforce 0

# 永久关闭
vim /etc/selinux/config

# 将selinux=修改为disabled

image-20240514154415251

修改配置文件永久生效要重启服务器;

三、部署 NFS 和 RPC 服务

两台都安装

yum install -y nfs-utils rpcbind

# 启动并设置开机自启
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server

查看服务状态

systemctl status nfs
systemctl status rpcbind

image-20240514144829522

四、配置共享目录

①、首先,在服务端需要确认好要挂载的共享目录;这里我们要挂载的共享目录为:/data/test/,就需要先创建此目录

# 服务端
mkdir -p /data/test

②、然后,需要确认好共享目录要挂载到客户端的哪个目录上,这里就同目录吧;

# 客户端
mkdir -p /data/test

③、配置服务端NFS配置文件

NFS配置文件格式:共享目录 [客户端1(参数)] [客户端2(参数)]

共享目录:NFS服务器需要共享的实际路径(绝对路径);
客户端:可以访问共享目录的服务器地址或网段。

  • 客户端常用形式:
客户端说明
172.16.11.202指定IP地址的主机
172.16.10.1/24指定子网的所有主机
172.16.10.*指定子网的所有主机
www.xxx.com指定域名的主机
*.xxx.com指定域中的所有主机
*所有主机
vim /etc/exports

/data/test *(rw,sync,no_root_squash)

解析:

参数参数解析
/data/test要共享的目录
*要共享给谁,可以是网段,可以是ip,*代表是所有都可以共享
----括号内,NFS访问权限参数-------------------括号内,NFS访问权限参数---------------
ro只读
rw读写
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async优先将数据保存到内存,然后再写入硬盘;效率更高,但可能会丢失数据
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
no_all_squash保留共享文件的UID和GID(默认)

④、重启服务端NFS和RPC服务

systemctl restart nfs rpcbind

⑤、在客户端查看NFS服务共享信息

showmount [选项] (参数/服务端IP)

-d:仅显示已被NFS客户端加载的共享目录;
-e:显示NFS服务器上所有的共享目录。

[root@localhost ~]# showmount -e 172.16.11.201
Export list for 172.16.11.201:
/data/test *

五、挂载共享目录及配置永久挂载

注意:

1、挂载目录服务端的数据会覆盖客户端的数据;

1、挂载目录服务端的数据会覆盖客户端的数据;

1、挂载目录服务端的数据会覆盖客户端的数据;

执行mount挂载的为客户端


2、如果卸载挂载,提示:设备正忙(umount.nfs4: /data/test: device is busy),可以使用umount -l /data/test,不过存在一定风险,容易丢失数据

  • 临时挂载

客户端执行挂载目录命令

mount -t 指定挂载的文件类型 nfs服务端的IP:服务端要共享的路径目录 要挂载到本机的路径目录

mount -t nfs 172.16.11.201:/data/test /data/test/

如果遇到以下报错,有可能是:目录权限问题、服务端配置文件ip范围写的有问题、防火墙、selinux问题;

mount.nfs: access denied by server while mounting 172.16.11.201:/data/test

  • 永久挂载

这样只是临时挂载,重启服务器之后就会消息,所以可以配置永久挂载,在客户端上;

vim /etc/fstab

172.16.11.201:/data/test /data/test nfs defaults 0 0

保存退出之后,重启服务器可以进行测试,一旦写错,重启服务器将造成启动不了服务器,所以要谨慎;


  • 卸载挂载(客户端
umount 挂载点

举例:
umount /data/test

数据测试的话可自行测试;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/761007.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(四)Appdesigner-文件存在判断及对话框设计

目录 前言 一、文件存在判断 (一)基础知识 (二)实际操作 二、对话框设计 (一)基础知识 1.提示对话框 2.询问对话框 3.文件选择对话框 (二)实际操作 1.提示对话框 2.询问…

台灯哪个牌子好?学生专用台灯第一品牌推荐

台灯,作为人们生活中不可或缺的存在,每当夜幕缓缓降临,华灯初上,总预示着一个浪漫的夜晚即将揭幕。而灯的意义,远不止于驱散黑夜的阴影,它更擅长为我们的空间带来温暖与慰藉。在众多种类的灯具中&#xff0…

零基础STM32单片机编程入门(五)FreeRTOS实时操作系统详解及实战含源码视频

文章目录 一.概要二.什么是实时操作系统三.FreeRTOS的特性四.FreeRTOS的任务详解1.任务函数定义2.任务的创建3.任务的调度原理 五.CubeMX配置一个FreeRTOS例程1.硬件准备2.创建工程3.调试FreeRTOS任务调度 六.CubeMX工程源代码下载七.讲解视频链接地址八.小结 一.概要 FreeRTO…

Python | 计算位涡平流项

写在前面 最近忙着复习、考试…都没怎么空敲代码,还得再准备一周考试。。。等考完试再慢慢更新了,今天先来浅更一个简单但是使用的python code 在做动力机制分析时,我们常常需要借助收支方程来诊断不同过程的贡献,其中最常见的一…

使用Python绘制极坐标图

使用Python绘制极坐标图 极坐标图极坐标图的优点使用场景 效果代码 极坐标图 极坐标图(Polar Chart)是一种图表类型,用于显示在极坐标系中的数据。极坐标图使用圆形坐标系,角度表示一个变量的值,半径表示另一个变量的…

【Python】利用代理IP爬取当当网数据做数据分析

前言 在数字化浪潮的推动下,电商平台已经彻底改变了我们的购物方式。从简单的在线交易到复杂的用户交互,电商平台积累了海量的用户数据。这些数据,如同隐藏在深海中的宝藏,等待着被发掘和利用。通过分析用户的浏览、搜索、购买等行…

基于人脸68特征点识别的美颜算法(一) 大眼算法 C++

1、加载一张原图&#xff0c;并识别人脸的68个特征点 cv::Mat img cv::imread("5.jpg");// 人脸68特征点的识别函数vector<Point2f> points_vec dectectFace68(img);// 大眼效果函数Mat dst0 on_BigEye(800, img, points_vec);2、函数 vector<Point2f&g…

使用Perplexity打造产品的27种方式

ChatGPT和Perplexity等聊天机器人正迅速成为产品经理的首选助手。以下是一份全面的指南&#xff0c;介绍PM如何在日常工作中使用Perplexity&#xff0c;该指南基于300多份回复和30次电话后的总结。 理解并制定增长战略&#xff1a;例如&#xff0c;解释增长会计的基本原理&…

Docker的理解

Docker的理解 Docker为什么用Docker&#xff1f;1.提升系统资源利用率2.更快速的交付和部署3.高效的部署和扩容4.更简单的管理 Docker核心技术Docker镜像Docker容器Docker仓库 Docker实现原理Linux NamespaceCgroupUnion FS Docker的应用场景1.微服务架构2.持续集成3.快速部署和…

四.iOS核心动画 - 图层的视觉效果

引言 在前几篇博客中我们讨论了图层的frame,bounds,position以及让图层加载图片。但是图层事实上不仅可以显示图片&#xff0c;或者规则的矩形块&#xff0c;它还有一系列内建的特性来创建美丽优雅的页面元素。在这篇博客中我们就来探索一下CALayer的视觉效果。 视觉效果 图…

机器学习环境搭建

前言 个人笔记&#xff0c;记录框架和小问题&#xff0c;没有太详细记载。。 1、Anaconda安装 下载地址&#xff1a; Free Download | Anaconda &#xff08;慢&#xff09; ​ 国内镜像&#xff1a;https://link.csdn.net/?targethttp%3A%2F%2Fitcxy.xyz%2F241.html 下载…

五国如何实现关键基础设施保护方法的现代化

本叙述介绍了关键基础设施面临的不断演变的风险,并讨论了关键五国(澳大利亚、加拿大、新西兰、英国和美国)如何实现关键基础设施保护方法的现代化。它还确定了加强国内关键基础设施安全性和弹性的共同方法,同时认识到鉴于关键基础设施的相互关联性,国际社会需要采取合作和…

【H.264】五分钟入门H.264协议

<> 博客简介&#xff1a;Linux、rtos系统&#xff0c;arm、stm32等芯片&#xff0c;嵌入式高级工程师、面试官、架构师&#xff0c;日常技术干货、个人总结、职场经验分享   <> 公众号&#xff1a;嵌入式技术部落   <> 系列专栏&#xff1a;C/C、Linux、rt…

以现在的社会形势走向,选什么专业好?

随着高考结束&#xff0c;选专业的话题又开始变得越来越热门。因为很多学生都想知道自己更适合什么样的专业&#xff0c;如何结合未来的社会形势来选择更好的专业&#xff0c;这的确是一个很考验能力的问题&#xff0c;因为有太多人曾经为了选择专业而纠结过。 高考志愿填报选…

基于多源数据的密码攻防领域知识图谱构建

源自&#xff1a; 信息安全与通信保密杂志社 作者&#xff1a;曹增辉 , 郭渊博 , 黄慧敏 摘 要 提高网络空间安全的密码攻防能力&#xff0c;需要形成可表示、可共享、可分析的领域知识模式和知识库。利用自顶向下的构建方法&#xff0c;并通过本体构建方法梳理密码攻防领域…

Nginx 配置文件

Nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件&#xff1a;include conf.d/*.conf 全局配置 nginx 有多种模块 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错误日志记录 、配置文件解析 、事件驱动机…

Android Studio 2023版本切换DNK版本

选择自己需要的版本下载 根目录下的配置路劲注意切换 build.gradle文件下的ndkVersion也要配好对应版本

现代信息检索笔记(二)——布尔检索

目录 信息检索概述 IR vs数据库: 结构化vs 非结构化数据 结构化数据 非结构化数据 半结构化数据 传统信息检索VS现代信息检索 布尔检索 倒排索引 一个例子 建立词项&#xff08;可以是字、词、短语、一句话&#xff09;-文档的关联矩阵。 关联向量 检索效果的评价 …

使用Visual Studio Code记笔记

因为学习需要&#xff0c;记笔记是很有必要的&#xff0c;平常发CSDN&#xff08;都让CSDN是很棒的哈&#xff09;&#xff0c;后来使用VS Code的时候发现了很多插件&#xff0c;觉得做笔记还是相对不错的&#xff0c;主要用到的还是Markdown 主要设计的插件包括&#xff1a; …

第3章:数据结构

树 对稀疏矩阵的压缩方法有三种&#xff1a; 1、三元组顺序表 2、行逻辑连接的顺序表 3、十字链表 同义词才会占用同个位置&#xff0c;从而需要进行多次比较。这些关键字的第一个可以不是e的同义词&#xff0c;可以是排在e之前的关键字正好占了那个位置。 Dijkstra算法主要特点…