【NFS】NFS使用汇总

1. NFS介绍

NFS(Network File System),网络文件系统,它可以让不同主机能够通过 TCP/IP 网络共享资源。它从宏观主体上简化来看,就是两部分:服务端和客户端。

服务端,可以认为它就是来存东西的,这个东西对外是共享的。

客户端,可以认为它是访问服务端上的东西的,可以对服务端共享出来的东西进行读/写。当然读还是写,这些权限在服务端是可以控制的。

举个例子的话,可以想象一下仓库和员工,仓库可以认为是服务端,员工是客户端,员工只要有访问仓库的权限,那就可以看仓库有什么东西,从仓库拿东西或者往仓库放东西。

画个草图如下:

NFS

想弄得再明白一点,NFS具体是如何传输数据的?它是怎么把数据从服务端计算机A传送给客户端计算机B的?

网络传输的话,想起之前用python写过socket的demo,服务端绑定一个端口,并监听是否有客户端来连接;客户端那边通过端口向服务端发起连接;等连接建立之后,就可以发送数据了,实现计算机A和计算机B之间的数据传输。

NFS也可以类比,既然是网络传输,那就必然有传输端口,但是NFS有很多功能,每个功能都要启动端口传输数据,这些端口是随机的,那客户端那边就会疑惑到底要通过哪个端口连接服务端传输数据。于是引入了RPC。

RPC(Remote Procedure Call),远程过程调用,主要功能就是指定每个NFS功能所对应的端口,并返回给客户端,使客户端可以连接到正确的端口上。

下面画了一个简图,NFS服务端RPC和NFS服务端程序启动顺序,以及客户端是如何访问共享目录中的内容的。

在这里插入图片描述

2. NFS 安装

yum -y install nfs-utils

3. NFS配置

3.1 NFS服务端

配置文件有两个地方可以配置

3.1.1 配置文件/etc/exports

/storage/nfs_server *(fsid=0, rw,sync,all_squash)

