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