PDA

View Full Version : VMWare SERVER per Windows: come si SOSPENDE e RIPRENDE una VM?


Symonjfox
30-07-2009, 10:33
Salve a tutti, prima di scrivere qui ho cercato in lungo e in largo, ma non ho trovato quello che mi serve.

Dunque, da un cliente che abbiamo preso, c'è un Server Windows2003 standard, al cui interno c'è installato VMWare Server 2.0.
VMWare è configurato correttamente, all'avvio di questo server si carica una macchina virtuale che poi fa da Controller primario di dominio, e soprattutto tiene in piedi il loro programma di gestione pratiche (roba loro intenra).

Riassumendo, vogliamo fare un backup giornaliero della macchina virtuale, ma, come voi sapete, la VM deve essere SPENTA o SOSPESA.

Il backup va di notte, quindi nessuno lavora e posso tranquillamente spegnere la VM (potrei installarci dentro un software tipo Switchoff o altro).

Il problema è che, finito il backup, vorrei fare in modo che la VM si riaccendesse, in modo che la mattina quando loro rientrano al lavoro, è come se non fosse successo niente.

Sono 2 giorni che ci sto studiando, ma non trovo niente. Trovo tanti siti che parlano di Linux, ma nessuno di Windows (nel mio caso è sia host che client).

Spero che qualcuno possa aiutarmi.

Grazie

fedek9001
30-07-2009, 11:42
dovresti cercare l'help del comando vmrun.exe

Symonjfox
30-07-2009, 13:30
dovresti cercare l'help del comando vmrun.exe
L'ho appena guardato ... a prima vista sembra un po' complicato ... appena ho un attimo lo studio meglio.
Grazie intanto!

Symonjfox
31-07-2009, 08:11
vmrun.exe suspend "D:\VM\Vm.vmx"
e poi
vmrun.exe start "D:\VM\Vm.vmx"

Il comando stop è lo SPEGNIMENTO BRUTALE! Meno male che l'ho provato qui prima di farlo dal cliente ...

