Convertir de VMware a KVM una máquina virtual con Windows 2003 Server

Desde hace tiempo, el equipo de VMware ha decidido dejar de dar soporte a VMware Server, siendo la última versión disponible para Linux la 2.0.2, la cual da muchos problemas a la hora de ser instalada en sistemas con kernel superior al 2.6.18. He intentado instalarlo sin éxito en Scientific Linux 6.0 64 bits (kernel 2.6.32), sin embargo no me ha dado ningún problema en una Centos 5.6 64 bits (kernel 2.6.18).

Como últimamente ha evolucionado mucho KVM y los comentarios son bastante buenos, además de tener un futuro prometedor (Red Hat ha apostado por él en detrimento de Xen, por ejemplo), me he decidido por migrar mis máquinas virtuales a este nuevo entorno libre de virtualización.

El problema que me he encontrado es que tras realizar la migración del disco de VMware a KVM, la máquina virtual no arrancaba y salía un pantallazo azul, que no dejaba acceder al sistema ni en modo a prueba de fallos.

Buscando y buscando encontré la solución al problema, que fundamentalmente consiste en que KVM necesita que los discos sean tipo IDE en máquinas virtuales basadas en Windows, mientras que VMware utiliza discos SCSI.

Los pasos que relaciono a continuación han sido probados en una instalación de Scientific Linux 6.0 64 bits.

  1. Arrancar la máquina virtual y desinstalar las VMware-Tools
  2. Instalar el siguiente parche del registro para habilitar el soporte de ficheros IDE: mergeide.reg
  3. Comprobar que existen los archivos Atapi.sys, Intelide.sys, Pciide.sys y Pciidex.sys en la carpeta %SystemRoot%\System32\Drivers. Si falta alguno, puede extraerse de %SystemRoot%\Driver Cache\I386\Driver.cab
  4. Apagar la máquina virtual
  5. Si el disco de la máquina virtual en VMware está dividido en varios ficheros (por ejemplo de 2 GB cada uno) es necesario convertirlo en un solo archivo:
    $ vmware-vdiskmanager -r disco-origen.vmdk -t 0 disco-destino.vmdk
  6. Convertir el disco virtual al formato de KVM:
    $ qemu-img convert -f vmdk disco-destino.vmdk -O qcow2 disco-destino.qcow2
  7. Ahora solo falta crear la máquina virtual con virt-manager y asignarle el disco anterior

Referencias:

Eso es todo