3.1.2 配置文件/etc/exports.d/*.exports

在目录下/etc/exports.d目录下新建一个配置文件 {自己起名字}.exports

文件内容语法和 /etc/exports 写法一样的。

这两种方法可以同时配置。

3.1.3 配置文件参数

exports配置文件中的参数说明:

参数含义
fsid
ro该主机对该共享目录有只读权限
rw该主机对该共享目录有读写权限
sync资料同步写入到内存与硬盘中
async资料会先暂存于内存中,而非直接写入硬盘
all_squash

重点参数详解

3.1.3.1 fsid

文件系统都有id, 在NFS上伪文件系统的id称为fsid。

NFS的fsid可以不用填,通常如果文件系统有uuid的话,它会用文件系统的uuid作为fsid,或者文件系统存储在设备上的话,使用设备号作为fsid。(从官网资料【5.3】上翻译过来的,我理解这里指的是共享目录所在的文件系统或设备,也有可能不对,后面了解更多再修改补充。)

但不是所有的文件系统都存储在设备上,也不是所有的文件系统都有uuid,这个时候就需要手动明确fsid了。

针对NFS4,fsid=0有特殊含义

fsid=0 或 fsid=root, 表示共享的这个目录为根目录,啥意思?下方给个例子:

服务端的配置文件里,我设置了一个目录: /mnt/nfs,参数中加了fsid=0

在这里插入图片描述

在客户端如果我想挂载这个目录到/mnt/test,会怎么去挂载?一般会这样写:mount -t nfs4 {server_ip}:/mnt/nfs /mnt/test,这样写的执行效果如下,服务端传过来的报错是:没有/mnt/nfs这个目录,不死心又看了下服务端共享的目录,发现存在的,怎么挂不上呢?原因就在于服务端把/mnt/nfs这个目录的共享参数中加了fsid=0。

在这里插入图片描述

似乎知道fsid=0的效果是啥了,当做根目录,那挂载命令换成: mount -t nfs4 192.168.13.37:/ /mnt/test,执行效果如下,发现挂载上了,内容都可以访问到。【5.2】

在这里插入图片描述

验证一

如果我在配置文件里设置了两个目录,fsid都设置为root或0,客户端挂载根目录会有什么效果呢?

测试了下如果配置2个root,挂载也不会报错,哪个目录配置在前面,挂载的根目录就是哪个,如下图所示,客户端挂载根目录后,展示的是/mnt/nfs1下的内容。

在这里插入图片描述

验证二

这里我又有疑惑了,fsid不设置为0,假设共享两个目录/mnt/nfs和/mnt/nfs1,fsid我都设置为1,在客户端挂载会有什么效果呢?会不会和上面都设置为root效果一样呢?

在这里插入图片描述

于是我在客户端这边建了两个目录分别挂载试试:

客户端将服务端的/mnt/nfs挂载到本地 /mnt/test

mount -t nfs4 192.168.13.37:/mnt/nfs /mnt/test

挂载效果符合预期

在这里插入图片描述

客户端将服务端的/mnt/nfs1挂载到本地 /mnt/test1

mount -t nfs4 192.168.13.37:/mnt/nfs1 /mnt/test1

发现异常了,挂载不会报错,但是通过 df -h 查不到挂载目录/mnt/test1,查看/mnt/test1目录展示的又是服务端/mnt/nfs目录下的内容,这里明显不符合预期。效果看起来和验证一是一样的,配置文件中只有第一个目录/mnt/nfs是生效的。

在这里插入图片描述

通过这个验证可以得出一个结论:配置共享目录时,如果指定fsid,编号不能重复,否则生效的目录永远是靠前的目录。

3.1.4 使配置文件生效

exportfs -r

导出目录之后会在文件中 /var/lib/nfs/etab 中写入记录。

3.1.5 查看服务端共享出来的目录

showmount -e {服务端ip}

给个例子:

如下图所示: /etc/exports和/etc/exports.d/*.exports中配置的目录都共享出来了。

在这里插入图片描述

3.2 NFS客户端

挂载NFS服务端共享出来的目录

最简单直接的挂载

mount 192.168.xx.xx:/storage/nfs_server  /mnt/nfs

挂载的时候也能指定其他参数,例如:

mount -tnfs4 -o rw,nfsvers=4.1,sync,lookupcache=positive,hard,timeo=600,wsize=1048576,rsize=1048576,namlen=255 192.168.xx.xx:/storage/nfs_server  /mnt/nfs

参数说明:
pass

4. 常见问题

4.1 exportfs: /mnt/nfs1 requires fsid= for NFS export

在/etc/exports中的目录权限中添加fsid参数。

4.2 mount.nfs4: mounting 192.168.xx.xx:/storage/nfs_server failed, reason given by server: No such file or directory

修改服务端配置文件/etc/exports中的fsid,不要设置为0,可能是设置成根目录导致的。参考3.1.3.1 fsid章节。

5. 参考资料

5.1 man exportfs(exportfs命令中文手册) 骏马金龙

https://www.cnblogs.com/f-ck-need-u/p/7302589.html

5.2 The /etc/exports Configuration File

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/deployment_guide/s1-nfs-server-config-exports

5.3 exports(5) - Linux man page

https://linux.die.net/man/5/exports

5.4 NFS基本应用 骏马金龙 (大佬)

https://www.cnblogs.com/f-ck-need-u/p/7305755.html#auto_id_5

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

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

相关文章

蓝桥杯刷题_day7_动态规划_路径问题

文章目录 DAY7下降路径最小和最小路径和地下城游戏 DAY7 下降路径最小和 【题目描述】 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元…

【Java面试题】Redis中篇(高可用:主从复制、哨兵、集群)

文章目录 高可用14.Redis如何保证高可用?15.Redis的主从复制?16.Redis主从有几种常见的拓扑结构?17.Redis的主从复制原理了解吗?18.说说主从数据同步的方式?19.主从复制存在的问题?20.Redis Sentinel(哨兵)…

信息素养和社会责任

1.信息素养: 信息素养是一种了解、收集、评估、和利用信息的知识结构能力。 信息素养的四个要素:信息意识,信息知识,信息能力,信息道德 信息意识是先导(前提),是对关键信息具有持…

elementui的table根据是否符合需求合并列

<el-table :data"tableData" border style"width: 100%;" :span-method"objectSpanMethodAuto"><!-- 空状态 --><template slot"empty"><div><img src"/assets/images/noData.png" /></di…

基于SSM+Jsp+Mysql的母婴用品网站

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

新能源汽车充电桩主板的常见故障及解决办法

电桩主板作为充电桩的核心组件&#xff0c;直接影响着充电桩运行的安全性与稳定性。然而&#xff0c;在使用过程中&#xff0c;充电桩主板会因多种原因而出现一些故障情况&#xff0c;了解这些原因并采取相应的应对方法对维护充电桩的正常运行起着至关重要的作用。接下来&#…

3-zookeeper之ZAB协议

Zookeeper ZAB协议 概述 ZAB(Zookeeper Automic Broadcast)是一套专门为Zookeeper设计的用于进行原子广播和崩溃恢复的协议ZAB协议主要包含了两个功能 原子广播&#xff1a;保证数据一致性崩溃恢复&#xff1a;保证集群的高可用 ZAB协议本身是基于2PC算法来进行的设计&#…

U盘位置不可用,如何轻松应对数据恢复难题

在日常工作和生活中&#xff0c;U盘作为一种便捷的存储设备&#xff0c;经常被用于数据传输和备份。然而&#xff0c;有时我们可能会遇到这样一个问题&#xff1a;当插入U盘时&#xff0c;系统提示“位置不可用”或“无法访问”&#xff0c;这让人倍感困扰。面对这种情况&#…

wpsword求和操作教程

wpsword求和怎么操作&#xff1a; 1、首先&#xff0c;单纯的数据是无法求和的&#xff0c;所以我们必须要“插入”一个“表格” 2、接着将需要求和的数据填入到表格中。 3、填完后&#xff0c;进入“布局”选项卡。 4、然后打开其中的“公式” 5、在其中选择求和公式“SUM”并…

从0到1部署私域NuGet库:实战指南,让你轻松掌握!

引言 私域NuGet包的重要性&#xff1a;代码复用和团队协同。通过将公共组件、库或工具打包成NuGet包&#xff0c;并在私域中共享&#xff0c;团队成员可以更方便地引用和使用这些资源。其次私域NuGet包有助于依赖管理。通过私域NuGet包&#xff0c;团队可以集中管理这些依赖&a…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司&#xff08;以下简称为“隆泰物业”&#xff09;创建于2002年&#xff0c;总部设在河北省高碑店市&#xff0c;具有国家一级物业管理企业资质&#xff0c;通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今&#xff0c;隆…

启信宝商业大数据助力全国经济普查

近日&#xff0c;合合信息旗下启信宝收到中国青年创业就业基金会感谢信&#xff0c;对启信宝协同助力全国经济普查和服务青年创业就业研究表达感谢。 第五次全国经济普查是新时代新征程上一次重大国情国力调查&#xff0c;是对国民经济“全面体检”和“集中盘点”&#xff0c;…

virtualbox 设置虚拟机 centos 网络

在VirtualBox中为运行CentOS系统的虚拟机配置网络连接&#xff0c;您通常可以选择以下几种网络模式之一&#xff0c;以满足不同的网络需求&#xff1a; NAT (Network Address Translation): 功能&#xff1a;允许虚拟机通过宿主机的网络连接访问互联网&#xff0c;同时也可以从…

学习鸿蒙基础(10)

目录 一、轮播组件 Swiper 二、列表-List 1、简单的List 2、嵌套的List 三、Tabs容器组件 1、系统自带tabs案例 2、自定义导航栏&#xff1a; 一、轮播组件 Swiper Entry Component struct PageSwiper {State message: string Hello Worldprivate SwCon: SwiperControl…

Ribbon简介

目录 一 、概念介绍 1、Ribbon是什么 2、认识负载均衡 2.1 服务器端的负载均衡 2.2 客户端的负载均衡 3、Ribbon工作原理 4、Ribbon的主要组件 IClientConfig ServerList ServerListFilter IRule Iping ILoadBalancer ServerListUpdater 5、Ribbon支持…

BGP实训

BGP基础配置实训 实验拓扑 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为2的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP 地址的主…

vs右键在浏览器中查看报错

vs右键在浏览器中查看报错Visual studio 右键在浏览器中查看报错HTTP错误500.30——ANCM进程内启动失败——.NET Core HTTP Error 500.30 - ANCM In-Process Start Failure - .NET Core HTTP Error 500.30 - ANCM In-Process Start Failure Common solutions to this issue: …

海量电动汽车数据无法解决?不放试试基于MonteCarlo方法的大规模电动汽车充放电模型程序代码!

前言 电动汽车大规模入网充电时会导致系统内负载峰值拔高的问题&#xff0c;和分布式电源一样&#xff0c;都会对电网的安全稳定运行造成冲击&#xff0c;需要在满足系统运行经济效益最优的同时&#xff0c;尽量降低大量电动汽车入网无序充电对系统造成的不良影响。通过分析电…

【WEEK5】 【DAY4】数据库操作【中文版】

2024.3.28 Thursday 目录 2.数据库操作2.1.数据库2.1.1.新建数据库&#xff08;右键的方法&#xff09;2.1.2.查询&#xff1a;点击“查询”->“新建查询表”即可输入所需要的语句&#xff0c;点击“运行”&#xff0c;如&#xff1a; 2.2.结构化查询语句分类2.3.数据库操作…

帝国cms自适应html5古诗词历史名句书籍文章资讯网站源码整站模板sinfo插件带采集会员中心

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 帝国cms自适应html5古诗词名句书籍文…