XenServerのコマンドラインインターフェイス xe-cli の便利を実感してみた
XenServer使っていますか?私はVMwareよりXenServerの方が気に入っています。気に入っているその理由の1つとして、VMwareのSDKは認証が重くて*1時折寝てしまうことがありますが、XenServerのSDKは軽いです。機能は少ないですがやっぱり軽快なのは嬉しいです。
SDK
http://community.citrix.com/display/xs/Download+SDKs
- XenServer.NET: The XenServer SDK for C#.NET
- XenServer.NET: Old-style XenServer SDK for C#.NET
- XenServerJava: The XenServer SDK for Java
- libxenserver: The XenServer SDK for C
- XenServerPSSnapIn: The XenServer SDK for PowerShell
- XenAPI.py: The XenServer Python module
XML-RPCを叩けばいいってことなので、rubyで実装している人もいます。
- XenAPI.rb (http://dev.holgerjust.de/projects/xenapi-rb/wiki)
ここではお手軽な xe-cli を使ったサンプルをメモします。(XenServer5.6fp1で試しています)
xe-cliをインストール
XenServerにログインすればxe-cliは使えます。でもリモートで管理するのなら xe-cli を別のサーバにインストールしたほうが便利です。XenServer-5.6.1-fp1-linux-cd.iso の 中に xe-cli-5.6.100-39153p.i686.rpm があるのでインストールします。
$ sudo rpm -ivh xe-cli-5.6.100-39153p.i686.rpm
xs-tools
VMにxs-toolsはインストールしておきましょう。インストールしていないと取得できない場合があります。
パスワードファイルを作成
cliを実行中にpsでパスワードが生でみえてしまうので、パスワードファイルを作成します。1行目ユーザ、2行目パスワードです。
$ cat passwordfile.txt user password
VMの一覧を表示
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-list | grep -v "^$" uuid ( RO) : 6136b9a8-c32a-b361-14eb-fc33337b2387 name-label ( RW): Centos5 power-state ( RO): running uuid ( RO) : e918bb8c-16eb-78ed-4aad-2a5f7f8e7d10 name-label ( RW): WindowsXP power-state ( RO): running uuid ( RO) : 4ee28767-7423-4ee0-9cc8-8420c45c55cd name-label ( RW): Control domain on host: epitaph power-state ( RO): running uuid ( RO) : fb9f1fe1-ec48-bf32-0f03-9621a61f01b7 name-label ( RW): Windows2003 power-state ( RO): halted uuid ( RO) : 55c19dd9-cb27-129a-be8e-723a5d72b830 name-label ( RW): Centos5-1 power-state ( RO): halted
VMをリブート
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-reboot uuid=<uuid>
VMのネットワーク情報
VMに割り当てられているIPアドレスを取得できます。
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-param-get param-name=networks uuid=<uuid> 0/ip: 192.168.1.101
VMのスナップショット取得
成功するとスナップショットのuuidが返ってきます。
$xe -s <xenserver> -pwf ./<passwordfile.txt> vm-snapshot new-name-label="snapshot-001" uuid=<uuid> bbe3a3be-5ace-462d-9005-ba1bbc226e1d
VMのOSの情報
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-param-get param-name=os-version uuid=<uuid> name: CentOS release 5.5 (Final); uname: 2.6.18-194.3.1.el5.centos.plusxen; distro: centos; major: 5; minor: 5
VMのvCPUの使用率
vCPU数が複数であればcpu-id単位で使用率が表示されます。
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-param-get param-name=VCPUs-utilisation uuid=<uuid> 0: 0.002; 1: 0.000
VMの色々な情報取得
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-param-list uuid=<uuid>
VMのメモリ情報
vm-param-listの情報にはメモリの使用量が存在しない。色々調べたところcitrixのフォーラムにありました。まず vm-data-source-list で情報をみます。name_label は memory と memory_internal_freeです。どちらもenable: true になっていることを確認。falseの場合はxs-toolsをインストールしていない可能性が高いです。
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-list uuid=<uuid> name_label : memory name_description: Memory currently allocated to VM enabled: true standard: true min: 0.000 max: nan units: name_label : memory_internal_free name_description: Memory used as reported by the guest agent enabled: true standard: true min: 0.000 max: nan units:
メモリの総割り当てサイズ (byte)。メモリの総割り当てサイズはバイト(byte)、メモリの使用量はキロバイト(kbyte)で返ってくるので注意が必要。
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-query data-source=memory uuid=<uuid> 419430400.000000
メモリの使用量 (kbyte)。
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-query data-source=memory_internal_free uuid=<uuid> 124456.000000
VMのネットワークトラフィック
メモリと同じく vm-data-source-list で情報をみます。name_label は vif_0_tx と vif_0_tx 。descriptionに「virtual interface number '0'」とあるように最初の'0'のVirtual NICです。et1 なら vif_1_tx と vif_1_txになります。
xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-list uuid=<uuid> name_label : vif_0_tx name_description: Bytes per second transmitted on virtual interface number '0' enabled: true standard: true min: 0.000 max: nan units: name_label : vif_0_rx name_description: Bytes per second received on virtual interface number '0' enabled: true standard: true min: 0.000 max: nan units:
送信サイズ(byte)
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-query data-source=vif_0_tx uuid=<uuid> 15.835249
受信サイズ(byte)
$ xe -s <xenserver> -pwf ./<passwordfile.txt> vm-data-source-query data-source=vif_0_rx uuid=<uuid> 15.835249
VMの操作系
VMをshutdown/rebootしても黄色いアイコンのまま停止してくれない場合の強制適用の方法。
対象のVMのuuidを調べ、list_domainsでid調べ(Hが付く)、xenops destroy_domainで殺すという感じです。
$ xe vm-list $ list_domains | grep <uuid> <id> | <uuid> | H $ /opt/xensource/debug/xenops destroy_domain –domid <id>
参考
- http://v12n.jp/index.php?%A5%B5%A1%BC%A5%D0%A1%BC%B2%BE%C1%DB%B2%BD%2FCitrix%20XenServer#content_1_144
- http://peta.okechan.net/blog/archives/739
- http://docs.vmd.citrix.com/XenServer/5.6.0fp1/1.0/en_gb/
- http://docs.vmd.citrix.com/XenServer/5.6.0fp1/1.0/en_gb/reference.html
- http://support.citrix.com/article/CTX131421
*1:これは嘘でした。