OpenStack开源虚拟化平台(二)

目录

    • 三、对象存储服务Swift
      • (一)Swift特性
      • (二)应用场景
      • (三)Swift主要组件
      • (四)Swift基本原理
      • (五)实例分析
    • 四、镜像服务Glance
      • (一)Glance的作用
      • (二)Glance的组成部分


三、对象存储服务Swift

在这里插入图片描述
  比如复制和存档数据,图像或视频服务,存储次级静态数据,开发数据存储整合的新应用,存储容量难以估计的数据,为Web应用创建基于云的弹性存储。

(一)Swift特性

1. 高数据持久性

  数据的可靠性,是指数据存储到系统中后,到某一天数据丢失的可能性。

2. 完全对称的系统架构

  “对称”意味着Swift中各节点可以完全对等,能极大地降低系统维护成本。

3. 无限的可扩展性

  一是数据存储容量无限可扩展,二是Swift性能(如QPS、吞吐量等)可线性提升。

4. 无单点故障

  整个Swift集群中,也没有一个角色是单点的,并且在架构和设计上保证无单点业务是有效的。

5. 简单、可依赖

  简单体现在实现易懂、架构优美、代码整洁;可依赖是指Swift经测试、分析之后,可以放心大胆地将Swift用于最核心的存储业务上。

(二)应用场景

在这里插入图片描述
  Swift主要有三个组成部分:Proxy Server、Storage Server和Consistency Server。其中Storage和Consistency服务均允许在Storage Node上。使用OpenStack的认证服务Keystone,目的在于实现统一OpenStack各个项目间的认证管理。

在这里插入图片描述

(三)Swift主要组件

  Swift主要组件如下。
  (1)代理服务(Proxy Server):对外提供对象服务API,会根据环的信息来查找服务地址并转发用户请求至相应的账户、容器或者对象服务;由于采用无状态的REST请求协议,可以进行横向扩展来均衡负载。
  (2)认证服务(Authentication Server):验证访问用户的身份信息,并获得一个对象访问令牌(Token),在一定的时间内会一直有效:验证访问令牌的有效性并缓存下来直至过期时间。
  (3)缓存服务(Cache Server):缓存的内容包括对象服务令牌、账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务可采用Memcached集群,Swift会使用一致性散列算法来分配缓存地址。
  (4)账户服务(Account Server):提供账户元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在一个SQLite数据库中。
  (5)容器服务(Container Server):提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储在一个SOLite数据库中。
  (6)对象服务(Object Server):提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统。
  (7)复制服务(Replicator):会检测本地分区副本和远程副本是否一致,具体是通过对比散列文件和高级水印来完成,发现不一致时会采用推式(Push)更新远程副本, 例如对象复制服务会使用远程文件复制工具rsync来同步;另外一个任务是确保被标记删除的对象从文件系统中移除。
  (8)更新服务(Updater):当对象由于高负载的原因而无法立即更新时,任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新;例如成功创建对象后容器服务器没有及时更新对象列表,这个时候容器的更新操作就会进入排队中, 更新服务会在系统恢复正常后扫描队列并进行相应的更新处理。
  (9)审计服务(Auditor):检查对象、容器和账户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本;其他类型的错误会被记录到日志中。
  (10)账户清理服务(Account Reaper):移除被标记为删除的账户,删除其所包含的所有容器和对象。

1. Ring

  Ring是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。在涉及查询Account(账户)、Container(容器)、Object(对象)信息时,就需要查询集群的Ring信息。Ring使用Zone、Device、Partition和Replica来维护这些映射信息。Ring中每个Partition在集群中都(默认)有3个Replica。每个Partition的位置由Ring来维护,并存储在映射中。每次增减存储节点时,需要重新平衡一下Ring文件中的项目。

