XenServerのxeコマンドのtips
XenServerを使い始めてどれ位経ったか定かじゃないけど、使い始めた頃と今とでネットに転がってるXenServerの情報量が対して増えていない事に絶望した!
知っている事を抱え込んでいても仕方ないから、書き溜めたxeコマンドの実用的?な使い方を公開。
これである程度の自動化が出来るはず。
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のドメインに入る
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を削除
# 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-param-set uuid=3cc5844e-8001-5ef9-8b15-ff94ca63124e name-label='CentOS 5.4 InitialTemplate'
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