GNU/Linux >> Tutoriales Linux >  >> Linux

Primeros pasos con btrfs para Linux

Btrfs ha estado disponible para Linux durante varios años, por lo que es posible que ya esté familiarizado con él. De lo contrario, es posible que tenga preguntas al respecto, especialmente si usa Fedora Workstation (Btrfs es ahora su sistema de archivos predeterminado). Este artículo tiene como objetivo ayudarlo a familiarizarse con él y sus funciones avanzadas, como copia en escritura y sumas de verificación.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Btrfs, abreviatura de B-Tree Filesystem, es en realidad un sistema de archivos y un administrador de volúmenes todo en uno. A menudo se ve como una respuesta a ZFS, introducido en el sistema operativo Solaris de Sun Microsystem en 2005, ahora reemplazado en gran medida por una implementación de código abierto llamada OpenZFS. Ubuntu Linux y FreeBSD a menudo cuentan con OpenZFS. Otros ejemplos con características similares son Stratis de Red Hat y Linux Logical Volume Manager (LVM).

Configuración

Para probar Btrfs, descargué el archivo ISO de la estación de trabajo Fedora 33 y lo instalé en una nueva máquina virtual (VM). El proceso de instalación no ha cambiado con respecto a las versiones anteriores. No personalicé ninguna configuración, incluida la partición y el formateo de la unidad, para mantener una configuración "lista para usar" precisa para este tutorial. Una vez que la máquina virtual estuvo en funcionamiento, instalé y ejecuté el editor de particiones de GNOME (GParted) para obtener una vista agradable y nueva de fábrica del diseño de la unidad.

A partir de este punto, no es muy diferente de lo que estás acostumbrado; de hecho, puede usar el sistema normalmente y es posible que ni siquiera note que el sistema de archivos es Btrfs. Sin embargo, tener este nuevo valor predeterminado le permite aprovechar varias funciones interesantes.

Examine el sistema de archivos Btrfs

No conozco ninguna herramienta gráfica específica de Btrfs, aunque algunas de sus funciones se han incorporado a las herramientas de administración de disco existentes.

Desde la línea de comandos, puede ver más de cerca el formato Btrfs:

# btrfs filesystem show
Label: 'fedora_localhost-live'  uuid: f2bb02f9-5c41-4c91-8eae-827a801ee58a
        Total devices 1 FS bytes used 6.36GiB
        devid    1 size 10.41GiB used 8.02GiB path /dev/vda3

Cambiar etiquetas Btrfs

Lo primero que noté fue la etiqueta del sistema de archivos establecida por el instalador:fedora_localhost-live . Esto es incorrecto porque ahora es un sistema instalado y ya no es un CD en vivo. Así que lo cambié usando la etiqueta del sistema de archivos btrfs filesystem label comando.

Cambiar una etiqueta del sistema de archivos Btrfs es simple:

# btrfs filesystem label /
fedora_localhost-live
# btrfs filesystem label / fedora33workstation
# btrfs filesystem label /
fedora33workstation

Administrar subvolúmenes Btrfs

Un subvolumen parece ser un directorio estándar que Btrfs puede administrar. Hay varios subvolúmenes en mi nueva estación de trabajo Fedora 33:

# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines

Cree un nuevo subvolumen utilizando btrfs subvolume create o elimine un subvolumen con btrfs subvolume delete :

# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 top level 5 path home
ID 258 gen 2888 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 276 gen 2888 top level 258 path opt/foo
# btrfs subvolume delete /opt/foo
Delete subvolume (no-commit): '/opt/foo'

Los subvolúmenes permiten acciones como establecer una cuota, tomar una instantánea y replicar en otras ubicaciones y hosts. ¿Cómo pueden los administradores de sistemas aprovechar estas capacidades? ¿Qué hay de los directorios de inicio de los usuarios?

Agregar un usuario

Como ha sido el caso desde tiempos antiguos, agregar una nueva cuenta de usuario crea un directorio de inicio para que la cuenta use:

# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 student1 student1  80 Oct 29 00:21 student1

Tradicionalmente, el directorio de inicio de un usuario es un subdirectorio de /home . La propiedad y los privilegios se adaptan al propietario, pero no hay funciones especiales para administrarlos. El entorno de servidor empresarial es otro escenario. A menudo, un directorio está reservado para que lo use una aplicación en particular y su usuario. Puede aprovechar Btrfs para administrar y aplicar restricciones a estos directorios.

Para acomodar los subvolúmenes Btrfs como hogares de usuarios, hay una nueva opción para useradd comando:--btrfs-subvolume-home . Aunque las páginas de manual no se han actualizado (a partir de este escrito), puede ver la opción ejecutando useradd --help . Al pasar esta opción al agregar un nuevo usuario, se creará un nuevo subvolumen Btrfs. Funciona igual que el -d la opción sirve para crear un directorio normal:

# useradd --btrfs-subvolume-home student2
Create subvolume '/home/student2'

Verificar al usuario con getent passwd student2 , y aparecerá normal. Sin embargo, ejecute el subvolumen btrfs filesystem label comando para listar subvolúmenes, y verá algo interesante:¡el directorio de inicio del nuevo usuario!

# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 272 gen 2459 top level 256 path home/student2

Explore el segundo escenario de un entorno de servidor empresarial. Suponga que necesita instalar un servidor WildFly en /opt e implementar una aplicación web Java. A menudo, el primer paso es crear una wildfly usuario. Haga esto usando el nuevo --btrfs-subvolume-home opción junto con -b opción para especificar /opt como directorio base:

# useradd -b /opt --btrfs-subvolume-home wildfly
Create subvolume '/opt/wildfly'

Ahora, la wildfly el usuario puede iniciar sesión y completar la instalación en /opt/wildfly .

Eliminar un usuario

Cuando elimina un usuario, a veces desea eliminar los archivos de ese usuario y el directorio de inicio al mismo tiempo. El userdel el comando tiene el -r opción para esto, y también elimina los subvolúmenes Btrfs:

# userdel -r student2
Delete subvolume (commit): '/home/student2'

Establecer cuotas de uso de disco

En una de mis clases de informática, un estudiante ejecutó un programa en C que se salió de control y escribió en el disco hasta que el /home completo se llenó en el sistema Unix del departamento! El servidor dejó de estar disponible hasta que el administrador eliminó el proceso fuera de control y despejó algo de espacio. Lo mismo es cierto para el escenario anterior; esa aplicación empresarial Wildfly tendrá una cantidad creciente de archivos de registro y almacenes de contenido para sus usuarios. ¿Cómo puede evitar que un servidor se detenga porque el disco se ha llenado? Establecer restricciones de uso del disco es una buena idea. Afortunadamente, Btrfs admite esto a través de cuotas.

Se requieren varios pasos para configurar las cuotas. El primer paso es habilitar quota en el sistema de archivos Btrfs:

# btrfs quota enable /

Asegúrese de conocer el número de identificación del grupo de cuotas (qgroup) de cada subvolumen, que se muestra en la btrfs subvolume list dominio. Cada subvolumen necesita un qgroup asociado basado en su número de identificación. Esto se puede hacer de forma individual con btrfs qgroup create , pero, convenientemente, la wiki de Btrfs proporciona el siguiente comando para acelerar la creación de qgroups para subvolúmenes en un sistema de archivos:

>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>

En un sistema de estación de trabajo Fedora 33 recién instalado, está operando en la ruta del sistema de archivos raíz, / . Sustituir \<path> con la ruta raíz:

# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /

A continuación, ejecute btrfs quota rescan y echa un vistazo a los nuevos qgroups:

# btrfs quota rescan /
quota rescan started
# btrfs qgroup show /
qgroupid         rfer         excl
--------         ----         ----
0/5          16.00KiB     16.00KiB
0/256       272.04MiB    272.04MiB
0/258         6.08GiB      6.08GiB
0/265        16.00KiB     16.00KiB
0/271        16.00KiB     16.00KiB
0/273        16.00KiB     16.00KiB

Ahora puede asignar una cuota a uno de los qgroups, que, a su vez, se aplica a su subvolumen asociado. Entonces, si desea limitar el uso del directorio de inicio de student3 a 1 GB, use el btrfs qgroup limit comando:

# btrfs qgroup limit 1G /home/student3

Confirme la cuota para el subvolumen específico:

# btrfs qgroup show -reF /home/student3
qgroupid         rfer         excl     max_rfer     max_excl
--------         ----         ----     --------     --------
0/271        16.00KiB     16.00KiB      1.00GiB         none

Las opciones ligeramente diferentes mostrarán todos los qgroups y cualquier cuota establecida:

# btrfs qgroup show -re /
qgroupid         rfer         excl     max_rfer     max_excl
--------         ----         ----     --------     --------
0/5          16.00KiB     16.00KiB         none         none
0/256       272.04MiB    272.04MiB         none         none
0/258         6.08GiB      6.08GiB         none         none
0/265        16.00KiB     16.00KiB         none         none
0/271        16.00KiB     16.00KiB      1.00GiB         none
0/273        16.00KiB     16.00KiB         none         none

Otras características

Estos ejemplos dan una idea de las características de Btrfs. Ejecute btrfs --help para ver la lista completa de comandos. Existen muchas otras capacidades notables; por ejemplo, las instantáneas y enviar/recibir son dos que vale la pena aprender.

Pensamientos finales

Btrfs ofrece una gran promesa para entregar un conjunto de funciones de sistema de archivos avanzado para Linux. No fue el primero; Doy crédito a ZFS por mi introducción a este tipo de sistema de archivos hace unos 15 años, pero Btrfs es completamente de código abierto y no está sujeto a patentes.

Recomiendo comenzar con una máquina virtual o un sistema de repuesto si desea explorar este sistema de archivos.

Me gustaría ver algunas utilidades de gestión gráfica producidas para los administradores de sistemas a los que les gusta operar en el mundo de la GUI. Afortunadamente, Btrfs tiene una fuerte actividad de desarrollo, como lo demuestra la decisión del proyecto Fedora de configurarlo como predeterminado en Workstation 33.


Linux
  1. Introducción a los cortafuegos de Linux

  2. 5 consejos para comenzar con la seguridad del servidor Linux

  3. Primeros pasos con Samba para la interoperabilidad

  4. Primeros pasos con socat, una herramienta de retransmisión multipropósito para Linux

  5. Primeros pasos con SSH en Linux

Tutorial de Vagrant:Primeros pasos con Vagrant en Linux

Primeros pasos con Docker Compose en Linux

Comenzando con VirtualBox en Linux – Parte 1

Primeros pasos con Flutter en el escritorio de Linux

Primeros pasos con Buildah para administrar contenedores de Linux

Introducción e instalación de Slack para Linux