Seite 1 von 1

Entfernen der Redo Einstellung per Befehlzeile

Verfasst: 13.09.2005, 11:30
von SaschaP
Hallo,

wie kann man per Befehlzeile eine VMware Maschine stoppen, die Festplatte von REDO auf Append setzen und die Maschine wieder starten ?

Gruss Sascha :P

ich habe das wohl schlecht formuliert

Verfasst: 19.09.2005, 15:03
von SaschaP
Hallo,

ich habe gesehen, das ich mein Problem ein bischen unglücklich beschrieben habe.

Die virtuelle Disk meines Server ist im "Disk Mode" Append. Ich möchte per Befehlszeile (VMware-cmd, etc) den "Disk Mode" auf Persistent ändern.

Falls jemand die Lösung weiß, danke !
:wink:

Verfasst: 23.09.2005, 10:34
von Tovaco
stoppen per vmware-cmd <config-file> stop hard|soft

Config-File per hand editieren.

dann wieder starten...

Verfasst: 27.09.2005, 10:36
von SaschaP
Danke Tovaco,

ich habe aber ein Script und hierzu muss ich den Disk Mode per Befehlszeile von "Append" auf "Persistent" und umgekehrt setzen können.

Gibt es dafür wirklich keine Lösung?
Mit der VMware-cmd kann man ja alles mögliche anstellen, dass dürfte doch nur eine Kleinigkeit sein. :lol:

Verfasst: 28.09.2005, 18:15
von Tovaco
Das Problem ist, daß der vmware-cmd diese infos nur temporär im Speicher ändert...an dem vmx-File macht der nix.

Du kannst natürlich sowas konstruieren:
cat "/home/vmware/iv3s6727 -TT- Win2003 OSPF/iv3s6727 -TT- Win2003 OSPF.vmx" | sed s/'"undoable"'/'"persistent"'/g > /tmp/bla.vmx

und dann per cp -f das ursprüngliche File überschreiben...

Grüße Thorsten

Verfasst: 29.09.2005, 11:47
von joe.hidden
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