Cómo desfragmentar un sistema de archivos BTRFS

Cómo desfragmentar un sistema de archivos BTRFS

BTRFS es un sistema de archivos de copia en escritura (vaca) basado en la extensión. Los archivos grandes se almacenan en múltiples extensiones de datos; y cuando se modifican estos archivos grandes, las extensiones a modificar se copian en nuevas extensiones vacías en otra ubicación del dispositivo de almacenamiento y se modifican en la nueva ubicación. Luego, la extensión de los archivos grandes se vuelven a vincular para apuntar a las extensiones actualizadas. Las viejas extensiones nunca se eliminan al instante.

Así es como la característica de copia en escritura (vaca) del sistema de archivos BTRFS causa fragmentación. La fragmentación significa que la extensión de los datos de los archivos grandes se dispersa en todo el dispositivo de almacenamiento. No son instantáneos. Entonces, el rendimiento (velocidad de lectura/escritura) del sistema de archivos puede reducirse.

Para resolver este problema, es necesario desfragmentar el sistema de archivos BTRFS de vez en cuando. Este artículo le muestra cómo desfragmentar el sistema de archivos BTRFS.

Abreviaturas

Las abreviaturas (formularios cortos) utilizados en este artículo son las siguientes:

  • Vaca - Copiar en escrito
  • Btrfs - Sistema de archivos b-tree
  • HDD - Disco duro
  • SSD - Unidad de estado sólido
  • GB - Gigabyte
  • VM - Máquina virtual

Requisitos previos

Para probar los ejemplos incluidos en este artículo:

  • Debe tener instalado el sistema de archivos BTRFS en su computadora.
  • Debe tener un HDD/SSD de repuesto (de cualquier tamaño) o al menos 1 partición gratuita de HDD/SSD (de cualquier tamaño).

Tengo un HDD de 20 GB SDB en mi máquina ubuntu. Crearé un sistema de archivos BTRFS en el HDD SDB.

$ sudo lsblk -e7

Nota: Su HDD/SSD probablemente tendrá un nombre diferente al mío, y también lo harán las particiones. Entonces, asegúrese de reemplazarlos con el tuyo de ahora en adelante.

Puede crear un sistema de archivos BTRFS en su HDD/SSD (sin partición) si tiene un HDD/SSD de repuesto. También puede crear una partición en su HDD/SSD y crear un sistema de archivos BTRFS allí.

Para obtener ayuda para instalar el sistema de archivos BTRFS en Ubuntu, consulte la instalación del artículo y use BTRFS en Ubuntu 20.04 LTS.

Para obtener ayuda para instalar el sistema de archivos BTRFS en Fedora, consulte la instalación del artículo y use BTRFS en Fedora 33.

Creación de un sistema de archivos BTRFS

Puede crear un sistema de archivos BTRFS en su HDD/SSD (no sartén) o en su partición HDD/SSD.

Para crear un sistema de archivos BTRFS en el SDB HDD (HDD completo, sin particiones) y darle la etiqueta del sistema de archivos datos, Ejecute el siguiente comando:

$ sudo mkfs.BTRFS -L DATA /DEV /SDB

Ahora se debe crear un sistema de archivos BTRFS en el SDB HDD.

Crea el directorio /datos Para montar el sistema de archivos BTRFS que acaba de crear con el siguiente comando:

$ sudo mkdir -v /datos

Para montar el sistema de archivos BTRFS creado en el SDB HDD en el /datos directorio, ejecute el siguiente comando:

$ sudo monte /dev /sdb /data

El sistema de archivos BTRFS ahora debe montarse, como puede ver en la captura de pantalla a continuación:

$ df -h /datos

Desfragación de un sistema de archivos BTRFS manualmente

Como puede ver en la captura de pantalla a continuación, he copiado dos archivos en el sistema de archivos BTRFS montado en el /datos Directorio para demostrar el proceso de desfragmentación del sistema de archivos BTRFS:

$ ls -lh /datos

Puede desfragmentar un solo archivo o un subvolumen/directorio completo de manera recursiva.

Para desfragmentar el archivo único /Data/Ubuntu-20.04.1-Live-server-amd64.Yo asi, Ejecutaremos el siguiente comando:

$ sudo BTRFS Files System Defragment -VF /Data /Ubuntu -20.04.1-Live-server-amd64.Yo asi

El archivo /Data/Ubuntu-20.04.1-Live-server-amd64.Yo asi debe ser desfragmentado.

Para desfragmentar cada archivo o directorio del /datos directorio recursivamente, ejecute el siguiente comando:

$ sudo BTRFS Files System DeFragment -RVF /Data

Como puede ver, todos los archivos del /datos El directorio está desfragmentado.

De la misma manera, si tuvieras el subvolumen /Data/OsImages, Luego podría desfragmentar todos los archivos del /Data/OsImages Subvolumen recursivamente con el siguiente comando:

$ sudo BTRFS Files System DeFragment -RVF /Data /OsImages

Comprimir un sistema de archivos BTRFS mientras se desvanece

El sistema de archivos BTRFS le permite comprimir archivos mientras los desfragmenta.

Para desfragmentar todos los archivos en el /datos directorio y comprimirlos con el Zlib Algoritmo de compresión al mismo tiempo, ejecute el comando de desfragmentación con el -czlib Opción, como sigue:

$ sudo BTRFS FileSystem DeFragment -RVF -CZLIB /DATA

Para desfragmentar todos los archivos en el /datos directorio y comprimirlos con el ZSTD Algoritmo de compresión al mismo tiempo, ejecute el comando de desfragmentación con el -czstd Opción, como sigue:

