OpenStack Block Storage
While OpenStack Block Storage contains many different storage drivers, the
most basic configuration uses LVM and iSCSI. This
guide illustrates how to use one disk
(/dev/sdb) in an LVM Volume Group
called cinder-volumes. When a user requests
a block storage volume, a Logical Volume is created from this
Volume Group and then mounted on the user's instance by way of
iSCSI.
Install the OpenStack Block Storage packages:
# apt-get install cinder-api cinder-scheduler cinder-volume iscsitarget \
open-iscsi iscsitarget-dkms python-cinderclient \
linux-headers-`uname -r`
# yum install openstack-cinder openstack-cinder-doc \
iscsi-initiator-utils scsi-target-utils
# zypper install openstack-cinder-api openstack-cinder-scheduler \
openstack-cinder-volume open-iscsi iscsitarget
Configure & start the iSCSI services: # sed -i 's/false/true/g' /etc/default/iscsitarget
# service iscsitarget start
# service open-iscsi start
# service tgtd start
# service iscsi start
# chkconfig tgtd on
# chkconfig iscsi on
# systemctl start iscsitarget.service iscsid.service
# systemctl enable iscsitarget.service iscsid.service
Configure OpenStack Block Storage:
Edit /etc/cinder/cinder.conf:
[DEFAULT]
sql_connection = mysql://cinder:password@localhost/cinder
rabbit_password = password
[keystone_authtoken]
admin_tenant_name = service
admin_user = cinder
admin_password = password
service_protocol = http
service_host = localhost
service_port = 5000
auth_host = localhost
auth_port = 35357
auth_protocol = http[DEFAULT]
rpc_backend = cinder.openstack.common.rpc.impl_qpid
sql_connection = mysql://cinder:password@localhost/cinder
qpid_user = guest
qpid_password = quest
[keystone_authtoken]
admin_tenant_name = service
admin_user = cinder
admin_password = password
service_protocol = http
service_host = localhost
service_port = 5000
auth_host = localhost
auth_port = 35357
auth_protocol = http
[DEFAULT]
sql_connection = mysql://cinder:password@localhost/cinder
rabbit_password = password
[keystone_authtoken]
admin_tenant_name = service
admin_user = cinder
admin_password = password
service_protocol = http
service_host = localhost
service_port = 5000
auth_host = localhost
auth_port = 35357
auth_protocol = http
Edit /etc/cinder/api-paste.ini in the
filter_authtoken section so it does not contain
any of the variables defined in the
keystone_authtoken section of
cinder.conf:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
# This section should not contain any other config options
Create the LVM Physical Volume and
Logical Volume:
# pvcreate /dev/sdb
# vgcreate cinder-volumes /dev/sdb
Create the OpenStack Block Storage tables in the database:
# cinder-manage db sync
Restart the services: # service cinder-api restart
# service cinder-scheduler restart
# service cinder-volume restart
# service openstack-cinder-api restart
# service openstack-cinder-scheduler restart
# service openstack-cinder-volume restart
# chkconfig openstack-cinder-api on
# chkconfig openstack-cinder-scheduler on
# chkconfig openstack-cinder-volume on
# systemctl restart openstack-cinder-api
# systemctl restart openstack-cinder-scheduler.service
# systemctl restart openstack-cinder-volume.service
# systemctl enable openstack-cinder-api.service
# systemctl enable openstack-cinder-scheduler.service
# systemctl enable openstack-cinder-volume.service