nfs配置

1.NFS介绍

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操 作系统可以共享彼此的文件。 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文 件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用 上相当便利;

NFS挂载原理:

当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户 端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与 客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如 果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂 载后,NFS客户端查看磁盘信息命令:#df –h。 既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想 对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在

2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据 的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使 用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

RPC与NFS通讯原理:

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用 一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才 能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC

会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能 就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。 那么RPC又是如何知道每个NFS功能的端口呢? 首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录 下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的

RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以 实际端口进行数据的传输了。 注意:在启动NFS SERVER之前,首先要启动RPC服务否则NFS SERVER就无法向RPC服务区注册, 另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的

NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的, 直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

NFS客户端和NFS服务器通讯过程:

1. 首先服务器端启动RPC服务,并开启111端口

2. 服务器端启动NFS服务,并向RPC注册端口信息

3. 客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口

4. 服务端的RPC服务反馈NFS端口信息给客户端。

5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

2. NFS软件包

NFS服务需要nfs-utils和rpcbind两个软件包,V10服务器默认已经安装

3. 配置NFS

NFS主配置文件:/etc/exports

NFS配置参数

4. NFS挂载参数:

4.1 NFS通用设置

soft/hard

软挂载方式挂载系统,若NFS请求超时,则客户端向调用程序返回错误;如,果使用硬连接方式则客户端一直重 新请求直至成功。默认为hard。

bg/fg

设置挂载失败后的行为方式。默认的fg方式将立刻退出返回错误状态,bg方式是退出前将产生一个子进程在后 台继续尝试挂载。

timeo=n

timeo=n 客户端重传请求前等待时间。对于基于TCP的NFS服务,默认等待重传时间为60s。使用TCP协议 时,NFS Client不执行任何超时backoff。对于UDP协议,client使用一个合适的算法,为常用的请求类型estimate合适的超时时间。但对不常用的请求类型使用timeo设置。如果timeo没有设置,不常用的请求类 型1.1秒以后重试。在每次重发后,NFS Client会将timeout时间加倍,直到最大的60秒。

retrans=n

客户端返回错误前的重传次数。默认为重传3次。retrans与soft参数一起使用时才有效。

retry=n

设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000minutes

resize=n/wsize=n

每个read/write命令字向服务器读取文件的最大字节数。实际数据小于或等于此值。resize/wsize必须是1024倍数的正整数,小于1024时自动设为4096,大于1048576时自动设为1048576。默认时,服务器和客户 端进行协商后设置。

async/sync

同步、异步挂载,客户端默认异步(async)。对于异步挂载,客户端下发的写数据会先缓存在内存中,达到 一定大小或者其他条件(与客户端设置,状态有关),再一起发往服务端。而同步挂载,每次下发的写数据马 上发到服务端。

acregmin/acregmax

设置NFS客户端缓存普通文件属性的最短时间和最长时间,单位为秒。超过此时间后对其进行更新。默认最短 时间是3s,最长时间是60s

acdirmin/acdirmax

设置NFS客户端缓存目录属性的最短时间和最长时间,单位为秒。超过此时间后对其进行更新。默认最短时间 是3s,最长时间是60s。

ac/noac

设置是否缓存文件属性。为了提高性能,NFS客户端缓存文件属性(默认ac),然后每隔一段时间去检查文件 属性后更新。在缓存有效期内,客户端不检测服务器上文件属性是否改变。默认为ac。

actimeo

将acregmin/acregmax/acdirmin/acdirmax四个参数设置为相同时间,单位为秒。

sharecache/nosharecache

设置客户端并发挂载同一文件系统时数据缓存和属性缓存的共享方式。设置为sharecache时,多个挂载共享 共享同一缓存。设为nosharecache时,每个挂载各有一个缓存。默认为sharecache。

resvport/noresvport

设置连接服务器是否使用保密源端口。默认的resvport设置保密端口,noresvport设置为非保密端口。内 核2.6.28及以后版本支持。

lookupcache=mode

设置内核管理给定挂载点的目录项缓存方式。其中包括all/none/pos几种方式。客户端缓存LOOKUP命令字 请求结果。如果请求的目录项在服务器上,则返回结果为正,否则为负。all的管理方式是在父目录缓存的属 性失效前客户端缓存这两种目录项;pos是在父目录缓存的属性失效前客户端缓存结果为正的查询结果,总是 重新验证结果为负的查询结果。none总是重新验证目录缓存项。默认为all管理方式,内核2.6.28及以后版 本支持。

intr/nointr

设置是否允许信号中断挂载点的文件操作。如果指定intr,当NFS操作被信号中断时系统返回EINTR。指定nointr,信号不会中断NFS文件操作。默认为nointr。指定intr时,通常同时使用soft选项,防止数据损 坏。内核2.6.25及以后不再支持。

cto/nocto

设置是否使用“关闭打开”缓存一致的特性。通常客户端打开文件时检查是否存在以及是否有权限,当关闭文件 时刷新更改。当设置为nocto时,客户端使用非标准的试探来检查服务器上文件是否改变,对于只读和文件更 改较少时情形有助于提高性能。

