Desfragmentando XFS
Desde hace unos meses trabajo con VMWare más de lo normal, tengo demasiadas máquinas virtuales para mi gusto, la mayoría suspendidas, pendientes de terminar alguna tarea pendiente. Desde que comencé a utilizar discos de expansión dinámica para las nuevas máquinas virtuales nuevas por problemas de espacio noté una perdida de rendimiento en las mismas (Aún utilizando la desfragmentación de VMWare). Todas las máquinas las tengo en un disco duro de 80 GB utilizando XFS, y este es el resultado:
# xfs_db -r /dev/hdf1
xfs_db> frag
actual 345, ideal 195, fragmentation factor 43.48%
Desfragmentemos entonces:
# xfs_fsr -v /dev/hdf1
Después de desfragmentar:
# xfs_db -r /dev/hdf1
xfs_db> frag
actual 200, ideal 198, fragmentation factor 1.00%
Supongo que, aunque es muy pronto para decirlo, mejorará el rendimiento notablemente.
Escrito por Gura
05.Jun.07 y almacenado en las caterorías GNU/Linux, Sistemas.
También puede escribir un comentario, o referenciar esta entrada (trackback) desde su web.
Apenas he notado mejora, parece que está de adorno.
Para medir la fragmentacion puedes hacer xfs_db -c frag -r /dev/XXX (hace todo un una sola linea de comando).
Para aumentar el rendimiento asegurate de no usar “sync” en /etc/fstab al montar la particion/disco, sync obliga a vaciar los buferes de memoria al usar el disco. XFS espera hasta el ultimo momento para escribir en disco, osea el sync no deja al XFS hacer lo que le gusta (esto es una conclusion que sacado de la experiencia y lo poco que se de XFS).
Al apagar/reiniciar/desmontar se sincroniza todo(a menos que le digas lo contrario) y no se pierde informacion.
Mi experiencia: con “sync” copiar 15GB tomaba 35min (uff) a 7 MB/s(contantes), sin “sync” lo hizo en 6min(+ o -) a 50MB/s (no constantes, variaba entre 10 - 50 MB/s).
En el primer caso la fragmentacion paso de un 0.48% a un 95%, en el segundo de 0.48% a 25%, vamos!, que al XFS no le gusta sync!
Pero, aun asi ¿Por que tanta fragmentacion con XFS?
Comenzando por el final: La fragmentación ni idea, de hecho, me quedo a 0.93% y al arrancar una máquina virtual, luego suspenderla, despertarla y apagarla, la fragmentación estaba al 43%. No se, parece que no es un dato muy de fiar.
Por otro lado, no tengo montada ninguna unidad como sync. La transferencia en el resto de unidades es buena, solo ocurre en esa. He andado moviendo datos entre particiones para ordenar y ya que en la unidad donde almaceno las máquina virtuales quedaba poco espacio, pues meterlas en una unidad de 120 GB. He formateado despues la unidad donde guardaba las antiguas máquinas virtuales y va como la seda, aunque el índice de fragmentación sea, según la utilidad:
actual 146699, ideal 191, fragmentation factor 99.87%
Por como están diseñados la mayoría (Por no decir todos) de los sistemas de ficheros de *NIX, una fragmentación del 99.87% es impensable.
Ahí queda eso.
Parece ser que esa fragmentacion es normal, los de SGI recomiendan que uses xfs_fsr dentro de cron. Esto IRIX 6.5 lo hace por defecto, lanza fsr_xfs (en IRIX le dieron la vuelta al nombre) una vez por semana.
Pues ya que es cierto que se puede hacer una desfragmentación OnLine, no se me había ocurrido el meterlo al cron. Gracias por la idea.