当前位置: 首页 > news >正文

Centos7搭建NFS

1.NFS简介

Network File System(网络文件系统,通过网络让不同的机器系统之间可以彼此共享文件和目录,类似Samba服务。

2.NFS挂载原理

在网络中服务器和客户端进行连接都是通过端口进行数据传输,而NFS服务端的端口是随机的,从而导致NFS客户端不知道端口号是多少,不能直接和服务端进行传输,其实NFS服务器是通过远程过程调用(remote procedure call RPC)协议来完成,RPC服务会统一NFS的端口,客户端和服务端连接时通过RPC来沟通NFS使用了那些端口,之后利用这些端口(小于1024)进行数据传输。

RPC不会主动向NFS服务去获取端口号,所以我们要先启动RPC,之后在启动NFS,NFS才把自己开发的端口向RPC去注册端口号

比方:你喜欢的女孩生日了,你想给她送一份礼物,但是你又不知道她喜欢什么,怕自己的爱打水漂,所以找到了她的闺蜜,问到了她喜欢的一下东西。

3.NFS工作过程

(1)NFS server端会随机开放一个端口,去向RPC去注册这些端口,RPC会记录下来,并开放自己的111端口,等待客户端RPC的请求

(2)NFS Client端口使用自己的RPC端口去连接Server端的RPC端口,Server端的RPC收到请求后,会将自己记录的NFS端口信息告知客户端

4.软件包和常用目录

nfs-utils-*

rpcbind-*

/etc/exports #NFS服务的主要配置文件

/usr/sbin/exportfs #NFS服务的管理命令

/usr/sbin/showmount #客户端的查看命令

/var/lib/nfs/etab #记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab #记录曾经登录过的客户端信息

5.NFS服务器的配置

主配置文件:/etc/exports

/etc/exports格式:

共享目录 + 客户端+(配置参数)

/opt/share 192.168.100.0/24(rw等等)

共享目录:指NFS共享给客户端使用的目录

客户端:网络中可以访问这个共享目录的计算机

客户端指定方式:

指定ip地址:192.168.100.100

指定子网中的所有主机:192.168.100.0

指定域名主机:www.chinaskills.cn

指定域中的所有主机:*.chinaskills.cn

所有主机:*

/etc/exports配置参数:

ro 只读访问

rw 读写访问

sync 所有数据在请求时写入共享

async NFS在写入数据前可以相应请求

secure NFS通过1024以下的安全TCP/IP端口发送

insecure NFS通过1024以上的端口发送

wdelay 如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

hide 在NFS共享目录中不共享其子目录

no_hide 共享NFS目录的子目录

subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check 和上面相对,不检查父目录权限

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash 保留共享文件的UID和GID(默认)

root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas root用户具有根目录的完全管理访问权限

anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID

6.查看共享状态

客户端:

showmount -e NFS服务端ip地址

服务端:

exportfs

7.挂载方式

命令格式:mount + NFS服务器ip:共享目录 本地挂载目录

mount 192.168.100.100:/home/zhangsan /media/zhangsan

mount -o vers=3 192.168.100.100:/home/zhangsan /media/zhangsan

卸载:

umount 挂载点

umount /media/zhangsan

exports -au #服务端停止共享

exports -ra #重新进行共享

自动挂载:

格式:: nfs 0 0

192.168.100.100:/home/zhangsan /media/zhangsan nfs,vers=3 defaults 0 0

mount - a

8.相关命令

exportfs命令

格式:exportfs [-aruv]

-a #全部挂载或卸载主配置文件中的内容(一般都和-u -r 一起使用)

-r #重新读取主配置文件中的信息,并同步更新/etc/exports,/var/lib/nfs/xtab

-u #卸载单一目录(和-a使用为卸载所有主配置文件中的目录)

-v #将详细信息输出到屏幕上

例子:

exportfs -au #卸载所有共享目录

exportfs -rav #重新共享所有目录并输出详细信息

rpcinfo命令

rpcinfo -p #查看nfs和rpc开放了那些端口

PS:在做了iptables的环境下不能重新启动rpc和nfs服务,最好就是重新获取信息,因为你重启的时候NFS的端口会改变,那样iptables开放的端口就失效了。

9.实验

• 共享/data/share目录;

• 用于存储server01主机的web数据;

• 仅允许192.168.100.0网段访问该共享。

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

[root@localhost ~]# mkdir /data/share -p

[root@localhost ~]# touch /data/share/a.txt

[root@localhost ~]# echo aaaa > /data/share/a.txt

[root@localhost ~]# vim /etc/exports

[root@localhost ~]# exportfs -arv

exporting 192.168.100.0/24:/data/share

[root@localhost ~]# systemctl restart nfs

使用rpcinfo -p 命令查看开放的端口

[root@localhost ~]# iptables -I INPUT -p tcp --dport 111 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p tcp --dport 2049 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p udp --dport 111 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p udp --dport 2049 -j ACCEPT

[root@localhost ~]# systemctl stop firewalld.service

[root@localhost ~]# setenforce 0

客户端测试:

10.固定端口实验

因为NFS的端口一直改变,而防火墙又不能关闭,所有我们为了方便将NFS的端口给它固定住,又由于nfs服务需要开启 mountd,nfs,nlockmgr,portmapper,rquotad这5个服务,NFS重启是除了portmapper不会改变之外,其他四个都是会改变,所有我们要一起给进行端口绑定

1)首先我们要找到有那4个连续而有没有服务运行的端口

