OpenStack——存储服务

news2025/1/12 21:58:07

存储侧:

        块存储

        文件存储

        对象存储    

存储简介

特点:

        1、OS盘只能使用块存储

        2、不能实现共享【不能解决两个主机同时去读写同一个block的问题】

        3、性能最优

filesystem——文件存储

VIMS:高可用文件系统

              ——提供了锁机制

        

对象存储

        ——解锁key的方式【键用于标识存储在系统中的数据,而值则存储了实际的数据】

1.OpenStack存储类型

从数据保存时间的角度分为临时存储(非持久存储)和持久存储

ephemeral storge临时存储:是指数据被虚拟机实例使用,虚拟机实例被关机、重启或删除,该实例中的所有数据信息都回丢失

Persistent storage持久化存储:维护数据持续可用,保护数据安全性,持久化存储设备的周期独立于任何其他系统设备或资源,无论虚拟机实例是否终止

OpenStack持久化存储

        1、块存储Cinder

        2、对象存储Swift

        3、文件存储Manila

块存储服务

1.Cinder简介

Cinder是OpenStack 块存储服务,为Nova虚拟机、Ironic裸机、容器提供

Cinder为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动,使其可以被OpenStack整合管理

Cinder在虚拟机与具体存储设备之间引入了一层“逻辑存储卷”的抽象,Cinder本身不是一种存储技术,并没有实现对块设备的实际管理和服务

Cinder只是提供了一个中间的抽象层,为后端不同的存储技术,提供了统一的接口

不同的块设备服务厂商在Cinder中以驱动的形式实现上述接口与OpenStack进行整合

2.Cinder架构

3.Cinder架构说明

4.Cinder创建卷流程

5.Cinder挂载卷流程

块存储

对象存储

        key-value

对象存储服务Swift

1.简介

简介:
提供高度可用、分布式、最终一致的对象存储服务
可以高效、安全且廉价地存储大量数据
非常适合存储需要弹性扩展的非结构化数据
定位:
Swift是OpenStack对象存储服务,可以存储 虚拟机实例创建所需的镜像
Swift 作为 OpenStack 持久存储之一,比较适合存放静态数据

2.Swift数据模型

Container 不能嵌套,不能包含下级的 Container ;对象由元数据和内容两部分组成, Swift 要求一个对象必须存储在某个 Container 中,因此一个 Account 应该至少由一个 Container 来提供对象的存储。

数据下发

DHT环 2^32次方个点

key---block-----2^32次

优化:

        partition分区(分成8片):

                key-hash--partition-8(3600-华为)次===partition id

       

开源OpenStack 的partition=2^存储节点数

二次优化:

        列表--存储设备列表关系【partition--device(disk)】一个partition只能来自一个device

        key--hash-partition-disk(partition数量)

下盘:

        disk--磁盘读写---iops

        

        副本机制:

               N--3副本机制---33%资源利用率

                R--读副本数

                W--写副本数          

        最终一致性原则:

                在周期内是可以不同步的

                 R+W≤N:有可能读出来最新的数据---弱一致性原则

                 R+W>N:一定可以读出来最新的数据--强一致性原则

副本级别:

  •         disk级别
  •         服务器级别
  •         机柜级别:不同的副本放在不同的数据中心
  •         DC级别

3.swift组件

  • Proxy Server代理服务,对外提供对象服务 API,由于采用无状态的 REST 请求协议,可以进行横向扩展来均衡负载

  • Authentication Server认证服务,验证访问用户的身份信息,并获得一个对象访问令牌(Token),在一定的时间内会一直有效,验证访问令牌的有效性并缓存下来直至过期时间

  • Cache Server缓存服务,缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务采用Memcached集群,Swift会使用一致性散列算法来分配缓存地

  • Auditor审计服务,检查对象,容器和帐户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本;其他类型的错误会被记录到日志中

  • Replicator复制服务,检测本地分区副本和远程副本是否一致,发现不一致时会采用推式(Push)更新远程副本,并且确保被标记删除的对象从文件系统中移除

  • Updater更新服务,当对象由于高负载的原因而无法立即更新时,任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新

