From 32498c016b7ee73cb1b3f908e554cb6459cac489 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 16 Sep 2013 16:19:56 +0200 Subject: [PATCH 1/5] feature #2321: LVM TM drivers compatible with the DS fs drivers --- src/tm_mad/shared_lvm/clone | 83 +++++++++++++++++++++++++++++++ src/tm_mad/shared_lvm/cpds | 1 + src/tm_mad/shared_lvm/delete | 55 ++++++++++++++++++++ src/tm_mad/shared_lvm/ln | 83 +++++++++++++++++++++++++++++++ src/tm_mad/shared_lvm/mv | 19 +++++++ src/tm_mad/shared_lvm/mvds | 73 +++++++++++++++++++++++++++ src/tm_mad/shared_lvm/postmigrate | 29 +++++++++++ src/tm_mad/shared_lvm/premigrate | 29 +++++++++++ 8 files changed, 372 insertions(+) create mode 100755 src/tm_mad/shared_lvm/clone create mode 120000 src/tm_mad/shared_lvm/cpds create mode 100755 src/tm_mad/shared_lvm/delete create mode 100755 src/tm_mad/shared_lvm/ln create mode 100755 src/tm_mad/shared_lvm/mv create mode 100755 src/tm_mad/shared_lvm/mvds create mode 100755 src/tm_mad/shared_lvm/postmigrate create mode 100755 src/tm_mad/shared_lvm/premigrate diff --git a/src/tm_mad/shared_lvm/clone b/src/tm_mad/shared_lvm/clone new file mode 100755 index 0000000000..07dd1062ac --- /dev/null +++ b/src/tm_mad/shared_lvm/clone @@ -0,0 +1,83 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2013, OpenNebula Project (OpenNebula.org), C12G Labs # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # + +# clone fe:SOURCE host:remote_system_ds/disk.i size +# - fe is the front-end hostname +# - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk +# - host is the target host to deploy the VM +# - remote_system_ds is the path for the system datastore in the host + +SRC=$1 +DST=$2 +VM_ID=$3 +DS_ID=$4 + +if [ -z "${ONE_LOCATION}" ]; then + TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh +else + TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh +fi + +DRIVER_PATH=$(dirname $0) + +source $TMCOMMON +source ${DRIVER_PATH}/../../datastore/libfs.sh + +#------------------------------------------------------------------------------- +# Set dst path and dir +#------------------------------------------------------------------------------- + +SRC_HOST=`arg_host $SRC` +SRC_PATH=`arg_path $SRC` + +DST_PATH=`arg_path $DST` +DST_HOST=`arg_host $DST` +DST_DIR=`dirname $DST_PATH` + +DS_SYS_ID=$(echo $DST_DIR | $AWK -F '/' '{print $(NF-1)}') + +SIZE=`file_size $SRC_PATH` + +if [ "$SIZE" = "0" ]; then + log_error "Cannot determine size for $SRC_PATH" + exit -1 +fi + +DISK_ID=$(echo $DST_PATH | $AWK -F. '{print $NF}') + +LV_NAME="lv-one-$VM_ID-$DISK_ID" +VG_NAME="vg-one-$DS_SYS_ID" +DEV="/dev/${VG_NAME}/${LV_NAME}" + +#------------------------------------------------------------------------------- +# Create the snapshot and link it +#------------------------------------------------------------------------------- + +CLONE_CMD=$(cat < +# - host is the target host to deploy the VM +# - remote_system_ds is the path for the system datastore in the host + +DST=$1 +VM_ID=$2 +DS_ID=$3 + +if [ -z "${ONE_LOCATION}" ]; then + TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh +else + TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh +fi + +source $TMCOMMON + +#------------------------------------------------------------------------------- +# Return if deleting a disk, we will delete them when removing the +# remote_system_ds directory for the VM (remotely) +#------------------------------------------------------------------------------- +DST_PATH=`arg_path $DST` +DST_HOST=`arg_host $DST` + +# Delete the device if it's a clone (LVM snapshot) +DELETE_CMD=$(cat < Date: Mon, 16 Sep 2013 16:22:36 +0200 Subject: [PATCH 2/5] feature #2321: Update install.sh --- install.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/install.sh b/install.sh index 4eb1699ef2..935c724f0c 100755 --- a/install.sh +++ b/install.sh @@ -282,6 +282,7 @@ VAR_DIRS="$VAR_LOCATION/remotes \ $VAR_LOCATION/remotes/tm/ \ $VAR_LOCATION/remotes/tm/dummy \ $VAR_LOCATION/remotes/tm/shared \ + $VAR_LOCATION/remotes/tm/shared_lvm \ $VAR_LOCATION/remotes/tm/qcow2 \ $VAR_LOCATION/remotes/tm/ssh \ $VAR_LOCATION/remotes/tm/vmfs \ @@ -464,6 +465,7 @@ INSTALL_FILES=( VMM_EXEC_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/vmm/vmware TM_FILES:$VAR_LOCATION/remotes/tm TM_SHARED_FILES:$VAR_LOCATION/remotes/tm/shared + TM_SHARED_LVM_FILES:$VAR_LOCATION/remotes/tm/shared_lvm TM_QCOW2_FILES:$VAR_LOCATION/remotes/tm/qcow2 TM_SSH_FILES:$VAR_LOCATION/remotes/tm/ssh TM_VMFS_FILES:$VAR_LOCATION/remotes/tm/vmfs @@ -945,6 +947,7 @@ NETWORK_VMWARE_FILES="src/vnm_mad/remotes/vmware/clean \ #------------------------------------------------------------------------------- # Transfer Manager commands, to be installed under $LIB_LOCATION/tm_commands # - SHARED TM, $VAR_LOCATION/tm/shared +# - SHARED_LVM TM, $VAR_LOCATION/tm/shared_lvm # - QCOW2 TM, $VAR_LOCATION/tm/qcow2 # - SSH TM, $VAR_LOCATION/tm/ssh # - DUMMY TM, $VAR_LOCATION/tm/dummy @@ -968,6 +971,15 @@ TM_SHARED_FILES="src/tm_mad/shared/clone \ src/tm_mad/shared/mvds \ src/tm_mad/shared/cpds" +TM_SHARED_LVM_FILES="src/tm_mad/shared_lvm/clone \ + src/tm_mad/shared_lvm/ln \ + src/tm_mad/shared_lvm/mv \ + src/tm_mad/shared_lvm/mvds \ + src/tm_mad/shared_lvm/cpds \ + src/tm_mad/shared_lvm/premigrate \ + src/tm_mad/shared_lvm/postmigrate \ + src/tm_mad/shared_lvm/delete" + TM_QCOW2_FILES="src/tm_mad/qcow2/clone \ src/tm_mad/qcow2/delete \ src/tm_mad/qcow2/ln \ From 055d1422b51211f114ca08298449695c0b711e4f Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 16 Sep 2013 16:27:18 +0200 Subject: [PATCH 3/5] feature #2321: ln, mv, mvds, postmigrate and premigrate are now links --- src/tm_mad/shared_lvm/ln | 84 +------------------------------ src/tm_mad/shared_lvm/mv | 20 +------- src/tm_mad/shared_lvm/mvds | 2 +- src/tm_mad/shared_lvm/postmigrate | 30 +---------- src/tm_mad/shared_lvm/premigrate | 30 +---------- 5 files changed, 5 insertions(+), 161 deletions(-) mode change 100755 => 120000 src/tm_mad/shared_lvm/ln mode change 100755 => 120000 src/tm_mad/shared_lvm/mv mode change 100755 => 120000 src/tm_mad/shared_lvm/postmigrate mode change 100755 => 120000 src/tm_mad/shared_lvm/premigrate diff --git a/src/tm_mad/shared_lvm/ln b/src/tm_mad/shared_lvm/ln deleted file mode 100755 index d9c0d8e33b..0000000000 --- a/src/tm_mad/shared_lvm/ln +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -# -------------------------------------------------------------------------- # -# Copyright 2002-2013, OpenNebula Project (OpenNebula.org), C12G Labs # -# # -# Licensed under the Apache License, Version 2.0 (the "License"); you may # -# not use this file except in compliance with the License. You may obtain # -# a copy of the License at # -# # -# http://www.apache.org/licenses/LICENSE-2.0 # -# # -# Unless required by applicable law or agreed to in writing, software # -# distributed under the License is distributed on an "AS IS" BASIS, # -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # -# See the License for the specific language governing permissions and # -# limitations under the License. # -#--------------------------------------------------------------------------- # - -# clone fe:SOURCE host:remote_system_ds/disk.i size -# - fe is the front-end hostname -# - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk -# - host is the target host to deploy the VM -# - remote_system_ds is the path for the system datastore in the host - -SRC=$1 -DST=$2 -VM_ID=$3 -DS_ID=$4 - -if [ -z "${ONE_LOCATION}" ]; then - TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh -else - TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh -fi - -DRIVER_PATH=$(dirname $0) - -source $TMCOMMON -source ${DRIVER_PATH}/../../datastore/libfs.sh - -#------------------------------------------------------------------------------- -# Set dst path and dir -#------------------------------------------------------------------------------- - -SRC_HOST=`arg_host $SRC` -SRC_PATH=`arg_path $SRC` - -DST_PATH=`arg_path $DST` -DST_HOST=`arg_host $DST` -DST_DIR=`dirname $DST_PATH` - -DS_SYS_ID=$(echo $DST_DIR|$AWK -F '/' '{print $(NF-1)}') - -SIZE=`file_size $SRC_PATH` - -if [ "$SIZE" = "0" ]; then - log_error "Cannot determine size for $SRC_PATH" - exit -1 -fi - -DISK_ID=$(echo $DST_PATH|$AWK -F. '{print $NF}') - -LV_NAME="lv-one-$VM_ID-$DISK_ID" -VG_NAME="vg-one-$DS_SYS_ID" -DEV="/dev/${VG_NAME}/${LV_NAME}" - -#------------------------------------------------------------------------------- -# Create the snapshot and link it -#------------------------------------------------------------------------------- - -CLONE_CMD=$(cat < Date: Mon, 16 Sep 2013 16:38:41 +0200 Subject: [PATCH 4/5] feature #2321: cpds are mvds are independent files --- src/tm_mad/shared_lvm/cpds | 69 +++++++++++++++++++++++++++++++++++++- src/tm_mad/shared_lvm/mvds | 8 ++--- 2 files changed, 70 insertions(+), 7 deletions(-) mode change 120000 => 100755 src/tm_mad/shared_lvm/cpds diff --git a/src/tm_mad/shared_lvm/cpds b/src/tm_mad/shared_lvm/cpds deleted file mode 120000 index 285d6c25f5..0000000000 --- a/src/tm_mad/shared_lvm/cpds +++ /dev/null @@ -1 +0,0 @@ -./mvds \ No newline at end of file diff --git a/src/tm_mad/shared_lvm/cpds b/src/tm_mad/shared_lvm/cpds new file mode 100755 index 0000000000..a8f599006d --- /dev/null +++ b/src/tm_mad/shared_lvm/cpds @@ -0,0 +1,68 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2013, OpenNebula Project (OpenNebula.org), C12G Labs # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # + +# mvds host:remote_system_ds/disk.i fe:SOURCE +# - fe is the front-end hostname +# - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk +# - host is the target host to deploy the VM +# - remote_system_ds is the path for the system datastore in the host + +SRC=$1 +DST=$2 +VM_ID=$3 +DS_ID=$4 + +if [ -z "${ONE_LOCATION}" ]; then + TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh +else + TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh +fi + +source $TMCOMMON + +#------------------------------------------------------------------------------- +# Set dst path and dir +#------------------------------------------------------------------------------- +SRC_PATH=`arg_path $SRC` +SRC_HOST=`arg_host $SRC` + +DST_PATH=`arg_path $DST` +DST_HOST=`arg_host $DST` + +DISK_ID=$(echo $SRC_PATH|$AWK -F. '{print $NF}') +DS_SYS_ID=$(echo $SRC_PATH|$AWK -F/ '{print $(NF-2)}') + +LV_NAME="lv-one-$VM_ID-$DISK_ID" +VG_NAME="vg-one-$DS_SYS_ID" + +DEV="/dev/${VG_NAME}/${LV_NAME}" + +DUMP_CMD=$(cat < Date: Mon, 16 Sep 2013 16:40:52 +0200 Subject: [PATCH 5/5] feature #2321: Include shared_lvm in oned.conf --- share/etc/oned.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/etc/oned.conf b/share/etc/oned.conf index dd85ebad8a..1f9fc55f21 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -356,7 +356,8 @@ VM_MAD = [ TM_MAD = [ executable = "one_tm", - arguments = "-t 15 -d dummy,lvm,shared,qcow2,ssh,vmfs,iscsi,ceph" ] + arguments = "-t 15 -d dummy,lvm,shared,shared_lvm,qcow2,ssh,vmfs,iscsi,ceph" +] #******************************************************************************* # Datastore Driver Configuration