这是我们使用的是由一个可将虚拟机迁移一个什么样的脚本。
您可以使用此命令slcli virtual list --columns id,hostname,pendingMigrationFlag | grep True
和实际迁移列表可迁移的虚拟机可以使用此slcli call-api Virtual_Guest migrate "--id=$VSID"
#!/bin/bash
TYPE=${1:-server}
while :; do
VSID=`slcli virtual list --columns id,hostname,pendingMigrationFlag | grep "$TYPE" | grep True | head -1 | cut -d ' ' -f1`;
if [[ -n "$VSID" ]]; then
echo "Next item to migrate: $VSID"
slcli vs detail "$VSID"
slcli call-api Virtual_Guest migrate "--id=$VSID"
if [[ "$?" -eq "0" ]]; then
echo "Waiting for the migration to complete..."
while :; do
sleep 5
STATE=`slcli vs detail "$VSID" | grep active_transaction | awk '{print $2}'`
if [ "$STATE" = "NULL" ]; then
echo "Migration finished"
break
else
echo "Current state: $STATE"
fi
done
fi
else
echo "No vs found to migrate"
break
fi
done
感谢来完成,这个工程。 –
SoftLayer_Virtual_Guest/$ VSIID /迁移呼叫作品, ' - 当服务器已准备就绪,呼吁/迁移不迁移 - 当服务器已迁移 - 我的错误,这是正常情况 ' **是否有任何机会检查在特定的VS是否有资格进行迁移而不实际(迁移)重新启动它?** –
VS有一个名为pendingMigrationFlag的属性,如果此标志设置为false,则不需要迁移它,您可以像这样获取它SoftLayer_Virtual_Guest/$ VSIID /的getObject?objectMask =掩模[pendingMigrationFlag] –