97061c9a1f
This patch adds NVMe LVM support to the existing iSCSI LVM configuration support. We deprecate the CINDER_ISCSI_HELPER configuration option since we are no longer limited to iSCSI, and replace it with the CINDER_TARGET_HELPER option. The patch also adds another 3 target configuration options: - CINDER_TARGET_PROTOCOL - CINDER_TARGET_PREFIX - CINDER_TARGET_PORT These options will have different defaults based on the selected target helper. For tgtadm and lioadm they'll be iSCSI, iqn.2010-10.org.openstack:, and 3260 respectively, and for nvmet they'll be nvmet_rdma, nvme-subsystem-1, and 4420. Besides nvmet_rdma the CINDER_TARGET_PROTOCOL option can also be set to nvmet_tcp, and nvmet_fc. For the RDMA transport protocol devstack will be using Soft-RoCE and creating a device on top of the network interface. LVM NVMe-TCP support is added in the dependency mentioned in the footer and LVM NVMe-FC will be added in later patches (need os-brick and cinder patches) but the code here should still be valid. Change-Id: I6578cdc27489b34916cdeb72ba3fdf06ea9d4ad8
75 lines
2.1 KiB
Bash
75 lines
2.1 KiB
Bash
#!/bin/bash
|
|
#
|
|
# lib/cinder_backends/lvm
|
|
# Configure the LVM backend
|
|
|
|
# Enable with:
|
|
#
|
|
# CINDER_ENABLED_BACKENDS+=,lvm:lvmname
|
|
|
|
# Dependencies:
|
|
#
|
|
# - ``functions`` file
|
|
# - ``cinder`` configurations
|
|
|
|
# CINDER_CONF
|
|
# DATA_DIR
|
|
# VOLUME_GROUP_NAME
|
|
|
|
# clean_cinder_backend_lvm - called from clean_cinder()
|
|
# configure_cinder_backend_lvm - called from configure_cinder()
|
|
# init_cinder_backend_lvm - called from init_cinder()
|
|
|
|
|
|
# Save trace setting
|
|
_XTRACE_CINDER_LVM=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
|
|
# TODO: resurrect backing device...need to know how to set values
|
|
#VOLUME_BACKING_DEVICE=${VOLUME_BACKING_DEVICE:-}
|
|
|
|
# Entry Points
|
|
# ------------
|
|
|
|
# cleanup_cinder_backend_lvm - Delete volume group and remove backing file
|
|
# cleanup_cinder_backend_lvm $be_name
|
|
function cleanup_cinder_backend_lvm {
|
|
local be_name=$1
|
|
|
|
# Campsite rule: leave behind a volume group at least as clean as we found it
|
|
clean_lvm_volume_group $VOLUME_GROUP_NAME-$be_name
|
|
clean_lvm_filter
|
|
}
|
|
|
|
# configure_cinder_backend_lvm - Set config files, create data dirs, etc
|
|
# configure_cinder_backend_lvm $be_name
|
|
function configure_cinder_backend_lvm {
|
|
local be_name=$1
|
|
|
|
iniset $CINDER_CONF $be_name volume_backend_name $be_name
|
|
iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.lvm.LVMVolumeDriver"
|
|
iniset $CINDER_CONF $be_name volume_group $VOLUME_GROUP_NAME-$be_name
|
|
iniset $CINDER_CONF $be_name target_helper "$CINDER_TARGET_HELPER"
|
|
iniset $CINDER_CONF $be_name target_protocol "$CINDER_TARGET_PROTOCOL"
|
|
iniset $CINDER_CONF $be_name target_port "$CINDER_TARGET_PORT"
|
|
iniset $CINDER_CONF $be_name target_prefix "$CINDER_TARGET_PREFIX"
|
|
iniset $CINDER_CONF $be_name lvm_type "$CINDER_LVM_TYPE"
|
|
iniset $CINDER_CONF $be_name volume_clear "$CINDER_VOLUME_CLEAR"
|
|
}
|
|
|
|
# init_cinder_backend_lvm - Initialize volume group
|
|
# init_cinder_backend_lvm $be_name
|
|
function init_cinder_backend_lvm {
|
|
local be_name=$1
|
|
|
|
# Start with a clean volume group
|
|
init_lvm_volume_group $VOLUME_GROUP_NAME-$be_name $VOLUME_BACKING_FILE_SIZE
|
|
}
|
|
|
|
# Restore xtrace
|
|
$_XTRACE_CINDER_LVM
|
|
|
|
# mode: shell-script
|
|
# End:
|