安装与配置
使用root用户登陆MySQL数据库
# mysql
新建cinder数据库
MariaDB [(none)]> CREATE DATABASE cinder;
对cinder数据库授予权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
用之前对应生成的十六进制数代替“CINDER_DBPASS”字段
退出数据库,然后运行admin用户的OpenRC脚本文件
$ . admin-openrc
创建cinder用户
$ openstack user create --domain default --password-prompt cinder
输出结果
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 02bf5086d87c481e96ec64228f017914 |
| name | cinder |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
授予cinder用户在service项目中使用admin角色
$ openstack role add --project service --user cinder admin
创建块存储服务的v2版本和v3版本实体
$ openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | ed1e5369eafe4ef2a74789ded8e18dbe |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
$ openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 10bab41d8e5c4558ab6211ac39f5e420 |
| name | cinderv3 |
| type | volumev3 |
+-------------+----------------------------------+
创建块存储服务的API端点
$ openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | ea9fae17afbe4a389fe79dee7624ed78 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ed1e5369eafe4ef2a74789ded8e18dbe |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 775903c5070841d0bffa736ef7c7b6af |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ed1e5369eafe4ef2a74789ded8e18dbe |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | d8d4f15927ac4b6ea804a04bf814b8c2 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ed1e5369eafe4ef2a74789ded8e18dbe |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | bd7e02a0792e408aad67e5df481681e4 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10bab41d8e5c4558ab6211ac39f5e420 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 6ac3e870255e478092c72f66fee660fe |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10bab41d8e5c4558ab6211ac39f5e420 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 7bb7920582ad4981a894e5d3b6434b5f |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 10bab41d8e5c4558ab6211ac39f5e420 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
安装支持的软件包
# apt-get install lvm2 thin-provisioning-tools
按前置准备时硬盘的分区,使用sda11创建LVM物理卷
# pvcreate /dev/sda11
输出结果
Physical volume "/dev/sda11" successfully created.
创建 LVM 卷组
# vgcreate cinder-volumes /dev/sda11
输出结果
Volume group "cinder-volumes" successfully created
默认状态下,LVM卷扫描工具会扫描整个/dev目录,为避免冲突,需要重新编辑LVM配置文件使其只扫描包含“cinder-volumes”卷组的设备
# vim /etc/lvm/lvm.conf
在打开的文件中修改如下键值
devices {
...
filter = [ "a/sda11/", "r/.*/"]
省略号(…)表示保留原有默认配置选项
安装cinder软件包
# apt-get install cinder-api cinder-scheduler cinder-volume
输入以下指令编辑cinder配置文件
# vim /etc/cinder/cinder.conf
在打开的文件中修改如下键值
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
# ...
enabled_backends = lvm
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 192.168.31.118
glance_api_servers = http://controller:9292
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = CINDER_PASS
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
[lvm]
# ...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = tgtadm
用之前对应生成的十六进制数代替“CINDER_DBPASS”、“CINDER_PASS”和“RABBIT_PASS”字段
省略号(…)表示保留原有默认配置选项
[keystone_authtoken]部分要注释或删除其他选项
完成后同步cinder数据库
# su -s /bin/sh -c "cinder-manage db sync" cinder
输入以下指令编辑nova配置文件
# vim /etc/nova/nova.conf
在打开的文件中修改如下键值
[cinder]
# ...
os_region_name = RegionOne
重启计算API和块存储服务
# service nova-api restart
# service cinder-scheduler restart
# service apache2 restart
# service tgt restart
# service cinder-volume restart
验证操作
列出服务组件以验证是否每个进程都成功启动
$ openstack volume service list
输出结果
+------------------+------------------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+------------------------+------+---------+-------+----------------------------+
| cinder-scheduler | guytion-All-Series | nova | enabled | up | 2019-09-18T03:37:16.000000 |
| cinder-volume | guytion-All-Series@lvm | nova | enabled | up | 2019-09-18T03:37:17.000000 |
+------------------+------------------------+------+---------+-------+----------------------------+
登陆http://controller/horizon,发现增加了Volume服务