XenServerのxeコマンドのtips

XenServerを使い始めてどれ位経ったか定かじゃないけど、使い始めた頃と今とでネットに転がってるXenServerの情報量が対して増えていない事に絶望した!
知っている事を抱え込んでいても仕方ないから、書き溜めたxeコマンドの実用的?な使い方を公開。
これである程度の自動化が出来るはず。
 

起動中のVMの一覧

xe vm-list power-state=running

 

VM名からUUIDを取得

VM名がユニークな場合のみ使うべき。

xe vm-list name-label=XenManager --minimal

 

UUIDで指定したVMのパラメータ一覧

xe vm-param-list uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56

 

UUIDで指定したVMのparam-nameを取得

xe vm-param-get uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56 param-name=other-config

 

UUIDで指定したVM自動起動ONにする

xe vm-param-set uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56 other-config:auto_poweron=true

 

UUIDで指定したVMに割り当てるメモリサイズを128MBに変更する

xe vm-param-set uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56 memory-static-max=134217728
xe vm-param-set uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56 memory-dynamic-max=134217728
xe vm-param-set uuid=938ee4f9-0ab0-08f3-94a9-c75e0b2c0a56 memory-dynamic-min=134217728

 

テンプレートを指定してVM作成

xe vm-install new-name-label='new centos' template=f7b726e2-41a1-776a-4661-85cde6e34f0a
xe vm-param-set uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d other-config:install-repository=http://ftp.riken.jp/Linux/centos/5/os/i386/

 

UUIDで指定したVM起動

xe vm-start uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d

 

UUIDで指定したVMのコンソールURLを取得

xe console-list vm-uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d

 

UUIDで指定したVMドメインIDを取得

xe vm-list uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d params=dom-id

 

ドメインIDで指定したVMドメインに入る

/usr/lib/xen/bin/xenconsole 3

 

UUIDを指定してVMドメインに入る

usage: xenconsole.sh 611ca720-4e39-efaa-b14f-dd4948b06f1d

#!/bin/bash

if [ "$1" == "" ];then
	echo "usage $0 uuid"
	exit
fi

DOMID=`xe vm-list uuid=$1 params=dom-id --minimal`
if [ "$DOMID" == "" ];then
	echo "not found domain"
	exit
fi

STATE=`xe vm-list uuid=$1 params=power-state --minimal`
if [ "$STATE" != "running" ];then
	echo "not running domain"
	exit
fi
/usr/lib/xen/bin/xenconsole $DOMID

 

UUIDで指定したVMを終了

xe vm-shutdown uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d

 

UUIDで指定したVMを強制終了

xe vm-shutdown uuid=611ca720-4e39-efaa-b14f-dd4948b06f1d force=true

 

UUIDで指定したVMを削除

# VMのUUIDからVBD調べ、そのVBDに所属しているVDIのUUIDを調べる
xe vbd-list vm-uuid=f63e114b-62e8-b185-19f9-66d88825bff4 params=vdi-uuid device=xvda --minimal
# VDIを削除
xe vdi-destroy uuid=a1bdeebd-ddee-423d-8b5a-a8e643b27438
# VMを削除
xe vm-destroy uuid=f63e114b-62e8-b185-19f9-66d88825bff4

 

UUIDを指定してVMを削除

xe vm-uninstall uuid=f63e114b-62e8-b185-19f9-66d88825bff4 force=true

 

UUIDで指定したVMをテンプレートに変換

xe vm-param-set uuid=3cc5844e-8001-5ef9-8b15-ff94ca63124e is-a-template=true

 

UUIDで指定したVMの名前を変更

xe vm-param-set uuid=3cc5844e-8001-5ef9-8b15-ff94ca63124e name-label='CentOS 5.4 InitialTemplate'

 

UUIDで指定したVMIPアドレスを取得

xe vm-param-get uuid=eda1fd42-92ba-8bff-a990-85e48daef6cf param-name=networks

 

UUIDで指定したVMを完全コピーする

xe vm-copy new-name-label='CentOS 5.4 copy' uuid=eda1fd42-92ba-8bff-a990-85e48daef6cf sr-uuid=c2e44e59-3828-d0cd-9eab-148468764afc

 

UUIDで指定したVMを高速複製する

xe vm-clone new-name-label='CentOS 5.4 copy2' uuid=eda1fd42-92ba-8bff-a990-85e48daef6cf

 

XenServerライセンスを確認

xe host-license-view

 

XenServerライセンスをインストール

xe host-license-add license-file=<path/license_filename>

 

UUIDとディレクトリを指定してVMをエクスポート

usage: vm_copy.sh 611ca720-4e39-efaa-b14f-dd4948b06f1d

#!/bin/bash

VMUUID=$1
MOUNTDEV='192.168.0.200:/share'
BACKUPDIR='/mnt/nfs'

# mount check
if [ `mount | grep "$BACKUPDIR" | wc -l` -eq 0 ]; then
	echo "NFS mounting ..."
	echo "MOUNT DEV: $MOUNTDEV"
	echo "MOUNT DIR: $BACKUPDIR"
	MOUNTRESULT=`mount -t nfs $MOUNTDEV $BACKUPDIR 2>&1`
	if [ `echo $MOUNTRESULT | sed '/^$/d' | wc -l` -eq 0 ]; then
		echo "Mount OK"
		echo
	else
		echo "Mount error: $MOUNTRESULT"
		exit
	fi
fi

# vm check
NEWLABELNAME=`xe vm-list uuid=$VMUUID params=name-label --minimal`
if [ "$NEWLABELNAME" == "" ]; then
	echo "No such VM: $VMUUID"
	exit
fi

DATE=`date '+%Y%m%d'`
FILENAME="$BACKUPDIR/$NEWLABELNAME-$DATE.xva"

echo "##################################################"
echo "# VM: $VMUUID"
echo "# DIR: $BACKUPDIR"
echo "# FILE: $FILENAME"
echo "##################################################"
echo

echo "Creating snapshot ..."
NEWVMUUID=`xe vm-snapshot new-name-label="$NEWLABELNAME" uuid="$VMUUID"`
echo $NEWVMUUID
echo "done: `date '+%Y/%m/%d %H:%M:%S'`"
echo

echo "Converting template to vm ..."
xe template-param-set is-a-template=false uuid=$NEWVMUUID
echo "done: `date '+%Y/%m/%d %H:%M:%S'`"
echo

echo "Exporting $FILENAME ..."
xe vm-export vm=$NEWVMUUID filename="$FILENAME"
echo "done: `date '+%Y/%m/%d %H:%M:%S'`"
echo

echo "Deleting snapshot ..."
xe vm-uninstall uuid=$NEWVMUUID force=true
echo "done: `date '+%Y/%m/%d %H:%M:%S'`"

 

ファイル名を指定してVMをインポート

xe vm-import filename="/mnt/nfs/CentOS 5.4-20100331.xva" sr-uuid=8fd25442-94f2-8951-c6ef-95fbbc081b89

 

タスク一覧

xe task-list

 

タスクをキャンセルする

xe task-cancel 43080540-11e4-f28d-fce0-031c536b93d3

 

タスクを全てキャンセルする

#!/bin/bash

for TASKUUID in `xe task-list --minimal | awk '{ n=split($i, arr, ","); for (i=0; i<=n; i++) {print arr[i]} }'`
do
    xe task-list uuid=$TASKUUID
    xe task-cancel uuid=$TASKUUID
done

 

何か不整合が起きた時にxapiを再起動する

VMを起動したままxapiを再起動する。

xe-toolstack-restart