数据服务-存储服务(NFS)

news2024/11/26 12:51:04

1.概述

存储: 用于存放用户上传的内容(数据),一般应用在网站集群中

如果不使用存储,用户上传的数据就直接存放在网站服务器上了,用户下次访问就可能找不到

如果使用存储,用户上传的内容存放在存储上面,用户访问就会访问存储. 位置: 网站后排.

2. 存储分类 

分类说明
硬件存储硬件存储,硬盘多,使用的时候挂载即可
开源软件普通存储NFS,分布式存储:FastDFS
云产品阿里云OSS,腾讯云COS

3. NFS原理

服务组成:NFS服务和rpcbind(portmap)服务

4. 环境部署

环境主机
nfs服务端nfs01_xing 10.0.0.31
nfs客户端web01_xing 10.0.0.7 (通过挂载使用)

4.1 服务端部署 

##部署
yum install -y  rpcbind nfs-utils
##启动rpcbind
systemctl enable rpcbind 
systemctl start  rpcbind 
rpcinfo -p 
#启动nfs
systemctl enable nfs 
systemctl start nfs 
rpcinfo -p 
##配置
vim /etc/exports
/data/ 172.16.1.0/24(rw)  ##共享/data/目录给172的网段并赋予读写权限
systemctl reload nfs
##目录与权限
chown -R  nfsnobody.nfsnobody /data/
systemctl reload nfs
##挂载存储测试
mount -t nfs 172.16.1.31:/data/    /mnt/
##查看nfs服务端共享哪些目录
showmount -e  ip或不写  #ip为nfs服务端ip

4.2 客户端部署 

yum install -y nfs-utils 
mount -t nfs 172.16.1.31:/data   /mnt

4.3 NFS相关的文件

nfs服务端或客户端
NFS服务端配置/etc/exports或者/var/lib/nfs/etab(当前使用的nfs服务端配置)
NFS客户端配置客户端:mount /etc/rc.local或/etc/fstab(当前系统的挂载情况)

4.4 nfs客户端永久挂载

1. 挂载命令写入到/etc/rc.local  

chmod +x /etc/rc.d/rc.local

2. 按照/etc/fstab格式要求书写

5. NFS服务端的配置文件

5.1 配置文件格式

/etc/exports
第1部分第2部分
共享目录网段(选项)

5.2 NFS配置文件中网络配置 

网段
172.16.1.0/24常用
172.16.1.7指定ip
baidu.com指定域名

5.3 服务端核心配置

服务端配置选项说明
rw可以读写共享目录
ro只读
sync同步,只要用户上传,就把数据写到磁盘上
async异步,用户上传的数据,nfs先临时存放到内存中,过一段时间写入到磁盘. 并发高,数据可能丢失

5.4 服务端用户压缩 

1. NFS客户端挂载NFS服务端后,创建的文件默认属于nfsnobody,这种操作就叫用户压缩(映射)

2. 用户压缩是通过NFS服务端的配置实现

