项目八 OpenStack存储管理

发布于:2024-06-25 ⋅ 阅读:(143) ⋅ 点赞:(0)

任务一 理解OpenStack块存储服务

1.1 •Cinder的主要功能

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

1.2 •CinderNova的交互

Nova 虚拟机连接或分离 Cinder

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

1.3 •Cinder架构

1.4 •Cinder创建卷的基本流程

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

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

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

4cinder-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

3Cinder 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.1Swift对象存储系统

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

查看 Swift 环文件


网站公告

今日签到

点亮在社区的每一天
去签到