Centos7搭建NFS

news2024/12/29 5:10:57

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服务自动启动,不需要用户的配置.

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

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

相关文章

Linux----网络基础(2)--应用层的序列化与反序列化--守护进程--0226

文章中有使用封装好的头文件,可以在下面连接处查询。 Linux相关博文中使用的头文件_Gosolo!的博客-CSDN博客 1. 应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层 1.2 协议 我们在之前的套接字编程中使用的是…

最适合你的团队云协作工具

团队云协作工具哪个好?使用Zoho Projects的团队云协作软件套件,在一个平台上无缝协作,激励您的团队在任何地方以最好的状态完成他们的工作。 使您的团队能够使用团队云协作软件在任何地方进行协作和沟通。Zoho Projects提供了一套强大…

三天吃透计算机网络八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

一文读懂光学天线

天线,按维基百科的定义,"是一种用来发射或接收无线电波—或更广泛来讲—电磁波的器件"。例如,在无线通信系统中,天线被用于发射与接收射频与微波波段的电磁波。而在我们的智能手机中,就有内置的平面倒F天线(…

01-认识产品经理

文章目录引入1.1 合格的产品经理1.2 产品经理的分类按服务对象不同划分按产品平台不同划分按公司所属行业不同按工作内容划分按职级高低划分1.3 产品经理的岗位职责产品的开发流程核心团队成员及其职责产品经理工作中常见误区1.4 产品经理的能力素质专业技能(干得了…

Unity Lighting -- 配置平行光源和天空盒

识别不同种类的光源 在游戏或实时应用程序中,我们可能会创建多种不同种类的场景,比如室内场景、室外场景、真实的场景或完全想象的场景。即便项目是一个完全的想象的或是科幻的故事,灯光也是非常重要的一环,它能极大提升沉浸感。 …

Python3-条件控制

Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程: if 语句 Python中if语句的一般形式如下所示: if condi…

Atlassian Server用户新选择 | 数据中心产品是否适合您的企业(3)?

2024年2月,也就是一年不到,Atlassian将终止对Server产品及插件的所有支持。 此公告发布后,许多用户需要了解怎样的前进方向才是最适合企业的。为此,Atlassian不仅提供云版,还提供了本地部署的数据中心(Data…

jupyter lab安装和配置

jupyter lab 安装和配置 一、jupyter lab安装并配置 安装jupyterlab pip install jupyterlab启动 Jupyter lab默认会打开实验环境的,也可以自己在浏览器地址栏输入127.0.0.1:8888/lab 汉化 pip install jupyterlab-language-pack-zh-CN刷新一下网页&#xff0…

ChatGPT解答:PYQT5 组件化实例,Python代码实现,给出100个代码实例

ChatGPT解答: PYQT5 组件化实例,Python代码实现,给出100个代码实例 PYQT5 组件化实例,Python代码实现,给出100个代码实例 实现一个简单的窗口 import sys from PyQt5.QtWidgets import QApplication, QWidgetapp QA…

我90后,零基础成功转行python工程师,从月薪5K到现在月入2W+改变真的难吗?

我是25岁转行学python的。说实在,转行就是奔着挣钱去的。希望我的经历可以给想转行的朋友带来一点启发和借鉴。 先简单介绍下个人背景,三流大学毕业,物流专业,学习能力一般,没啥特别技能,反正就很普通的一…

CSS3新特性-变量

2017年三月,微软宣布 Edge 浏览器将支持 CSS 变量。 这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大。 一、变量的声明 声明变量的时候,变量名前面要加两根连词…

python入门应该怎么学习

国外Python的使用率非常高,但在国内Python是近几年才火起来,Python正处于高速上升期市场对于Python开发人才的需求量急剧增加,学习Python的前景比较好。 Python应用领域广泛,意味着选择Python的同学在学成之后可选择的就业领域有…

虚函数与多态性

5.1多态性概述: 按实施的机制,多态可以分为两类: 虚函数的定义: (前面思维是虚基类,别搞混了) 运行时多态的条件: 运行时的多态: 基类中有show(),派生类中也有show&…

叠氮化物标记糖92659-90-0,2-[(Azidoacetyl)amino]-2-deoxy-D-glucose广泛用于体内代谢标记

基础产品数据:CAS号:92659-90-0中文名:2-[(叠氮基乙酰基)氨基]-2-脱氧葡萄糖英文名:2-[(Azidoacetyl)amino]-2-deoxy-D-glucose性 状:白色粉末温馨提示:所有的试剂仅用于科研实验。结构式(Struc…

ChatGPT解答:纯前端文档预览,Vue实现,无需后端,支持Word、Excel、PPT、pdf、文本、图片,附接入demo和文档

ChatGPT解答:纯前端文档预览,Vue实现,无需后端,支持Word、Excel、PPT、pdf、文本、图片,附接入demo和文档 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). 纯前端文档预览,Vue实现,无需后…

【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、你认为不同角色关…

A Bio-Inspired Multi-Exposure Fusion Frameworkfor Low-light Image Enhancement

Abstract弱光图像的能见度较低,不利于人类观察和计算机视觉算法。尽管许多图像增强技术已经被提出来解决这个问题,现有的方法不可避免地引入对比度增强不足和过度。受人类视觉系统的启发,我们设计了一个用于微光图像增强的多曝光融合框架。在…

机器学习错题集(1)

生成模型与判别模型的区别: 在机器学习中,对于有监督学习可以将其分为两类模型:判别式模型和生成式模型。简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。已知输入变量x: 生成…

深度学习之卷积神经网络学习笔记二

1. 引言在学习笔记一中,我们介绍了几种常用的分类模型框架,如VGGNet,GoogleNet,和ResNet,并且介绍了几种简单的分割模型。如FCN,UNet,SegNet和Deeplab。从深度学习兴起到现在,模型一…