Openstack 块存储服务

块存储服务概览

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

块存储服务通常包含下列组件:

cinder-api
接受API请求,并将其路由到``cinder-volume``执行。
cinder-volume
与块存储服务和例如``cinder-scheduler``的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。``cinder-volume``服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。
cinder-scheduler守护进程
选择最优存储提供节点来创建卷。其与``nova-scheduler``组件类似。
cinder-backup daemon
``cinder-backup``服务提供任何种类备份卷到一个备份存储提供者。就像``cinder-volume``服务,它与多种存储提供者在驱动架构下进行交互。
消息队列
在块存储的进程之间路由信息。

这个部分描述如何在控制节点上安装和配置块设备存储服务,即 cinder。这个服务需要至少一个额外的存储节点,以向实例提供卷。

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

完成下面的步骤以创建数据库:

cinder存储配置---控制节点

进入数据库创建 cinder 数据库:

CREATE DATABASE cinder;

允许 cinder 数据库合适的访问权限:

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';

退出数据库创建一个 cinder 用户

openstack user create --domain default --password CINDER_PASS cinder

openstack role add --project service --user cinder admin

创建 cinderv2 和 cinderv3 服务实体:

openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2

openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3

创建块设备存储服务的 API 入口点:

openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(project_id\)s

openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(project_id\)s

openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(project_id\)s

openstack endpoint create --region RegionOne \
volumev3 public http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne \
volumev3 internal http://controller:8776/v3/%\(project_id\)s

openstack endpoint create --region RegionOne \
volumev3 admin http://controller:8776/v3/%\(project_id\)s

安装软件包:

yum install openstack-cinder -y

编辑 /etc/cinder/cinder.conf,同时完成如下动作:

[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[DEFAULT]
# ...
auth_strategy = keystone

[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_PASS

[DEFAULT]
# ...
my_ip = 控制节点IP地址

[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp

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

su -s /bin/sh -c "cinder-manage db sync" cinder

配置控制节点以使用块设备存储,编辑文件 /etc/nova/nova.conf 并添加如下到其中:

[cinder]

os_region_name = RegionOne

重启计算API 服务:

systemctl restart openstack-nova-api.service

systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

cinder存储配置---存储节点

在块存储节点安装 LVM 包

yum install lvm2 -y

在块存储节点启动LVM的metadata服务并且设置该服务随系统启动:

systemctl enable lvm2-lvmetad.service

systemctl start lvm2-lvmetad.service

这边需要给虚拟机添加一块硬盘然后重新启动开始配置

在块存储节点创建LVM 物理卷 /dev/sdb

pvcreate /dev/sdb

在块存储节点创建 LVM 卷组 cinder-volumes

vgcreate cinder-volumes /dev/sd

在块存储节点编辑/etc/lvm/lvm.conf 文件并完成下面的操作:

devices {
#...
filter = [ "a/sda/", "a/sdb/", "r/.*/"]

去到计算节点修改/etc/lvm/lvm.conf 文件

devices {
...
filter = [ "a/sda/", "r/.*/"]

在块存储节点操作安装软件包:

yum install openstack-cinder targetcli python-keystone -y

在块存储节点编辑 /etc/cinder/cinder.conf,同时完成如下动作:

[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[DEFAULT]
# ...
auth_strategy = keystone

[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_PASS

[DEFAULT]
# ...
my_ip = 本机IP地址

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

[DEFAULT]
# ...
enabled_backends = lvm

[DEFAULT]
# ...
glance_api_servers = http://controller:9292

[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp

在块存储节点启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:

systemctl enable openstack-cinder-volume.service target.service 

systemctl start openstack-cinder-volume.service target.service

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

openstack volume service list

出现类似错误前往控制节点修改/etc/openstack-dashboard/local_settings文件

OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}

nfs存储配置

切换到控制节点配置nfs

yum install nfs-utils rpcbind -y

创建共享目录

mkdir /nfsdata/

修改配置文件

vim /etc/exports
/root/nfsdata *(rw,no_root_squash)
cat /etc/exports

启动服务

systemctl start nfs

systemctl enable nfs

systemctl status rpcbind nfs

切换到存储节点配置nfs

yum install nfs-utils -y

修改/etc/cinder/cinder.conf配置文件

vim /etc/cinder/cinder.conf

在开头[DEFAULT]enabled_backends新加,nfs

搜索[lvm]添加:

volume_backend_name = lvm

在这新加[nfs]

[nfs]
volume_backend_name = nfs
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares

编辑/etc/cinder/nfs_shares 文件

vim /etc/cinder/nfs_shares

注意:IP地址是控制节点的

控制节点IP地址:/root/nfsdata

设置文件所有者和文件关联组:

chown cinder.cinder /etc/cinder/nfs_shares
chown root.cinder /etc/cinder/nfs_shares

挂载共享

mount -t nfs 控制节点IP:/root/nfsdata /mnt

重启cinder-volume服务:

systemctl restart openstack-cinder-volume.service 

systemctl status openstack-cinder-volume.service

创建磁盘类型并关联

控制节点操作:

cinder type-create lvm

=

cinder type-create nfs

将磁盘类型与磁盘关联:

cinder type-key lvm set volume_backend_name=lvm

cinder type-key nfs set volume_backend_name=nfs

控制节点验证操作:

cinder service-list

查看扩展规格:

项目 --> 计算 -->  创建卷

版权声明:
作者:小李
链接:https://xianshengli.cc/openstack-%e5%9d%97%e5%ad%98%e5%82%a8%e6%9c%8d%e5%8a%a1/
来源:先生不吃香菜
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Openstack 块存储服务
块存储服务概览 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服……
文章目录
关闭
目 录