项目八 OpenStack存储管理

任务一 理解OpenStack块存储服务

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

1.2 •CinderNova****的交互
• 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 环文件

相关推荐
終不似少年遊*4 天前
云计算HCIP-OpenStack01
云原生·云计算·学习笔记·openstack·hcip·虚拟化
終不似少年遊*7 天前
云计算HCIP-OpenStack03
linux·网络·云原生·云计算·学习笔记·openstack·hcip
終不似少年遊*7 天前
云计算HCIP-OpenStack02
云原生·云计算·学习笔记·openstack·hcip
終不似少年遊*7 天前
云计算HCIP-OpenStack04
云原生·云计算·学习笔记·openstack·hcip·虚拟化
終不似少年遊*8 天前
华为云(openstack)常用命令行
linux·服务器·网络·华为云·云计算·操作系统·openstack
ZVAyIVqt0UFji15 天前
openstack内部rpc消息通信源码分析
网络·网络协议·rpc·openstack
four-hour20 天前
openstack 报错合集
openstack
葡萄爱23 天前
构建高可用系统设计OpenStack、Docker、Mesos和Kubernetes(简称K8s)
docker·kubernetes·openstack
four-hour24 天前
四:工具、环境准备-compute node
linux·ubuntu·openstack
胖胖不胖、1 个月前
解决:Openstack创建实例进入控制台报错Something went wrong, connection is closed
linux·服务器·openstack