28 comentarios en «Convertir de VMware a KVM una máquina virtual con Windows 2003 Server»

  1. GRACIAS! GRACIAS! GRACIAS! me estaba volviendo loco con 2003 y mi plataforma cloud bajo kvm

    Un Saludo y sigue escribiendo articulos como este!

    Emilio

    Responder
  2. No he probado con esa versión de Windows, aunque tengo la intuición de que sí funcionará. Una de las ventajas de trabajar con máquinas virtuales es que puedes tener tantos clones como quieras de una misma máquina y hacer las pruebas sin dañar el sistema original. Por eso te animo a que lo intentes sobre una copia de tu sistema. Te agradecería que dejases aquí el resultado del experimento (si lo llegas a realizar).

    Responder
  3. Hola Antonio, veo que estas usando Scientific Linux, yo estoy preparando un servidor para de prueba y me habia decantado en Centos 6, porque era la version mas usada para entornos de servidor, he leido por Internet, que un desarrollador de Centos se fue a Scientific Linux, por el ambiente que habia entre los desarrolladores y para uno, deberia dar mas seguridad una distribucion mantenida por el Cern, pero aun estoy en la duda, que razones te ayudaron a cam biarte a Scientific Linux?

    Saludos.

    Responder
    • Hola Christian, básicamente fue mi impaciencia, pues necesitaba comenzar un nuevo proyecto y no quería montarlo sobre la versión 5, cuando Red Hat ya estaba casi a punto de sacar la 6.1. Centos estaba aún mareando la perdiz y la 6.0 no vió la luz hasta bien entrado el 2011, por lo que decidí usar SL, y la verdad no me arrepiento. Ahora parece que el equipo de Centos se ha puesto las pilas.

      Yo siempre me he decantado por Centos, nunca he tenido problemas y en los servidores que tengo en proyectos serios es la que uso y es la que te aconsejo. Leí lo mismo que tú respecto a los problemas del equipo e desarrollo de Centos y eso me hizo dudar. SL la estoy manteniendo como equipo de escritorio desde entonces y tiene la ventaja de que tiene integrados los repositorios no oficiales tipo EPEL, RPMFORGE, flash, Java, etc.

      En fin, creo que puedes elegir la que quieras pues en el fondo son dos sabores bastante fiables de RedHat.
      Espero haberte ayudado un poco.
      Saludos.

      Responder
  4. Muchas gracias por la información.
    Aprovecho para consultarte una duda, yo tengo WS2008 (físico), y lo pienso virtualizar para ponerlo bajo proxmox; en este caso debería vistualizar el ws2008 con vmware convert haciendo que el disco sea un solo archivo, y luego levantar desde proxmox esta maquina virtual?
    Desde ya muchas gracias.
    Saludos.

    Responder
    • Hola Carlos, la virtualización de una máquina física puede ser muy simple si el destino es una plataforma VMware, pues con El VMware Convert lo puedes resolver en un único paso. Si la plataforma es otra distinta, entonces tendremos que ingeniárnoslas para realizar dicha conversión, pues por lo general no solemos disponer de herramientas que nos faciliten la tarea.

      No tengo experiencia en Proxmox, pero hasta donde yo sé está basado en KVM al igual que Qemu. A mí me sirvió el procedimiento que explico en el artículo para migrar de VMware a KVM y creo que a ti también puede resolverte el problema. Eso sí, no creo que baste con hacer la conversión y arrancar la máquina virtual. Por lo menos deberás convertir el fichero del disco duro al formato de KVM y asegurarte de cumplir el resto de condiciones que describo, lo cual te obligará a arrancar previamente la m.v. en VMware para asegurarte de que arranca antes de la conversión definitiva a KVM.

      Resumiendo, 1) virtualizar la máquina física con VMware Convert, 2) arrancarla en VMware y probar que funciona (puedes utilizar el VMware Player), 3) realizar los ajustes indicados en mi artículo, 4) convertir de VMware a KVM y 5) arrancar en Proxmox y esperar que funcione.

      Si esto no te funciona te propongo otra alternativa que está cobrando bastante fuerza y que además está recomendada por la mismísima IBM, y es clonar el disco duro de la máquina física con Clonezilla. Después deberías crear en tu Proxmox una máquina virtual desde 0, es decir vacía. La arrancas con la ISO de Clonezilla y restauras la imagen del disco duro sobre la máquina virtual. Debería funcionar sin mayores problemas. El único inconveniente es que Clonezilla no funciona sobre discos RAID. En cualquier caso te dejo un enlace para que tengas más información.

      http://www.ibm.com/developerworks/ssa/linux/library/l-clonezilla

      Espero haberte ayudado. Saludos y suerte.

      Responder
  5. Hola Cristian,
    Muy buenos tus consejos y experiencia expuesta, han servido un montón muchas gracias!
    Tengo VMWare 2.0 montado sobre Windows Server 2008, mi ideal era instalar directamente VMWARE pero no era capaz de detectar el RAID1 instalado, tienes algún consejo o experiencia con RAID1 y VMWare?

    Saludos, atte.
    Germán

    Responder
    • Hola Germán, el problema de seguir con la versión 2 es que ya no hay soporte de ningún tipo. Deberías considerar seriamente otras alternativas.

      Si has intentado instalar ESXi directamente sobre tu hardware y no te reconoce el RAID, lo más probable es que sea un «fake raid» de estos que algunas placas base llevan integrado y que mediante los drivers correspondientes sobre Windows hacen que el RAID sea posible. Esto no suele funcionar con ESXi, ya que es una distribución basada en linux Red Hat, y el «fake raid» y Red Hat no se llevan demasiado bien (por lo menos esa ha sido mi experiencia). Y también te diré que el ESXi no soporta RAID por software.

      Por tanto, para ESXi debes tener una controladora RAID dedicada que gestione de forma nativa y absolutamente independiente el RAID. Sólo así podrás tener RAID con ESXi. En cualquier caso, asegúrate de que el hardware que eliges esté en las listas de compatibilidad de VMware.

      Por otra parte te diré que hace tiempo dejé de usar VMware en nuevos proyectos y me pasé a KVM-Qemu, aunque aún me quedan algunas máquinas con el VMware server 2.0.2.

      Saludos.

      Responder
  6. Muchas Gracias Cristian, tu diagnóstico concuerda al que hemos encontrado, y precisamente los servidores no estan en la lista de compatibilidad, y tuve que instalar windows 2008 server + driver de tarjeta raid incorporada en el servidor e instalar VMWAre server 2.0. para ver el RAID1 .
    Y la solución es la que indicas: instalar una nueva controladora RAID para poder utilizar RAID1 por hardware que es lo que necesitamos.
    Revisaré la opción de KVM-Qemu y ver si nos permite trabajar similar o mejor a vmware (varias MV con windows server 2008R2+SqlServer R2).

    Muchas gracias!

    Responder
    • Hola de nuevo, la solución para instalar ESXi pasa obligatoriamente por instalar una controladora RAID, por ejemplo de Adaptec, que suelen ser la referencia (la 6405E no es muy cara y creo que es compatible). En cualquier caso, siempre será mucho mejor usar ese tipo de controladoras antes que un «fake raid» o un raid por software, tanto en rendimiento como en seguridad. Y esto es válido independientemente de la plataforma de virtualización que elijas (VMware, KVM, etc.)

      Por otra parte, KVM va tan bien como pueda ir VMware, aunque este último suele ser la referencia por ser un producto comercial muy avanzado. No obstante yo uso KVM en producción desde hace un par de años y no he tenido ningún problema, eso sí, como viene integrado en el kernel del linux deberás saber administrar este sistema operativo, y si no tienes experiencia puede ser un problema.

      Por poder, puedes hacer lo mismo que con VMware, y por supuesto virtualizar varias máquinas con W2008 y SQL Server o lo que te plazca. Es muy estable y tiene buen rendimiento.

      Ah! y mi nombre es Antonio.

      Saludos.

      Responder
  7. UPS!! GRACIAS «ANTONIO»!!!!
    Muchas gracias por los consejos, revisare lo de la controladora indicada.
    ¿Has probado XenServer de Citrix, tienes alguna referencia?

    Saludos, atte.
    Germán Torres

    Responder
    • De nada, es un placer aportar algo de luz en este mundillo de la virtualización. Al fin y al cabo yo también acudo a los foros en busca de respuestas a las cuestiones que van surgiendo …

      Sobre XenServer de Citrix no puedo decirte mucho, pues no lo he tocado nunca. Al tratarse de un software comercial, como VMware, supongo que estará bastante desarrollado, pero desconozco si tienen versiones «free» y tampoco sé como van. Citrix siempre ha tenido buena reputación en entornos Windows con escritorio remoto y terminal server; sin ir más lejos, la administración pública lo utiliza (catastro).

      Desde el punto de vista de la virtualización, Xen adquirió cierto «prestigio» cuando Red Hat decidió incluirlo de forma nativa en las ediciones Enterprise Linux anteriores a la versión 5. Pero luego decidió cambiar y ahora lo que incluye es KVM. No sé el motivo pero es lo que hay. Saca tus propias conclusiones.

      Saludos

      Responder
  8. Antonio:

    Gracias por toda la informacion que compartes. Te cuento soy nuevo en la virtualización y deseo traspasar una so virtualizado en vmware a proxmox, pero en realidad no sé donde empezar.

    Responder
    • Hola Marco, no tengo experiencia en Proxmox, pero hasta donde llego sé que es un sistema basado en KVM, por lo que la migración debe ser similar a la mía. El problema es que no sé que facilidades puede darte para realizar la migración. Yo lo hice todo a través de la línea de comandos de linux y siguiendo los pasos que detallo en mi artículo. Al fin y al cabo me basé en un artículo sobre proxmox para realizar la conversión de mis máquinas virtuales.

      En cualquier caso puedes escoger la opción de exportar la máquina virtual con Clonezilla. Revisa los comentarios anteriores, pues ya trato este tema en uno de ellos.

      Saludos

      Responder
  9. Hola, dices en tu explicación que tienes el archivo vmdk dividido en varios trozos de 2GB y la verdad es que estaba buscando exactamente esto ya que mi vmdk ocupa 10 GB y no puedo hacer una copia de seguridad al no permitirme copiar a un disco duro externo un archivo tan grande. Por favor, ¿me podrías explicar cómo podría hacer esto? Me harías un gran favor porque la instalación que hice en ese vmdk es un tanto compleja como para repetirla.

    Responder
    • Hola Pedro, lo que yo explico en el artículo es justamente lo contrario, pasar de un disco duro dividido en varios trozos a un único fichero.

      He consultado la documentación del vmware-vdiskmanager y creo (no lo he probado) que podrías convertir el disco duro actual en otro con varios fragmentos de 2GB con el siguiente comando:

      $ vmware-vdiskmanager -r disco-origen.vmdk -t 1 disco-destino.vmdk (Sin preasignación de espacio)
      ó
      $ vmware-vdiskmanager -r disco-origen.vmdk -t 3 disco-destino.vmdk (Con preasignación de espacio)

      Antes de realizar cualquier operación deberás parar la máquina virtual y sacar una copia de seguridad. Una vez acabada la conversión tendrás que crear una nueva máquina virtual y asignarle el disco duro creado. Debería arrancar sin problemas.

      Si realizas la conversión, te agradecería que dejases aquí tu comentario a cerca de los resultados obtenidos.

      Te dejo a continuación la ayuda del comando.

      Saludos y suerte.

      ======================================================
      VMware Virtual Disk Manager – build 203138.
      Usage: vmware-vdiskmanager OPTIONS |
      Offline disk manipulation utility
      Operations, only one may be specified at a time:
      -c : create disk. Additional creation options mustbe specified. Only local virtual disks can be created.
      -d : defragment the specified virtual disk. Only local virtual disks may be defragmented.
      -k : shrink the specified virtual disk. Only local virtual disks may be shrunk.
      -n: rename the specified virtual disk; need to specify destination disk-name. Only local virtual disks may be renamed.
      -p : prepare the mounted virtual disk specified by the drive-letter for shrinking.
      -r
      : convert the specified disk; need to specify destination disk-type. For local destination disks the disk type must be specified.
      -x : expand the disk to the specified capacity. Only local virtual disks may be expanded.
      -R : check a sparse virtual disk for consistency and attempt to repair any errors.

      Other Options:
      -q : do not log messages

      Additional options for create and convert:
      -a : (for use with -c only) adapter type (ide, buslogic or lsilogic)
      -s : capacity of the virtual disk
      -t : disk type id

      Options for remote disks:
      -h : hostname of remote server
      -u : username for remote server
      -f : file containing password
      -P : optional TCP port number (default: 902)
      -S : specifies that the source disk is remote, by default the remote options are assumed to refer to the destination.

      Disk types:
      0 : single growable virtual disk
      1 : growable virtual disk split in 2GB files
      2 : preallocated virtual disk
      3 : preallocated virtual disk split in 2GB files
      4 : preallocated ESX-type virtual disk
      5 : compressed disk optimized for streaming

      The capacity can be specified in sectors, KB, MB or GB.
      The acceptable ranges:
      ide adapter : [1MB, 950.0GB]
      scsi adapter: [1MB, 950.0GB]
      ex 1: vmware-vdiskmanager -c -s 850MB -a ide -t 0 myIdeDisk.vmdk
      ex 2: vmware-vdiskmanager -d myDisk.vmdk
      ex 3: vmware-vdiskmanager -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
      ex 4: vmware-vdiskmanager -x 36GB myDisk.vmdk
      ex 5: vmware-vdiskmanager -n sourceName.vmdk destinationName.vmdk
      ex 6: vmware-vdiskmanager -r sourceDisk.vmdk -t 4 -h esx-name.mycompany.com \
      -u username -f passwordfile «[storage1]/path/to/targetDisk.vmdk»
      ex 7: vmware-vdiskmanager -k myDisk.vmdk
      ex 8: vmware-vdiskmanager -p
      (A virtual disk first needs to be mounted at
      )

      Responder
  10. Muchas gracias,

    Sí, lo voy a intentar cuando tenga un rato porque supongo que esto se llevará su tiempo. Pero antes me gustaría que me aclararas algunas cosas porque tampoco estoy muy puesto en esto y no quiero hacerlo mal.

    1. Al ejecutar esa opción, ¿no se crea un nuevo archivo vmdk? Entonces, ¿por qué es necesario realizar una copia de seguridad? ¿no se supone que el disco de origen queda intacto? En cualquier caso, hacer la copia de seguridad supone copiar el vmdk a otra ubicación por si acaso ¿no?.

    2. Hace poco aumenté el espacio del disco mediante la opción
    vmware-vdiskmanager -r DISCO_VMDK_ORIGINAL -t 0 DISCO_VMDK_EXPANDIBLE
    Entonces, el 0 es single growable virtual disk, por lo que debería utilizar la opción con el 1, ¿no?

    Gracias de nuevo.

    Responder
    • Hola de nuevo.

      Lo de hacer la copia de seguridad lo puse por inercia. Tienes razón en que se crea un nuevo disco duro y se preserva intacto el original. En cualquier caso, como bien dices, una copia de seguridad con la máquina virtual parada se limita a copiar la carpeta donde esté ubicada a otro directorio.

      Respecto al punto 2), lo que tú preguntas es exactamente lo que te expico. Si lo quieres expandible utiliza «-t 1» y si lo quieres con todo el espacio reservado utiliza «-t 3».

      Saludos.

      Responder
  11. Hola

    Muchas gracias por todo porque, efectivamente, ha funcionado todo a la perfección. El archivo original queda intacto y el disco que crea está partido en varios de alrededor de 2GB. Finalmente ha iniciado correctamente.

    Saludos y gracias por tu labor.

    Responder
  12. Muy buena su ayuda con todas las personas que estamos iniciando en el mundo de la virtualizacion, yo tengo un problema con una maquina que virtualice en win2000 con vmware converter, quiero pasarla a kvm y arrancarla y quiero hacer un pci passthrough para una tarjeta externa, crees que es posible y que consejo me da.
    gracias.

    Responder
    • Hola nerley, lo que me comentas ya lo he realizado yo con varios servidores físicos que corrían con W2000 Server. Primero se virtualiza con vmware converter. Después arranca la máquina virtual con vmware y revisa que todo funciona bien hasta que quede estable. Por último, para pasarla a KVM, sigue las instrucciones que describo en el artículo, en particular lo referente al soporte de discos IDE. Todo debería funcionar a la primera. Está más que probado.

      Respecto a realizar un «pci passthrough» … nunca he utilizado esta función. Tampoco lo he necesitado y no sé en qué escenario sería de utilidad. Si puedes indicarme para qué lo necesitas podría investigar algo …

      Saludos.

      Responder
  13. Muchas gracias antonio por tomarse el tiempo en responder, el problema es un equipo con un software del que no tengo el respaldo y esta en un equipo viejo este software se comunica por medio de una tarjeta de comunicaciones para una aplicacion muy especifica, (no es comercial), entonces ya tengo el equipo virtualizado con el vmware comverter, con lo que he leido creo que la mejor opcion es migrar a kvm y en un equipo con tecnologia en el procesador para virtualizacion intel VT-x es posible realizar este salto de la parte virtual a la parte fisica y poder comunicar este equipo directamente por esta tarjeta que esta conectada en el puerto pci.
    Gracias.

    Responder
  14. Hola Antonio,. gracias por toda la informacion que breindas por este medio, tengo una consulta espero que me puedas ayudar, yo tengo una maquina virtual que esta corriendo en ws2003 lo que pasa que me consume muchos recursos, en esta maquina tengo licencias que no quiero perderlos, hay la posivildad que este sistema opertivo que es de ws2003 lo pase a un windows xp sin perder las licencias?, gracias por tu apoyo brindado.

    Responder
    • Hola José, me temo que no es posible convertir/migrar un sistema Windows de 2003 Server a XP. Deberías hacer una instalación limpia en XP de las aplicaciones y configurarlas con sus licencias correspondientes.

      No obstante, no entiendo la necesidad de la migración, pues el W2003 Server suele ser bastante adaptable y no debería consumir más que un XP con las mismas aplicaciones y servicios levantados. Si te consume muchos recursos puede ser que por dos motivos, (1) que los necesite y no te quede más remedio que cambiar de host a otro con más capacidad, o (2) que esté mal dimensionado y esté consumiendo recursos que no necesita realmente. En cualquier caso requiere un estudio detallado de la situación para poder evaluar cual es la mejor solución.

      Saludos.

      Responder

Responder a Christian Cancelar la respuesta