Archive for the 'vmware' Category

h1

¿Cómo ejecutar Vmware Player desde Samba?

29/04/08

Cuando intentamos ejecutar con el Vmware Player una vm que está compartida por Samba puede que nos encontremos con el siguiente error:

Click para verlo en grande

Si después de revisar los permisos en el servidor Linux (a nivel de ficheros y a nivel de Samba) el problema persiste tenemos que añadir las siguientes líneas al fichero “nombre_maquina_virtual.vmx”:

extendedConfigFile = “nombre_maquina_virtual.vmxf”

virtualHW.productCompatibility = “hosted”

tools.upgrade.policy = “manual”

El fichero “nombre_maquina_virtual.vmxf (ojo a la “f”) lo creamos con el contenido como sigue:


<?xml version="1.0"?>
<Foundry>
<VM>
<VMId type="string">56 4d 0f 02 a7 5d 1b 9b-7e 70 35 ed 95 17 6e 95</VMId>
<ClientMetaData>
<clientMetaDataAttributes/>
<HistoryEventList/></ClientMetaData>
<vmxPathName type="string">nombre_maquina_virtual.vmx</vmxPathName>
</VM>
</Foundry>

El VMid lo sustituimos por el valor del campo uuid.location que hay en el “nombre_maquina_virtual.vmx”.

Después de realizar estos cambios puede que nos encontremos con este otro error:

Si no estás ejecutando ningún sistema de archivos obsoleto tipo FAT16 puede solucionarse incluyendo la siguiente línea en el vmx:

diskLib.sparseMaxFileSizeCheck = “FALSE”

Después de todo esto y si las estrellas se alinean puede que consigamos correr la maldita vm compartida por Samba en local con nuestro Vmware Player.

Viendo que la cosa va para largo doy por inaugurada la categoría VMware.

h1

Defragmentar y hacer shrink a los vmdk’s

11/04/08

Actualizado 15/04/2008: Ahora el script también hace shrink a los vmdk’s.

Sé que me estoy poniendo un tanto pesado con el VMware pero es que llevo tres semanas nada mas que currando con ello y tuneando un poco las máquinas.

Lo que os pongo hoy es un pequeño shell script para automatizar la defragmentación de los ficheros *.vmdk. En principio tenía también que hacerles shrink pero la versión actual estable del VMware Server para Linux, la 1.0.5, no incluye esa opción. Creo que la beta 2.0 si que lo trae así que puede que lo incluya más adelante.

Para que el script también haga shrink hay que bajarse la versión beta 2 del Vmware Server, y copiar los binarios (la carpeta bin que hay dentro del tar) a una carpeta que definiremos en el script. No hace falta instalar esta versión del Vmware Server.

Hay que ejecutarlo en el host. Yo, por ejemplo, lo he metido en el crontab para que se ejecute cada viernes a las 22:00.


#!/bin/bash
#
# defvmdk.sh
# Fecha de creacion: 09-04-2008
#
# Script para defragmentar y hacer shrink a los
# ficheros vmdk de las vm's.
#
# Necesita el fichero defvmdk.cfg desde el que lee
# sobre que vm's debe actuar.
#
# Para poder hacer el shrink necesita tambien los
# binarios de la vesion 2 del Vmware Server (no
# importa que este otra version instalada).
#
###################################################

VMS=/root/bin/defvmdk.cfg
LOG=/root/bin/defvmdk-$(date '+%y-%m-%d').log
FTMP=/root/bin/defvmdk.tmp
VLOG=/tmp/vmware-root/vdiskmanager.log

#Binarios del Vmware Server:
VDIR=/root/bin/vmware/

export PATH=$VDIR:$PATH

echo  >> $LOG
echo "##################################" >> $LOG
echo "####### INICIO DEL PROCESO #######" >> $LOG
echo "##################################" >> $LOG

# Comprobamos que maquinas estan corriendo:
vmrun list > $FTMP

