Master of VHDs

Entre las múltiples posibilidades que nos ofrecen los VHDs, una que llevo mucho tiempo usando pero que todavía no había “documentado” aquí, es la de usar un VHD maestro a partir del cual se generan nuestras instalaciones y despliegues. En mi caso, lo que hago es tener un VHD por cada versión de sistema operativo que suelo usar, tanto para máquinas virtuales como para máquinas físicas. Cuando necesito hacer un despliegue, solo tengo que realizar copias de esos VHDs de referencia a las ubicaciones donde se van a instalar las máquinas virtuales, o a las carpetas donde vamos a almacenar los discos correspondientes a los arranques nativos de la máquina física.

Estos VHD maestros, o de referencia, no son más que un volcado del DVD de instalación a un disco virtual, de tal manera que, cuando se arrancan por primera vez ,se ejecuta el Setup sobre la misma partición, y en pocos minutos tenemos nuestra instalación terminada. La última vez que enseñé esto a alguien, hemos tardado 10 minutos en crearnos una máquina virtual y tenerla funcionando desde cero.

 

Requisitos

Antes de empezar a crear nuestros VHDs maestros es necesario que tengamos a mano los elementos que nos ayudarán a construirlos. Además, parte de los procedimientos que se describen en este artículo los tenemos que realizar en Windows 7, Windows Server 2008 R2, o las versiones de Windows PE correspondientes a estos (como las que se usan durante la instalación, por ejemplo), ya que los sistemas operativos anteriores no soportan el manejo de VHDs. Estas son las herramientas necesarias y que debemos obtener o instalar previamente:

El AIK y el complemento del AIK se descargan en formato .iso, por lo que tenemos dos opciones a la hora de instalarlos, o bien los grabamos en un DVD o usamos cualquier herramienta que sea capaz de abrir este formato, como WinRAR, PowerISO o similares. Se puede incluso usar una máquina virtual que tengamos funcionando, mapeamos la imagen .iso y el disco donde se quiera dejar el contenido y realizamos la copia. Está claro que este método es más complejo pero si ya lo tenemos montado nos ahorramos la instalación de herramientas adicionales. Bueno, confieso que es el que suelo usar yo. Smile

El AIK sigue un proceso de instalación como el de cualquier otra aplicación, pero el Complemento del AIK para el SP1 es simplemente un refresco de la imagen de Windows PE contenida en el AIK para Windows 7. La instalación de este complemento consiste en la copia directa a la ruta correspondiente del AIK, sobrescribiendo la versión anterior. Por ejemplo, si nuestro DVD (o ruta donde está montado el .iso) del Complemento, es la unidad D: y el AIK lo tenemos instalado en la unidad C: en “Program Files”, este es el ejemplo del comando que tendríamos que lanzar:

xcopy E:\ "C:\Program Files\Windows AIK\Tools\PETools" /ERDY

 

Creación del VHD

Este es el primer paso en la ceación de nuestros VHDs maestros, para ello usaremos discos dinamicos, debido al menor espacio ocupado y a la flexibilidad, ya que en cualquier momento se pueden convertir en discos de tamaño fijo. Tenemos dos metodos para crear nuestros VHDs, usando la consola de gestión de discos (diskmgmt.msc), o la herramienta de línea de comando (diskpart).

Los VHDs que creamos para las máquinas virtuales y para arranques nativos del sistema operativo son algo distintos. Los primeros suelen tener la partición de arranque, que se suele crear de forma automática, con un tamaño de 100MB, durante el proceso de instalación, y la de sistema operativo. En el caso de los discos para arranques nativos, estos solo pueden contener una partición, la partición de arranque suele estar en el disco físico.

DiskMan-VHDs
Los dos formatos de VHD

Como tenemos dos herramientas distintas para crear los discos y dos esquemas de particiones, según el uso que se le vaya a dar a los VHDs, usaremos los dos procesos, uno por cada tipo de VHD.

Empecemos por el VHD maestro para arranques nativos, el que solo puede contener una partición, este lo vamos a crear a través de la consola de gestión de discos. El proceso sería el siguiente:

 

VHDMaster-Create

  1. En el menú “Action” seleccionar “Create VHD”.

  2. Introducir la ruta donde vamos a guardar el fichero, el tamaño máximo y seleccionar el tipo de disco virtual “Dynamically Expanding”.

  3. Inicializar el disco con la opción “Initialize Disk, en el menú contextual

  4. Seleccionar el tipo de esquema de particiones.

    Nota: Actualmente la opción GPT no funciona para el arranque de máquinas virtuales ya que estas no tienen soporte UEFI

  5. Creamos la partición de sistema operativo, pulsando botón derecho sobre el espacio libre en disco y seleccionando “New Simple Volume”

  6. En el asistente de creación de volumen indicamos el tamaño de la partición, la letra de unidad que le asignaremos, los parámetros del sistema de ficheros y el nombre del volumen.

 