2. Proxy Server

  Proxy Server是提供Swift API的服务器进程,负责Swift其余组件间的相互通信。Proxy提供了Rest-full API,并且符合标准的HTTP协议规范,这使得开发者可以快捷构建定制的Client与Swift交互。

在这里插入图片描述
3. Storage Server

  Storage Server提供了磁盘设备上的存储服务。Swift中有三类存储服务器:Account、Container和Object。

在这里插入图片描述
4. Consistency Servers

  目的是查找并解决由数据损坏和硬件故障引起的错误。主要存在三个Server:Auditor、Updater和Replicator。

在这里插入图片描述
在这里插入图片描述

(四)Swift基本原理

  Swift 的算法和存储理论并不复杂。主要有以下几个概念。

1. 数据一致性模型(Consistency Model)

  为了实现这一目标,Swift采用Quorum仲裁协议:
  (1)定义N为数据的副本总数,W为写操作被确认接受的副本数量,R为读操作的副本数量。
  (2)强一致性:R+W >N,以保证对副本的读写操作会产生交集,从而保证可以读取到最新版本。
  (3)弱一致性:R+W<=N,如果读写操作的副本集合不产生交集,就可能会读到脏数据。
  Swift针对的是读写都比较频繁的场景,所以采用了比较折中的策略,即写操作需要满足至少一半以上成功W>N2,再保证读操作与写操作的副本集合至少产生一个交集,即R+W>N。Swift默认配置是N=3,W=2>N/2,R=1或2,即每个对象会存在3个副本,这些副本会尽量被存储在不同区域的节点上;W=2表示至少需要更新两个副本才算写成功;当R=1时意味着某一个读操作成功便立刻返回,此种情况下可能会读取到旧版本(弱一致性模型);当R=2时,需要通过在读操作请求头中增加x-newest=true参数来同时读取两个副本的元数据信息,然后比较时间戳来确定哪个是最新版本(强一致性模型);如果数据出现了不一致,后台服务进程会在一定时间窗口内通过检测和复制协议来完成数据同步,从而保证达到最终一致性,如下图所示。

在这里插入图片描述
2. 一致性散列(Consistent Hashing)

  面对海量级别的对象,需要存放在成千上万台服务器和硬盘设备上,首先要解决寻址问题,即如何将对象分布到这些设备地址上。Swift基于一致性散列技术,通过计算可将对象均匀分布到虚拟空间的虚拟节点上,在增加或删除节点时可大大减少需要移动的数据量;虚拟空间大小通常采用2的n次幂,便于进行高效的移位操作;然后通过独特的数据结构Ring(环)再将虚拟节点映射到实际的物理存储设备上,完成寻址过程之间的对象(它们本来映射到Node4上)。

在这里插入图片描述
  将散列结果右移m位,可产生 2 32 − m 2^{32-m} 232m 个虚拟节点,例如 m = 29 m=29 m=29 时可产生8个虚拟节点。

3. 数据模型

  共设有三层逻辑模型。Account(账户):租户,用来做顶层的隔离机制;Container(容器):代表封装一组对象,类似文件夹或目录;Object(对象):由元数据和内容两部分组成。

在这里插入图片描述
4. 环的数据结构

  环是为了将虚拟节点(分区)映射到一组物理存储设备上,并提供一定的冗余度而设计的,其数据结构由以下信息组成。
  (1)存储设备列表、设备信息,包括唯一标识号(id)、区域号(zone)、权重(weight)、IP地址(ip)、端口(port)、设备名称(device)、元数据(metadata)。
  (2)分区到设备映射关系(replica2part2dev_id数组)。
  (3)计算分区号的位移(part_shift整数)。

在这里插入图片描述
5. Replica

  如果集群中的数据在本地节点上只有一份,一旦发生故障就可能会造成数据的永久性丢失。
  因此,需要有冗余的副本来保证数据安全。Swift中引入了Replica的概念,其默认值为3,理论依据主要来源于NWR策略(也叫Quorum协议)。

