OpenStack——存储服务

存储侧:

块存储

文件存储

对象存储

存储简介

特点:

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中查询相应的Account、Container以及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 Server、Container Server与Object Server进行具体的对象操作,而对象与其各个副本之间的数据一致性则由Auditor、Updater和Replicator来负责

5.swift关键技术

相关推荐
感哥3 天前
OpenStack Cinder 创建卷
openstack
感哥3 天前
OpenStack Cinder 架构
openstack
感哥3 天前
OpenStack Nova Scheduler 计算节点选择机制
openstack
感哥6 天前
OpenStack Nova 创建虚拟机
openstack
感哥6 天前
OpenStack Glance(镜像)
openstack
感哥6 天前
OpenStack Keystone详解
openstack
安全菜鸟15 天前
传统方式部署OpenStack具体教程
openstack
哈里谢顿2 个月前
Ironic 中 Clean/deploy Step 延迟执行的原因分析
openstack
哈里谢顿2 个月前
ironic中为什么 IPMI Hardware Type 必须支持 IPMIManagement
openstack
哈里谢顿2 个月前
Ironic 中各个接口的作用详解
openstack