Cuando fstrim falla - Linux bajo HyperV 2012 R2
 

Trabajar con LINUX como casi cualquier otro sistema operativo tiene sus ventajas y sus desventajas... (si, si,... ya los escucho.. muchas ms ventajas que Win... ok... puede ser..).

Dicho esto, pasa que como administradores solemos tener herramientas a las que nos acostumbramos y cuando nos fallan... nos pegamos la cabeza contra la pared.. o buscamos alternativas

Linux bajo HyperV (en este caso bajo 2012 R2)

Se que no es lo ideal, instalar un Linux bajo HyperV, pero ms de una vez, de hecho ,... muchas veces es una opcin o salida elegante.

Con algn que otro ajuste, he venido utilizando Linux para diferentes roles bajo HyperV, sin problema alguno...

Cada tanto, en perodo de mantenimiento preventivo, cuando se utilizan discos dinmigos, solemos "reclamar" el espacio libre de Linux para achicar los discos VHD o VHDX

En este caso, una distribucin de ClearOS (lase CentOS), haba ocupado alrededor de 150 GBs, cuando no debera superar los 7 u 8 GBs.

Pasos

Lo primero seria verificar dentro del Linux, cuando realmente de este espacio podramos reclamar.. para lo que corremos el comando df via sudo root

En este caso, claramente tenemos mucho espacio para reclamar, como usualmente hacamos, invocamos fstrim , para ello, el comando sera, fstrim / ya que queremos poner todo el espacio vaco a cero.

Se invoca fstrim / ya que para reducir el tamao del disco vhd se require que el espacio vaco sea llenado con ceros, desde root, de forma que HyperV pueda editar el disco y reducirlo

Peeeeerrroooo... esta vez cuando llamamos a fstrim , nos encontramos con este problema...

...podramos expandirnos en ver el origen del problema.. si el FileSystem no es compatible, si est encriptado, si no permite fstrim... etc. etc.. pero... la ventana de tiempo de trabajo se agota y es necesario comprimir el VHD y volver el Linux a produccin

Alternativa

Nuevamente... una ventaja de Linux es que tenemos varias herramientas disponibles que hacen lo mismo..., en este caso.. fuimos por la alternativa dd

Bsicamente, usamos dd para tomar un cero y pasarlo a un archivo en forma continua hasta que se llene el espacio libre o el usuario finalice la operacin

La primer linea de comando, debe entenderse como dd if=origen of=destino, donde nuestro origen ser una cadena de ceros y nuestra salida un archivo.
Durante la ejecucin, el usuario puede cortar con Ctrl+C, pero no liberara o mejor dicho, sobreescribira todo el espacio vaco y por lo tanto no podra luego reducirse optimamente el archivo.

Una vez que la primer lnea se ejecuta, lo que queda, es eliminar el archivo que ocup todo el espacio libre, para asi poder luego reducir el VHD o VHDX

Pero si genero un archivo no hago crecer el VHD?

Es una buena pregunta, pero no... el VHD no va a crecer por espacio con ceros, ya que est diseado para no crecer en vano.. asi que no.. no crecer..

Compactacin del VHD

Una vez que los comandos finalizaron, y se elimin el archivo creado con ceros, pasaremos a apagar el linux shutdown -h now o el comando que gusten para apagado.. y luego via el editor de discos de HyperV pasaremos a compactar el disco

Con el Linux apagado, vamos al panel de acciones de HyperV y seleccionamos Edit Disk, HyperV nos guiar para que seleccionemos el disco que deseamos editar.
Una vez selecionado, avanzamos hasta llegar a la opcin que nos permite seleccionar Compactar, luego presionamos Finish y verificamos y confirmamos que el disco es el que deseamos compactar

HyperV comenzar una barra de progreso, mientras compacta el disco y hasta que finalice, cosa que hace sin ningn aviso o alerta... lo que provoca para los no habituados que pensemos que algo fall...

Finalizacin

Cuando la barra de progreso llega a su fin, la ventana se cierra y el archivo estar compactado, y podremos volver a poner el equipo en lnea.

En este caso.. los resultados fueron excelentes... de alrededor de 150 GBs a 7 GBs. No hace falta aclarar porque reducir el tamao del disco es bueno, basta con pensar en el backup para determinar lo ptimo de esta tarea

Conclusiones

Como dije al inicio, trabajar con Linux brinda muchas posibilidades para concretar la misma tarea usando diferentes caminos... en este caso, sin dudas, fstrim / hubiera sido la mejor solucin, ya que es mucho ms rpida que la solucin implementada... pero no funcion.. y no haba tiempo para pensar en el origen o causa de la falla de fstrim, simplemente el tiempo que tenamos demandaba que ejecutaramos algo para lograr el objetivo y eso se hizo.

Terminamos con esto??? de ninguna manera.. problema que se va sin que lo hechen.. vuelve sin que lo llamen.. pero la explicacin de porque no funcion fstrim.. la dejamos para la prxima...

 

 

Volver a lista de Notas

Comentarios
Nombre:
(opcional)
E-Mail:
(opcional)
No Completar:
(opcional)
Comentarios:
-