在这里插入图片描述
  NWR是一种在分布式存储系统中用于控制一致性级别的策略。在Amazon的Dynamo云存储系统中,使用了NWR来控制一致性。N代表同一份数据的Replica的份数,W更新一个数据对象时需要确保成功更新的份数,R代表读取一个数据需要读取的Replica的份数。
  公式W+R>N,保证某个数据不被两个不同的事务同时读和写,公式W>N/2保证两个事务不能并发写某一个数据。

在这里插入图片描述
  Swift的N=3、W=2、R=2,完全符合NWR策略, Swift系统是可靠的,没有单点故障。

6. Zone

  如果所有的节点都在一个机架或一个机房中,那么一旦发生断电、网络故障等事故,都将导致用户无法访问。需要一种机制对机器的物理位置进行隔离,以满足分区容忍性。Ring中引入了Zone的概念,把集群的节点分配到每个Zone中,其中,同一个Partition的Replica不能同时放在同一个节点上或同一个Zone内。

7. Weight权重

  Ring引入权重的目的是解决未来添加存储能力更大的节点时,分配到更多的Partition。例如,2TB容量的节点的Partition数为1TB的两倍,那么就可以设置2TB的权重为200,而1TB的权重为100。

8. 系统架构

  Swift采用完全对称、面向资源的分布式系统架构设计,组件可扩展,通信方式采用非阻塞式I/O模式,提高系统吞吐和响应能力。

在这里插入图片描述

(五)实例分析

  下图是新浪SAE在测试环境中部署的Swif集群,集群中又分为4个Zone,每个Zone是一台存储服务器,每台服务器上由12块2TB 的SATA磁盘组成,只有操作系统安装盘需要RAID,其他盘作为存储节点,不需要RAID。
  前面提到过,Swift采用完全对称的系统架构,在这个部署案例中得到了很好的体现。下图中每个存储服务器的角色是完全对等的,系统配置完全一样,均安装了所有Swift服务软件包,如 Proxy Server、Container Server和Account Server等。上面的负载均衡(Load Balancer)并不属于Swift 的软件包,出于安全和性能的考虑,一般会在业务之前挡一层负载均衡设备。当然可以去掉这层代理,让Proxy Server直接接收用户的请求,但这可能不太适合在生产环境中使用。
  下图中分别表示了上传文件PUT和下载文件GET请求的数据流,两个请求操作的是同一个对象。上传文件时,PUT请求通过负载均衡随机挑选一台Proxy Server,将请求转发到后者,后者通过查询本地的Ring文件,选择3个不同Zone中的后端来存储这个文件,然后同时将该文件向这三个存储节点发送文件。这个过程需要满足NWR策略(QuorumProtocol),即3份存储,写成功的份数必须大于2/3,即必须保证至少两份数据写成功,再给用户返回文件写成功的消息。下载文件时,GET请求也通过负载均衡随机挑选一台Proxy Server,后者上的Ring文件能查询到这个文件存储在哪三个节点中,然后同时去向后端查询,至少有两个存储节点“表示”可以提供该文件,然后Proxy Server中选择一个节点下载文件。

在这里插入图片描述

四、镜像服务Glance

  Glance提供了一个虚拟磁盘镜像的目录和存储仓库,并且可以提供对虚拟机镜像的存储和检索。这些磁盘镜像常常广泛应用于OpenStack Compute组件之中。以三种形式加以配置:利用OpenStack对象存储机制来存储镜像,利用Amazon的简单存储解决方案(简称S3)直接存储信息,将S3存储与对象存储结合起来,作为S3访问的连接器。

(一)Glance的作用

  Glance作为OpenStack的虚拟机的Image(镜像)服务,提供了一系列的REST API,用来管理、查询虚拟机的镜像,它支持多种后端存储介质。