Proxy Server可以说是Swift的核心,运行着swift-proxy-server进程。它提供Swift API服务,负责Swift其余组件间的通信。对于每个客户端的请求,它在Ring中查询相应的AccountContainer以及Object的位置,并且转发这些请求。
  • Account Server
帐户服务,提供帐户元数据和统计信息,并维护所含容器列表的服务,每个帐户的信息被存储在一个 SQLite 数据库中
  • Container Server

容器服务,提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储在一个 SQLite 数据库中

  • Object Server

对象服务,提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统

4.swift架构

Swift 从架构上可以划分为两个层次: 访问层 Access Tier )与 存储层 Storage Nodes )。
访问层 主要包括两部分,即 Proxy Node (代理服务节点)与 Authentication (认证),分别负责 RESTful 请求与用户身份的认证。
Proxy Node 节点上运行着 Proxy Server ,负责处理用户的 RESTful 请求,在接收到用户请求时,需要对用户的身份进行认证,此时用户所提供的身份资料会被转发给认证服务进行处理。
Proxy Server 可以使用 Memcached (高性能的分布式内存对象缓存系统)进行数据和对象的缓存,减少数据库读取的次数,提高用户的访问速度。
Proxy Node 在收到用户的访问请求时,会将其转发到相应的存储节点上。
存储层由一系列的物理存储节点组成,负责对象数据的存储。
存储层在物理上分为以下 5 个层次:
Region :地理上隔绝的区域,每个 Swift 系统默认至少有 1 Region
Zone :在每个 Region 的内部又划分了不同的 Zone 来实现硬件上的隔绝。可以简单地将其理解为一个 Zone 代表了一组独立的存储节点。
Storage Node :存储对象数据的物理节点。
Device :可以简单地理解为磁盘。
Partition :仅仅指在 Device 上的文件系统的目录,和我们通常所理解的硬盘分区是完全不同的概念。

Swift工作原理概述

        lProxy Server负责处理用户的对象存取请求,Authentication(认证服务)负责对用户的身份进行认证,Proxy Server在接收到用户请求后,会把请求转发给存储节点上的Account ServerContainer ServerObject Server进行具体的对象操作,而对象与其各个副本之间的数据一致性则由AuditorUpdaterReplicator来负责

5.swift关键技术

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

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

相关文章

MySQL搭建主从复制和读写分离(数据库管理与高可用)

集群: 高可用; 负载均衡; 高性能 1、MySQL主库在事务提交时把数据变更(insert、delet、update)作为事件日志记录在二进制日志表(binlog)里面。 2、主库上有一个工作线程 binlog dump thread…

蓝桥杯 DNA序列修正

今天再刷蓝桥的题目时,发现这道题目的第二种更为简洁的做法; 首先题目描述如下: 样例输入 5 ACGTG ACGTC 样例输出 2 对于这道题目,我们想的是用两个数组将其分别存储下来,然后再根据A-T、G-C的配对关系将数组二&a…

【C语言】堆排序

堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 升序:建大堆 降序:建小堆 原因分析: 若升序建小堆时间复杂度是O(N^2) 升序建大堆,时间复杂度O(N*logN) 所以升序建大堆…

记一次对HTB:Carpediem的渗透测试

信息收集 端口扫描 通过nmap对靶机端口进行探测,发现存在22和80端口。 访问web页面。发现是一个静态页面,没有可利用的部分。 目录扫描 子域枚举 通过对域名进行fuzz子域名,发现存在portal一级域名。 将它加入/etc/hosts,访问之…

vue3+gsap实现圆形路径动画

同学们可以私信我加入学习群! 正文开始 前言一、引入并使用gsap二、详解gsap.to的各参数三、路径svg四、其他路径文字路径动画总结 前言 我开发的桌面端软件最近增加了在线更新功能,其中更新动画部分是由gsap实现的,整体实现思路已经在elect…