for VDIR in $(grep -v "#" $VMS)
do
  echo >> $LOG
  echo "#######" >> $LOG
  echo "####### Maquina: $VDIR" >> $LOG
  echo "####### Fecha:   $(date)" >> $LOG

  cd $VDIR
  if [ $(ls *.vmx | wc -l) -ne 1 ]; then
    echo >> $LOG
    echo "####### ERROR: No se encuentra el fichero vmx o hay mas de uno." >> $LOG
    continue
  fi
  VM=$(ls *vmx)

  # Paramos la VM si esta corriendo
  if [ $(grep "$VDIR" $FTMP) ]; then
    vmrun stop ./$VM nogui
  fi

  # Defragmentamos y hacemos shrink a los vmdk
  for VMDK in $(ls *.vmdk)
    do
      # Reiniciamos el log de vmware
      cp -p $VLOG "$VLOG.bk"
      > $VLOG

      # Defragmentamos el vmdk
      vmware-vdiskmanager -d $VMDK

      # Hacemos shrink
      vmware-vdiskmanager -k $VMDK

      # copiamos el VLOG
      echo "#######" >> $LOG
      echo "####### VMDK: $VMDK" >> $LOG
      echo "#######" >> $LOG
      echo >> $LOG
      cat $VLOG >> $LOG
    done

    # Dejamos la VM como estaba
    if [ $(grep "$VDIR" $FTMP) ]; then
      vmrun start ./$VM nogui
    fi
done

rm -f $FTMP

echo  >> $LOG
echo "###############################" >> $LOG
echo "####### FIN DEL PROCESO #######" >> $LOG
echo "###############################" >> $LOG

### FIN ###

Como habréis visto en los comentarios necesita un fichero de configuración muy simple en el que pondremos los directorios donde están ubicadas las máquinas virtuales sobre las que queremos actuar. El mío queda más o menos así:

# defvmdk.cfg
# Fecha de creacion: 09-04-2008
#
# Fichero de configuracion del script defvmdk.sh
# El proceso defragmentara los vmdk de las vm's
# no comentadas.
#
#################################################

/VMLocal/lab/1
/VMLocal/lab/2
#/maquina/que/no/se/defragmentara

Para los picas: no os riáis de mi código. Cada uno hace lo que puede XD

h1

Más relojes

9/04/08

Sigo con los relojes de las máquinas virtuales pero hoy me enrollo menos.

Si vuetra máquina host es un Windows y utiliza la tecnología SpeedStep o similar, los relojes de las máquinas virtuales desfasarán de lo lindo. Una posible solución es realizar las mismas modificaciones que se explican en el post anterior para máquinas Linux pero en el fichero:

C:\Documents and Settings\All Users\Application Data\VMware\VMware Server\config.ini

Fuente.

Suerte y recuerda hacer copias de todos los datos importante antes de tocar nada XD

h1

Problemas con el reloj utilizando VMWare en Linux

8/04/08

Tal y como advertí en la entrada anterior aquí va el primero…

Si has intalado VMware en Linux te habrás dado cuenta que el reloj de las máquinas virtuales va más perdido que Adán en el día de la madre. Se atrasa o se adelanta que da gusto y por lo visto esto a los desarrolladores no les gusta por no se qué de los unos logs… XD

Tienes una posible solución por aquí. No voy a entrar a comentarla porque creo que está bastante claro y, sobre todo, porque a mi no me funcionó.

Pero lo que si me funcionó es esto otro. Resulta que las máquinas que tenemos utilizan la tecnología Intel SpeedStep (AMD tiene algo parecido llamado PowerNow o Cool’n'Quiet). Estas tecnologías lo que hacen es modificar la frecuencia del procesador según la carga de trabajo. ¿Y cómo sé yo si mi procesador gasta de esto? Pues yo lo averigüé cotilleando el fichero /proc/cpuinfo con la máquina host “en reposo”:

[root@localhost ~]# head /proc/cpuinfo
processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 15
model name: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping: 11
cpu MHz: 1596.000
cache size: 4096 KB
physical id: 0
siblings: 4
[root@localhost ~]#

Si te fijas un poco el nombre del procesador dice que es a 2,4 GHz pero la velocidad real es de 1,6. Sospechoso, sospechoso, …

Para solucionarlo sólo tenemos que editar el /etc/vmware/config del host y añadir las siguientes líneas:

host.cpukHz = XXXXXXX
host.noTSC = TRUE
ptsc.noTSC = TRUE

Sustituyendo las equis por la velocidad máxima de tu procesador en kilohercios (2400000 en mi caso).

Reiniciamos el servicio de vmware y listo.

Por último asegúrate de tener desactivado en las máquinas virtuales cualquier software de sincronización horaria tipo ntpd.

Actualizado: También existe una solución si la máquina host es un Windows. Ahora mismo la estoy probando. Si funciona os contaré.

Más actualizado: Probado y me funciona en Windows.