1.复制单个虚拟机
SRC_VM="klv10-000_1"
DST_VM="klv10-008"
DATASTORE="kylin-vdis-storage (1)"
# 录
mkdir "/vmfs/volumes/${DATASTORE}/${DST_VM}"
# 复制文件
vmkfstools -i "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmdk" \
"/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmdk" -d thin
# 复制并修改配置文件
cp "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmx" \
"/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
sed -i "s/${SRC_VM}/${DST_VM}/g" "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
# 注册新虚拟机
vim-cmd solo/registervm "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
echo "虚拟机 ${DST_VM} 克隆完成"
2. 批量复制虚拟机
onfiguration
SRC_VM="klv10-008" # Source VM template
DATASTORE="kylin-vdis-storage (1)" # Storage location
START_NUM=12 # First VM number
END_NUM=106 # Last VM number
# Path definitions
SRC_DIR="/vmfs/volumes/${DATASTORE}/${SRC_VM}"
SRC_VMDK="${SRC_DIR}/${SRC_VM}.vmdk"
SRC_VMX="${SRC_DIR}/${SRC_VM}.vmx"
# Verify source VM exists
[ ! -d "${SRC_DIR}" ] && { echo "ERROR: Source VM directory ${SRC_DIR} not found"; exit 1; }
[ ! -f "${SRC_VMX}" ] && { echo "ERROR: Source VMX file ${SRC_VMX} not found"; exit 1; }
# Main cloning loop
for NUM in $(seq -w ${START_NUM} ${END_NUM}); do
DST_VM="klv10-${NUM}"
DST_DIR="/vmfs/volumes/${DATASTORE}/${DST_VM}"
DST_VMDK="${DST_DIR}/${DST_VM}.vmdk"
DST_VMX="${DST_DIR}/${DST_VM}.vmx"
echo "========================================"
echo "Cloning ${SRC_VM} to ${DST_VM}"
echo "========================================"
# Create destination directory
mkdir -p "${DST_DIR}" || { echo "ERROR: Failed to create directory ${DST_DIR}"; continue; }
# Clone virtual disk
echo "Step 1/3: Cloning virtual disk..."
vmkfstools -i "${SRC_VMDK}" "${DST_VMDK}" -d thin || { echo "ERROR: Disk clone failed"; continue; }
# Copy and modify config file
echo "Step 2/3: Processing VM configuration..."
cp "${SRC_VMX}" "${DST_VMX}" || { echo "ERROR: Failed to copy VMX file"; continue; }
sed -i "s/${SRC_VM}/${DST_VM}/g" "${DST_VMX}" || { echo "ERROR: Failed to modify VMX file"; continue; }
# Register new VM
echo "Step 3/3: Registering VM..."
vim-cmd solo/registervm "${DST_VMX}" || { echo "ERROR: VM registration failed"; continue; }
echo "Successfully cloned ${DST_VM}"
done
echo "Bulk cloning operation completed"