ich habe vor einiger zeit mal zwei perl-scripten gefunden, die genau das gut machen.
hier also des erste, setzt die angegebene maschine in den redoable mode:
----- snip -----
Code: Alles auswählen
#!/usr/bin/perl
use VMware::Control::Server;
use VMware::Control::VM;
$cfg = $ARGV[0];
$server = VMware::Control::Server::new();
$err = $server->connect();
if (!defined($err))
{
($errorNumber, $errorString) = $server->get_last_error();
print "Server connect error: ", $errorString, "\n";
exit;
}
$vm = VMware::Control::VM::new($server, $cfg);
$err = $vm->connect();
if (!defined($err))
{
($errorNumber, $errorString) = $vm->get_last_error();
print "VM connect error: ", $errorString, "\n";
exit;
}
$data_file="/tmp/list_running_vms_to_put_in_hot.tmp";
open(DAT,">>$data_file") || die("Could not open file!");
@devices = @{ $vm->get("Status.devices") };
foreach $disk (@devices)
{
#print "$disk\n";
if ($disk =~ "ethernet" || $disk !~ ":" || $disk =~ "ide")
{
next;
}
# Skip the CD-ROM devices
my $deviceType = $vm->get("Config.$disk.deviceType");
if ($deviceType eq "atapi-cdrom" || $deviceType eq "cdrom-image")
{
next;
}
$err = $vm->add_redo($disk);
if (!defined($err))
{
($errorNumber, $errorString) = $vm->get_last_error();
print "VM add redo log error: ", $errorString, "\n";
close(DAT);
exit;
}
print DAT "$cfg $disk\n";
}
close(DAT);
$vm->disconnect();
$server->disconnect();
----- snap ----
obiges script protokolliert in einer temp-file mit welche disks es beharkt hat.
um dann dies wieder zurückzunehmen und die änderungen im redo zu commiten gibts dann das script:
---- snip ----
Code: Alles auswählen
#!/usr/bin/perl
use VMware::Control::Server;
use VMware::Control::VM;
$data_file="/tmp/list_running_vms_to_put_in_hot.tmp";
open(DAT,"$data_file") || die("Could not open file!");
$server = VMware::Control::Server::new();
$err = $server->connect();
if (!defined($err))
{
($errorNumber, $errorString) = $server->get_last_error();
print "Server connect error: ", $errorString, "\n";
exit;
}
@raw_data=<DAT>;
foreach $pair (@raw_data)
{
chop($pair);
($cfg,$disk)=split(/\ /,$pair);
$vm = VMware::Control::VM::new($server, $cfg);
$err = $vm->connect();
if (!defined($err))
{
($errorNumber, $errorString) = $vm->get_last_error();
print "VM connect error: ", $errorString, "\n";
exit;
}
print "\n";
print "Committing disk $disk on $cfg\n";
$err = $vm->commit($disk, 0, 0, 1);
if (!defined($err))
{
($errorNumber, $errorString) = $vm->get_last_error();
print "VM commit error: ", $errorString, "\n";
$vm->disconnect();
exit;
}
print "Disk $disk on $cfg is committed\n";
print "\n";
$vm->disconnect();
}
$server->disconnect();
--- snap ----
leider hab ich keine ahnung mehr wo ich das script gefunden habe, würde den author gerne refernzieren. wenns einer weiss, bitte kurze nachricht.
ich nutzte diese scripte um vor einem "hot" backup einer laufenden VM die plattenfiles in einen statischen zustand zu bringen und hnterher wieder in den normalbetreib zu bringen.
VIEL ERFOLG