
Hi Maor, One of the most frustrating things about Ovirt is the inability to export VMs. The Import Storage Domain only works in a limited number of cases. Examples of where I've need to migrate VMs but where the Import Storage Domain idea is a no-go are: * When the systems involved are at remote locations * When there is a need to export from RHEV/Ovirt to some other systems, such as Qemu/KVM While the first *could* be dealt with using the Import Storage Domain, doing so is very cumbersome, to put it mildly. It's far simpler to just transfer the drive image, especially as most images compress reasonably well. regards, John On 22/02/15 02:10, Maor Lipchuk wrote:
Hi John,
Well done for writing the script. I was wondering, what is it that you are trying to do? If you try to migrate disks from one setup to another you might want to consider using "Import Storage Domain" (see [1]), though it is only supported from oVirt 3.5.
[1] http://www.ovirt.org/Features/ImportStorageDomain#Work_flow_for_Import_File_...
Regards, Maor
----- Original Message -----
From: "John Gardeniers" <jgardeniers@objectmastery.com> To: "users" <users@ovirt.org> Sent: Friday, February 20, 2015 12:33:48 AM Subject: [ovirt-users] Exporting a VM's disks
Hi All,
Having recently had a need to manually export a VM from our RHEV environment I searched for a way to identify the VM's disks with the files on the storage system. The search led me to http://rhevdup.blogspot.com.au/2013/05/manual-export-of-vm-from-rhev.html but unfortunately, the script in that post only lists the first drive for a VM, making it less than useful for exporting VMs with multiple drives.
Inspired by that post I wrote my own version in Perl (I detest Python). The script works on our RHEV 3.4 with a Gluster storage back end. I would greatly appreciate it if some of you could test it on other RHEV/Ovirt versions and on different storage systems. Thanks for any feedback.
regards, John
#! /usr/bin/env perl
# Run this script on the RHEV/Ovirt engine (management) machine # # Find the files on the storage which belong to a VM's disk(s) # Input parameter: A single VM name (case sensitive)
use DBI;
my $vm = shift or die "No VM specified\n";
my $conf = '/etc/ovirt-engine/engine.conf.d/10-setup-database.conf'; my $host = 'localhost'; my $db; my $user; my $pass; my $port = 5432;
open my $fi, '<', $conf or die "Can't read $conf\n";
while(<$fi>) { my $line = $_; $host = $1 if($line =~ /ENGINE_DB_HOST="(.*)"/); $db = $1 if($line =~ /ENGINE_DB_DATABASE="(.*)"/); $user = $1 if($line =~ /ENGINE_DB_USER="(.*)"/); $pass = $1 if($line =~ /ENGINE_DB_PASSWORD="(.*)"/); $port = $1 if($line =~ /ENGINE_DB_PORT="(.*)"/); }
die "Unable to get all database details\n" if(!$db || !$user || !$pass); my $dbh = DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port", $user, $pass, {AutoCommit=>1,RaiseError=>1,PrintError=>0}); die "Error connecting to the database\n" if(!$dbh);
# Get the device ID my $sql = "select device_id from vms_for_disk_view where array_vm_names = '{$vm}'"; my @row = $dbh->selectrow_array($sql); my $vm_id = $row[0];
if($vm_id) { print "\nVM ID: $vm_id\n";
# Get the drive ID(s) $sql = "select image_guid, to_char(size/1024/1024/1024.0, '999G999D99'), to_char(actual_size/1024/1024/1024.0, '999G999D99'), storage_name from images_storage_domain_view where vm_names = '$vm' and entity_type = 'VM'"; my $sth = $dbh->prepare($sql) || die "Error preparing the SQL string \"$sql\"\n$dbh::errstr"; print "\nError executing $sql\n$DBI::errstr\n\n" unless $sth->execute(); print "Disk ID(s): "; my $cnt = 0;
while (@row = $sth->fetchrow_array) { print " " if($cnt++); print "$row[0], $row[1]GB allocated, $row[2]GB actual, on $row[3]\n"; }
$sth->finish; print "\n"; } else { print "\nVM \"$vm\" not found. Be aware that the name is case sensitive.\n\n"; }
$dbh->disconnect;
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
______________________________________________________________________ This email has been scanned by the Symantec Email Security.cloud service. For more information please visit http://www.symanteccloud.com ______________________________________________________________________