【Linux网络】典型NAS存储方式:NFS网络共享存储服务

一、关于存储的分类

二、NFS的介绍

nfs的相关介绍:

1、原理

2、nfs的特点

3、nfs软件学习

4、共享配置文件的书写格式

 关于权限,学习:

5、关于命令的学习:

三、实验操作

1、nfs默认共享权限(服务端设置)

2、客户端进行挂载 

​编辑 3、客户端测试:

4、调优

①修改共享配置文件,添加写的权限

②还需要修改文件夹,因为目前现在文件夹没有其他用户的写的权限

四、总结


一、关于存储的分类

存储类型分为三种

1、直连式存储:Direct-Attached Storage,简称DAS

特点:存储和主机直接连接,比如家用的电脑,服务和硬盘直接连接,存储和主机在一台机器上

适用范围:适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

2、网络附加存储:Network-Attached Storage,简称NAS

特点:存储在远程,文件系统也在远程,这块空间是你可以直接访问上面的文件,如ftp、nfs都属于NAS(可以理解为通过网络共用一个设备,且设备的数据仅存了一份)

适用范围:适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

3、存储区域网络:Storage Area Network,简称SAN

特点:有一定的距离,主机距离存储设备相对较远,只提供空间不提供文件系统,管理等其他软件服务,比如ceph,gfs等

适用范围:适用于大型应用或数据库系统,缺点是成本高、较为复杂

二、NFS的介绍

nfs的相关介绍:

nfs是一种NAS存储,NFS也是一种网络文件系统基于内核的文件系统

nfs端口号不固定,早期喜欢说是2049,但是实际上是不固定的,它依赖于rpc(Remote Process Call,远程过程调用协议),通过nfs协议,客户机可以像访问本地目录一样远程访问服务器的共享资源。

1、原理

首先,服务端:nfs开启以后,服务端自己的rpc会注册相关信息;

然后,客户端:想要去连接服务端,会先找一下rpc注册中心,获取nfs的端口号(因为nfs的端口号是随机的,由rpc来进行管理) ;

最后,rpc会告诉客户端关于服务端的nfs端口号,客户端实现访问

2、nfs的特点

  • 使用tcp/ip传输网络文件(rpcbind的端口号是111,nfs的端口号不固定)
  • 比较适合局域网环境,内部操作
  • 安全性低

3、nfs软件学习

软件包:nfs-utils(包括服务器端和客户端)

相关软件包:rpcbind(必须)(centos7的rpcbind由systemd直接管理,不需要启动,会有叫醒服务,在centos7之前都需要先启rpcbind再启动nfs)

nfs端口号不固定 RPC端口号111(tcp和udp都是)

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

日志:/var/lib/nfs/

4、共享配置文件的书写格式

/etc/exports

共享目录      共享给哪些主机(权限)
/dir           192.168.20.0/24(rw.....等)举例:最简单的:/opt *
可获取的主机可以是一台,也可以是网段等

 关于权限,学习:

默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写(如果允许客户端创建文件夹,写内容等,需要调为rw)async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性低
##但是异步的速度快,因为缓存在内存了sync(1.0.0后为默认)同步  ##数据在请求时立即写入共享存储磁盘,性能低,安全性高root_squash ##(默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 
7以前的版本为nfsnobodyno_root_squash ##远程root映射成NFS服务器的root用户all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobodyno_all_squash (默认)保留共享文件的UID和GID(这里注意是id号)anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用/data/nfs1        *(rw,all_squash,anonuid=1002,anongid=1002)##以后在生产环境中,为了调优和统一化部署,建议映射为id号相同的用户

5、关于命令的学习:

服务端:

1、软件的配置文件不需要修改,需要修改共享配置文件:/etc/exports

2、修改完以后,先重启一下nfs服务,有两种方法:exportfs -r和systemctl  reload nfs

3、查看本机的共享配置文件信息:exportfs -v

客户端:

1、需要知道服务端是否开启了共享服务:showmount -e 服务端的ip

2、服务端需要挂载:

临时挂载:mount 服务端ip:/共享目录  挂载点

永久挂载:vim /etc/fstab;服务端ip:/共享目录   挂载点 nfs defaults,_netdev 0 0

注意:因为是通过网络共享,那么需要知道,万一服务器不在线,那么永久挂载的配置文件会在开机的时候加载,那么如果没有“_netdev”则开不了机。这个“_netdev”的意思是能够ping通才行,没ping通不生效

三、实验操作

1、nfs默认共享权限(服务端设置)

