miércoles, 6 de agosto de 2008

Tutorial: Expandir una imagen de disco de Windows (para usar en XEN)

Como estoy terminando algunos programas que estuve haciendo en Visual Basic 6 (no se rían, era la forma más rápida de hacer esos programas para que funcionaran en cualquier cosa que fuera superior a Windows 98 sin sudar demasiado y sin tener que acudir a las "nuevas tecnologías" de M$) y para poder probarlos, tuve que dedicarle espacio a algunas imagenes de disco con Windos dentro de mi XEN.

La cosa venía bien... asigné 10 GB. a Windows 2000/98, 10 a XP y otros 10 a Vista... pero por lo que pude ver, hice algún cálculo mal, porque resulta ser que al tercer día de tener Vista apenas funcionando, se engulló los 10GB y empezó a escupir popups exigiendo espacio, como comilón en espeto corrido...

Y así fué que, como siempre, tuve que acurrir al pingüino para salvar al engendro de Redmond.

Tutorial: Expandir una imagen de disco de Windows (para usar en XEN)

Primero, hacemos una copia de la imagen, para trabajar sin miedo de destruir nuestra instalación. Cualquier desastre posterior se resuelve volviendo a copiar el respaldo de la imagen original y levantando la máquina virtual nuevamente.

ishtar:/storage/xen/images # cp vista.img vista.img.backup
ishtar:/storage/xen/images # ls -la
total 33999252
drwxr-xr-x 3 root root 4096 Aug 5 09:40 .
drwxr-xr-x 3 root root 4096 Jul 20 19:43 ..
-rw------- 1 root root 10737418240 Aug 4 20:37 vista.img.backup
-rw------- 1 root root 10737418240 Aug 5 10:19 vista.img
-rw------- 3 root root 10737418240 Jul 20 19:45 win2k.img
-rw------- 1 root root 10737418240 Aug 4 00:18 xpx64.img
-rw------- 1 root root 10737418240 Aug 3 03:19 xp.img
ishtar:/storage/xen/images #

Luego, usamos el multifacético y carismático "dd" para expandir el tamaño de la imagen a 20GB (supongo que le alcanzará...):

ishtar:/storage/xen/images # dd if=/dev/zero of=vista.img seek=20000 obs=1M
count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 3.9378e-05 s, 0.0 kB/s
ishtar:/storage/xen/images # ls -la vista.img
-rw------- 1 root root 20971520000 Aug 7 10:39 vista.img
ishtar:/storage/xen/images #

