项目八 OpenStack存储管理

任务一 理解OpenStack块存储服务

1.1 •Cinder的主要功能

• 提供 持久性块存储资源,供 Nova 计算服务的虚拟机实例使用 。
• 为 管理块存储设备提供一套方法,对卷实现从创建到删除的整个生命周期 管理。
• 将 不同的后端存储进行封装,对外提供统一的 API 。

1.2 •Cinder与Nova的交互

• Nova 虚拟机连接或分离 Cinder 卷

• 虚拟机生命周期中的卷操作

1.3 •Cinder架构

1.4 •Cinder创建卷的基本流程

(1)客户端向cinder-api服务发送请求,要求创建一个卷。

(2)cinder-api服务让cinder-scheduler服务创建一个卷。

(3)cinder-scheduler服务从若干存储节点中选出一个节点。

(4)cinder-scheduler服务让该存储节点创建这个卷。

(5)对应存储节点的cinder-volume服务通过驱动在卷提供者定义的后端存储设备上创建卷。

1.5 •验证Cinder服务

• 查看 当前运行的 Cinder 服务。

[root@node-a ~]# systemctl status *cinder*.service

• 4 个 Cinder 子 服务
Ø openstack -cinder- scheduler.service —— 调度服务
Ø openstack -cinder- volume.service —— 卷服务
Ø openstack -cinder- backup.service —— 备份服务
Ø openstack -cinder- api.service ——API 前端 服务
• 试用 Cinder 的 API
• Cinder 提供 的 API 两 个 版本
Ø Cinder API v2
Ø Cinder API v3
• 查看 当前的 Cinder API 版本信息。

[root@node-a ~]# curl http://192.168.199.31:8776

• 以 查看卷列表为 例示范。

(1)请求一个demo项目作用域的令牌。

(2)导出环境变量OS_TOKEN,并将其值设置为上述操作获取的令牌ID。

(3)Cinder API需要提供项目ID,提供对应项目ID来获取卷列表。

