1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

B #1222: Avoid using rbd map in tm_mad Ceph

This commit is contained in:
Vlastimil Holer 2018-01-23 15:43:43 +01:00 committed by Ruben S. Montero
parent a4460bea2b
commit 113200229a
3 changed files with 32 additions and 8 deletions

View File

@ -38,7 +38,7 @@ MD5SUM=${MD5SUM:-md5sum}
MKFS=${MKFS:-mkfs}
MKISOFS=${MKISOFS:-genisoimage}
MKSWAP=${MKSWAP:-mkswap}
QEMU_IMG=${QMEMU_IMG:-qemu-img}
QEMU_IMG=${QEMU_IMG:-qemu-img}
RADOS=${RADOS:-rados}
RBD=${RBD:-rbd}
READLINK=${READLINK:-readlink}

View File

@ -83,16 +83,21 @@ CEPH_CONF="${XPATH_ELEMENTS[j++]}"
POOL_NAME="${XPATH_ELEMENTS[j++]:-$POOL_NAME}"
RBD_FORMAT="${XPATH_ELEMENTS[j++]:-$RBD_FORMAT}"
QEMU_OPTS=''
if [ -n "$CEPH_USER" ]; then
RBD="$RBD --id ${CEPH_USER}"
QEMU_OPTS="${QEMU_OPTS}:id=${CEPH_USER}"
fi
if [ -n "$CEPH_KEY" ]; then
RBD="$RBD --keyfile ${CEPH_KEY}"
QEMU_OPTS="${QEMU_OPTS}:keyfile=${CEPH_KEY}"
fi
if [ -n "$CEPH_CONF" ]; then
RBD="$RBD --conf ${CEPH_CONF}"
QEMU_OPTS="${QEMU_OPTS}:conf=${CEPH_CONF}"
fi
if [ "$RBD_FORMAT" = "2" ]; then
@ -101,14 +106,27 @@ fi
RBD_SOURCE="${POOL_NAME}/one-sys-${VMID}-${DISK_ID}"
ssh_make_path $DST_HOST $DST_DIR
# if user requested a swap, we need to create a local
# swap formatted image and upload into existing Ceph image
MKFS_CMD=`mkfs_command $DST_PATH $FSTYPE $SIZE`
MKIMAGE_CMD=$(cat <<EOF
set -e -o pipefail
export PATH=/usr/sbin:/sbin:\$PATH
$RBD create $FORMAT_OPT $RBD_SOURCE --size ${SIZE} || exit \$?
$RBD create $FORMAT_OPT $RBD_SOURCE --size ${SIZE}
if [ "$FSTYPE" = "swap" ]; then
$SUDO $RBD map $RBD_SOURCE || exit \$?
$SUDO $MKSWAP -L swap /dev/rbd/$RBD_SOURCE
$SUDO $RBD unmap /dev/rbd/$RBD_SOURCE
${MKFS_CMD}
${QEMU_IMG} convert -n \
-f raw "${DST_PATH}" \
-O rbd "rbd:${RBD_SOURCE}${QEMU_OPTS}"
${RM} -f "${DST_PATH}"
fi
EOF
)
@ -116,6 +134,7 @@ EOF
DELIMAGE_CMD=$(cat <<EOF
export PATH=/usr/sbin:/sbin:\$PATH
$RBD rm $RBD_SOURCE
${RM} -f "${DST_PATH}"
EOF
)

View File

@ -89,16 +89,21 @@ ORIGINAL_SIZE="${XPATH_ELEMENTS[j++]}"
# Copy Image back to the datastore
#-------------------------------------------------------------------------------
QEMU_OPTS=''
if [ -n "$CEPH_USER" ]; then
RBD="$RBD --id ${CEPH_USER}"
QEMU_OPTS="${QEMU_OPTS}:id=${CEPH_USER}"
fi
if [ -n "$CEPH_KEY" ]; then
RBD="$RBD --keyfile ${CEPH_KEY}"
QEMU_OPTS="${QEMU_OPTS}:keyfile=${CEPH_KEY}"
fi
if [ -n "$CEPH_CONF" ]; then
RBD="$RBD --conf ${CEPH_CONF}"
QEMU_OPTS="${QEMU_OPTS}:conf=${CEPH_CONF}"
fi
if [ "${TYPE}" = 'FILE' ]; then
@ -111,9 +116,9 @@ if [ "${TYPE}" = 'FILE' ]; then
$RBD resize $RBD_SRC --size $SIZE
fi
$SUDO $RBD map $RBD_SRC
trap "$SUDO $RBD unmap /dev/rbd/$RBD_SRC" EXIT TERM INT HUP
$DD if=$SRC_PATH of=/dev/rbd/$RBD_SRC bs=64k
${QEMU_IMG} convert -n \
-f raw "${SRC_PATH}" \
-O rbd "rbd:${RBD_SRC}${QEMU_OPTS}"
EOF
)
else