Cabecera PRINCIPAL

Claves: técnico, redes, networks, microsoft, open source, gnu, programador, software, hardware, desarrolladores

Juan Enrique Gómez Péérez

jueves, 14 de octubre de 2010

Creación de maquetas con Windows 7

Se que este post no va muy en la linea de los últimos en que pretendo orientar al campo de virtualización en entornos de Microsoft. Esta necesidad ha ocurrido con un cliente en los últimos días y por eso aportamos la solución aquí.
El cliente ha preparado una maqueta de un sistema basandose en la versión de Windows 7 Professional que viene preinstalado en un equipo HP dc8100SFF, al intentar hacer el sysprep con objeto de hacer el reseal de la maqueta y desplegarla resulta que da un error y no hay forma de hacer el reseal, tras una investigación hemos detectado que Microsoft y por ende sysprep no soporta realizar el reseal de un sistema operativo al que ya se le hizo previamente, como es el caso de los sistemas preinstalados en equipos de fabricantes.

Por ello en este caso tuvimos que recuperar un DVD OEM estandard para instalar el sistema operativo de 0 y que nunca hubiera sufrido un reseal previo. Aprovechando esta circunstancia vamos a explicar como hemos realizado la maqueta con exito.
- PASO 1 -

En primer lugar arrancaremos el equipo con el CD de instalación de Windows 7, el metodo es el mismo para cualquier tipo de SKU (tipo de licencia o producto) da igual que sea OEM, licencia por volumen o Retail, lo importante es que previamente no hubiera sido pasado por un sysprep.

Instalamos el sistema operativo de manera estandard con el DVD original, o bien desde un servidor de implementación, o si tenemos un archivo wim al que le hayamos realizado personalizaciones podremos utilizarlo de la misma manera (las personalizaciones pueden ser añadir drivers, logotipos, urls, etc., igual me animo y escribo otro contando como personalizar el OS).

Si en tu caso tienes una imagen WIM necesitarás un CD con WinPE que incluya la utilidad imagex dentro de el para hacer la instalación final. También necesitarás un medio en el que tengas la imagen wim de Windows 7 a instalar en el equipo. Pincha el disco USB que contenga la imagen WIM antes de arrancar el equipo, introduce el CD de WinPE y arranca el sistema. Esto arrancará una edición de Windows reducida para hacer el despliegue de las maquetas.

Lo primero que haremos será crear las particiones, la manera más sencilla es crear un archivo previamente con la distribución de las particiones que queremos crear en el sistema, la recomendación es crear 3 particiones:

  1. Sistema - Partición pequeña impresindible para que el sistema bote.
  2. OS - Partición que albergará el sistema operativo y los datos de este (podemos crear una cuarta partición para los datos)
  3. Recovery - Partición que contendrá una imagen del sistema operativo instalado con objeto de restaurarlo si fuera necesario en el futuro.
Para realizar esto crearemos un archivo de texto similar al siguiente:


Aquí crearemos una partición R: con 2,5Gb de espacio, una partición S: con un espacio de 100Mb y una última partición C: con el resto de espacio disponible. Este archivo lo tendremos en el disco usb, y desde la ventana de comandos del entorno WinPE ejecutaremos el archivo (ojo, esto eliminará todas las particiones del disco existentes):

DISKPART /s G:\DiskPartScript.txt

Tras la ejecución del comando tendremos nuestro disco particionado, ahora necesitamos restaurar la imagen WIM del disco USB a la partición C:\, para ello usaremos este comando:

IMAGEX /apply G:\Windows7.wim 1 C:\

Esto extraerá la imagen wim sobre la unidad C:, solo nos falta hacer que el sistema bote, para ello usaremos el siguiente comando:

BCDBOOT C:\WINDOWS

[pendiente de subir el sistema de recovery]

Con esto conseguiríamos desplegar el sistema de Windows 7 desde una imagen WIM preconfigurada. Reiniciamos el sistema y arrancará nuestro nuevo y flamante Windows 7.

- PASO 2: Personalización -

Una vez que tenemos instalado nuestro Windows 7 deberemos comenzar a personalizarlo, no es necesario que activemos la licencia, ya que el SYSPREP la eliminará.
  • Instalar los drivers que puedan faltar del sistema
  • Instalar los paquetes de software que deseemos distribuir con nuestra maqueta ya preisntalados. Antivirus, ofimática, lector de PDFs, etc.
- PASO 3: Re-seal -

Una vez que hayamos hecho la personalización, simplemente deberemos ejecutar el comando SYSPREP:

c:\windows\system32\sysprep\sysprep.exe

Aquí es importante que elijamos las siguientes opciones, que abstraerá la imagen del hardware y hará que sea instalable en cualqueir hardware, pero ya incluirá los drivers que hallamos puesto, con lo que si es el mismo modelo se configurará automáticamente:


