libvirtのPerlバインディング "Sys::Virt"
libvirtをPerlから使用するモジュール Sys::Virtを使ってみました。
起動中の仮想ドメイン情報の取得
以下のようなスクリプトで、仮想ドメインの情報が取得できます。
#!/usr/bin/perl use warnings; use strict; use Sys::Virt; my $addr = 'qemu:///system'; my $vmm = Sys::Virt->new(address => $addr); my @domains = $vmm->list_domains(); foreach my $dom (@domains) { print "----- ", $dom->get_name, " -----\n"; print "Domain ID : ", $dom->get_id, "\n"; # CPU my @vcpuinfo = $dom->get_vcpu_info(); foreach my $vcpu (@vcpuinfo) { print "VCPU : ", $vcpu->{number}, "\n"; print "Pysical CPU : ", $vcpu->{cpu}, "\n"; print "CPU Time : ", $vcpu->{cpuTime}, "\n"; } # MEM my $info = $dom->get_info(); print "Mem/MaxMem : ", $info->{memory}, "/", $info->{maxMem}, "\n"; # UUID my $uuid = $dom->get_uuid_string(); print "UUID : ", $uuid, "\n"; } print "----- Network Info -----\n"; my @nets = $vmm->list_networks(); foreach my $net (@nets) { print "Net Name ", $net->get_name, "\n"; print "Bridge Net ", $net->get_bridge_name, "\n"; } __END__
実行結果は、以下のようになります。
# ./getVmList.pl ----- dev-cent01 ----- Domain ID : 1 VCPU : 0 Pysical CPU : 0 CPU Time : 459120000000 Mem/MaxMem : 1048576/1048576 UUID : dd8ae813-5ae2-9248-d22a-8073af072aab ----- dev-cent02 ----- Domain ID : 2 VCPU : 0 Pysical CPU : 3 CPU Time : 389970000000 Mem/MaxMem : 1048576/1048576 UUID : 1880e53f-5ba2-aa9d-8f13-a80ca7a9473e ----- Network Info ----- Net Name default Bridge Net virbr0
情報取得以外にも、ドメイン操作(停止/再起動/メモリ容量設定 etc)、ネットワーク操作、ストレージ操作も可能です。
libvirt: The virtualization API
Sys-Virt-v5.1.0 - libvirt Perl API - metacpan.org