A estas alturas, el archivo de imagen posée el tamaño deseado, que son cerca de 20Gb. Los parámetros seek=20000 y obs=1M definen desde donde vamos a empezar a escribir en el archivo que estamos modificando (algo así como 20000 MB. adelante), lo cual evita que sobreescribamos el contenido de la imagen. El hecho de haber utilizado count=0 solo asegura que en realidad no escribamos nada en el archivo, sino que solamente hagamos que "dd" cambie el límite final del mismo para que quede del tamaño deseado (y por eso sale el mensaje final que dice 0 bytes (0 B) copied.

Ahora solo resta terminar la manipulación iniciando la máquina virtual y utilizando las herramientas del sistema para extender el volúmen al nuevo tamaño total disponible. Podríamos intentarlo con otras herramientas, pero la experiencia dicta que es mejor hacer que el mismo Windos se encargue del trabajo sucio, ya que él sabe mejor de qué se trata.

Mi máquina virtual con Windows Vista Business Edition, se llama "bosta" (in Uruguay, it means "cow shit", a synonym of your "bull shit"... sorry Bill, I couldn't resist...).

ishtar:/storage/xen/images # xm create bosta
Using config file "/etc/xen/vm/bosta".
Started domain bosta
ishtar:/storage/xen/images #

Una vez que la máquina virtual se inicia, vamos al Panel de control (Control Panel), luego a las Herramientas administrativas (Administrative tools), después al Administrador de equipos (Computer Management), y dentro del mismo, vamos a Almacenamiento (Storage). Allí veremos el disco del sistema, con una capacidad total de cerca de 20 GB., y si entramos a sus propiedades, tenemos dentro la partición de 10 GB. actual.


Aquí seleccionamos la partición actual, le hacemos click con el botón derecho y seleccionamos en el menú contextual la opción Expandir volúmen (Extend Volume):


Aparecerá un amistoso asistonto que nos guiará por el proceso de expansión. En un momento dado, el asistente pregunta cuanto del espacio disponible del disco deseamos utilizar. En mi caso, le dije que utilizara todo el espacio disponible para expandir la partición principal del sistema.


Una vez terminado el proceso (que dura algunos segundos), el asistente termina y nos deja con la partición extendida al tamaño que hallamos definido. Es una buena idea revisar que el resto de las propiedades que dicha partición tenía, siguen ahí. Si no es el caso, posiblemente tengamos que arrancar de nuevo con la copia que dejamos como respaldo. De cualquier otro detalle nos daremos cuenta al intentar reiniciar la máquina virtual, y en ese caso, talvés tengamos que recurrir al "intuitivo" comando bcdedit para lograr que nuestro Vista vuelva a bootear.


Por último, es una muy buena idea programar un chequeo de disco durante el siguiente reinicio, solo como una forma de asegurarnos que todo sigue como esperamos una vez que reiniciemos el sistema. Como administrador unix/linux, sé que esto es realmente una mera formalidad probablemente fútil, dado que si algo falla en un filesystem NTFS, probablemente sea una buena idea organizar el sepelio del mismo, y de toda la información que aguardaba feliz a ser vista nuevamente una vez que todo este asunto terminara.


Si todo salió bien, apenas arranque la máquina virtual nuevamente, se chequeará el disco y se revisará que todo está donde debe estar. ¡Otra vez Victoria!.

Otro día les escribo un tutorial de cómo montar y manejar particiones contenidas en imágenes de disco como las que estoy usando. Pero como dice Robert S. Howard, "That's another story" :-)

Happy hacking!

4 comentarios:

tavix dijo...

Hola llegue a tu blog buscando explicaciones sobre el mal funcionamiento de la conexion de anteldata que sufrimos en La Paloma Rocha pa' volverse loco como expreso un empleado de la misma empresa que sufren tambien del mal funcionamiento .
Entiendo poco de esto cada dia menos jaja pero el Nod 32 cuando le pedi que identificara el proxy me salio que malfuncionaba cosa que no me sorprendio algo habitual aqui como el vaya hay problemas de conexion.Podrias dar alguna esperanza a los habitantes de estas lejanas tierras yo tambien quiero a Antel aunque cada dia menos... tu opinion sobre si este gobierno se dio cuenta que el progreso esta en Internet o piensa que con saber manejar un PC alcanza?cada vez que hablo mal de Anteldata o del gobierno la compu se pone rara casualidad?no molesto mas.
Una cosa fondo blanco y letras en negro ayudan muchisimo a leer facilmente.Gracias suertempila

Gustavo Castro Puig dijo...

Tavix:

No se me ocurre cómo llegaste a mi blog buscando eso, pero bueno, supongo que fué por las referencias a problemas con estos muchachos que aparecen a lo largo de algunos de mis artículos. Supongo que no encontraste nada útil que explique el mal funcionamiento del enlace (ni siquiera sabía que había sucedido algo así)...
La realidad cruel es que no existe algo como "gobierno que se dá cuenta de...". Te recuerdo (aunque seguramente lo tengas bien presente, dada tu edad) que los dirigentes políticos en general no tienen ni la más remota idea de absolutamente nada que no tenga que ver directamente con sus propios intereses.
Esto no pasa solo acá, sino en todas partes del mundo, así que no te sientas mal.
Ojo, con esto del Plan Ceibal, ¿quién te dice que no mejore de repente el servicio básico de conexión a Internet? En el mundo civilizado, el MB de tráfico vale una fracción de lo que nos cobran acá, así que es de esperarse que alguna mejora aparezca relativamente pronto.
Yo solo espero que mi conexión resista y siga funcionando, dado que dependo de eso para poder trabajar, pero lamentablemente, como no hay otras opciones de conectividad serias y a precio razonable, aunque mañana falle, pasado mañana la seguiré usando...
¡Queselevacer!

Salu2,
Gustavo.

Unknown dijo...

Hola Gustavo,

Tras mirar en muchos sitios, encontré en tu blog este tutorial que describe exactamente lo que yo necesito hacer.

Lo que quiero es preguntarte con qué herramienta haces los primeros pasos: la imagen, el "dd"...
¿Puedes darme alguna información?

Quisiera seguir todos los pasos que especificas en el tutorial.
Te agradecería cualquier tipo de orientación que pudieras darme.

Gracias.

manuelflr

Gustavo Castro Puig dijo...

Manuel:

En realidad, la imagen ya la tenía hecha y funcionando como unidad de disco dentro de una máquina virtual XEN, y se hace también con la herramienta "dd".

dd if=/dev/zero of=/storage/xen/images/vista.img bs=1G count=10

Así fué que cree la imagen original, pero en realidad hay varias formas de hacerlo. Una vez hecha, la cargué en el XEN como unidad de disco para la máquina virtual que pensaba usar para Windos Vista, declarándola igual que cualquier otro dispositivo de disco en XEN:

disk = ['file:/storage/xen/images/vista.img,hda,w','phy:/dev/cdrom,hdb,r']

Luego, particioné el "disco" e hice la instalación normalmente, y lo que sucedió fué que a los pocos días de tenerla funcionando, empezó a pedir espacio, y tuve que hacer lo que dice el tutorial.

Espero que esto esclarezca el asunto.

Saludos,
Gustavo.

 
Gustavo Castro

Crea tu insignia