OpenStack——存储服务

ops/2024/10/11 13:29:48/

存储侧:

        块存储

        文件存储

        对象存储    

存储简介

特点:

        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.ppmy.cn/ops/86936.html

相关文章

WordPress建站:如何使用Hostinger搭建WordPress外贸独立站

随着电商平台竞争的加剧,许多外贸从业者意识到减少对平台依赖的重要性,并选择搭建自己的外贸独立站来获得更多的控制权和灵活性。即使是没有建站基础的新手,也可以通过学习建站来实现这一目标。下面是一个适用于新手的外贸建站教程&#xff0…

网络模型的使用以及修改 pytorch

VGG16_Weights.DEFAULT 或 VGG16_Weights.IMAGENET1K_V1:使用在 ImageNet 上训练的权重 import torchvision from torch import nnvgg16_false torchvision.models.vgg16() vgg16_true torchvision.models.vgg16(weightsDEFAULT) print(vgg16_true) train_data …

Python 爬虫入门(一):从零开始学爬虫 「详细介绍」

Python 爬虫入门(一):从零开始学爬虫 「详细介绍」 前言1.爬虫概念1.1 什么是爬虫?1.2 爬虫的工作原理 2. HTTP 简述2.1 什么是 HTTP?2.2 HTTP 请求2.3 HTTP 响应2.4 常见的 HTTP 方法 3. 网页的组成3.1 HTML3.2 CSS3.…

Vue 3 中使用 inMap.js 实现蜂窝热力图的可视化

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue 3 中使用 inMap.js 实现蜂窝热力图的可视化 应用场景介绍 蜂窝热力图是一种可视化技术,用于在地图上显示数据的分布情况。它将数据点划分为六边形单元格,并根据单元格内数据的密度…

Temporal(时效)模式02

使用这个模型,我们可以表现如下的信息: 􀁺􀀃 Dinsdale Piranha于1998年1月1日进入公司,那时的工资是$75,000;然后在1998年4月1日得到提升,薪水升到$85,000。 􀁺􀀃 D…

浅谈取样器之OS进程取样器

浅谈取样器之OS进程取样器 JMeter 的 OS 进程取样器(OSProcess Sampler)允许用户在 JMeter 测试计划中直接执行操作系统命令或脚本。这一功能对于需要集成系统级操作到性能测试场景中尤为有用,比如运行数据库备份脚本、调用系统维护命令或执…

React学习第二天——React组件

一、傻瓜组件和聪明组件 傻瓜组件也叫展示组件,负责根据props展示页面信息。 聪明组件也叫容器组件,负责数据的获取和处理。 二、函数式组件 函数式组件是⼀种⽆状态组件,是为了创建纯展示组件,这种组件只负责根据传⼊的props…

国家超算互联网平台:模型服务体验与本地部署推理实践

目录 前言一、平台显卡选用1、显卡选择2、镜像选择3、实例列表4、登录服务器 二、平台模型服务【Stable Diffusion WebUI】体验1、模型运行2、端口映射配置3、体验测试 三、本地模型【Qwen1.5-7B-Chat】推理体验1、安装依赖2、加载模型3、定义提示消息4、获取model_inputs5、生…