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关键技术

相关推荐
huhy~10 天前
基于Ubuntu2410脚本搭建OpenStack-D版
服务器·网络·openstack
xserver210 天前
Openstack9--安装etcd分布式键-值对存储系统
数据库·分布式·openstack·etcd
mqiqe19 天前
云计算Openstack 虚拟机调度策略
云计算·openstack
小安运维日记23 天前
Linux云计算 |【第五阶段】CLOUD-DAY2
linux·运维·云计算·openstack
南宫乘风1 个月前
OpenStack将运行的系统导出 QCOW2 镜像并导入阿里云
阿里云·云计算·openstack
学习向前冲1 个月前
开源OpenStack
openstack
suum1 个月前
openstack-swift.18421165
openstack
极客先躯1 个月前
开源的云平台有哪些?
kubernetes·开源·openstack·cloudstack·云平台·docker swarm·opennebula
mqiqe1 个月前
云计算Openstack Horizon
云计算·openstack·perl
zkyqss2 个月前
OpenStack Yoga版安装笔记(十六)Openstack网络理解
笔记·openstack