块存储服务

  • 简介
  • 部署环境
  • 在控制节点上安装和配置块设备存储服务(cinder)
  • 安装并配置一个存储节点
  • 图形化界面访问


简介

OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。

块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。

典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器可以运行在控制节点、计算节点或单独的存储节点。


部署环境

我已经部署好了OpenStack平台并且装了可视化工具。可参照我之前的文章

OpenStack平台的搭建:https://blog.csdn.net/m0_55005311/article/details/119750200?spm=1001.2014.3001.5501
OpenStack可视化:https://blog.csdn.net/m0_55005311/article/details/119773544?spm=1001.2014.3001.5501

三台虚拟机:
controller控制节点		192.168.122.11		
compute1计算节点			192.168.122.12
block1块节点				192.168.122.13		本次部署新建的虚拟机,需要两块硬盘,openstack源已配好,已时间同步,已升级软件包
!!!三台主机的域名解析都已做好

在控制节点上安装和配置块设备存储服务(cinder)

配置步骤参考官网:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html

安装和配置块存储服务之前,必须创建数据库、创建服务证书和API端点

创建 cinder 数据库:
CREATE DATABASE cinder;

允许 cinder 数据库合适的访问权限:
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'cinder';

要创建服务证书,完成这些步骤

[root@controller ~]# openstack user create --domain default --password cinder 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

创建块设备存储服务的 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

安装软件包并修改配置文件

[root@controller ~]# yum install openstack-cinder -y
[root@controller ~]# vim /etc/cinder/cinder.conf
#按照链接进行修改https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html
#密码要记得修改

openstack对象存储模块 openstack cinder本地存储_运维

初始化块设备服务的数据库

[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

配置计算节点以使用块设备存储

[root@controller ~]# vim /etc/nova/nova.conf

openstack对象存储模块 openstack cinder本地存储_运维开发_02


重启计算API 服务

[root@controller ~]# systemctl restart openstack-nova-api.service

启动块设备存储服务,并将其配置为开机自启

[root@controller ~]# systemctl enable --now openstack-cinder-api.service openstack-cinder-scheduler.service

安装并配置一个存储节点

安装 LVM 包,启动LVM的metadata服务并且设置该服务随系统启动(系统一般默认包含)

[root@block1 ~]# yum install lvm2 -y
[root@block1 ~]# systemctl enable --now lvm2-lvmetad.service

创建LVM 物理卷,创建 LVM 卷组 cinder-volumes

[root@block1 ~]# pvcreate /dev/vdb		#要查看自己的磁盘是不是vdb
[root@block1 ~]# vgcreate cinder-volumes /dev/vdb

openstack对象存储模块 openstack cinder本地存储_运维开发_03

只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描/dev 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。必须重新配置LVM,让它只扫描包含cinder-volume卷组的设备。

如果存储节点在操作系统磁盘上使用了 LVM,还必需添加相关的设备到过滤器中。

openstack对象存储模块 openstack cinder本地存储_运维_04

[root@block1 ~]# vim /etc/lvm/lvm.conf
[root@block1 ~]# vim /etc/lvm/lvm.conf
filter = [ "a/vda/", "a/vdb/", "r/.*/"]

openstack对象存储模块 openstack cinder本地存储_运维_05


安装软件包

[root@block1 ~]# yum install openstack-cinder targetcli python-keystone -y
[root@block1 ~]# vim /etc/cinder/cinder.conf
#参考链接修改https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html
#注意修改密码

lvm模块没有,在最后加上。用iscsi协议把lvm从本地的逻辑卷组里分出去

openstack对象存储模块 openstack cinder本地存储_openstack_06


启动块存储卷服务及其依赖的服务,并将其配置为随系统启动。因为用到了iscsi协议,所以要启动target

[root@block1 ~]# systemctl enable --now openstack-cinder-volume.service target.service

在控制节点列出服务组件以验证是否每个进程都成功启动

openstack对象存储模块 openstack cinder本地存储_openstack对象存储模块_07

图形化界面访问

在dashborad用demo用户身份登录,可以看到多了一个功能是卷

openstack对象存储模块 openstack cinder本地存储_运维_08


创建一个云硬盘

openstack对象存储模块 openstack cinder本地存储_openstack_09


有很多功能,可以扩展云硬盘,创建快照等

openstack对象存储模块 openstack cinder本地存储_openstack_10


选择管理连接加到之前创建的云主机里,这时进入云主机fdisk -l就可以看到这个1G的硬盘,mkfs.xfs /dev/vdb就可以格式化硬盘挂载使用了

openstack对象存储模块 openstack cinder本地存储_linux_11


这个硬盘其实是在block1节点上的,是使用iscsi协议连接到云主机上

openstack对象存储模块 openstack cinder本地存储_openstack_12


注意如果对云盘进行扩容,只是逻辑方面进行了扩容,文件系统已经格式化过了,所以物理空间还是原来的大小。这个时候想变大就对文件系统进行拉伸xfs_growfs /dev/vdb