VHDMaster-Partiton

 

Veamos ahora como crear el segundo VHD maestro a través de la línea de comando, el que vamos a usar para nuestras máquinas virtuales y que contiene las dos particiones: Arranque + Sistema Operativo. El proceso a seguir en este caso es:

  1. Lanzar la herramienta diskpart desde la línea de comando.

  2. Crear el fichero VHD, indicando la ruta, el tamaño (en MB) y el tipo.

    create vdisk file=”Y:\Windows 2008 R2-VM.vhd” type=EXPANDABLE maximum=20480

  3. Seleccionar el VHD que acabamos de crear.

    select vdisk file=”Y:\Windows 2008 R2-VM.vhd”

  4. Montar el VHD.

    attach vdisk

  5. Crear y formatear la partición de arranque.

    create partition primary size=100

    format fs=NTFS label=”Boot”

  6. Crear y formatear la partición de sistema.

    create partition primary

    format fs=NTFS label=”Windows 2008 R2”

  7. Asignar una letra de unidad a la partición de sistema.

    assign letter=N

 

Volcado de la instalación al VHD

El siguiente paso de nuestro proceso consiste en volcar la instalación del sistema operativo a estos discos que acabamos de crear. Para realizar este paso necesitamos una de las herramientas (imagex) que está incluida en el Windows AIK. Esta herramienta también es de línea de comando pero su uso es muy sencillo, la podemos encontrar dentro de la carpeta donde hemos instalado el Windows AIK, en la ruta Windows AIK\Tools\[ x86 | amd64 | ia64 ]. En la última carpeta de la ruta, es importante seleccionar la arquitectura adecuada a la máquina donde estamos ejecutando las herramientas.

  • Antes de volcar la imagen del sistema operativo tendremos que averiguar cual es el número de índice correspondiente, dentro del fichero de instalación install.wim. Para ello obtendremos el listado completo de imágenes disponibles en ese .wim con un comando similar al que se encuentra abajo, donde D: \ es la ruta del DVD de instalación:

    imagex /info D:\sources\install.wim

    La salida generada por este comando es algo similar a esto:

    ImageX Tool for Windows
    Copyright (C) Microsoft Corp. All rights reserved.
    Version: 6.1.7600.16385

    WIM Information:
    ----------------
    Path: D:\sources\install.wim
    GUID: {e23be84e-072c-446c-98ab-e939c3bc4c60}
    Image Count: 8
    Compression: LZX
    Part Number: 1/1
    Attributes: 0xc
    Integrity info
    Relative path junction

    Available Image Choices:
    ------------------------
    <WIM>
    <TOTALBYTES>2809390693</TOTALBYTES>
    <IMAGE INDEX="1">
    <DIRCOUNT>13558</DIRCOUNT>
    <FILECOUNT>61518</FILECOUNT>
    <TOTALBYTES>10510643622</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CB8936</HIGHPART>
    <LOWPART>0x389E87CA</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CB894F</HIGHPART>
    <LOWPART>0x6332A038</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>9</ARCH>
    <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
    <EDITIONID>ServerStandard</EDITIONID>
    <INSTALLATIONTYPE>Server</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>ServerNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>en-US</LANGUAGE>
    <DEFAULT>en-US</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7601</BUILD>
    <SPBUILD>17514</SPBUILD>
    <SPLEVEL>1</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows Server 2008 R2 SERVERSTANDARD</NAME>
    <DESCRIPTION>Windows Server 2008 R2 SERVERSTANDARD</DESCRIPTION>
    <FLAGS>ServerStandard</FLAGS>
    <HARDLINKBYTES>3530249718</HARDLINKBYTES>
    <DISPLAYNAME>Windows Server 2008 R2 Standard (Full Installation)</DISPLAYNAM
    E>
    <DISPLAYDESCRIPTION>This option installs the complete installation of Window
    s Server. This installation includes the entire user interface, and it supports
    all of the server roles.</DISPLAYDESCRIPTION>
    </IMAGE>

    <IMAGE INDEX="3">
    <DIRCOUNT>13558</DIRCOUNT>
    <FILECOUNT>61510</FILECOUNT>
    <TOTALBYTES>10511024733</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CB8936</HIGHPART>
    <LOWPART>0x389E87CA</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CB894F</HIGHPART>
    <LOWPART>0xE1C3B5F4</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>9</ARCH>
    <PRODUCTNAME>Microsoftr Windowsr Operating System</PRODUCTNAME>
    <EDITIONID>ServerEnterprise</EDITIONID>
    <INSTALLATIONTYPE>Server</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>ServerNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>en-US</LANGUAGE>
    <DEFAULT>en-US</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7601</BUILD>
    <SPBUILD>17514</SPBUILD>
    <SPLEVEL>1</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows Server 2008 R2 SERVERENTERPRISE</NAME>
    <DESCRIPTION>Windows Server 2008 R2 SERVERENTERPRISE</DESCRIPTION>
    <FLAGS>ServerEnterprise</FLAGS>
    <HARDLINKBYTES>3530139554</HARDLINKBYTES>
    <DISPLAYNAME>Windows Server 2008 R2 Enterprise (Full Installation)</DISPLAYN
    AME>
    <DISPLAYDESCRIPTION>This option installs the complete installation of Window
    s Server. This installation includes the entire user interface, and it supports
    all of the server roles.</DISPLAYDESCRIPTION>
    </IMAGE>

    </WIM>

  • Volcar la imagen deseada con ImageX.

    imagex /apply d:\sources\install.wim 3 N:

