| ... | ... |
@@ -63,7 +63,7 @@ cleanup_nova |
| 63 | 63 |
cleanup_quantum |
| 64 | 64 |
cleanup_swift |
| 65 | 65 |
|
| 66 |
-# cinder doesn't clean up the volume group as it might be used elsewhere... |
|
| 66 |
+# cinder doesn't always clean up the volume group as it might be used elsewhere... |
|
| 67 | 67 |
# clean it up if it is a loop device |
| 68 | 68 |
VG_DEV=$(sudo losetup -j $DATA_DIR/${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print $1}')
|
| 69 | 69 |
if [[ -n "$VG_DEV" ]]; then |
| ... | ... |
@@ -67,27 +67,43 @@ CINDER_SECURE_DELETE=`trueorfalse True $CINDER_SECURE_DELETE` |
| 67 | 67 |
CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
|
| 68 | 68 |
|
| 69 | 69 |
# Name of the lvm volume groups to use/create for iscsi volumes |
| 70 |
-# VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True |
|
| 71 | 70 |
VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
|
| 71 |
+VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
|
|
| 72 |
+ |
|
| 73 |
+# VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True |
|
| 72 | 74 |
VOLUME_GROUP2=${VOLUME_GROUP2:-stack-volumes2}
|
| 75 |
+VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
|
|
| 76 |
+ |
|
| 73 | 77 |
VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
|
| 74 | 78 |
|
| 75 | 79 |
|
| 76 | 80 |
# Functions |
| 77 | 81 |
# --------- |
| 78 |
- |
|
| 79 |
-# _clean_volume_group removes all cinder volumes from the specified volume group |
|
| 80 |
-# _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX |
|
| 81 |
-function _clean_volume_group() {
|
|
| 82 |
+# _cleanup_lvm removes all cinder volumes and the backing file of the |
|
| 83 |
+# volume group used by cinder |
|
| 84 |
+# _cleanup_lvm $VOLUME_GROUP $VOLUME_NAME_PREFIX |
|
| 85 |
+function _cleanup_lvm() {
|
|
| 82 | 86 |
local vg=$1 |
| 83 |
- local vg_prefix=$2 |
|
| 87 |
+ local lv_prefix=$2 |
|
| 88 |
+ |
|
| 84 | 89 |
# Clean out existing volumes |
| 85 | 90 |
for lv in `sudo lvs --noheadings -o lv_name $vg`; do |
| 86 |
- # vg_prefix prefixes the LVs we want |
|
| 87 |
- if [[ "${lv#$vg_prefix}" != "$lv" ]]; then
|
|
| 91 |
+ # lv_prefix prefixes the LVs we want |
|
| 92 |
+ if [[ "${lv#$lv_prefix}" != "$lv" ]]; then
|
|
| 88 | 93 |
sudo lvremove -f $vg/$lv |
| 89 | 94 |
fi |
| 90 | 95 |
done |
| 96 |
+ |
|
| 97 |
+ # if there is no logical volume left, it's safe to attempt a cleanup |
|
| 98 |
+ # of the backing file |
|
| 99 |
+ if [ -z "`sudo lvs --noheadings -o lv_name $vg`" ]; then |
|
| 100 |
+ # if the backing physical device is a loop device, it was probably setup by devstack |
|
| 101 |
+ VG_DEV=$(sudo losetup -j $DATA_DIR/${vg}-backing-file | awk -F':' '/backing-file/ { print $1}')
|
|
| 102 |
+ if [[ -n "$VG_DEV" ]]; then |
|
| 103 |
+ sudo losetup -d $VG_DEV |
|
| 104 |
+ rm -f $DATA_DIR/${vg}-backing-file
|
|
| 105 |
+ fi |
|
| 106 |
+ fi |
|
| 91 | 107 |
} |
| 92 | 108 |
|
| 93 | 109 |
# cleanup_cinder() - Remove residual data files, anything left over from previous |
| ... | ... |
@@ -127,9 +143,10 @@ function cleanup_cinder() {
|
| 127 | 127 |
fi |
| 128 | 128 |
|
| 129 | 129 |
# Campsite rule: leave behind a volume group at least as clean as we found it |
| 130 |
- _clean_volume_group $VOLUME_GROUP $VOLUME_NAME_PREFIX |
|
| 130 |
+ _cleanup_lvm $VOLUME_GROUP $VOLUME_NAME_PREFIX |
|
| 131 |
+ |
|
| 131 | 132 |
if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then |
| 132 |
- _clean_volume_group $VOLUME_GROUP2 $VOLUME_NAME_PREFIX |
|
| 133 |
+ _cleanup_lvm $VOLUME_GROUP2 $VOLUME_NAME_PREFIX |
|
| 133 | 134 |
fi |
| 134 | 135 |
} |
| 135 | 136 |
|
| ... | ... |
@@ -318,8 +335,6 @@ create_cinder_volume_group() {
|
| 318 | 318 |
# ``/opt/stack/data``. |
| 319 | 319 |
|
| 320 | 320 |
if ! sudo vgs $VOLUME_GROUP; then |
| 321 |
- VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
|
|
| 322 |
- |
|
| 323 | 321 |
# Only create if the file doesn't already exists |
| 324 | 322 |
[[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE |
| 325 | 323 |
|
| ... | ... |
@@ -334,8 +349,6 @@ create_cinder_volume_group() {
|
| 334 | 334 |
#set up the second volume if CINDER_MULTI_LVM_BACKEND is enabled |
| 335 | 335 |
|
| 336 | 336 |
if ! sudo vgs $VOLUME_GROUP2; then |
| 337 |
- VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
|
|
| 338 |
- |
|
| 339 | 337 |
# Only create if the file doesn't already exists |
| 340 | 338 |
[[ -f $VOLUME_BACKING_FILE2 ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE2 |
| 341 | 339 |
|