[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://192.168.199.31:8776/v3/2a39abedd0 96 44bb9248 7a78ee442e3f/volumes

任务二 创建和管理卷

2.1 •cinder-api服务

Ø cinder- api 作为 整个 Cinder 服务的门户,所有对 Cinder 的请求都首先由它处理 。
Ø cinder- api 向 OpenStack 客户端暴露若干 REST API 接口 。
Ø cinder- api 目前在用的有 v2 和 v3 两个 版本。
Ø 客户可以将请求发送到端点指定的地址,向 cinder- api 请求卷的操作 。
Ø cinder- api 提供 REST 标准调用服务,便于与第三方系统集成 。

2.2 •cinder-scheduler服务

• cinder-scheduler 服务通过 调度算法选择最合适的存储 节点。
• 首先 通过过滤器选择满足条件的存储 节点, 然后通过权重 计算选择 最 优的 存储节点 。
• 可以 在 Cinder 主配置文件 / etc /cinder/ cinder.conf 中对 cinder-scheduler 进行配置。
• 过滤器
Ø AvailabilityZoneFilter (可用区域过滤器 )
Ø CapacityFilter (容量过滤器 )
Ø CapabilitiesFilter (能力过滤器 )
• 权重计算
Ø CapacityWeigher 基于存储节点的空闲容量计算权重 值。

2.3 •cinder-volume服务

• cinder-volume 在存储节点上运行 , 负责 对 卷的生命周期的 管理。
• 存储设备 是由卷 驱动管理 的。 cinder-volume 与卷驱动一起实现卷的生命周期管理 。
• 卷 驱动 架构

2.4 •cinder-volume服务

• 多 存储 后端

enabled_backends=lvmdriver-1,lvmdriver-2,lvmdriver-3

[lvmdriver-1]

volume_group=cinder-volumes-1

volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver

volume_backend_name=LVM_iSCSI

[lvmdriver-2]

volume_group=cinder-volumes-2

volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver

volume_backend_name=LVM_iSCSI

[lvmdriver-3]

volume_group=cinder-volumes-3

volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver

volume_backend_name=LVM_iSCSI_b

2.5•cinder-volume服务

• 卷 类型( Volume Type )
Ø Cinder 的卷类型的作用与 Nova 的实例 类型的 作用类似 。
Ø 存储 后端的名称需要通过卷类型的扩展规格来定义 。
Ø 使用卷类型之前必须定义 。
• 示例
Ø 定义 一个名为“ lvm ” 的卷类型。

openstack --os-username admin --os-tenant-name admin volume type create lvm

Ø 创建 一个扩展规格,将卷类型连接到后端名称。

openstack --os-username admin --os-tenant-name admin volume type set lvm --property volume_backend_name=LVM_iSCSI

                       •将卷连接到虚拟机实例

                         

• cinder-volume 服务定期报告存储节点 状态
Ø cinder-volume 服务定期向 Cinder 服务报告当前存储节点的资源使用情况 。
Ø cinder-scheduler 服务会用 CapacityFilter 过滤器和 CapacityWeigher 权重计算器基于剩余容量来过滤存储节点。

2.6•cinder-backup服务

• cinder-backup 服务为卷提供备份和 恢复功能。
• cinder-backup 服务 支持将块存储卷备份到 OpenStack 对象 存储。
• cinder-backup 使用备份 驱动架构 来支持不同种类的备份存储系统 。
• / etc /cinder/ cinder.conf 配置文件的 backup_driver 选项指定 所要使用的备份 驱动。

backup_driver = cinder.backup.drivers.swift

2.7•Cinder服务的部署

• cinder- api 和 cinder-scheduler 服务部署在控制节点 上。
• cinder-volume 服务部署在存储节点上 。
• 相关 的 RabbitMQ 消息队列和 SQL 数据库通常部署在控制节点上 。
• 卷提供 者独立部署。
• 将 存储设备驱动与 cinder-volume 服务部署到一起。

2.8 •卷操作的命令行基本用法

(1)查看卷

Ø 列出 卷的信息。

openstack volume list

Ø 查看某卷的详细 信息。

openstack volume show 卷ID

(2)创建卷

openstack volume create

    [--size <大小>]

    [--type <卷类型>]

    [--image <镜像> | --snapshot <快照> | --source <卷> ]

    [--description <说明信息>]

    [--user <用户>]

    [--project <项目>]

    [--availability-zone <可用区域>]

    [--consistency-group <consistency-group>]

    [--property <键=值> [...] ]

    [--hint <键=值> [...] ]

    [--multi-attach]

    [--bootable | --non-bootable]

    [--read-only | --read-write]

    <卷名称>

(3)修改卷设置

openstack volume set  [选项列表] <卷名称或ID>

(4)删除卷

openstack volume delete  [--force | --purge] <卷> [<卷> ...]

(5)将卷连接到实例

openstack server add volume  [--device <设备>]  [--tag <标记>]  <实例>  <卷>

(6)将卷从实例上分离

openstack server remove volume  <实例>  <卷>

2.9•查看卷服务分布和运行情况

• 查看 卷服务 的分布和 运行情况。

[root@node-a ~]# source keystonerc_admin

[root@node-a ~(keystone_admin)]# openstack volume service list

+--------------+------------+-----+-------+-----+------------------------+

| Binary            | Host           | Zone | Status   | State  |  Updated At                 |

+--------------+------------+-----+-------+-----+------------------------+

| cinder-scheduler  | node-a        | nova | enabled  | up    | 2020-10-28T08:49:04.000000 |

| cinder-backup    | node-a         | nova | enabled  | up    | 2020-10-28T08:49:02.000000 |

| cinder-volume    | node-a@lvm   | nova  | enabled | up    | 2020-10-28T08:49:06.000000 |

• 查看存储后端配置
• 查看存储 后端配置的选项 设置

[DEFAULT]

…

enabled_backends = lvm

#在配置组[lvm]中设置具体选项

[lvm]

volume_backend_name=lvm                                 #卷后端名称

volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver   #卷驱动为本地LVM

iscsi_ip_address=192.168.199.31                            #iSCSI目标IP地址

iscsi_helper=lioadm                                          # iSCSI管理工具

volumes_dir=/var/lib/cinder/volumes                           #卷目录

• 设置可启动卷
• 卷 既可以用作数据磁盘,也可以用作启动盘 。
• 用作 启动盘的就是可启动 卷。
• 可以 设置该卷是否可启动。
• 在创建虚拟机实例时,如果源选择卷、卷快照或镜像,并选择创建新卷,则创建实例的同时创建的卷为可启动卷,该卷连接到实例并作为其启动盘 /dev/ vda 。

任务三  了解Swift对象存储服务

3.1•Swift对象存储系统

• Swift 可以长期存储海量静态数据,并提供检索和更新这些数据的服务。
• 与文件系统不同,对象存储系统所存储的逻辑单元是对象,而不是传统的文件 。
• 对象 包括内容和元数据两个部分 。每个 对象都是一个 RESTful 资源,拥有唯一的 URL 。

3.2 •Swift的应用场景

• 作为 网盘类产品的存储引擎 。
• 在 OpenStack 中 Swift 可以 与镜像服务 Glance 结合,为其存储镜像文件 。
• Swift 非常 适合用于存储日志文件和数据备份仓库。
• Swift 可以 使用廉价的硬盘和服务器来代替昂贵的存储设备。

3.3 •对象的层次数据模型

3.4 •对象层级结构与对象存储API的交互

• 资源路径格式

/v1/{account}/{container}/{object}

• 示例:账户 1234567890 的容器 images 中的对象 flowers/rose.jpg 对应的资源 路径

/v1/1234567890/images/flowers/rose.jpg

• 可以 使用 marker 、 limit 和 end_marker 查询参数来控制要返回的条目数,以及列表起始位置。

/v1/{account}/{container}/?marker=a&end_marker=d

• 如果需要逆序,可使用查询参数 reverse 。

/v1/{account}/{container}/?marker=d&end_marker=a&reverse=on

3.5•对象存储的组件

• Swift 对象存储的主要 组成部分

3.6 •对象存储的组件

3.8 •Swift架构

• 验证 Swift 服务
• 查看 当前运行的 Swift 服务。

[root@node-a ~]# systemctl status *swift*.service

(1)openstack-swift-proxy.service:代理服务器。

(2)openstack-swift-object-expirer.service:对象过期处理器(定时删除对象)。

(3)openstack-swift-container-replicator.service:对象复制器。

(4)openstack-swift-account-replicator.servic:账户复制器。

(5)openstack-swift-account.service:账户服务器。

(6)openstack-swift-container-updater.service:容器更新器。

(7)openstack-swift-object-reconstructor.service:对象重构器。

(8)openstack-swift-object.service:对象服务器。

(9)openstack-swift-account-reaper.service:账户收割器(处理账户删除操作)。

(10)openstack-swift-container.service:容器服务器。

(11)openstack-swift-object-replicator.service:对象复制器。

(12)openstack-swift-container-sync.service:容器同步器。

(13)openstack-swift-container-auditor.service:容器审计器。

(14)openstack-swift-object-auditor.service:对象审计器。

(15)openstack-swift-object-updater.service:对象更新器。

(16)openstack-swift-account-auditor.service:账户审计器。

• 查看 Swift 环文件

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

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

相关文章

Zynq学习笔记--了解中断配置方式

目录 1. 简介 2. 工程与代码解析 2.1 Vivado 工程 2.2 Vitis 裸机代码 2.3 关键代码解析 3. 总结 1. 简介 Zynq 中的中断可以分为以下几种类型&#xff1a; 软件中断&#xff08;Software Generated Interrupt, SGI&#xff09;&#xff1a;由软件触发&#xff0c;通常…

NXP RT1060学习总结 - fsl_flexcan CAN FD 函数说明 -2

概要 CAN测试源码&#xff1a; https://download.csdn.net/download/qq_35671135/89425377 根据fsl_flexcan.h文件从文件末尾往前面梳理&#xff0c;总共CAN FD处理函数&#xff1b; 使用的是RT1064开发板进行测试。 11、设置FlexCAN FD帧的比特率 函 数 &#xff1a;statu…

C++数据格式化6 - uint转换成二六进制字符串

1. 关键词2. strfmt.h3. strfmt.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 C 数据格式化 字符串处理 std::string int bin 跨平台 2. strfmt.h #pragma once#include <string> #include <cstdint> #include <sstream> #include <iomanip>na…

游戏心理学Day20

扩展的8种玩家 完成主义者 此类玩家关心的是成就和进展&#xff0c;其主要目的是完成游戏的主要目标&#xff0c;其次是完成游戏的次要目标之后才是游戏中的其他内容&#xff0c;在多人游戏中完成主义者会致力于炫耀自己的状态和财富。如果游戏以胜负为目标&#xff0c;那么此…

Day 46 Redis缓存集群

Redis缓存集群 redis缓存服务 缓存数据库 缓存 ​ 读取数据 cpu ​ L1 L2 L3 L4 ​ 一级缓存 二级缓存 ​ cs context switch 上下文交换 free -m ​ buffer cache mysql服务器 ​ 缓存 表缓存 数据缓存 nginx ​ expire 1d ​ 304响应码 ​ 200 ​ 301 ​ 30…

RS485中继器的作用你还不知道?

RS485是一种串行通信协议&#xff0c;支持设备间长距离通信。RS485中继器则像“传声筒”&#xff0c;能放大衰减信号&#xff0c;延长通信距离&#xff0c;隔离噪声&#xff0c;扩展分支。在实际场景中&#xff0c;如工厂内&#xff0c;通过中继器可确保控制室与远距离机器间通…

嵌入式实验---实验三 定时器实验

一、实验目的 1、掌握STM32F103定时器程序设计流程&#xff1b; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、使用SysTick定时方式控制LED闪烁&#xff1b; 2、使用通用定时器产生PWM脉冲&#xff0c;通过调整占空比实现两个目标&#xff1a; &#xff08;1&#xf…

前端导出excel xlsx 代码复制即用

确保安装了最新版本的 xlsx 库&#xff1a; npm install xlsx 2.在需要使用的文件中进行命名导入&#xff08;Named Import&#xff09;&#xff1a; import { utils, writeFile } from xlsx; 3.使用 utils 和 writeFile 替代默认导入的 XLSX 对象&#xff1a; const data [[…

RPM命令和YUM命令

目录 一、RPM软件包 1.1、RPM概述 1.2、查询已安装的rpm软件信息 1.3、查询未安装的 RPM 软件包文件中信息 1.4、安装、升级、卸载 RPM 软件包 二、YUM常规命令 三、手动配置Apache&#xff08;http&#xff09;服务 3.1、前提条件 3.2、开始配置 3.3、开启验证服务 …

迁移Docker容器

将 Docker 容器从一台服务器迁移到另一台服务器&#xff0c;主要包括以下步骤&#xff1a;保存容器的镜像&#xff0c;导出数据卷&#xff0c;传输文件到新服务器&#xff0c;然后在新服务器上重新运行容器。以下是具体的步骤和相应的命令&#xff1a; 1. 保存容器的镜像 首先…

GitHub爆赞!终于有大佬把《Python学习手册》学习笔记分享出来了

这份笔记的目标是为了给出一份比较精炼&#xff0c;但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单&#xff0c;但是措辞比较罗嗦&#xff0c;而且一个语法点往往散落在多个章节&#xff0c;不方便读者总结。 我在做笔记时&#xff0c;将一个知识点…

PFC 离散元数值模拟仿真技术与应用

近几年&#xff0c;随着计算能力的提高和算法的优化&#xff0c;离散元仿真技术得到了快速发展&#xff0c;并在学术界产生了大量研究成果。在 PFC 离散元计算中无需给定材料的宏观本构关系和对应的参数&#xff0c;这些传统的参数和力学特性在程序中可以自动得到。据调查&…

深入了解常用负载均衡软件

在构建高性能、高可用的分布式系统时&#xff0c;负载均衡技术扮演着至关重要的角色。它通过合理分发网络请求到后端服务器集群&#xff0c;从而有效提升系统吞吐量、减少响应延迟、并保障系统的稳定运行。本文将介绍几种常用的负载均衡软件&#xff0c;包括它们的优缺点、应用…

Gartner发布2024年人工智能技术成熟度曲线:29项决定人工智能领域发展方向的前沿和趋势性技术

人工智能投资已达到新高&#xff0c;重点是生成式人工智能&#xff0c;但在大多数情况下&#xff0c;该技术尚未实现预期的商业价值。这项研究通过分析各种人工智能创新&#xff08;其中许多创新正在快速发展&#xff09;&#xff0c;帮助人工智能领导者确定其他值得投资的技术…

VScode开发ARM环境搭建

1. vscode安装 直接访问官网: Visual Studio Code - Code Editing. Redefined 2. 安装插件 2.1. 安装Embedded IDE 2.2. 安装Cortex-debug 3. 工程初始化 3.1. 导入现有工程&#xff08;推荐&#xff09; 3.2. 或可创建新的工程 3.2.1. 选择Cortex-M项目 指定项目名称&…

Qemu虚拟机在线迁移到VMware

libvirt版本&#xff1a;libvirt-10.0.0qemu版本&#xff1a;qemu-8.2.0 在生产环境中&#xff0c;大多数的场景是 vmware 虚拟机迁移到 qemu 环境&#xff0c;一般是通过关机然后导出、导入磁盘镜像来实现。 如果要将 qemu 环境虚拟机迁移到 vmware 怎么办呢&#xff1f;要求…

使用 Python 进行测试(5)测试的类型

总结 和我一起唱&#xff01; 冒烟测试&#xff0c;让你快速失败&#xff1b; 回归测试&#xff0c;不打破过去&#xff1b; 健全性检查&#xff0c;保留所拥有&#xff1b; 集成测试&#xff0c;处理副作用&#xff1b; 端到端&#xff0c;永无尽头&#xff01; 回测&#xf…

Django使用django-apscheduler实现定时任务

定时任务可以在后台定时执行指定的代码&#xff0c;避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。 我在这里使用的 django-apscheduler库来实现定时任务。 一、安装 django-apscheduler pip install django-apscheduler二、在项目的setting.py…

仿真模拟--telnet服务两种认证模式(自作)

自己做的笔记,有问题或看不懂请见解一下~ 目录 两个路由器间实现telnet服务(password认证模式) server client 两个路由器间实现telnet服务(aaa认证模式) server client 改名 tab键补齐 不会就扣问号 ? save 两个路由器间实现telnet服务…

有哪些去手写免费的软件?软件介绍

有哪些去手写免费的软件&#xff1f;在数字化时代&#xff0c;高效处理文字信息已成为学习和工作中不可或缺的一环。对于需要频繁处理手写试卷、笔记的用户来说&#xff0c;一款好的去手写软件无疑能大大提升效率。今天&#xff0c;我们就来推荐三款免费的去手写软件&#xff0…