Dunque, ho provato sul lavoro, dove ho installato Vmware server e creato una macchina virtuale, ma mi dà un errore strano, tipo host (oggi vi do l'errore preciso).
Su un altro pc con Vmware workstation funziona.

Dal cliente, presumo che funzioni, perchè quando riavvii il server, automaticamente fa partire anche la VM (quindi presumo ci sia uno script in esecuzione automatica). Oggi è il grande giorno....

flisi71
31-07-2009, 12:11
ti consiglio la guida in pdf corredata anche di numerosi esempi

http://www.vmware.com/pdf/vix162_vmrun_command.pdf


vmrun.exe suspend "D:\VM\Vm.vmx"
e poi
vmrun.exe start "D:\VM\Vm.vmx"

Il comando stop è lo SPEGNIMENTO BRUTALE! Meno male che l'ho provato qui prima di farlo dal cliente ...
...


basta aggiungere il parametro "trysoft", funziona sia sul comando stop che sul comando suspend.

Ciao

Federico

Symonjfox
31-07-2009, 13:09
ti consiglio la guida in pdf corredata anche di numerosi esempi
Grazie 10000 ora me la studio tutta....
basta aggiungere il parametro "trysoft", funziona sia sul comando stop che sul comando suspend. Altro comando interessante.

Oggi sono andato da questo cliente e purtroppo non ho avuto molto tempo per fare le mie prove. Ogni volta che riavvio la VM praticamente fermo 20 impiegati ....

Dunque: sia in ufficio che dal cliente, quindi entrambi VMWare Server 2.0, se faccio questo comando

vmrun.exe suspend "d:\virtual machines\virtual.vmx"

mi restituisce

Malformed hostname parameter. For the give service provider, the host name must be a URL, in the form https://<hostname>:port/sdk

Allora ho provato ad aggiungere anche l'url come viene scritto sul browser e la porta indicata sempre da browser ...

Come ripeto non ho potuto fare tante prove per motivi di tempo, martedì tornerò da questo cliente, spero con una soluzione valida.

Non mi va di fargli spegnere la VM e poi backup e poi riavviare il server (così all'avvio si avvia la VM in automatico).


PS: lo stesso comando con la stessa macchina virtuale su un pc con vmware worsktation funziona.
PPS: nella guida è spiegato che nella versione Workstation non è necessario mettere l'host, quindi è per questo che funziona...

-h https://<hostName>/sdk

Domanda, ma HostName è riferito alla macchina Host (quindi al server reale)? se mettessi
-h https://localhost/sdk o 127.0.01/sdk funzionerebbe?

flisi71
31-07-2009, 13:23
Nessun mistero che il comando che tu dai funzioni su ws, visto che può solo controllare vm locali.
Invece con il server puoi benissimo controllare host remoti, per cui la sintassi è più complessa.

Nella guida che ti ho indicato guardati gli esempi di pag12

vmrun -T server -h https://ip dell'host:8333/sdk -u nome utente con privilegi di administrator -p password suspend "nome dello storage e percorso del file .vmx" soft

dove le parti in rosso le devi sostituire con i tuoi dati specifici

P.S. "trysoft" funzionava con il server1 con vmware-cmd

Symonjfox
31-07-2009, 13:32
Nella guida che ti ho indicato guardati gli esempi di pag12

vmrun -T server -h https://ip dell'host:8333/sdk -u nome utente con privilegi di administrator -p password suspend "nome dello storage e percorso del file .vmx" soft

Grazie mille. Si, infatti sto leggendo la guida tutta di un fiato ...
Adesso rientro in ufficio e provo subito.

Ne aprofitto per chiederti un'altra cosa: certa gente dice che per fare il backup di una VM occorra fare lo snapshot, io sapevo che bastava metterla in SOSPENSIONE o SPEGNERLA e poi copiare tutto.
Visto che il backup viene eseguito di notte e non c'è nessuno che lavora, io opterei per farla sopsendere o spegnere e farla attivare appena finito il backup.
Un discorso diverso potrebbe essere un gestionale di un hotel, dove essendo sempre aperto giorno e notte è più difficile trovare un orario preciso per fare il backup (e lo snapshot funziona anche senza sospendere la vm, giusto?).

grazie ancora.

flisi71
31-07-2009, 13:37
Esatto.
Lo snapshot serve per fare una istantanea delle vm che, dovendo garantire continuità di servizio, non puoi fermare.
Ma se non hai di questi vincoli puoi tranquillamente fermarla, fare il backup e poi farla ripartire.

Ciao

Federico

grazie ancora

Di nulla!
:)

Symonjfox
31-07-2009, 14:45
Mamma mia, che nervoso ...

C:\Programmi\VMware\VMware VIX>vmrun.exe -h https://localhost:8333/sdk -u user -p l SUSPEND "c:\virtual machines\Windows XP Professional\Windows XP Professional.vmx"
Error: Cannot open VM: Windows XP Professional\Windows XP Professional.vmx, The virtual machine cannot be found

oppure


C:\Programmi\VMware\VMware VIX>vmrun.exe -t ws -h https://localhost:8333/sdk -u
user -p l SUSPEND "[STANDARD] Windows XP Professional/Windows XP Professional.vmx"

Error: Cannot open VM: [STANDARD] Windows XP Professional/Windows XP Professional.vmx, The virtual machine cannot be found


Facendo ...

C:\Programmi\VMware\VMware VIX>vmrun.exe -T server -h https://127.0.0.1:8333/sdk -u user -p l list

esce

Total running VMs: 1
[standard] Windows XP Professional/Windows XP Professional.vmx

quindi suppongo che la prima parte (host, nome e psw sono corrette ...).

Dopo tante prove trovato la soluzione: E' CASE SENSITIVE!!!!!

MEZZ'ORA A SMACCHINARMI LA TESTA .... :muro:

Luca69
31-07-2009, 15:03
Mamma mia, che nervoso ...

Dopo tante prove trovato la soluzione: E' CASE SENSITIVE!!!!!

MEZZ'ORA A SMACCHINARMI LA TESTA .... :muro:

Probabilmente perché deriva dal mondo UNIX :D

Symonjfox
06-08-2009, 23:39
Lo scrivo così se qualcun altro ha problemi con questo programma, potrà facilmente trovare una guida.

- Prima cosa: sapere il nome esatto della macchina virtuale da controllare

Per fare questo basta usare il comando list

vmrun.exe -T server -h https://127.0.0.1:8333/sdk -u user -p password list

Comparirà, per esempio:

Total running VMs: 1
[standard] Windows XP Professional/Windows XP Professional.vmx

- Seconda cosa: creare un file .bat contentente lo script che volete far eseguire alla macchina reale (esempio nel mio caso, deve SOSPENDERE la macchina virtuale così poi parte il programma di backup e se la copia così com'è e poi deve RIACCENDERLA, in modo che la mattina dopo gli impiegati rientrano al lavoro come se nulla fosse -ma in caso di guasto avrei una copia perfettamente funzionante della loro VM, quindi li renderei operativi in poche ore dal guasto - ).

Aprite il vostro notepad e scrivete il comando.
Se avete letto bene il post, fate attenzione a 2 particolari:
- il nome host (per esempio io ho usato 127.0.0.1 cioè "me stesso" perchè lo script in questo caso viene eseguito dalla macchina host, ma in situazioni particolari questo potrebbe essere un indirizzo ip diverso, quindi occhio).
- caratteri maiuscoli e minuscoli (come fatto notare, gli ambienti UNIX sono severi).

Quindi ...

%programfiles%\VMware\VMware VIX\vmrun.exe -t server -h https://127.0.0.1:8333/sdk -u user -p password SUSPEND "[standard] Windows XP Professional/Windows XP Professional.vmx"

timeout /T 30
exit

%programfiles% significa la cartella programmi. Meglio scrivere così, visto che tanti sistemisti usano Windows Server in inglese (dove la cartella programmi è Program Files).
L'utente e la password solitamente coincidono con quelli dell'administrator, ma non è detto. Quando provate ad accedere all'interfaccia utente web di vmware vi vengono richiesti nome e password: usate quelli.
Il nome esatto della VM l'ho scritto tra " " perchè potrebbe contenere degli spazi al suo interno. Consiglio mio è di fare copia e incolla dal comando LIST, almeno non sbagliate a scrivere (per esempio io avevo scritto [STANDARD] al posto di [standard] e il comando diceva che era impossibile trovare la macchina virtuale.


PS: il comando timeout è stato messo solo per essere sicuri che la macchina sia effettivamente sospesa, per esempio, prima che parta il software di backup.