XFS

Cómo desfragmentar un sistema de archivos XFS

Cómo desfragmentar un sistema de archivos XFS
La fragmentación es un problema de larga data cuando se trata de almacenamiento. Surge cuando, debido a un uso prolongado, los medios de almacenamiento obtienen trozos de bloques asignados con espacio libre entre ellos. Esto sucede porque varios programas solicitan memoria en un orden diferente y luego liberan la memoria en diferentes momentos. Tener trozos de espacio no asignado entre los datos reduce el espacio total disponible en el disco (eficiencia de almacenamiento) y también el rendimiento del disco, ya que los datos no se almacenan en un gran trozo contiguo, sino que se distribuyen por todo el disco.

Este problema es especialmente evidente en los medios magnéticos, aunque los SSD también lo padecen. Intentemos desfragmentar un sistema de archivos XFS en esta publicación.

Configuración de la zona de pruebas

Primero, para experimentar con el sistema de archivos XFS, decidí crear un banco de pruebas en lugar de trabajar con datos críticos en un disco. Este banco de pruebas está formado por una máquina virtual de Ubuntu a la que se conecta un disco virtual que proporciona almacenamiento sin procesar. Puede usar VirtualBox para crear la VM y luego crear un disco adicional para adjuntar a la VM

Simplemente vaya a la configuración de su VM y debajo Configuración → Almacenamiento sección puede agregar un nuevo disco al controlador SATA puede crear un nuevo disco. Como se muestra a continuación, pero asegúrese de que su VM esté apagada cuando haga esto.

Una vez que se crea el nuevo disco, encienda la VM y abra la terminal. El comando lsblk enumera todos los dispositivos de bloque disponibles.

$ lsblk
sda 8: 0 0 60G 0 disco
├─sda1 8: 1 0 1M 0 parte
└─sda2 8: 2 0 60G 0 parte /
sdb 8:16 0 100G 0 disco
sr0 11: 0 1 1024M 0 rom

Aparte del dispositivo de bloque principal sda, donde está instalado el sistema operativo, ahora hay un nuevo dispositivo sdb. Creemos rápidamente una partición y formateemos con el sistema de archivos XFS.

Abra la utilidad parted como usuario root:

$ parted -a óptimo / dev / sdb

Primero creemos una tabla de particiones usando mklabel, a esto le sigue la creación de una sola partición de todo el disco (que tiene un tamaño de 107 GB). Puede verificar que la partición está hecha enumerándola usando el comando de impresión:

(parted) mklabel gpt
(separado) mkpart primaria 0107
(partido) imprimir
(se separó) renunció

Bien, ahora podemos ver usando lsblk que hay un nuevo dispositivo de bloque debajo del dispositivo sdb, llamado sdb1.

Formateemos este almacenamiento como xfs y montémoslo en el directorio / mnt. Nuevamente, realice las siguientes acciones como root:

$ mkfs.xfs / dev / sdb1
$ montaje / dev / sdb1 / mnt
$ df -h

El último comando imprimirá todos los sistemas de archivos montados y puede verificar que / dev / sdb1 esté montado en / mnt.

A continuación, escribimos un montón de archivos como datos ficticios para desfragmentar aquí:

$ dd si = / dev / urandom of = / mnt / myfile.recuento de txt = 1024 bs = 1024

El comando anterior escribiría un archivo myfile.txt de 1 MB de tamaño. Puede automatizar este comando en un bucle for simple usando bash y generar más archivos de este tipo. Extiéndalos en varios directorios si lo desea. Eliminar algunos de ellos al azar. Haga todo esto dentro del sistema de archivos xfs (montado en / mnt) y luego verifique la fragmentación. Todo esto es, por supuesto, opcional.

Desfragmenta tu sistema de archivos

Lo primero que debemos hacer es averiguar cómo verificar la cantidad de fragmentación. Por ejemplo, el sistema de archivos xfs que creamos anteriormente estaba en el nodo del dispositivo / dev / sdb. Podemos usar la utilidad xfs_db (significa depuración xfs) para verificar el nivel de fragmentación.

$ xfs_db -c frag -r / dev / sdb1

La bandera -c toma varios comandos entre los que se encuentra el comando frag para verificar el nivel de fragmentación. El indicador -r utilizado para asegurarse de que la operación sea completamente de solo lectura.

Si encontramos que hay alguna fragmentación en este sistema de archivos, ejecutamos el comando xfs_fsr en el nodo del dispositivo:

$ xfs_fsr / dev / sdb1

Este último comando es todo lo que hay para desfragmentar su sistema de archivos, puede agregarlo como un cronjob que monitoreará regularmente su sistema de archivos. Pero hacer eso para xfs tiene poco sentido. La asignación basada en la extensión de XFS garantiza que los problemas como la fragmentación se mantengan al mínimo.

Casos de uso

Los casos de uso en los que debe preocuparse más por la fragmentación del sistema de archivos involucran aplicaciones en las que se escriben y reescriben una gran cantidad de pequeños fragmentos de datos. Una base de datos es un ejemplo clásico de esto y las bases de datos son conocidas por dejar montones y montones de "agujeros" en su almacenamiento. Los bloques de memoria no se llenan de manera contigua, lo que hace que la cantidad de espacio disponible sea cada vez más pequeña con el tiempo.

El problema surge no solo en términos de espacio utilizable reducido, sino también en términos de IOPS reducidas, lo que podría afectar el rendimiento de su aplicación. Tener un script para monitorear continuamente el nivel de fragmentación es una forma conservadora de mantener el sistema. No desea que una secuencia de comandos automatizada comience a desfragmentar aleatoriamente su sistema de archivos, especialmente cuando se usa en la carga máxima.

Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...
Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...