Redimensionando el disco C: de Windows 2003 Server en condiciones hostiles

Como habréis visto en la lista de correo BOFHers, concretamente en este hilo, uno de los varios HIGINIEROS que han pasado por HyperMadhouse, concretamente el HESPERTO en UBEMEGÜARE, decidió en algún momento que un W2K3 tenía suficiente con 8Gb de disco duro, porque total, tampoco vas a instalar nada más ni vas a meter actualizaciones ni el antivirus necesita sitio para guardar su base de datos actualizada, así que para qué vamos a gastar cabina. Todos sabemos de lo que hablo.

En fin, que me he encontrado la tesitura de tener que ampliar el disco C: de la máquina porque (vaya por dios) resulta ser importantísima y ni la red levanta la pobre. Bueno, no es complicado dado que es una máquina virtual sobre VMware...

Y una polla como una olla.

Internet está lleno de blogs idílicos donde todo el mundo tiene la última versión de todo, las interfaces gráficas tienen todos los menús que necesitas, y las herramientas hacen simplemente lo que tú les pides que hagan. Pero esto hamijos es el mundo real..

El escenario es este: VM W2K3 que arranca a duras penas. Disco C: de 8Gb con 0 bytes libres; Hypervisor VMware ESX 3.0.5 (Esto es importante porque la mayor parte de las super funcionalidades chulas que verás en los foros no están disponibles, así que toca echarle ingenio); Sin backup consistente pero, afortunadamente, espacio en el datastore.

Lo primero: tiempo de parada estimado: Indefinido. Uno hace lo que puede y nadie tiene la culpa de la ineptitud del fulano en cuestión, pero ya no está y a esto hay que darle remedio. Si quieren un trabajo bien hecho, la receta requiere su tiempo. Si no, que se compren una VM en el McDolans.

Lo segundo: Herramienteo a bajo nivel. Las versiones antiguas de ESX tienen un cliente más espartano que las alpargatas de Leónidas, pero las herramientas de CLI están ahí. Vamos a tirar un poco de ellas.

NOTA ADICIONAL: Ahorrate el intentar arrancar la VM con GParted Live o similar: Por alguna razón, sencillamente no reconocen el hardware de ESX 3 y no verás los discos. O eso, o yo no lo he sabido hacer, no lo se.

Lo tercero: Buscate la vida. Mucho. Estos procedimientos pueden mandar tu VM ATPC con mucha facilidad, y las snapshots de VMware no te salvarán el culo. Búscate un soporte de almacenamiento donde puedas hacerte una copia en frío de los ficheros de la VM. ¡CON LA VM APAGADA ANIMAL! Yo he tenido suerte (menos mal) y tengo espacio en el datastore.

Dicho lo cual, al lío:

1º.- Para la VM. Accede al hypervisor por SSH y hazte una copia. A lo vivo:

[root@cojonpriento03 datastore]# cp -pr puñeteraVM puñeteraVM.bak

2º.- Sobre los ficheros de la máquina original, redimensionamos el disco. La versión del cliente Infrastructure no tiene la opción de redimensionado, así que lo hacemos por la CLI:

[root@cojonpriento03 datastore]# vmkfstools -X 20g /vmfs/volumes/datastore/puñeteraVM/puñeteraVM.vmdk

Tarda unos segundos. En este caso he indicado como tamaño final 20Gb. Ojo que es el tamaño final, no lo que queremos añadir. Si ponemos el tamaño que queremos añadir y es inferior al del disco original, LA JODIMOS.

Menos mal que hemos hecho la copia...

3º.- Reinicia el demonio de gestión de VMware: Esto te lo puedes saltar, pero si quieres que en cliente se vea el tamaño real del disco, tienes que hacerlo. Total, el día que reinicies el VMware ya lo cogerá...

[root@cojonpriento03 datastore]# service mgmt-vmware restart

Ojo porque en algunos casos este comando hace cosas raras como quedarse parado mucho tiempo, no reactivo, hacer que el clietne de timeout durante unos minutos... mucha paciencia con él.

4º.- Toma prestada otra VM que tenga acceso al almacenamiento que queremos ampliar y móntale el susodicho disco. Tendrás que parar la VM para hacerlo.

IMPORTANTE: Si el volumen de tu unidad C: es de tipo Básico, ahorrate los pasos 5 y 6 y pasa directamente al 7. Solamente son necesarios si el susodicho hijo de un tigre y un delfín sifilítico decidió que, además, convertir C: en un volúmen dinámico porque sí era buena idea.

5º.- Descárgate este software para editar el disco y mételo en la VM de prestado. Yo he usado la versión portable para no llevar mierda:

http://mh-nexus.de/hxd/

6º.-Sigue el procedimiento indicado aquí:

http://www.wilderssecurity.com/showthread.php?t=191006

Basicamente lo que tienes que hacer es abrir el disco con este programa, usando el menú extras -> abrir disco, desmarcando la casilla “Solo lectura”. Ahí buscas en la primera columna la fila que dice 1C0 y en esa misma fila, cambiar el 42 de la cuarta columna por un 07 y guardar.

Una vez hecho esto, reinicias la VM, y desde el cmd ejecutas un chkdsk /f. En el administrador de discos te saldrá algo un poco raro, diciéndote que el disco está desactivado, y no lo podrás reactivar. Tendrás que utilizar la opción “Convertir a volumen básico”. Aunque te aparezca un warning tu tranquilo, que no perderás datos (y aunque los perdieras, hiciste la copia del principio, ¿verdad?).

Si la VM no es capaz de acceder al disco, vuelta a reiniciar y chkdsk /f. Y ya deberías acceder.

7º.- Redimensiona con diskpart. Desde la Administrador de discos no te va a dejar extender el volumen, pero diskpart sí. Te lo cuentan muy bien aquí los chicos de Redmond:

http://support.microsoft.com/kb/325590/en-US

Así que abre el CMD y dale caña (no te voy a enseñar a estas alturas a usar diskpart).

8º.- Apaga y vámonos. Apaga la VM de prestado y desmontale el disco (sin eliminarlo ONVRE). Devuelve cada cosa en su sitio, limpia la basura que hayas dejado y arranca las dos VM.

9º.- Contempla maravillado cómo tu vieja VM arranca sin problemas con el disco C: perfectamente ampliado y disponible.

Alucina vecina. Espero que a alguien le sea útil.