4.2 对NFS(NFS2/NFS3)有效的选项

proto=transport

客户端向服务器发起传输请求使用的协议,可以为UDP或者TCP。未指定时,mount命令选择服务器支持的协 议

4.3 对NFS4有效的选项:

proto=transpro

客户端向服务器发起传输请求使用的协议,可以为UDP或者TCP。未指定时,选用TCP。

port=n

指定服务器NFS服务端口。如果NFS服务端口不在port上,则mount请求失败。未指定时,客户端使用NFS标 准的2049号端口。指定为0时,客户端选用服务器rpcbind服务支持的端口。

5. 范例

5.1 共享/nfs目录给192.168.1.0网段(完整范例)

服务器:

客户端:

5.2 客户端挂载192.168.1.164服务器的nfs目录,当网络质量不好时,客户端不会 因此卡顿(客户端挂载参数)

客户端

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kurbernetes集群】Pod资源、Pod资源限制和Pod容器的健康检查(探针)详解

Pod资源 一、Pod概述1.1 Pod的定义1.2 一个Pod能包含几个容器?1.3 Pod的分类1.3.1 控制器管理的Pod1.3.2 自主式Pod1.3.3 静态Pod 1.4 Pod中容器的分类1.4.1 Pause容器1.4.2 初始化容器1.4.3 应用容器 1.5 Pod常见的状态 二、Pod中的策略2.1 镜像拉取策略2.2 Pod中容…

C语言--定义一个包含年月日的结构体Day,实现一个函数,根据传入的结构体指针计算,该日期是当年的第几天?

一.题目要求 输入2000年6月5日,输出:这是2000年的第157天。 二.思路分析 首先定义一个包含年月日的结构体 年份:要判断是否是闰年,闰年的二月有29天,平年的二月有28天。 月份:一个月份分大月和小月&#…

K8S概念与架构

K8S概念与架构 一、Kubernetes 概述1、K8S 是什么2、为什么要用 K8S3、k8s介绍二、Kubernetes 集群架构与组件2.1、Master核心组件 2.2、Node核心组件 三、Kubernetes 核心概念3.1、Pod 控制器 一、Kubernetes 概述 1、K8S 是什么 K8S 的全称为 Kubernetes (K12345678S)&…

基于php js+mysql+laravel技术架构的手术麻醉管理系统源码 手麻系统源码

PHP手术麻醉管理系统源码 手麻系统源码 手术麻醉管理系统定义: 手术麻醉系统主要是由麻醉信息管理和监护设备数据采集系统两个部分组成,主要是将麻醉信息和从监护仪器上采集到的数据以及手术信息进行统计。 手术麻醉系统是指专用于住院患者手术与麻醉…

【Java】Netty创建网络服务端客户端(TCP/UDP)

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Netty创建网络服务端客户端示例。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更…

【2】Spring Boot 3 项目搭建

目录 【2】Spring Boot 3 初始项目搭建项目生成1. 使用IDEA商业版创建2. 使用官方start脚手架创建 配置与启动Git版本控制 个人主页: 【⭐️个人主页】 需要您的【💖 点赞关注】支持 💯 【2】Spring Boot 3 初始项目搭建 项目生成 1. 使用IDEA商业版创…

【python高级】asyncio 并发编程

【大家好,我是爱干饭的猿,本文重点介绍python高级篇的事件循环,task取消和协程嵌套、call_soon、call_later、call_at、 call_soon_threadsafe、asyncio模拟http请求、asyncio同步和通信、aiohttp实现高并发实践。 后续会继续分享其他重要知…

error C2143的原因及解决办法

error C2143的原因及解决办法 在C编程中,经常会遇到各种错误。其中之一就是error C2143。本文将讨论error C2143的原因,并给出相应的解决办法。 error C2143通常是由于语法错误引起的。具体而言,C2143错误表示编译器无法识别代码中的某个符…

UE5蓝图接口使用方法

在内容区右键创建蓝图接口 命名自定义(可以用好识别的) 双击打开后关闭左边窗口 右键函数 -- 重命名 -- 名称自定义(用好记的) 点击下边输入后面的 号创建一个变量 点击编译并保存 在一个蓝图类里面 -- 点击类设置 在右侧已实现的…

python3GUI--QQ音乐By:PyQt5(附下载地址)

文章目录 一.前言二.展示0.播放页1.主界面1.精选2.有声电台3.排行4.歌手5.歌单 2.推荐3.视频1.视频2.分类3.视频分类 4.雷达5.我喜欢1.歌曲2.歌手 6.本地&下载7.最近播放8.歌单1.一般歌单2.自建歌单3.排行榜 9.其他1.搜索词推荐2.搜索结果 三&#x…

日语形容词分类

かっこいい的否定变形是かっこよくない

conda修改虚拟环境名称

conda 修改虚拟环境名称 conda 不能直接更改名称,但是可以通过克隆环境解决 新建环境(克隆旧环境) conda create --name 新环境名 --clone 旧环境名 删除原环境 conda remove --name 旧环境名 --all 查看现有环境 conda env list conda i…