用Python打造精彩动画与视频,3.2 基本的剪辑和合并操作

3.2 基本的剪辑和合并操作 在这一节中,我们将学习如何使用 MoviePy 库对视频进行基本的剪辑和合并操作。MoviePy 是一个用于视频编辑的 Python 库,可以轻松地实现视频的剪辑、合并、添加音频等操作。 准备工作 首先,确保你已经安装了 Movi…

花几千上万学习Java,真没必要!(三十九)

1、BufferedReader的使用: 测试代码: package test.com; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FileReadToList { pu…

OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI基本开发步骤(三)

引言 前面文章OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI(一) 和 OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI 常见的函数详解(二)介绍了NAPI的基础理论知识,今天重点介绍下如何去开发一个自己的NAP…

maven插件2(spring-api-auth-valid-plugin)

https://maven.apache.org/guides/mini/guide-configuring-plugins.htmlhttps://maven.apache.org/plugin-testing/maven-plugin-testing-harness/getting-started/index.html plugin-desc 业务功能 所有的endpoint,必须带有指定的安全校验标签,如spring-security的PreAuthori…

RabbitMQ 集群安装

在 linux 下手动安装 RabbitMQ 集群。 准备 安装之前的准备工作。 准备内容说明其他3 台服务器centos、redhat 等ErlangRabbitMQ 运行需要的基础环境socatRabbitMQ 运行需要的基础环境logrotateRabbitMQ 运行需要的基础环境这个服务器一般自带了 下面的安装示例中使用的版本…

一键测量仪,能否彻底解决燃气灶配件缺陷问题?

燃气灶配件是指用于燃气灶的附件或零部件,用于安装、维护或改进燃气灶的功能和性能。这些配件通常包括各种零部件、附件和替换件,以确保燃气灶的正常运行和安全使用。燃气灶的火焰头是产生火焰的部件,通常根据不同的燃气类型和火力需求选择合…

python-求四位数(赛氪OJ)

[题目描述] 3025 这个数具有一种独特的性质:将它平分为二段,即 30 和 25,使之相加后求平方,即 (3025)^2,恰好等于 3025 本身。请求出具有这样性质的全部四位数。输入格式: 此题没有输入。输出格式&#xff…

详解并掌握AXI4总线协议(一)、AXI4-FULL接口介绍

系列文章目录 文章目录 系列文章目录一、AXI介绍二、AXI4、AXI-Lite、AXI4-Stream区别三、AXI4读写架构3.1 通道定义3.2 读突发时序3.3 写突发时序 四、AXI4-FULL 总线信号介绍4.1全局信号4.2 写地址通道信号4.3 写数据通道信号4.4 写响应通道信号4.5 读地址通道信号4.6 读数据…

Animate软件基础:在时间轴中添加或插入帧

FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.co…

抖音爆火的“拆盲盒”直播,是如何将昂贵的废品卖给消费者的?

抖音直播间掀起了一股“拆盲盒”热潮。 最初,这股热潮主要集中在拆卡直播间。一盒10包起卖的卡牌,价格在100~200不等。拆卡主播拿起剪刀行云流水的开盒、拆卡、过牌,一晚上能轻松跑出数万元的营业额。数据显示,头部卡牌公司卡游仅…

Redis+Unity 数据库搭建

游戏中需要存放排行榜等数据,而且是实时存放,所以就涉及到数据库的问题。这里找服务器大神了解到可以用Redis来做存储,免费的效率极高。 Redis的搭建参考上文的文章,同时也感谢这位网友。 搭建Redis 并测试数据 搭建Redis 1.下…

玩转云服务:Google Cloud谷歌云永久免费云服务器「白嫖」 指南

前几天,和大家分享了: 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南 相信很多同学都卡在了这一步: 可用性域 AD-1 中配置 VM.Standard.E2.1.Micro 的容量不足。请在其他可用性域中创建实例,或稍后…

Kafka设计与原理详解

RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即…