文章目录
一、概述
- 块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。
- 典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器可以运行在控制节点、计算节点或单独的存储节点。
块存储服务通常包含下列组件:
- cinder-api
接受API请求,并将其路由到cinder-volume执行。 - cinder-volume
与块存储服务和例如cinder-scheduler的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。cinder-volume服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。 - cinder-scheduler守护进程
选择最优存储提供节点来创建卷。其与nova-scheduler组件类似。 - cinder-backup守护进程
cinder-backup服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume服务,它与多种存储提供者在驱动架构下进行交互。 - 消息队列
在块存储的进程之间路由信息。
二、安装并配置控制节点
1. 先决条件
##1. 创建数据库:
## 用数据库连接客户端以 root 用户连接到数据库服务器:
[root@controller ~]# mysql -pwestos
MariaDB [(none)]> CREATE DATABASE cinder; ##创建 cinder 数据库
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder'; ##允许 cinder 数据库合适的访问权限
##2.创建服务证书
##创建一个 cinder 用户:
[root@controller ~]# openstack user create --domain default --password cinder cinder
##添加 admin 角色到 cinder 用户上
[root@controller ~]# openstack role add --project service --user cinder admin
##创建 cinder 和 cinderv2 服务实体:
[root@controller ~]# openstack service create --name cinder --description "OpenStack Block Storage" volume
[root@controller ~]# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
##3.创建块设备存储服务的 API 入口点:
[root@controller ~]# openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
2. 安全并配置组件
##1.安装软件包:
[root@controller ~]# yum install openstack-cinder -y
[root@controller ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
rpc_backend = rabbit #配置 “RabbitMQ” 消息队列访问:
auth_strategy = keystone ##配置认证服务访问
my_ip = 192.168.0.1 ##配置 my_ip 来使用控制节点的管理接口的IP 地址
##配置数据库访问:
[database]
connection = mysql+pymysql://cinder:cinder@controller/cinder
##配置 “RabbitMQ” 消息队列访问:
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
##配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
##配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
## 3.初始化块设备服务的数据库:
[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
3. 配置计算节点以使用块设备存储
[root@controller ~]# mysql -pwestos
MariaDB [(none)]> show databases;
MariaDB [(none)]> use cinder
MariaDB [cinder]> show tables;
[root@controller ~]# vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
4. 完成安装
##1.重启计算API 服务:
[root@controller ~]# systemctl restart openstack-nova-api.service
##2.启动块设备存储服务,并将其配置为开机自启:
[root@controller ~]# systemctl enable --now openstack-cinder-api.service openstack-cinder-scheduler.service
二、安装并配置一个存储节点
1. 开启新的虚拟机做存储节点
配置存储节点
- 添加一块新的硬盘
- 配置ip,添加解析,设置主机名为block1
- 配置镜像源,设置时间同步
[root@block1 ~]# vim /etc/hosts
[root@block1 ~]# yum install -y chrony
[root@block1 ~]# vim /etc/chrony.conf
server 192.168.0.100 iburst
[root@block1 ~]# systemctl enable --now chronyd
[root@compute1 yum.repos.d]# scp openstack.repo block1:/etc/yum.repos.d/
2.先决条件
## 1. 安装支持的工具包:
## 安装 LVM 包:
[root@block1 ~]# yum install lvm2
## 启动LVM的metadata服务并且设置该服务随系统启动:
[root@block1 ~]# systemctl enable lvm2-lvmetad.service
[root@block1 ~]# fdisk -l
## 2. 创建LVM 物理卷 /dev/vdb
[root@block1 ~]# pvcreate /dev/vdb
Physical volume "/dev/vdb" successfully created.
## 3. 创建LVM 物理卷 cinder-volumes,块存储服务会在这个卷组中创建逻辑卷。
[root@block1 ~]# vgcreate cinder-volumes /dev/vdb
Volume group "cinder-volumes" successfully created
## 4. 只有实例可以访问块存储卷组。
## 在``devices``部分,添加过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备.
## 存储节点在操作系统磁盘上使用了 LVM,需添加相关的设备到过滤器中。例如,如果 /dev/vda 设备包含操作系统:
[root@block1 ~]# vim /etc/lvm/lvm.conf
filter = [ "a/vda/", "a/vdb/", "r/.*/"]
3. 安全并配置组件
## 1. 安装软件包:
[root@block1 ~]# yum install openstack-cinder targetcli python-keystone
[root@block1 ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
rpc_backend = rabbit ##配置 “RabbitMQ” 消息队列访问
auth_strategy = keystone ##配置认证服务访问
my_ip = 192.168.0.3 ##配置 my_ip 选项
enabled_backends = lvm ##启用 LVM 后端
glance_api_servers = http://controller:9292 ##配置镜像服务的位置
verbose = True ##(可选的)为帮助排错,在 “[DEFAULT]”部分启用详细日志
##配置数据库访问:
[database]
connection = mysql+pymysql://cinder:cinder@controller/cinder
##配置 “RabbitMQ” 消息队列访问:
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
##配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
##配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
##配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
4. 完成安装
[root@block1 ~]# systemctl enable --now openstack-cinder-volume.service target.service
三、验证操作
## 列出服务组件以验证是否每个进程都成功启动:
[root@controller ~]# cinder service-list
四、图形化管理界面操作
1. 添加云硬盘
2. 删除云硬盘
想要从云主机上摘除云硬盘,需要先卸载,再分离,之前保存在云硬盘中的数据不会丢失,就算云主机删除了也不影响,因为云硬盘相对于云主机来说就相当于一个外部设备,想要得到之前放置在云硬盘中的数据只需要重新建立云主机,并将云硬盘添加到云主机中即可.
3. 扩展云硬盘