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中查询相应的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关键技术

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值