【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.rhkb.cn/news/197839.html

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

相关文章

zookeeper的安装部署

目录 简介 Zookeeper架构设计及原理 1.Zookeeper定义 2.Zookeeper的特点 3.Zookeeper的基本架构 4.Zookeeper的工作原理 5.Zookeeper的数据模型 (1)临时节点 (2)顺序节点 (3)观察机制 Zookeeper集…

Web安全研究(五)

Automated WebAssembly Function Purpose Identification With Semantics-Aware Analysis WWW23 文章结构 introbackgroundsystem design abstraction genapplying abstractionsclassifier data collection and handling data acquisitionstatistics of collected datamodule-…

hypermesh常用快捷键

#hypermesh常用快捷键

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷 2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2&#…

DrugMAP: molecular atlas and pharma-information of all drugs学习

DrugMAP:所有药物的分子图谱和制药信息 - PMC (nih.gov) DrugMAP: the molecular atlas and pharma-information of drugs (idrblab.net) 构建了一个描述药物分子图谱和药物信息的新数据库(DrugMAP)。它提供了>30 000种药物/候选药物的相…

蓝桥杯每日一题2023.11.18

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用搜索,将每一个格子进行初始赋值方便确定是否为相邻的数,将空出的两个格子首先当作已经填好数值为100,此时从第一个格子右边的格子开始搜索&#xff…

python urllib open 头部信息错误

header 有些字符在 lighttpd server 中无法正常解析,需要转换 quteo 可以转换 就跨平台而言,Rust 和 python 一样优秀,看了在stm32 上使用 Rust 进行编程,从一定程度上,而言,稳定和安全性要比C 开发的好的多,说出来可能不信,在单片机上是可以对空指针进行…

map与set的封装

目录 红黑树的结点 与 红黑树的迭代器 红黑树的实现: 迭代器: ​编辑 红黑树的查找: 红黑树的插入: ​编辑 检查红色结点:​编辑红黑树的左旋 ​编辑红黑树的右旋 ​编辑红黑树的双旋 Map的封装 ​编辑set的…

AI实践与学习1_Milvus向量数据库实践与原理分析

前言 随着NLP预训练模型(大模型)以及多模态研究领域的发展,向量数据库被使用的越来越多。 在XOP亿级题库业务背景下,对于试题召回搜索单单靠着ES集群已经出现性能瓶颈,因此需要预研其他技术方案提高试题搜索召回率。…

[Linux] 网络文件共享服务

一、存储类型 存储类型可分为三类:DAS(直连式存储),NAS(网络附加存储),SAN(存储区域网络)。 1.1 DAS 定义: DAS是指直连存储,即直连存储,可以理解为本地文…

【kerberos】使用 curl 访问受 Kerberos HTTP SPNEGO 保护的 URL

前言: 大数据集群集成 Kerberos 后,很多 WEBUI 打开都会提示输入用户名和密码。由于我想获取 flink 任务的详情,且KNOX 并不支持Flink api,查看KNOX 直接的列表:https://docs.cloudera.com/cdp-private-cloud-base/7.…

mac中安装Homebrew

1、Homebrew是什么? 软件安装管理工具 2、先检查电脑中是否已经安装了Homebrew 打开终端输入:brew 提示命令没有找到,说明电脑没有安装Homebrew 如果提示上述图片说明Homebrew已经安装成功 3、安装Homebrew 进入https://brew.sh/ 复制的命…

qsort使用举例和qsort函数的模拟实现

qsort使用举例 qsort是C语言中的一个标准库函数,用于对数组或者其他数据结构中的元素进行排序。它的原型如下: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 我们可以去官网搜来看一看:…

C/C++---------------LeetCode第LCR. 024.反转链表

反转链表 题目及要求双指针 题目及要求 双指针 思路:遍历链表,并在访问各节点时修改 next 引用指向,首先,检查链表是否为空或者只有一个节点,如果是的话直接返回原始的头节点,然后使用三个指针来迭代整个…

Js中clientX/Y、offsetX/Y和screenX/Y之间区别

Js中client、offset和screen的区别 前言图文解说实例代码解说 前言 本文主要讲解JavaScript中clientX、clientY、offsetX、offsetY、screenX、screenY之间的区别。 图文解说 在上图中,有三个框,第一个为屏幕,第二个为浏览器大小&#xff0c…

【Git学习一】初始化仓库git init的使用和提交git add与git commit的使用

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:Git等软件工具技术的使用 👐学习格言:成功不是终点,失败也并非末日,最重要…

Java多线程(3)

Java多线程(3) 深入剖析Java线程的生命周期,探秘JVM的线程状态! 线程的生命周期 Java 线程的生命周期主要包括五个阶段:新建、就绪、运行、阻塞和销毁。 **新建(New):**线程对象通过 new 关键字创建&…

UnitTest框架

目标: 1.掌握UnitTest框架的基本使用方法 2.掌握断言的使用方法 3.掌握如何实现参数化 4.掌握测试报告的生成 1.定义 (1)框架(framework):为解决一类事情的功能集合。(需要按照框架的规定(套路) 去书写代码&…

Ubuntu16.04上安装Docker

Ubuntu16.04上安装Docker 更新 apt 包索引: sudo apt-get update安装依赖包,以便使用 HTTPS 仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu…

JavaWeb——CSS3的使用

目录 1. CSS概述 2. CSS引入方式 3. CSS颜色显示 4. CSS选择器 4.1. 元素(标签)选择器 4.2. id选择器 4.3. 类选择器 4.4. 三者优先级 5. 盒子模型 1. CSS概述 CSS,全称为“Cascading Style Sheets”,中文译为“层叠样式…