在这里插入图片描述
  可以看出,通过Glance,Opentack的3个模块被链接成了一个整体,Glance为Nova提供镜像的查找操作,而Swift又为Glance提供实际的存储服务,Swift可以看成Glacne存储接口的一个具体实现。

(二)Glance的组成部分

在这里插入图片描述
  OpenStack Image Service支持的后端仓库如下。
  (1)OpenStack Object Storage(Swift):它是OpenStack中高可用的对象存储项目。
  (2)FileSystem:OpenStack Image Service存储虚拟机镜像的默认后端是后端文件系统。
  (3)S3:该后端允许OpenStack Image Service存储虚拟机镜像在Amazon S3服务中。
  (4)HTTP:OpenStack Image Service能通过HTTP在Internet上读取可用的虚拟机镜像。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感&#xff1a;通低频阻高频的。仿真中高频信号通过电感&#xff0c;因为电感会阻止电流发生变化&#xff0c;故说阻止高频信号 电容&#xff1a;隔直通交。…

华为云服务器系统重装

文章目录 1 登录云服务器&#xff0c;点击控制台2 选择实例3 点击更多&#xff0c;选择重装系统4 勾选关机&#xff0c;填写密码&#xff0c;点击确定5 选择自己方便的认证方式6 同意协议7 等待完成8 重装完毕 1 登录云服务器&#xff0c;点击控制台 2 选择实例 3 点击更多&…

C语⾔数据类型和变量

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计算 2. signed 和 unsigned3. 数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5. 算术操作符&#…

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为&#xff1a;在写某些代码的时候&#xff0c;仓库中有些文件夹&#xff0c;只提交了文件夹名称到…

缓存双写一致性(笔记)

缓存更新方案 旁路缓存模式 这是比较多的 旁路缓存模式&#xff1a;缓存有就返回&#xff0c;没有数据库查询&#xff0c;放入缓存返回。 还有些常用缓存策略 读穿透模式 读穿透和旁路很相似&#xff0c;程序不需要关注从哪里读取数据&#xff0c;它只需要从缓存查询数据。…

海思SS928/SD3403开发笔记4——u盘挂载

首先一定要将u盘格式化成fat32。 挂载 mkdir /mnt/usb mount /dev/sda1 /mnt/usb成功示意图&#xff1a; 取消挂载 umount /mnt/usb

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文&#xff0c;以便建立和维护邻居关系 (2)建立邻居关系后&#xff0c;给邻居路由器发送数据库描述报文(DBD)&#xff0c;也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

vite+vue集成cesium

1、创建项目、选择框架vuejs pnpm create vite demo_cesium 2、进入项目安装依赖 cd demo_cesium pnpm install3、安装cesium及插件 3、pnpm i cesium vite-plugin-cesium 4、修改vite-config.js import { defineConfig } from vite import vue from vitejs/plugin-vue impo…

怎么测试远程服务器能否连通

远程服务器连接测试的方法很多&#xff0c;下面简单介绍下其中两种方法。 ping命令 按WINR快截键&#xff0c;打开“运行”对话框&#xff0c;输入cmd&#xff0c;回车&#xff0c;打开命令提示符。 输入ping IP地址或ping 域名即可&#xff0c;如ping360服务器通不通&#xf…

第十四届蓝桥杯省赛C++B组D题【飞机降落】题解(AC)

解题思路 这道题目要求我们判断给定的飞机是否都能在它们的油料耗尽之前降落。为了寻找是否存在合法的降落序列&#xff0c;我们可以使用深度优先搜索&#xff08;DFS&#xff09;的方法&#xff0c;尝试所有可能的降落顺序。 首先&#xff0c;我们需要理解题目中的条件。每架…

【OceanBase】OBProxy 无状态的理解

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;为祖国的科技进步添砖Java 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 前言 OBProxy 无状态的概述 OBProxy 无状态特性带来的优点 1. 高可用 2. 负载均衡…

盛元广通打造智慧校园实验室安全管理系统