Es importante seleccionar la opcion OOBE, Generalizar y luego Apagar, sobre todo Apagar, ya que si elegimos reiniciar haremos el reseal pero el sistema volverá a iniciarse y reconfigurarse. Una vez que termine el sistema se apaga y está listo para clonar.

La clonación en el siguiente articulo...

sábado, 2 de octubre de 2010

Ampliación de discos VHD con Instantáneas (parte 2/3)


En la primera parte finalizábamos el articulo dejando en el aire dos posibles soluciones para recuperar el sistema una vez que nos hemos cargado nuestros archivos diferenciales, por ejemplo si hemos montado en una máquina viva directamente el fichero .vhd y este ha sido modificado, dejando inservibles la cadena de ficheros de disco diferenciales llamados .avhd.

Los ficheros .avhd funcionan de la siguiente manera, cuando creamos una instantánea de una máquina virtual el sistema congela el fichero .vhd de los discos duros y queda como solo lectura, a continuación crea un fichero .avhd y lo encadena co
n el primer .vhd, a partir de ese momento cada archivo que sea modificad se guardará completo en este nuevo fichero .avhd. Esto tiene sus ventajas e inconvenientes, la principal ventaja es que si montamos un fichero .avhd con una aplicación que lo permita automáticamente podremos recuperar el archivo que necesitemos completo ya que no guarda la diferencia a nivel de archivo desde que lo congelamos hasta ahora, sino una copia completa del archivo. Esto por contra tiene el problema del gran gasto de disco duro que sufriremos ya que se copia como digo el archivo completo y no las diferencias, pensar en servidores que funcionen con Bases de Datos como SQL Server o Microsoft Exchange, sistemas en los que es fácil encontrarnos con ficheros de base de datos de varios gigas de tamaño, esto hará que los ficheros .avhd crezcan rápidamente.

Esto nos va a permitir que ante una situación en la que queden inservibles los ficheros .avhd por ejemplo por que hemos ampliado el tamaño del disco sin consolidarlos, podamos recuperar las modificaciones posteriores, manualmente eso si.

¿Cómo sacar información de un fichero .avhd?

Los ficheros avhd no son otra cosa que ficheros vhd que contienen en su cabecera un id de enlace a su avhd o vhd padre de manera que podamos mantener un orden en la cadena. Simplemente deberemos descargar alguna de las utilidades que permiten montar ficheros vhd, renombrar el fichero .avhd a .vhd y montarlo con esta utilidad, veremos todos los archivos que contiene el disco diferencial, los cuales podremos copiar y res
taurar sin problemas.

¿Que utilidades existen para montar ficheros .vhd?

A día de hoy hay bastantes la verdad, las más conocid
as son vhdmount las cuales permiten montar el disco vhd desde el administrador de discos de un Windows Vista o Windows 7, o una utilidad gráfica la cual la verdad yo prefiero como Gizmo Drive.

Recuerda que:

Nunca amplíes un volumen de Hyper-V el cual tenga instantáneas, antes elimina todas las instantáneas y apaga la máquina virtual hasta que se consoliden todos los discos, lo verás en la consola de Hyper-V como evoluciona. Si no lo haces así perderás todos tus discos diferenciales.

Si tienes que mover un conjunto de discos de ubicación (por conjunto entiende un volumen compuesto por un .vhd y uno o varios .avhd) muevelos todos j
untos, aseguraté que siempre coges el .avhd correcto que será siempre el más nuevo, si aun así tienes dudas utiliza en la consola de Hyper-V la herramienta "Inspeccionar disco", y nos vamos al directorio donde tenemos los discos .avhd, elegimos el más reciente y tendremos una pantalla como la siguiente:


Si pinchamos en inspeccionar veremos una imagen similar con el siguiente disco en la cadena en sentido a llegar al fichero original .vhd. Simplemente para asegurarnos que ese .avhd es el último en la cadena cada vez que pinchamos en inspeccionar nos fijamos que aparezcan en la cadena todos los archivos que tengamos en el directorio, si nos falta alguno quiere decir que ese .avhd que nos falta es posterior al que pensábamos que era el último en la cadena.
Esto es bastante manual pero permite saber el orden de los .avhd por si no te fías de las fechas o al moverlos de volumen has perdido esa información.


lunes, 23 de agosto de 2010

Monitorización de Hosts Hyper-V Server con Nagios

Desde hace bastante tiempo he estado usando Nagios para la monitorización de mis propias máquinas así como la de algunos clientes para los que trabajo. Todo ha ido perfectamente hasta que hace unos meses comenzamos a desplegar en algunos de ellos Hyper-V Server o Hyper-V Server R2.