grep 50000 /etc/services | more

2)在/etc/sysconfig/nfs文件最后面添加

RQUOTAD_PORT=50001

LOCKD_TCPPORT=50002

LOCKD_UDPPORT=50002

MOUNTD_PORT=50003

STATD_PORT=50004

3)修改/etc/modprobe.d/lockd.conf,末尾添加

options lockd nlm_tcpport=30002

options lockd nlm_udpport=30002

3)重启服务

systemctl restart nfs-config

systemctl restart nfs-idmap

systemctl restart nfs-lock

systemctl restart nfs-server

4)查看端口

ss -tnlp | grep -E "50000|111|2049"

5)iptables设置

iptables -I INPUT -p tcp --dport 50001:50004 -j ACCEPT

iptabels -I INPUT -p udp --dport 50001:50004 -j ACCEPT

iptables -l INPUT -p tcp --dport 111 -j ACCEPT

iptables -I INPUT -p tcp --dport 2049 -j ACCEPT

iptables -I INPUT -p udp --dport 111 -j ACCEPT

iptables -I INPUT -p udp --dport 2049 -j ACCEPT

 nfs - 启动相应RPC服务进程来服务对于NFS文件系统的请求.
* nfslock - 一个可选的服务,用于启动相应的RPC进程,允许NFS客户端在服务器上对文件加锁.
* portmap - Linux的RPC服务,它响应RPC服务的请求和与请求的RPC服务建立连接.下面的RPC进程在后台一起工作服务于NFS服务:* rpc.mountd - 这个进程接受来自NFS客户端的加载请求和验证请求的文件系统正在被输出.这个进程由NFS服务自动启动,不需要用户的配置.
* rpc.nfsd - 这个进程是NFS服务器.它和Linux核心一起工作来满足NFS客户端的动态需求,例如提供为每个NFS客户端的每次请求服务器线程.这个进程对应于nfs服务.* rpc.lockd - 一个可选的进程,它允许NFS客户端在服务器上对文件加锁.这个进程对应于nfslock服务.* rpc.statd - 这个进程实现了网络状态监控(NSM)RPC协议,通知NFS客户端什么时候一个NFS服务器非正常重启动.这个进程被nfslock服务自动启动,不需要用户的配置.* rpc.rquotad - 这个进程对于远程用户提供用户配额信息. 这个进程被nfs服务自动启动,不需要用户的配置.

相关文章:

Centos7搭建NFS