盛元广通智慧校园实验室安全管理系统以安全为重点&#xff0c;构建由学校、二级单位、实验室组成的三级联动的实验室安全多级管理体系、多类用户角色&#xff0c;内置教育部标准检查表&#xff0c;支撑实验室相关业务过程的智慧管理。实现通过PC端/手机移动端开展检查工作、手机…

基于贵州非遗推广小程序的设计与实现14362

基于贵州非遗推广小程序的设计与实现 摘 要 本文设计并实现了一个基于贵州非遗推广的小程序&#xff0c;旨在通过小程序平台推广和展示贵州省非物质文化遗产。该小程序提供了非遗项目介绍、相关活动展示、购买非遗产品等功能。 首先&#xff0c;我们收集了贵州省各个非遗项目的…

惠海 H6912 升压恒流芯片IC 支持2.6-40V升12V24V36V48V60V100V 10A 摄影灯 太阳能灯 UV灯 杀菌灯

1.产品描述 H6912是一款外围电路简洁的宽调光比升压调光LED恒流驱动器&#xff0c;可适用于2.6-40V输入 电压范围的LED恒流照明领域。H6912可以实现高精度的恒流效果&#xff0c;输出电流恒流精度≤士3%&#xff0c;电压工作范围为2.6-40V.可以轻松满足锂电池及中低压的应用需…

【Python】Python环境搭建教学#保姆级教学#手把手带你安装——内附Python环境搭建安装包(Python、PyCharm(社区版)安装包)

Python环境搭建 导读一、初识Python1.1 Python的由来1.2 Python的用途1.3 Python的优缺点1.4 Python的前景&#xff08;钱景&#xff09; 二、Python环境搭建2.1 运行环境——Python安装2.2 开发环境——PyCharm安装2.3 项目创建2.4 基本配置2.4.1 主题配置2.4.2 背景图设置2.4…

2024 年江西省研究生数学建模竞赛A题:交通信号灯管理问题分析、实现代码及参考论文

2024 年江西省研究生数学建模竞赛题目交通信号灯管理 1 题目 交通信号灯是指挥车辆通行的重要标志&#xff0c;由红灯、绿灯、 黄灯组成。红灯停、绿灯行&#xff0c;而黄灯则起到警示作用。交通 信号灯分为机动车信号灯、非机动车信号灯、人行横道信号 灯、方向指示灯等。 一…

实体零售连锁企业如何通过物流接口实现数智化转型升级?

在电子商务浪潮的持续冲击下&#xff0c;传统的实体零售行业面临着巨大的挑战。为了在线上线下融合的新零售时代保持竞争力&#xff0c;众多实体零售企业积极寻求数字化转型的突破。 某中国零售连锁百强企业近年来致力于打造自有品牌的线上销售体系&#xff0c;自2021年8月起接…

MySQL:数据类型

数据类型 1. 字符串类型2. 整数类型3. 定点数类型和浮点数类型4. 布尔类型5. 枚举和集合类型6. 日期和时间类型7. Blob类型8. JSON类型 字符串类型、数字类型、日期和时间类型、存放二进制的数据类型、存放地理数据的类型。 1. 字符串类型 字符串类型也可以用来存储邮编&…

Windows server 由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。

问题现象&#xff1a; 解决办法 临时远程方式1: 打开 mstsc 时带上 /admin 等参数&#xff0c;如下图所示&#xff1a; 使用“mstsc /admin /v:目标ip”来强制登录服务器&#xff0c;但只能是管理员身份。 远程方式2&#xff1a; 通过VM远程登陆系统后&#xff0c;运行输入R…

【第七节】C/C++排序算法

目录 前言 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、归并排序 六、快速排序 七、 堆排序 八、计数排序 九、桶排序 十、基数排序 前言 排序算法可以大致分为两大类&#xff1a;比较类排序和非比较类排序。以下是这两大类中一些常见的排序算法示例&…