服务端配置选项-用户压缩系列说明
root_squash        如果客户端是root用户访问,则到了nfs服务端会被压缩
no_all_squash如果客户端不是root用户访问,则不进行压缩
all_squash所有用户都进行压缩(
anonuid 和 anongid用于指定压缩的匿名用户

5.4.1 用户压缩案例

设置/nfsdata共享目录,匿名用户为www. 客户端挂载到/upload-video/

www用户的uid,gid:1999 (服务端,客户端

##1.所有主机(nfs服务端和nfs客户端)添加用户 www uid统一1999 
groupadd -g 1999  www 
useradd  -u 1999 -g www  -s /sbin/nologin  -M www 
##2.nfs服务端配置
vim /etc/exports
/nfsdata/ 172.16.1.0(rw,all_squash,anonuid=1999,anongid=1999)
##创建目录
mkdir -p /nfsdata/
##修改所有者
chown -R www.www /nfsdata/
##重启
systemctl reload nfs
##3.客户端配置
#创建挂载目录
mkdir -p /upload-video/
##挂载
mount -t nfs  172.16.1.31:/nfsdata/  /upload-video/
##查看
df -h /upload-video/
##创建
touch /upload-video/xzb666.txt
touch /upload-video/xzb666.txt
##服务端查看
ll /nfsdata/

 6. NFS优化

1.NFS优化: 硬件(物理服务器+nfs服务)

2. NFS安全优化: 客户端挂载 只能上传,无法执行 

mount  -o noexec,nosuid,nodev  -t nfs 172.16.1.31:/data   /video/
###这几个是客户端挂载选项
noexec 挂载的nfs目录中如果有命令,无法运行
nosuid 带有suid的命令
nodev  带有特殊属性的文件

7. 进军Sersync() 

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

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

相关文章

【高等数学学习记录】函数的极限

一、知识点 (一)知识结构 #mermaid-svg-Dz0Ns0FflWSBWY50 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Dz0Ns0FflWSBWY50 .error-icon{fill:#552222;}#mermaid-svg-Dz0Ns0FflWSBWY50 .erro…

KiCad 综合笔记

开窗 选中顶层或者底层 Mask 层,然后进行覆铜: 四层板 KiCad Tutorial - How to make a 4 layer PCB https://bbs.elecfans.com/jishu_2365544_1_1.html 虽然在“电路板设置”中,可以选择铜层的类型,但如果选择了“电源层”,除了用于告诉“Free router”布线器在自动布…

vue3+vite@4+ts+elementplus创建项目详解

1、第一步创建项目cnpm init vite4 2、设置vue3.2局域网可访问配置: 找到项目路径下的package.json目录下找到script对象下面添加一下代码: "serve": "vite --host 0.0.0.0" 启动项目命令不在是dev而是:cnpm run serve 3…

Linux中的进程信号

目录 进程信号 kill/raise/abort 硬件异常产生信号 由软件条件产生信号 信号在内核中的表示示意图 pending: block: 信号集操作函数 sigprocmask 进程信号 信号量和信号不同 信号量的本质是计数器,计数器可以被多进程同时看到。可以对资源进行预定。 所有进…

OpenJudge | 置换选择排序

总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串,以及大小固定并且初始元素已知的二叉最小堆(为完全二叉树或类似完全二叉树,且父元素键值总小于等于任何一个子结点的键值),要求利用堆实现置换选择排序&a…

程序员如何在 AI 时代保持核心竞争力

前言 随着 AIGC 大语言模型的不断涌现,AI 辅助编程工具的普及正在深刻改变程序员的工作方式。在这一趋势下,程序员面临着新的挑战与机遇,需要思考如何应对以保持并提升自身的核心竞争力。 目录 一、AI 对编程工作的影响 (一&…

一、走进新语言

走进新语言 介绍环境配置JDK配置Kotlin配置 开发工具代码基本结构程序注释 介绍 Kotlin是一种现代但已经成熟的编程语言,旨在让开发人员更快乐。它简洁、安全、可与Java和其他语言互操作,并提供了许多在多个平台之间重用代码的方法。它由JetBrains公司于…

2.JUC

掌握 Java 并发编程,熟悉线程池、并发容器以及锁的机制,如 sychronized、ReentrantLock、AQS等。 2.0 并发基础 线程等待唤醒机制LockSupport (3种) 方式一:使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒…

数据结构 ——— 单链表oj题:链表分割(带哨兵位单向不循环链表实现)

目录 题目要求 手搓简易单链表 代码实现 题目要求 现有一链表的头指针 ListNode* head ,给一定值 x ,编写一段代码将所有小于 x 的节点排在其余节点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头节点 举例说明&a…

【包教包会】2D图片实现3D透视效果(支持3.x、支持原生、可合批)

将去年写的SpriteFlipper从2.x升级到3.x。 如果需要2.x版本或需要了解算法思路,请移步:https://blog.csdn.net/weixin_42714632/article/details/136745051 优化功能:可同时绕X轴和Y轴旋转,两者效果会叠加。 完美适配Web、原生…

typescript使用webpack打包编译问题

解决方案:在webpack.config.js中的mdule.exports中设置mode。 再次运行npm run start即可。

Python基本库的使用--urllib

开篇 本篇文章旨在总结urlib基本库的一些常用用法。 相关方法 urlopen 用户打开和读取URL。 import urllib.requestresponse urllib.request.urlopen(https://www.python.org) print(response.read().decode(utf-8))带data参数 import urllib.parse import urllib.requestda…

【计算复杂性理论】P可归约(归约,P-reducible)与P、NP、NP-Hard、NP-Complete问题

1 问题背景 如果想要了解P问题、NP问题、NP-Hard问题、NP-Complete问题之间的关系,那就需要从了解NP-complete问题和归约概念开始。上一篇文章中,我们介绍了计算复杂性理论的奠基之作《The Complexity of Theorem-Proving Procedures》,在这篇…

初识算法 · 滑动窗口(1)

目录 前言: 长度最小的子数组 题目解析 算法原理 算法编写 无重复长度的最小字符串 题目解析 算法原理 算法编写 前言: 本文开始,介绍的是滑动窗口算法类型的题目,滑动窗口本质上其实也是双指针,但是呢&#…

初识数据结构--时间复杂度 和 空间复杂度

数据结构前言 数据结构 数据结构是计算机存储、组织数据的方式(指不仅能存储数据,还能够管理数据-->增删改)。指相互之间存在一种或多种特定关系的数据元素的集合。没有单一的数据结构对所有用途都有用,所以我们要学习各种的数据结构,比…

[Python] 编程入门:理解变量类型

文章目录 [toc] 整数常见操作 浮点数字符串字符串中混用引号问题字符串长度计算字符串拼接 布尔类型动态类型特性类型转换结语 收录专栏:[Python] 在编程中,变量是用于存储数据的容器,而不同的变量类型则用来存储不同种类的数据。Python 与 C…

Springboot项目整合RabbitMQ+Redis实现可靠的阿里云短信异步收发功能(手把手实操详细教程)

文章目录 1、项目介绍1.1、项目描述1.2、项目结构 2、创建项目(idea)2.1、依赖引入2.2、 配置文件2.3、 数据库表2.4、 实体类2.5、 配置类2.6、 验证码服务类2.7、 短信发送服务类2.8、 消费者类2.9、发送服务类2.10、定时任务类2.11、启动类2.12、测试控制器 3、效果测试4、总…

计算机科学英语词汇汇总(上)(Computer Science English Complete Vocabulary)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

对不经常变动的数据集合添加Redis缓存

目录 前言 什么是缓存 如何使用缓存 添加商户缓存 缓存模型和思路 实现代码 问题分析 解决方案 实现商铺和缓存与数据库双写一致 实现代码 前言 什么是缓存 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码 缓存…

【框架篇】过滤器和拦截器的区别以及使用场景

在项目开发中,常常会同时配置拦截器(Interceptor)和过滤器(Filter),以下就是它们两个主要的区别: 过滤器(Filter) 配置和实现 Filter的实现还是很简单的,可…