nfs服务器详解

        nfs(网络文件系统)---------- 其实就是通过网络将文件共享出去。

        通过TCP/IP网络去共享资源的。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

客户端和服务端需要去读写共享文件,那么就需要对应的程序来实现读写操作。

	由于NFS支持的功能比较多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口并不固定,而是随机取用一些未被使用的小于1024的端口用于传输。但如此一来就会产生客户端连接服务器的问题,因为客户端需要知道服务器端的相关端口才能够连接。
	
	
	此时就需要RPC(Remote Procedure Call,远程过程调用)的服务。由于当服务器在启动NFS时会随机选取数个端口号,并主动向RPC注册,所以RPC知道每个NFS功能所对应的端口号,RPC将端口号通知给客户端,让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向客户端响应正确的端口号。
注:在启动NFS之前,要先启动RPC,否则NFS会无法向RPC注册。另外,RPC若重新启动,原来注册的数据会消失不见,因此RPC重启后,它管理的所有服务都需要重新启动以重新向RPC注册。
  •         总结:NFS服务开启产生一个随机端口,NFS服务器会向RPC进行注册,在RPC上写清楚自己所开放的NFS服务的端口号。客户端访问NFS服务器时会首先访问RPC(端口号:111)获取NFS服务的端口,再通过该端口获取NFS服务器资源。

服务端配置

在配置服务端时涉及两个软件包:rpcbind和nfs-utils;

1.在配置服务端时我们需要先将两个软件包装好。

        [root@localhost ~]# yum install rpcbind

        [root@localhost ~]# yum install nfs-utils

我们需要设置谁是共享文件,将文件共享给谁。我们需要编辑/etc/exports ,如果没有exports文件我们可以自己新建一个exports文件。

        [root@localhost ~]# vim /etc/exports -----编辑共享文件。

#共享目录   主机名(权限)
#可以使用完整的IP或者是网络号,例如172.24.8.128或172.24.8.0/24或者172.24.8.128/255.255.255.0;也可以使用*表示所有主机

2.创建共享目录并写入数据

[root@localhost ~]# mkdir /data

[root@localhost ~]# echo "this is text" > /data/file

3.写好后重启nfs服务

[root@localhost ~]# systemctl status nfs-server -----重启nfs服务

[root@localhost ~]# systemctl stop firewalld ------关闭防火墙

权限参数

参数值说明
rw,ro该目录共享的权限是可读写还是只读,但最终能否读写,还是与 文件系统的rwx有关
sync,asyncsync代表数据会同步写入到内存与硬盘中,async则代表数据会 先暂存于内存当中,而非直接写入硬盘
no_root_squash root_squash若客户端在共享目录里创建的文件的所属者和所属组是root用户 和root组,那么显示文件的属主和属组时有以下两种情况: no_root_squash表示,文件的所属者和所属组是root用户和 root组;root_squash表示将root用户和组映射为匿名用户和组 (默认设置)。
all_squash no_all_squashall_squash:客户端所有用户创建文件时,客户端会将文件的用户 和组映射为匿名用户和组no_all_squash:客户端普通用户创建的 文件的UID和GID是多少,服务端就显示为多少(默认设置)
anonuid= anongid=将文件的用户和组映射为指定的UID和GID,若不指定默认为 65534(nfsnobody)

客户端配置

1.首先在客户端上我们需要装一个包:nfs-utils

[root@localhost ~]# yum install nfs-utils -y

将包装好后,我们使用一个命令查看nfs服务器的共享文件:showmount

2.查看nfs服务器共享的文件,后面的ip为nfs服务器的ip地址。

3.将nfs服务器共享目录挂载到本地的某个文件中

[root@localhost ~]# mkdir /nfs -----创建一个挂载目录

[root@localhost ~]# mount 192.168.107.10:/data /nfs/ ------挂载

查看挂载情况:发现挂载成功。

此时在本地的/nfs文件中查看:发现nfs服务器的共享文件出现在该文件中(挂载成功)

客户端的自动挂载