Opciones de la línea de comandos de ImageX

 

Preparación del arranque

Llegados a este punto lo único que nos queda por hacer es preparar el VHD para que se pueda arrancar desde el mismo. Este paso solo lo tenemos que realizar si se trata de un VHD maestro para máquinas virtuales.

  • Escribir el sector de arranque y el Master Boot Record. Para poder realizar este paso tenemos que asignar previamente una letra de unidad a la partición “Boot” que hemos creado antes. A modo de ejemplo, vamos a suponer que hemos asigando la letra M: .

    La herramienta que usaremos para preparar el sector de arranque es bootsect.exe y la podemos encontrar dentro del DVD de instalación del sistema operativo en la carpeta \Boot, o en el Windows AIK en la ruta Windows AIK\Tools\PETools\[ x86 | amd64 | ia64 ] , una vez más usaremos la carpeta correspondiente a la arquitectura de la máquina donde se esté ejecutando el comando.

    bootsect /nt60 M: /mbr

  • Marcar la partición de arranque como activa. Aquí también tenemos dos opciones, o bien lo hacemos a través de la consola de gestión de discos, pulsando el botón derecho sobre dicha partición y seleccionando “Mark Partition as Active”, o bien a través de la línea de comando, usando el diskpart.exe. En este último caso, el comando de diskpart que tendremos que usar es “active”, sin parámetros, por lo que tenemos que tener esa partición seleccionada previamente.

    Opciones de línea de comandos de Bootsect

  • Finalmente crearemos la información de arranque (BCD), con el comando bcdboot.exe. Este comando lo podemos encontrar dentro de la partición de sistema operativo de nuestro VHD, dentro de la carpeta de Windows, más concretamente en %WINDIR%\System32, o en el Windows AIK en la ruta Windows AIK\Tools\[ x86 | amd64 | ia64 ] . Antes de ejecutar el comando es importante que ambas particiones de nuestro VHD se encuentren montadas y mapeadas con letras de unidad. En nuestro ejemplo tenemos:

    • Boot – M:
    • Windows 2008 R2 – N:

    El comando a ejecutar sería el siguiente, donde el parámetro “/s” especifica la partición de arranque donde se escribirá la información:

    bcdboot N:\Windows /s M:

    Opciones de línea de comandos de BCDboot

 

¡Enhorabuena Campeones!

Si habéis logrado realizar todo este proceso os podéis considerar unos verdaderos Maestros de los VHDs. Hemos alcanzado nuestro objetivo de tener imágenes de sistema operativo en VHDs maestros, que nos sirvan para hacer despliegues muy rápidos de máquinas físicas o virtuales.

Está claro que esto lo podemos mejorar más todavía, por ejemplo, automatizando el proceso de Setup de Windows con un fichero de respuestas. Otro aspecto que nos puede ser útil es, automatizar este proceso que hemos realizado, y para ello hay un script que está disponible en MSDN, sí todavía os quedan fuerzas lo podéis probar, se llama wim2vhd. Smile

Windows(R) Image to Virtual Hard Disk (WIM2VHD) Converter

 

¡Saludos virtuales!

 


Entradas relacionadas:

Technorati Tags: Windows 7,Windows Server 2008 R2,vhd,Virtual Disk