Cinder AKA OpenStack block storage service ads the persistent storage to an instance, it also provides an infrastructure for managing volumes and interacts with compute service to provide volume for instance. The amount of storage is provisioned and consumed is determined the block storage drivers, there are a variety of drivers that are available: NAS/SAN, NFS, iSCSI, Ceph, and more.
The block storage API and scheduler service typically runs on the controller nodes. Depending upon the drivers used, the volume service can run on controllers, compute nodes, or standalone storage nodes.
This guide helps you to install and configure cinder on the controller node. This service requires at least one additional storage node that provides volumes to instances.
Install and configure controller node:
Login into MySQL server as the root user.
# mysql -u root -p
Create the nova database.
CREATE DATABASE cinder;
Grant a proper permission to the nova database.
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'password';
Replace “password” with a suitable password. Exit from MySQL.
Load your admin credential from the environment script.
# source admin-openrc.sh
Create the cinder user for creating service credentials.
# openstack user create --password-prompt cinder User Password: Repeat User Password: +----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | f02a9693b5dd4f328e8f1a292f372782 | | name | cinder | | username | cinder | +----------+----------------------------------+
Add the admin role to the cinder user.
# openstack role add --project service --user cinder admin +-------+----------------------------------+ | Field | Value | +-------+----------------------------------+ | id | 33af4f957aa34cc79451c23bf014af6f | | name | admin | +-------+----------------------------------+
Create the cinder service entities.
# openstack service create --name cinder --description "OpenStack Block Storage" volume +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | cc16bd02429842d694ccd4a425513cfc | | name | cinder | | type | volume | +-------------+----------------------------------+
# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | 926e5dcb46654d228987d61978903b27 | | name | cinderv2 | | type | volumev2 | +-------------+----------------------------------+
Create the Block Storage service API endpoints.
# openstack endpoint create --publicurl http://controller:8776/v2/%\(tenant_id\)s --internalurl http://controller:8776/v2/%\(tenant_id\)s --adminurl http://controller:8776/v2/%\(tenant_id\)s --region RegionOne volume +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | adminurl | http://controller:8776/v2/%(tenant_id)s | | id | 4b38b10d227a48cfaf1d6356d23a6481 | | internalurl | http://controller:8776/v2/%(tenant_id)s | | publicurl | http://controller:8776/v2/%(tenant_id)s | | region | RegionOne | | service_id | cc16bd02429842d694ccd4a425513cfc | | service_name | cinder | | service_type | volume | +--------------+-----------------------------------------+
# openstack endpoint create --publicurl http://controller:8776/v2/%\(tenant_id\)s --internalurl http://controller:8776/v2/%\(tenant_id\)s --adminurl http://controller:8776/v2/%\(tenant_id\)s --region RegionOne volumev2 +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | adminurl | http://controller:8776/v2/%(tenant_id)s | | id | dcf45538165b40f2a6736bcf5276b319 | | internalurl | http://controller:8776/v2/%(tenant_id)s | | publicurl | http://controller:8776/v2/%(tenant_id)s | | region | RegionOne | | service_id | 926e5dcb46654d228987d61978903b27 | | service_name | cinderv2 | | service_type | volumev2 | +--------------+-----------------------------------------+
Install and configure Cinder (Block Storage) controller components:
Install the following packages on the controller node.
# apt-get install cinder-api cinder-scheduler python-cinderclient
Edit the /etc/cinder/cinder.conf file.
# nano /etc/cinder/cinder.conf
Modify the below settings and make sure to place an entries in the proper sections. Some time you may need to add sections if it does not exists and also you require to add some entries which are missing in the file, not all.
[database] connection = mysql://cinder:password@controller/cinder ## Replace "password" with the password you chose for cinder database [DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone verbose = True my_ip = 192.168.12.21 ## Management IP of Controller Node [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = password ## Replace "password" with the password you chose for the openstack account in RabbitMQ. [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = cinder password = password ## Replace "password" with the password you chose for cinder user in the identity service ## Comment out or remove any other options in the [keystone_authtoken] section [oslo_concurrency] lock_path = /var/lock/cinder ## Comment out the lock_path in (DEFAULT) section.
Populate the cinder database.
# su -s /bin/sh -c "cinder-manage db sync" cinder
Restart the services.
# service cinder-scheduler restart # service cinder-api restart
Remove the SQLite database file.
# rm -f /var/lib/cinder/cinder.sqlite
List the services, you can ignore the warnings.
# cinder-manage service list Binary Host Zone Status State Updated At cinder-scheduler controller nova enabled :-) 2015-07-06 18:35:55
That’s All!!. Next is to configure a Storage Node.