任务一 理解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 环文件 标签:存储管理,存储,service,项目,--,volume,openstack,cinder,OpenStack From: https://blog.csdn.net/m0_64148419/article/details/139840520