在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在 /etc/rc.d/rc.local 中设置开机时自动挂载( /etc/rc.d/rc.local 文件中写入的命令,在每次启动系统用户登录之前都会执行一次);也可以在登录系统后手动利用mount来挂载。 由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造成另外一方等待超时。为了解决这样的问题,就出现了下面的想法:

  • 当客户端在有使用NFS文件系统的需求时才让系统自动挂载。

  • 当NFS文件系统使用完毕后,让NFS自动卸载。

于是就产生了autofs这个服务。

autofs这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时,将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。

自动挂载功能会使用到一个软件: autofs

        [root@localhost nfs]# yum install autofs -y  -----下载软件包

        [root@localhost ~]# vim /etc/auto.master  -----编辑该文件

[root@localhost ~]# grep haha /etc/auto.master
/test   			/etc/haha
本地端的目录文件	   挂载配置文件(在该文件中去写挂载的具体信息)	 
[root@localhost ~]# 
[root@localhost ~]# vim /etc/haha  ------编辑挂载配置文件
[root@localhost ~]# cat /etc/haha
shuju  192.168.107.10:/data  (吧data挂载到本地的shuju下边),这里只写了一个名字没有写路径它会将									shuju放到/test下。
自动挂载解释:autofs会去检测类似与我们之前写的/test目录,看有没有人去访问这些目录;如果有人去访问/test下的数据,它就会去读配置文件/etc/haha,将192.168.107.10:/data挂载到/test/shuju。

[root@localhost ~]# systemctl restart autofs  -----启动自动挂载服务。
[root@localhost ~]# systemctl stop firewalld  -----关闭防火墙

此时就可以发现挂载成功:

情况一:

当nfs给客户端的权限为rw时:

我们在客户端的挂载文件中写入时提示权限被拒绝(即使客户端的用户为root)

此时我们需要考虑当前账户对目录的权限:这里的root是客户端的root,不是服务端的root。这里的root是不一样的。客户端的root在服务端不被当作root,客户端的root被服务端当成nobady;

那么此时客户端root账号对于该文件的权限为其他人的权限:r-x

此时我们需要到nfs服务端给其他人加上W的权限:

当给了权限后,我们再到客户端上去创建新文件,此时发现已经有权限并能够成功创建:

情况二:

当nfs的服务端的nfs挂掉时:

在客户端上就会造成挂载目录卡掉:

        造成卡顿状态的原因:因为客户端上一直挂载着,当你去访问这些文件系统时它就会一直尝试去挂载服务端。但是服务器这边不能被访问,所以就一直开在这种状态。

解决办法:重启客户端

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

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

相关文章

五分钟搞定什么是系统的平均负载

平均负载定义 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和CPU使用率没有直接关系。简单理解就是平均负载其实就是平均活跃进程数。 使用uptime命令查看系统平均负载 在linux中&#xf…

【环境】原则

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 一、培养项目系统性思维 1.1 系统性思维 1.2 系统性思维的价值 1.3 建模和推演&数字孪生 二、项目的复杂性和如何驾驭复杂性 2.1 复杂性的三个维度 2.2 如何驾驭复杂性 三、…

Qt实现XYModem协议(一)

1 概述 Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 其特性如下: Kermit文件运输协议是一个半双工的通信协议。它支持7位ASCII字符。数据以可多达96字节长度的可变长度的分组形式传输。对每个被传送分组需要一个确认。Kerm…

如何利用纯前端技术,实现一个网页版视频编辑器?

纯网页版视频编辑器 一、前言二、功能实现三、所需技术四、部分功能实现4.1 素材预设4.2 多轨道剪辑 一、前言 介绍:本篇文章打算利用纯前端的技术,来实现一个网页版的视频编辑器。为什么突然想做一个这么项目来呢,主要是最近一直在利用手机…

KITTI结果领先地位!Progressive LiDAR Adaptation for Road Detection——PLARD算法

描述 详解一篇基于激光视觉融合的道路检测文章,发表在2019年自动化学报英文版(我所主编的业界顶刊)中,第三作者是陶大程,业界大佬,可自行进行百度。 为什么选择这篇文章进行分析呢。查看KITTI数据集的分数…

