Come generare un full memory dump di una virtual machine VMware

Ciao a tutti!

Oggi parlerò di un approccio molto utile nel caso in cui dobbiate creare un full memory dump di una macchina virtuale basata su VMware; prenderò in considerazione un ipotetico scenario in cui il Sistema Oprativo della virtual machine è una delle versioni più recenti di Windows Server.

Tradizionalmente Windows Server deve essere opportunamente configurato per poter generare correttamente un full memory dump.

Esistono, infatti, dei requisiti minimi che la configurazione del server target deve soddisfare affinché il memory dump generato non sia corrotto e contenga le informazioni utili alle nostre analisi.
Dettagli in merito sui requisiti e le best practice sono discussi in alcune KB pubbliche (ad esempio per Windows Server 2008 R2 fare riferimento all’articolo http://support.microsoft.com/kb/969028/en-us ).
Ovviamente tale impostazioni devono essere preventivamente settate e occorre riavviare il server per far sì che le modifiche abbiano effetto.

Inoltre per server fisici, occorre verificare che componenti di terze parti non inficino la corretta creazione e salvataggio dell’immagine di memoria su file: alcuni vendor di terze parti (ad esempio HP ed IBM) includono meccanismi che riavviano automaticamente il server nel caso in cui avvenga un crash (anche noto come BSOD, blue screen, etc.).

 

Vmss2core tool

Se il server target è una macchina virtuale basata su VMware, abbiamo a disposizione un tool del vendor VMware che permette di creare un file dmp convertendo un suspend state o checkpoint della macchina virtuale.

Le azioni richieste sono davvero semplici, considerando che non occorre intervenire in alcun modo nel sistema operativo guest.

Nel momento in cui occorre generare un full memory dump della virtual machine è possibile creare una snapshot o mettere in “suspend” la virtual machine (tasto destro sulla VM –> Power –> Suspend).
Non appena il processo selezionato è completo, si può usare il tool vmss2core.exe per effettuare la conversione di una copia del file .vmss (in caso di suspend) o .vmsn (in caso di snapshot) generato in file .dmp.

Un esempio di comando per la conversione da file .vmss a .dmp è il seguente:

vmss2core -W <nameOfVM>.vmss

Come riportato nella Technical note di VMware, il tool sopra descritto è incluso nel path seguente se Workstation è istallato su un host Windows:

C:\Program Files\VMware\VMware Workstation

Se il vostro host è Linux based, il tool vmss2core è nel path seguente:

/usr/bin/vmss2core

Se invece usate un host con VMware Fusion istallato su Mac OS, il path è questo:

/Library/Application Support/VMware Fusion/vmss2core

Consigli pratici

Recentemente ho lavorato su un caso in cui vmss2core falliva durante la conversione di un file .vmss.

L’errore visualizzato era come quello di seguito riportato:

C:\Users\alessandro\Desktop>vmss2core.exe -W myfunnyvm-zzzyyyxxx.vmss

The vmss2core version 591240 Copyright (C) 1998-2012 VMware, Inc. All rights res

erved.

region[0]: start=0 end=c0000000.

region[1]: start=100000000 end=140000000.

Cannot locate cpu.CR[0] for VCPU 0.

Cannot create memory.dmp

Finished writing core.

In questa circostanza, e in generale nel caso riscontriate altri problemi di conversione, è possibile copiare il file .vmss o .vmsn su un altro host che dispone del tool e lanciare la conversione.

Nel mio caso il tool ha funzionato con successo generando un interessante file dmp.

Per maggiori dettagli, fare sempre riferimento alla documentazione rilasciata da VMware.

Articoli utili

 

Avvertenza

Trattandosi di un tool di terze parti, Microsoft e il sottoscritto non si assumono alcuna responsabilità derivante dall’utilizzo del tool vmss2core di VMware.
Il contenuto dell’articolo è puramente indicativo e le azioni descritte devono essere vagliate caso per caso.

 

Spero che le informazioni condivise siano state utili per le vostre attività e la vostra curiosità.

 

Buon blog a tutti!

Alessandro Caniglia
Support Engineer
Microsoft Enterprise Platform Support