$ sudo BTRFS Files System DeFragment -RVF -CZSTD /DATA

Para desfragmentar todos los archivos en el /datos directorio y comprimirlos con el LZO Algoritmo de compresión al mismo tiempo, ejecute el comando de desfragmentación con el -clzo Opción, como sigue:

$ sudo BTRFS Files System DeFragment -RVF -Clzo /Data

Los archivos en el /datos El directorio debe desfragmentarse y comprimirse al mismo tiempo.

De la misma manera, también puede desfragmentar y comprimir los archivos de un subvolumen BTRFS.

Desfragación de un sistema de archivos BTRFS automáticamente

Puede habilitar la desfragmentación automática en su sistema de archivos BTRFS en la hora de montaje. Esta característica del sistema de archivos BTRFS desfragmentará todos los archivos de su sistema de archivos BTRFS automáticamente.

Para montar el sistema de archivos BTRFS creado en el SDB HDD en el /datos Directorio con desfragmentación automática habilitada en el momento del arranque, debe agregar una entrada para el sistema de archivos BTRFS en el /etc/fstab archivo.

Primero, encuentre el UUID del sistema de archivos BTRFS creado en el SDB HDD, como sigue:

$ sudo blkid /dev /sdb

Como puede ver, el UUID del sistema de archivos BTRFS creado en el SDB HDD es 60AFC092-E0FA-4B65-81FD-5DFD7DD884DE.

Será diferente para ti. Entonces, asegúrese de reemplazarlo con el tuyo de ahora en adelante.

Abre el /etc/fstab archivo con el nano Editor de texto, como sigue:

$ sudo nano /etc /fstab

Agregue la siguiente línea al final del /etc/fstab archivo:

Uuid = 60AFC092-E0FA-4B65-81FD-5DFD7DD884DE /DATOS BTRFS AUTODEFRA 0 0 0

Una vez que haya terminado, presione + X seguido por Y y Para salvar el /etc/fstab archivo.

Para que los cambios entren en vigencia, reinicie su computadora con el siguiente comando:

$ sudo reinicio

Como puede ver, el sistema de archivos BTRFS creado en el SDB HDD está montado en el /datos Directorio con desfragmentación automática habilitada.

Problemas con la desfiguración de un sistema de archivos BTRFS

Aunque puede parecer que la desfragmentación mejora el rendimiento del sistema de archivos, hay algunos problemas con la desfiguración de un sistema de archivos BTRFS.

Como BTRFS es un sistema de archivos Copy-On-Write (COW), para comprender los problemas con la desfiguración del sistema de archivos BTRFS, debe comprender la función Copiar on-Write del sistema de archivos BTRFS.

Supongamos que tiene un archivo grande (archivo1) que utiliza 100 extensiones (puede pensar en extensiones como bloques de archivos) de un sistema de archivos BTRFS. Si crea otra copia de ese archivo grande (archivo2) En el mismo sistema de archivos BTRFS, verá que no se usa espacio de disco adicional. Esto se debe a que los archivos son idénticos, y las 100 extensiones de cada archivo son las mismas. Entonces, el sistema de archivos BTRFS utiliza las mismas extensiones para ambos archivos.

Figura 1: archivo1 y archivo2 son idénticos y comparten las mismas extensiones del sistema de archivos BTRFS para guardar espacio en disco

Ahora, digamos, ha modificado una de las copias del archivo grande (archivo2). La modificación debe cambiar 10 de las 100 extensiones. El sistema de archivos BTRFS copiará las 10 extensiones requeridas en otra ubicación no utilizada (por ejemplo, E101-E110) del sistema de archivos y cámbialos allí. Una vez que los cambios se escriben en el disco, el sistema de archivos BTRFS volverá a vincular las extensiones para que los cambios se reflejen en el archivo grande. El proceso se ilustra en la siguiente figura:

Figura 2: 10 las extensiones se cambian en archivo2. Entonces, las extensiones se vuelven a vincular en el sistema de archivos BTRFS.

De las Figuras 1 y 2, puede comprender cómo funciona Copy-On-Write (COW) y cómo el sistema de archivos BTRFS usa Copy-On-Write (COW) para guardar espacio en disco.

Ahora que sabe cómo funciona la característica de copia-on-write (vaca) del sistema de archivos BTRFS, comprenderá los problemas con la desfiguración de un sistema de archivos BTRFS.

  1. Los archivos de desfragmentación mueven la extensión de datos BTRFS e intentan alinearlos, uno tras otro. Entonces, los enlaces de copia en escritura entre las copias del archivo se rompen. Esto aumentará la extensión de datos redundantes, así como el uso de disco de un sistema de archivos BTRFS que previamente se guardó compartiendo extensiones de datos entre copias idénticas (o casi idénticas) del archivo.
  2. Si un subvolumen BTRFS tiene múltiples instantáneas, desfragmentando el subvolumen romperá los enlaces de copia en escritura entre el subvolumen y las instantáneas. Esto aumentará el uso del disco de un sistema de archivos BTRFS.
  3. Si está utilizando el sistema de archivos BTRFS para grandes bases de datos o imágenes de máquinas virtuales (para almacenar datos/discos de VM), la desfiguración del sistema de archivos también afectará negativamente el rendimiento del sistema de archivos.

Conclusión

En este artículo, aprendió cómo desfragmentar un solo archivo y los archivos en un directorio/subvolumen recursivamente de un sistema de archivos BTRFS. También aprendió cómo habilitar la desfragmentación automática en un sistema de archivos BTRFS en el momento de la montaje. Finalmente, el artículo discutió algunos de los problemas para desfragmentar un sistema de archivos BTRFS.