1.NFS简介Network File System(网络文件系统,通过网络让不同的机器系统之间可以彼此共享文件和目录,类似Samba服务。2.NFS挂载原理 在网络中服务器和客户端进行连接都是通过端口进行数据传输,而NFS服务端的端口是随机的,从而导致N…...

ThreadLoca基本使用以及与synchronized的区别

文章目录1. ThreadLocal介绍1.1 官方介绍1.2 基本使用1.2.1 常用方法1.2.2 使用案例1.3 ThreadLocal类与synchronized关键字1.3.1 synchronized同步方式1.3.2 ThreadLocal与synchronized的区别2. 运用场景_事务案例2.1 转账案例2.1.1 场景构建2.1.2 引入事务2.2 常规解决方案2.…...

【C++】纯虚函数、纯虚析构

纯虚函数语法:virtual 返回值类型 函数名(参数列表) 0纯虚函数的作用:不用定义!在多态中,通常父类中虚函数的实现是无意义的(因为主要用子类重写的,父类只是为了派生子类当做一个类族的顶层出现&#xff0…...

Python 进阶小技巧:7招展开嵌套列表

大家好,今天给大家讲解一个Python的进阶知识点:如何将一个嵌套的大列表展开形成一个列表。 小编提供了7种方法供大家学习参考: for循环 列表推导式 使用第三方库itertools 使用sum函数 python自加() 使用extend函…...

【Spring6】| Bean的作用域

目录 一:Bean的作用域 1. singleton(单例) 2. prototype(多例) 3. 其它scope 4. 自定义scop(了解) 一:Bean的作用域 1. singleton(单例) (1…...

Qt界面美化之自定义qss样式表

原生的QT界面不好看,有时候需要根据美工的设计图修改样式。如果使用QML的话搞界面是快,但是QML有点儿吃内存,有时简单的功能还是用传统c的widget方便些。好在有qss,传统界面也可以美化的。QSS称为Qt Style Sheets也就是Qt样式表&a…...

春招进行时:“211文科硕士吐槽工资5500” HR:行情和能力决定价值

学历重要,还是能力重要? 春招进行时,不少学生求职遇冷,会把原因归结为学历水平不够高、毕业院校不够档次、专业不够热门、非一线城市就业机会少等等。 直到上海一位211大学的文科男硕士,吐槽招聘会提供的岗位薪资待遇…...

【DaVinci Developer专题】-45-自动生成SWC中所有Runnable对应的C文件

点击返回「Autosar从入门到精通-实战篇」总目录 案例背景(共5页精讲): 在DaVinci Developer中,以Test_A_SWC的Runnable为例,见图0-1。我们现在尝试自动生成一个包含Test_A_SWC_Init和Test_A_SWC_Main函数原型(也是适用于 C/S Port Serve Runnable)的C文件。 图0-1 目…...

redis启动和关闭服务脚本

编译安装redis,自己写了个脚本。 简单实现启动、关闭和 查看redis服务。 基本流程如下: 脚本执行,必须附带1个参数,没有参数会提示附带参数。 脚本会获取redis-server进程数量。作为开启、关闭以及查看redis服务的数据依据。 …...

windows CMD快捷键:

🐱个人主页:莎萌玩家🙋‍♂️作者简介:全栈领域新星创作者、专注于全栈各领域技术,共同学习共同进步,一起加油呀!💫系列专栏:网络爬虫、WEB全栈开发📢资料领取…...

【C/C++语言】刷题|双指针|数组|单链表

主页:114514的代码大冒 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言 一、删除有序数组中的重复项 二、合并两个有序数组 三,移除…...

Leetcode.1487 保证文件名唯一

题目链接 Leetcode.1487 保证文件名唯一 Rating : 1697 题目描述 给你一个长度为 n的字符串数组 names。你将会在文件系统中创建 n个文件夹:在第 i 分钟,新建名为 names[i]的文件夹。 由于两个文件 不能 共享相同的文件名,因此如…...

python-星号(*)-双星号(**)-函数动态参数匹配-解包操作

文章目录1.乘法和幂运算符2.函数接收数量不固定的入参3.限制函数入参仅以关键字形式输入4. 可迭代对象解包操作5.扩展可迭代对象解包1.乘法和幂运算符 ● 单个 * 用于乘法运算 ● 两个 ** 表示幂运算 >>> 2*3 >>> 6 >>> 2**3 >>> 82.函数…...

面试官:为什么说ArrayList线程不安全?

本博客知识点收录于:⭐️《JavaSE系列教程》⭐️ 1)线程安全与不安全集合 我们学习集合的时候发现集合存在由线程安全集合和线程不安全集合;线程安全效率低,安全性高;反之,线程不安全效率高,安…...

STP详解

STP STP全称为“生成树协议”(Spanning Tree Protocol),是一种网络协议,用于在交换机网络中防止网络回路产生,保证网络的稳定和可靠性。它通过在网络中选择一条主路径(树形结构),并…...

linux AWK常用命令 —— 筑梦之路

搜集整理awk常用命令,以便使用查询 # 打印文件第一列awk {print $1} rumenz.txt# 打印文件前两列awk {print $1,$2} rumenz.txt# 打印文件最后一列awk {print $NF} rumenz.txt# 打印文件总行数awk END{print NR} rumenz.txt# 打印文件第一行awk NR1{print} rumenz.…...

SpringCloud:服务拆分及远程调用

目录 SpringCloud:服务拆分及远程调用 1、服务拆分 2、远程调用 SpringCloud:服务拆分及远程调用 SpringCloud是目前国内使用最广泛的微服务框架。 官网地址: Spring Cloud SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了…...

网络应用之javascript函数定义和调用

函数定义和调用学习目标能够写出函数的定义和调用方式1. 函数定义函数就是可以重复使用的代码块, 使用关键字 function 定义函数。<script type"text/javascript">// 函数定义function fnAlert(){alert(hello!);} </script>2. 函数调用函数调用就是函数名…...

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…...

JavaScript Date 日期对象

文章目录JavaScript Date 日期对象Date 对象Date 对象属性Date 对象方法创建日期设置日期两个日期比较JavaScript Date 日期对象 日期对象用于处理日期和时间。 Date 对象 Date 对象用于处理日期与实际。 创建 Date 对象&#xff1a; new Date(). 以上四种方法同样可以创建…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...