Our installation guide walks through configuring storage nodes using the LVM driver. LVM now defaults to thinly provisioned, which requires thing-provisioning-tools to be installed on the host. So by default, our instructions will result in failure when we attempt to perform thin provision operations. This adds mention of installing the required package for each platform's instructions to get the necessary tools installed. It also adds device-mapper-persistent-data to bindep for Red Hat based platforms to get those thin provisioning tools that were previously missing for these platforms. Tools appear to be installed by default on Suse platforms. Change-Id: I2a84ae99d71c3551814197917d114057430858b7 Closes-bug: #1738409
7.1 KiB
Install and configure a storage node
Prerequisites
Before you install and configure the Block Storage service on the storage node, you must prepare the storage device.
Note
Perform these steps on the storage node.
Install the supporting utility packages:
Install the LVM packages:
# yum install lvm2 device-mapper-persistent-data
Start the LVM metadata service and configure it to start when the system boots:
# systemctl enable lvm2-lvmetad.service # systemctl start lvm2-lvmetad.service
Note
Some distributions include LVM by default.
Create the LVM physical volume
/dev/sdb
:# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
Create the LVM volume group
cinder-volumes
:# vgcreate cinder-volumes /dev/sdb Volume group "cinder-volumes" successfully created
The Block Storage service creates logical volumes in this volume group.
Only instances can access Block Storage volumes. However, the underlying operating system manages the devices associated with the volumes. By default, the LVM volume scanning tool scans the
/dev
directory for block storage devices that contain volumes. If projects use LVM on their volumes, the scanning tool detects these volumes and attempts to cache them which can cause a variety of problems with both the underlying operating system and project volumes. You must reconfigure LVM to scan only the devices that contain thecinder-volumes
volume group. Edit the/etc/lvm/lvm.conf
file and complete the following actions:In the
devices
section, add a filter that accepts the/dev/sdb
device and rejects all other devices:devices { ... filter = [ "a/sdb/", "r/.*/"]
Each item in the filter array begins with
a
for accept orr
for reject and includes a regular expression for the device name. The array must end withr/.*/
to reject any remaining devices. You can use thevgs -vvvv
command to test filters.Warning
If your storage nodes use LVM on the operating system disk, you must also add the associated device to the filter. For example, if the
/dev/sda
device contains the operating system:filter = [ "a/sda/", "a/sdb/", "r/.*/"]
Similarly, if your compute nodes use LVM on the operating system disk, you must also modify the filter in the
/etc/lvm/lvm.conf
file on those nodes to include only the operating system disk. For example, if the/dev/sda
device contains the operating system:filter = [ "a/sda/", "r/.*/"]
Install and configure components
Install the packages:
# yum install openstack-cinder targetcli python-keystone
Edit the
/etc/cinder/cinder.conf
file and complete the following actions:In the
[database]
section, configure database access:[database] # ... connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
Replace
CINDER_DBPASS
with the password you chose for the Block Storage database.In the
[DEFAULT]
section, configureRabbitMQ
message queue access:[DEFAULT] # ... transport_url = rabbit://openstack:RABBIT_PASS@controller
Replace
RABBIT_PASS
with the password you chose for theopenstack
account inRabbitMQ
.In the
[DEFAULT]
and[keystone_authtoken]
sections, configure Identity service access:[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_id = default user_domain_id = default project_name = service username = cinder password = CINDER_PASS
Replace
CINDER_PASS
with the password you chose for thecinder
user in the Identity service.Note
Comment out or remove any other options in the
[keystone_authtoken]
section.In the
[DEFAULT]
section, configure themy_ip
option:[DEFAULT] # ... my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
Replace
MANAGEMENT_INTERFACE_IP_ADDRESS
with the IP address of the management network interface on your storage node, typically 10.0.0.41 for the first node in the example architecture.In the
[lvm]
section, configure the LVM back end with the LVM driver,cinder-volumes
volume group, iSCSI protocol, and appropriate iSCSI service. If the[lvm]
section does not exist, create it:[lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm
In the
[DEFAULT]
section, enable the LVM back end:[DEFAULT] # ... enabled_backends = lvm
Note
Back-end names are arbitrary. As an example, this guide uses the name of the driver as the name of the back end.
In the
[DEFAULT]
section, configure the location of the Image service API:[DEFAULT] # ... glance_api_servers = http://controller:9292
In the
[oslo_concurrency]
section, configure the lock path:[oslo_concurrency] # ... lock_path = /var/lib/cinder/tmp
Finalize installation
Start the Block Storage volume service including its dependencies and configure them to start when the system boots:
# systemctl enable openstack-cinder-volume.service target.service # systemctl start openstack-cinder-volume.service target.service