分布式数据库Polardb-X架构及特点

PolarDB-X架构 计算节点(Compute Node,CN)是系统的入口,采用无状态设计的sql引擎提供分布式路由和计算,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务2PC协调…

CFDPro雾化仿真 | 专为雾化过程与液滴属性研究设计的仿真模块

雾化是一种将液体转化为微小液滴的技术,通过不同的雾化方法实现液体的高效分散、蒸发、燃烧、吸附或沉积等目的。 雾化仿真在多个工业领域中具有极其重要的地位。无论是内燃机中燃油的高效燃烧,还是化工生产中的喷雾干燥,以及农业喷雾中农药…

[linux]进程控制——进程终止

一、main函数的返回值 我们在编写C语言的程序时,通常会这样写: int main() {return 0; } 那么我们为什么要返回(return)0 呢? 其实,main函数也是一个函数,它也会被调用,所以谁调…

【力扣 Hot100 | 第四天】4.15(括号生成)

文章目录 4.括号生成4.1题目4.2解法:回溯4.2.1回溯思路(1)函数返回值以及参数(2)终止条件(3)遍历过程 4.2.2代码 4.括号生成 4.1题目 数字 n 代表生成括号的对数,请你设计一个函数…

计算机笔记(11)续20个

180.时钟频率2.0GHz表示一秒有2*10的9次方个时钟周期,若执行一条指令需要2个时钟周期,则每秒执行的指令数为2*10的9次方/21*10的9次方 181.同轴电缆粗缆采用AUI头作为连接器件 182. 183.win7中的回收站,存放的是硬盘上被删除的…

C语言:文件操作(三)

目录 前言 5、文章的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 结语 前言 本篇文章继续讲解文件操作,讲解文件的随机读写,主要有三个函数:fseek;ftell;rewind。 前面讲解的函数都是对文件内容进行顺序读写&#x…

MySQL 8.0.19安装教程(windows 64位)

在c盘目录下的Program Files目录下创建MySQL目录,将下载好的mysql解压到里面 解压完是这个样子 配置初始化的my.ini文件的文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirC:\Program Files\MySQL # 设置mysql数据库的数据的存放目录 datad…

Trl SFT: llama2-7b-hf使用QLora 4bit量化后ds zero3加上flash atten v2单机多卡训练(笔记)

目录 一、环境 1.1、环境安装 1.2、安装flash atten 二、代码 2.1、bash脚本 2.2、utils.py 注释与优化 2.3、train.py 注释与优化 2.4、模型/参数相关 2.4.1、量化后的模型 2.4.1.1 量化后模型结构 2.4.1.2 量化后模型layers 2.4.2、参数 2.4.2.1 training args 2.4.2.2 pe…

【随笔】Git 基础篇 -- 拉取数据 git pull(二十八)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

GPT的使用

个人笔记(整理不易,有帮助点个赞) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔:工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

详解电源测试系统自定义报告模板功能:如何轻松实现数据导出

在NSAT-8000电源测试系统内,数据一般分为三级架构:原始数据、数据报告和数据分析。数据报告可以直接展示出电源模块的各项测试数据和测试结果,帮助用户评估电源性能,为电源的优化提升提供数据支持。 系统的记录报告板块展示着历史…

RocketMQ 10 面试题FAQ

RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ? 因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq 解耦 系统耦合度降低,没有强依赖…

DeiT:训练ImageNet仅用4卡不到3天的平民ViT | ICML 2021

论文基于改进训练配置以及一种新颖的蒸馏方式,提出了仅用ImageNet就能训练出来的Transformer网络DeiT。在蒸馏学习时,DeiT以卷积网络作为teacher,能够结合当前主流的数据增强和训练策略来进一步提高性能。从实验结果来看,效果很不…

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡 一、板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXI…

html基础——CSS

在HTML中,CSS的作用是用于控制网页的样式,包括字体、颜色、背景、布局等方面的设计。通过一个样例来说明CSS的作用: 如下是一个名为global.css的CSS文件: .C1{font-size: 10px;color: blue;border:1px solid red;height: 200px;…