Browse code

Merge "xenapi: separate disk for cinder volumes"

Jenkins authored on 2013/06/22 10:39:56
Showing 3 changed files
... ...
@@ -69,10 +69,12 @@ CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
69 69
 # Name of the lvm volume groups to use/create for iscsi volumes
70 70
 VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
71 71
 VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
72
+VOLUME_BACKING_DEVICE=${VOLUME_BACKING_DEVICE:-}
72 73
 
73 74
 # VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True
74 75
 VOLUME_GROUP2=${VOLUME_GROUP2:-stack-volumes2}
75 76
 VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
77
+VOLUME_BACKING_DEVICE2=${VOLUME_BACKING_DEVICE2:-}
76 78
 
77 79
 VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
78 80
 
... ...
@@ -335,28 +337,35 @@ create_cinder_volume_group() {
335 335
     # ``/opt/stack/data``.
336 336
 
337 337
     if ! sudo vgs $VOLUME_GROUP; then
338
-        # Only create if the file doesn't already exists
339
-        [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
340
-
341
-        DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
338
+        if [ -z "$VOLUME_BACKING_DEVICE" ]; then
339
+            # Only create if the file doesn't already exists
340
+            [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
341
+            DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
342 342
 
343
-        # Only create if the loopback device doesn't contain $VOLUME_GROUP
344
-        if ! sudo vgs $VOLUME_GROUP; then
345
-            sudo vgcreate $VOLUME_GROUP $DEV
343
+            # Only create if the loopback device doesn't contain $VOLUME_GROUP
344
+            if ! sudo vgs $VOLUME_GROUP; then
345
+                sudo vgcreate $VOLUME_GROUP $DEV
346
+            fi
347
+        else
348
+            sudo vgcreate $VOLUME_GROUP $VOLUME_BACKING_DEVICE
346 349
         fi
347 350
     fi
348 351
     if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
349 352
         #set up the second volume if CINDER_MULTI_LVM_BACKEND is enabled
350 353
 
351 354
         if ! sudo vgs $VOLUME_GROUP2; then
352
-            # Only create if the file doesn't already exists
353
-            [[ -f $VOLUME_BACKING_FILE2 ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE2
354
-
355
-            DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE2`
356
-
357
-            # Only create if the loopback device doesn't contain $VOLUME_GROUP
358
-            if ! sudo vgs $VOLUME_GROUP2; then
359
-                sudo vgcreate $VOLUME_GROUP2 $DEV
355
+            if [ -z "$VOLUME_BACKING_DEVICE2" ]; then
356
+                # Only create if the file doesn't already exists
357
+                [[ -f $VOLUME_BACKING_FILE2 ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE2
358
+
359
+                DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE2`
360
+
361
+                # Only create if the loopback device doesn't contain $VOLUME_GROUP
362
+                if ! sudo vgs $VOLUME_GROUP2; then
363
+                    sudo vgcreate $VOLUME_GROUP2 $DEV
364
+                fi
365
+            else
366
+                sudo vgcreate $VOLUME_GROUP2 $VOLUME_BACKING_DEVICE2
360 367
             fi
361 368
         fi
362 369
     fi
... ...
@@ -259,6 +259,19 @@ fi
259 259
 FLAT_NETWORK_BRIDGE=$(bridge_for "$VM_BRIDGE_OR_NET_NAME")
260 260
 append_kernel_cmdline "$GUEST_NAME" "flat_network_bridge=${FLAT_NETWORK_BRIDGE}"
261 261
 
262
+# Add a separate xvdb, if it was requested
263
+if [[ "0" != "$XEN_XVDB_SIZE_GB" ]]; then
264
+    vm=$(xe vm-list name-label="$GUEST_NAME" --minimal)
265
+
266
+    # Add a new disk
267
+    localsr=$(get_local_sr)
268
+    extra_vdi=$(xe vdi-create \
269
+        name-label=xvdb-added-by-devstack \
270
+        virtual-size="${XEN_XVDB_SIZE_GB}GiB" \
271
+        sr-uuid=$localsr type=user)
272
+    xe vbd-create vm-uuid=$vm vdi-uuid=$extra_vdi device=1
273
+fi
274
+
262 275
 # create a snapshot before the first boot
263 276
 # to allow a quick re-run with the same settings
264 277
 xe vm-snapshot vm="$GUEST_NAME" new-name-label="$SNAME_FIRST_BOOT"
... ...
@@ -76,4 +76,14 @@ UBUNTU_INST_NAMESERVERS=""
76 76
 UBUNTU_INST_NETMASK=""
77 77
 UBUNTU_INST_GATEWAY=""
78 78
 
79
+# Create a separate xvdb. Tis could be used as a backing device for cinder
80
+# volumes. Specify
81
+#   XEN_XVDB_SIZE_GB=10
82
+#   VOLUME_BACKING_DEVICE=/dev/xvdb
83
+# in your localrc to avoid kernel lockups:
84
+#   https://bugs.launchpad.net/cinder/+bug/1023755
85
+#
86
+# Set the size to 0 to avoid creation of additional disk.
87
+XEN_XVDB_SIZE_GB=0
88
+
79 89
 source ../../stackrc