[root@localhost ~]#mkdir /data
[root@localhost ~]#vim /etc/exports##exportfs -r和systemctl reload nfs用法一样
[root@localhost ~]#exportfs -r
exportfs: No options for /data 192.168.20.0/24: suggest 192.168.20.0/24(sync) to avoid warning
[root@localhost ~]#exportfs -v
/data         	192.168.20.0/24(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

2、客户端进行挂载 

[root@localhost ~]#systemctl start nfs[root@localhost ~]#showmount -e 192.168.20.30

[root@localhost ~]#mkdir /nfsdir##临时挂载
[root@localhost ~]#mount 192.168.20.30:/data /nfsdir/
[root@localhost ~]#df -hT##永久挂载
[root@localhost ~]#vim /etc/fstab 
[root@localhost ~]#mount -a
[root@localhost ~]#df -hT

 

 3、客户端测试:

4、根据实验来学习权限配置

想要客户端有写的权限:

①修改共享配置文件,添加写的权限

②还需要修改文件夹,因为目前现在文件夹没有其他用户的写的权限

 

 

5、关于文件的属主

1、默认情况下,是root_squash,no_all_squash,即:root压榨为匿名用户,普通用户只是保留uid与名称无关

2、添加完rw权限以后,客户端可以写内容也可以删除内容

6、客户多台客户机使用nfs

7、比较常用的选项配置:

共享配置文件的常用选项
/data      *(rw,all_squash,anonuid=2000,anongid=2000)

测试结果 

建议在使用的时候,将所有主机的uid=2000的用户使用同一个人,这样比较方便 

拓展 

在这个使用的基础上,指定uid为2000的用户使用,这样更加安全!!

验证  在服务端和客户端只是认识uid为2000的用户,换个名字也是一样的 

 

 8、验证rpcbind是tcp和udp的111端口:

四、总结

1、服务端添加共享目录的写的权限的时候,需要注意给软件添加权限,然后还得给共享的目录添加权限,目录权限添加有两种办法:直接用chmod 777;或者使用setfacl 只给指定的用户或uid给rwx权限;

2、rpcbind用了tcp协议也用了udp协议,都是111端口,tcp用于建立可靠的客户端连接,udp用于管理注册信息nfs的端口号;

3、要知道如果系统默认是进行root压榨为nfsnobody和普通用户不压榨,但是是以uid记录,所有属主和属组都是看uid的,与用户名无关;

4、在生产环境中,建议使用全部压榨,调整为uid为统一的用户,使用setfacl限定,这样数据更安全

5、最后,nfs是一种nas存储方式,nfs本身就是一种网络文件系统,所以直接挂载就可以使用

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

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

相关文章

腐蚀监测常用技术及作用

上次我们介绍了设备状态监测中的红外热像技术>>热成像仪的工作原理及在工业设备状态监测中的应用,这次我们一起来探讨腐蚀监测技术方面的内容。 在工业领域中,腐蚀监测技术是腐蚀控制的重要部分和可靠而有效的手段。通过对设备的腐蚀情况进行监测和…

.babyk勒索病毒解析:恶意更新如何威胁您的数据安全

导言: 在数字时代,威胁不断进化,其中之一就是.babyk勒索病毒。这种病毒采用高级加密算法,将用户文件锁定,并要求支付赎金以获取解密密钥。本文91数据恢复将深入介绍.babyk勒索病毒的特点、如何应对被加密的数据&#…

运行软件报错mfc140.dll丢失?分享mfc140.dll丢失的解决方法

小伙伴们,你是否也有过这样的经历:每当碰到诸如" mfc140.dll 丢失 "之类的烦人错误时,你是不是会一头雾水,完全不知道从何下手去解决?不要担心,接下来咱就给你提供这样一篇实用教程,教…

【完全攻略】Gradio:建立机器学习网页APP

目录 前言一、Gradio介绍以及安装1-1、Gradio介绍1-2、安装 二、快速开始(初步了解)2-1、简单小栗子2-2、多输入多输出2-3、简易聊天机器人 三、关键技术3-1、带有样例的输入3-2、提示弹窗3-3、描述内容3-4、风格3-5、流式输出3-6、进度条3-7、分享APP 总…

4 redis的HyperLogLog入门原理

一、HyperLogLog(字符串类型) 需求:大型网站(不在大厂基本上用不到) 每个网页每天的 UV 数据(独立访客),统计如何实现?(尽量少的占用存储空间) Redis 提供了 HyperLogLog 数据结构就是用来解决这种统计问题的。Hyper…

Django学习日志09

choices参数的使用 """对于以上可能被我们列举完的字段我们一般都是选择使用choices参来做""" class UserInfo(models.Model):username models.CharField(max_length64)password models.CharField(max_length32)# 先写一个映射关系gender_cho…

idea中把spring boot项目打成jar包

打jar包 打开项目,右击项目选中Open Module Settings进入project Structure 选中Artifacts,点击中间的加号(Project Settings->Artifacts->JAR->From modules with dependencies ) 弹出Create JAR from Modules&#…

[AutoSar]CP autosar 面试题

目录 关键词前言面试官提问答案 关键词 嵌入式、C语言、autosar、面试题 前言 以前面试中的一些常提到的问题,在这里整理一下,希望对要去面试的道友有所帮助。 其中问题的答案后续有时间会再更新整理。 面试官提问 1.Autosar 概述: 解释 …

pytest-rerunfailures插件之测试用例失败重跑

环境前提: 只有同时满足一下先决条件才能使用pytest-rerunfailures ①python的版本不能过低; ②pytest 5.0或更高版本; 背景: 平时在做接口测试的时候,经常会遇到网络抖动或者环境问题导致测试用例运行失败&#x…

2024年csdn最新最全的Postman接口测试: postman实现参数化

什么时候会用到参数化 比如:一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块:正确的用户名,密码 成功;错误的用户名,正确的密码 失败 postman实现参数化 在实际的接口测试中,部分参数…

Delayed 延时任务

延时任务与定时任务的区别 延时任务,可以理解为定时任务的一种,但是他们是有区别的。 延时任务:将程序代码延时执行,执行完毕,即为结束。 定时任务:周期性执行任务。代码执行完毕后,并不意味着…

零基础安装分布式数据服务注册系统

一、先安装VM虚拟机,安装最新的ubuntu22系统, 先安装mysql, sudo apt install mysql-server sudo mysql_secure_installation 根据自己需求选择 密码安全级别时,选择n 删除匿名用户?(按y|Y表示是&…

【算法挨揍日记】day23——740. 删除并获得点数、LCR 091. 粉刷房子

740. 删除并获得点数 740. 删除并获得点数 题目描述: 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1…

PyCharm:PyCharm新建.py文件时自动带出指定内容

在pycharm中加上指定内容,每次新建.py文件都会自动带出指定内容 操作: File—Setting—Editor----File and Code Templates--Python Script 在右侧窗口中加上如下信息 # encoding: utf-8 # author: Jeffrey # file: ${NAME}.py # time: ${DATE} ${TI…

Kettle 简介

1. PDI结构简介 图 1‑1 PDI核心组件 Spoon是构建ETL Jobs和Transformations的工具。Spoon可以以拖拽的方式图形化设计,能够通过spoon调用专用的数据集成引擎或者集群。 Data Integration Server是一个专用的ETL Server,它的主要功能有: 功能…

MES集成 | 集成标准不统一?看得帆云iPaaS怎么应对

得帆信息结合自身丰富实施经验及众多实践案例,编写了《得帆云 AIGC低代码PaaS平台系列白皮书——MES集成应用》,希望能为正在使用MES产品的企业数字化转型领导者和IT人员带来一些帮助。 MES是众多大型生产制造型企业在做生产执行管理时会实施的一套系统。…

魔众文库系统 v5.6.0 DWG文件格式支持,部分数据封面显示异常,定时调度清理临时文件

魔众文库系统基于文档系统知识,建立平台与领域,打造流量、用户、付费和变现的闭环,帮助您更好的搭建文库系统。 魔众文库系统发布v5.6.0版本,新功能和Bug修复累计17项,DWG文件格式支持,部分数据封面显示异…

Pytorch torch.normal()的用法

该函数原型如下: normal(mean, std, *, generatorNone, outNone) 该函数返回从单独的正态分布中提取的随机数的张量,该正态分布的均值是mean,标准差是std。 用法如下:我们从一个标准正态分布N~(0,1),提取…

Python如何实现模板方法设计模式?什么是模板方法设计模式?Python 模板方法设计模式示例代码

什么是模板方法(Template Method)设计模式? 模板方法(Template Method)是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这种模式允许子类为一个算法的特定步骤提供…

前后端黄金组合:Django+Vue+Element UI,助你构建完美平台!

这是一篇什么文章? 一篇你对测试开发工作感兴趣,想了解系统工作逻辑的文章。 一篇是你在开始动手搭建环境前需要了解各工具原理的文章。 这是一篇你真正开始前需要查阅的文章。 本文介绍了前后端工作原理,前后端搭建的流程、搭建过程中需…