Esto hizo que los monitores habituales de uso de procesador así como de memoria dejaran de funcionar, despues de bastante investigación vimos que la falta de roles en estos sistemas también ha acabado con los contadores (performance counter logs) sobre todo los que dependen de las instancias "Processor" y "Memory".

El cliente NSClient++ por defecto monitoriza el contador "\Processor(_Total)\%Processor Time" el cual como he comentado en las versiones de Hyper-V Server ha desaparecido, para darnos una visión mucho más granular sobre la monitorización del procesador (podemos ver, a nivel logico de procesador, de core, el uso por máquina virtual, etc.). En este caso deberemos monitorizar la siguiente instancia que nos dará la información que estamos buscando:

"\Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time"

Con esta entrada tendremos la visibilidad que estamos buscando sobre el consumo global del procesador a nivel de Host. Para hacer que el cliente NSClient++ monitorize esa entrada WMI simplemente editaremos el fichero NSC.ini que se encuentra en el directorio donde hemos instalado el cliente. En el encontraremos una sección denominada [Check System] (y si no estuviera la añadimos) e incluiremos esta linea:

SystemTotalProcessorTime="\Hyper-V Hypervisor Virtual Processor(_Total)\%Total Run Time"

Reinicia el servicio, y ¡voila!. Queda la linea de la memoria pero esa la dejo para ti.

Saludos.

domingo, 15 de agosto de 2010

Ampliación de discos VHD con Instantáneas (parte 1)

Nuevamente vamos a intentar retomar la disciplina de al menos semanalmente incluir un nuevo artículo en este blog. El principal motivo de la demora se debe a que el objetivo final era plasmar en este blog las incidencias atípicas o complejas que como técnico me surgían día a día y como las habíamos resuelto. Desgraciadamente en los últimos tiempos mi vida está en otros lares más que solucionar incidentes en la gestión y organización del equipo de técnicos que tengo en la empresa para la que trabajo. Bueno al lio.

Esta vez el problema que teníamos era el siguiente, servidor virtual sobre Hyper-V (corriendo en un Windows 2008 R2) con varias máquinas virtuales, una de ellas en su volumen E: se había quedado sin espacio suficiente y teníamos que ampliarlo. Utilizando el asistente de la consola de Hyper-V acometieron la ampliación del fichero VHD con éxito, todo funcionó a la perfección.

El problema vino cuando los usuarios nos reportaron que les faltaba información entre dos fechas concretas (más o menos unos 15 días), es decir el último dato que tenían era de hace 15 días, y volvían a tener información desde el mismo día de la ampliación pero en medio no había ni un solo byte.

Tras una pequeña investigación nos dimos cuenta que habíamos cometido un grave error de novato, vamos con la parte técnica. En Hyper-V al igual que en otros sistemas de virtualización permiten obtener instantáneas de la máquina virtual, esto implica básicamente que el sistema congela el fichero que contiene el volumen del que obtenemos la máquina virtual (.VHD en el caso de Hyper-V) y crea un nuevo disco diferencial en el que va guardando los cambios a partir de ese momento (en Hyper-V son ficheros .AVHD), si creáramos una nueva instantánea el sistema congelaría el anterior fichero diferencial y crearía un nuevo fichero diferencial (nuevo fichero .AVHD).

El problema en las soluciones Hyper-V es que cuando ampliamos el disco hay que tener en cuenta previamente que NO TENGAS INSTANTANEAS CREADAS. Es condición imprescindible que los ficheros de disco del volumen que vas a realizar la ampliación están ya consolidados (recuerda que para consolidar los discos debes eliminar las instantáneas que existan, y apagar la máquina para que el sistema comience la consolidación de los discos).

Nuestro problema empieza a verse claro, se realizó la ampliación del volumen sin haber eliminado si quiera las instantáneas que existían, y mucho menos haber consolidado los discos avhd con el vhd original. El sistema amplio el fichero vhd y lo puso en la máquina virtual como el nuevo disco valido, descartando de esta manera los ficheros diferenciales que existían y por tanto perdiendo los datos desde ese momento hasta la fecha en que se hizo la primera instantánea (15 días en nuestro caso).

Ahora si te ha ocurrido algo como esto tienes un problema, si tienes un backup reciente, no es tal problema, pero si resulta que no hay backup de ese volumen y además te das cuenta varios días después del problema (aquí había un fin de semana por en medio), tienes que recuperar la información que has perdido de alguna manera, ya que en la ampliación del volumen VHD el sistema no borra los ficheros AVHD pero los desune del vhd original. Así que tu información está pero no es accesible. Dos soluciones:

- Solución 1: Deshacer los cambios y dejar el volumen como estaba incluyendo los ficheros AVHD.

- Solución 2: Obtener la información que necesitamos extrayéndola de los ficheros AVHD.


fin [fin parte 1]