Sistema de archivos Btrfs

3 de noviembre de 2013

Lang: cs en de es

Un sistema de archivos es algo de lo que no podemos prescindir a la hora de almacenar datos. Por supuesto, al usuario medio no le importa el sistema de archivos mientras el ordenador funcione. Los más experimentados saben que tienen algo así, a menudo llamado FAT o NTFS, los realmente experimentados conocen otros sistemas de archivos. Un iniciado sabe que el sistema de archivos es una parte muy importante del sistema operativo, y como se usa para almacenar/leer datos, cualquier problema o ventaja afecta enormemente a la funcionalidad de todo el sistema.

Diferentes sistemas de ficheros

Quien resuelve qué disco elegir también debería resolver qué sistema de archivos elegir, pero lamentablemente no lo hace. El sistema de archivos FAT (FAT32) está muy anticuado. Tampoco es adecuado para medios extraíbles como tarjetas SD y memorias USB, pero desgraciadamente se sigue utilizando aquí gracias a Windows. Con la llegada de la plataforma NT, Microsoft introdujo el sistema de archivos NTFS, que se generalizó con el lanzamiento de Windows XP. Esto fue una mejora decente de Microsoft sobre FAT, pero lamentablemente por otro lado, que a día de hoy, los usuarios de Windows no pueden aprovechar sus características. Pero incluso NTFS está ahora obsoleto y no tiene las mismas capacidades que los nuevos sistemas de archivos de Linux. Digo Linux, pero muchos de ellos se desarrollaron principalmente para varios sistemas Unix, pero también se han portado a Linux. Probablemente el sistema de archivos más utilizado en Linux es ext (actualmente la versión 4), y se utiliza mucho ReiseFS, que probablemente esté en decadencia. Otros sistemas de archivos son, por ejemplo, XFS o el JFS que yo utilizo. Estos sistemas de archivos son modernos, potentes, estables, y fueron diseñados para que el usuario no se encuentre con sus límites en el futuro. Debido a los dispositivos móviles y las unidades flash, que difieren en funcionalidad de las unidades normales, se han creado otros nuevos sistemas de archivos que han sido diseñados específicamente para la memoria flash. Como principal ejemplo con el que tengo experiencia, citaré JFFS.

Novedades en sistemas de ficheros

Pero no tiene sentido quedarse quieto. Otra nueva idea de sistema de ficheros en un despliegue real la trajo Sun (ahora Oracle) con ZFS. Sin embargo, su uso en Linux es problemático por motivos de licencias, y no existía un sistema de archivos similar para Linux ni para ningún otro SO. Por lo tanto, se creó el sistema de archivos Btrfs. Las capacidades de Btrfs son amplias, puede hacer snapshots y utiliza COW. Sin embargo, me intrigó el hecho de que está optimizado para funcionar tanto con discos giratorios tradicionales como con unidades flash, RAID se implementa directamente en el sistema de archivos (hasta ahora sólo RAID0 y RAID1) y para mí lo más interesante es que realiza sumas de comprobación sobre bloques individuales de datos.

Calidad del disco

Una pequeña digresión sobre los discos

Últimamente, la calidad de los discos va cuesta abajo y mi confianza en ellos es escasa.
A medida que aumenta la capacidad y, por tanto, la densidad de datos, aumenta también el problema potencial del disco. En los discos, además, siempre ha habido una degradación oculta de los datos. Nada es permanente, todo cambia con. Los propios discos realizan sumas de comprobación, por lo que son capaces de corregir los datos e informar del problema. Sin embargo, la reparación no siempre tiene éxito, en cuyo caso el archivo en cuestión puede quedar dañado de forma irreversible. El firmware del disco realiza estas comprobaciones y registra la información. De ello se encarga S.M.A.R.T.. Pero el S.M.A.R.T. no siempre es fiable. Incluso he encontrado información de que algunos discos fabricados por Western Digital solucionan estos problemas de forma encubierta. Si no consigue reparar el bloque, devuelve un bloque vacío de datos y y la unidad no informa al usuario del problema en absoluto. Puede haber otros problemas con la unidad, pero puede que no estén causados por la propia unidad. El problema puede estar en otra parte del hardware del ordenador, como un controlador IDE/SATA, un cable defectuoso o un error de software.

Actualmente me encuentro con el problema de que tras comprobar la integridad del RAID1, resulta que algunos bloques no coinciden, pero básicamente es imposible saber qué bloques son y a qué fichero pertenecen. Sin embargo, cuando se utiliza RAID1 y Btrfs, que realiza sumas de comprobación, esto funciona mucho mejor. Cuando se lee un bloque de datos defectuoso, se detecta el fallo y se lee el bloque del segundo disco y se fija el bloque defectuoso en el primer disco :-). Y esta es mi motivación para empezar a usar Btrfs.

Prueba Btrfs

Una prueba sencilla de Btrfs en RAID1 y comprobando los datos reales.
Realizado sobre la distribución Mageia3: Btrfs v0.20-rc1, kernel 3.8.13.4-desktop-1.mga3.

Crear un sistema de ficheros Btrfs con RAID1 en dos particiones de discos diferentes:
mkfs.btrfs -m raid1 -d raid1 /dev/sdb2 /dev/sdc2 -L btrfs2
montar el sistema de archivos:
mount /dev/sdc2 /mnt/btrfs2/
copiar los datos:
cp Mageia-4-alpha3-i586-DVD.iso /mnt/btrfs2/
comprobar estado RAID, información de disco lleno y otra información:
btrfs filesystem df /mnt/btrfs2
btrfs filesystem show
Con este comando realicé la corrupción de datos en un disco:
dd if=/dev/zero of=/dev/sdb2 bs=1MB count=1000
así se realiza una lectura de datos:
cat /mnt/btrfs2/Mageia-4-alpha3-i586-DVD.iso-copy >/dev/null
Luego en el log del kernel (para mageia /var/log/kernel/info.log ), debian (/var/log/kern.log), podemos ver información sobre checksums que no coinciden e información sobre la localización del bloque. Y luego información sobre parches y que sectores están afectados:
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671612928 csum 2566472073 private 2778140509
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671617024 csum 2566472073 private 2800729912
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671621120 csum 2566472073 private 1522128662
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671674368 csum 2566472073 private 2448968283
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671752192 csum 2566472073 private 1296282567
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671756288 csum 2566472073 private 2828806260
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671760384 csum 2566472073 private 1593117388
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671764480 csum 2566472073 private 4136347329
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671817728 csum 2566472073 private 2889709515
Oct 25 15:28:49 localhost kernel: btrfs csum failed ino 260 off 671821824 csum 2566472073 private 3334484093
Oct 25 15:28:49 localhost kernel: btrfs bad tree block start 0 18904940544
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 674168832 (dev /dev/sdb2 sector 1849600)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 674172928 (dev /dev/sdb2 sector 1849608)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679321600 (dev /dev/sdb2 sector 1859664)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671481856 (dev /dev/sdb2 sector 1844352)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679243776 (dev /dev/sdb2 sector 1859512)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671485952 (dev /dev/sdb2 sector 1844360)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679247872 (dev /dev/sdb2 sector 1859520)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679747584 (dev /dev/sdb2 sector 1860496)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 671490048 (dev /dev/sdb2 sector 1844368)
Oct 25 15:28:53 localhost kernel: btrfs read error corrected: ino 260 off 679751680 (dev /dev/sdb2 sector 1860504)

Desplegando Btrfs

Así que decidí desplegar Btrfs en el disco de backup y en la partición home. En la partición de datos no, porque ahí tengo RAID5, cosa que Btrfs aún no hace directamente, pero ya está en desarrollo. Versión actual en Debian Wheezy: kernel 3.2.0-4-686-pae, Btrfs v0.19.

También tengo pensado utilizar las capacidades de Btrfs para las copias de seguridad, tanto en la partición home como en el disco de backup.
Con Btrfs es complicado lo del espacio ocupado y el espacio libre, pero es una pena que incluso en el volcado cuando se utiliza RAID1, el tamaño de todo el disco no se muestra correctamente, muestra la suma, como si hubiera un RAID0.

En caso de problema, se puede utilizar la utilidad btrfs-recover para recuperar los datos.

Tras mi primera experiencia satisfactoria con BTRFS, desde 2014 lo despliego siempre que puedo. Tanto en la partición del sistema, la partición de datos y los discos de copia de seguridad. Gracias a BTRFS, es muy fácil y eficiente hacer copias de seguridad tanto del sistema como de los datos en poco tiempo.

enlaces adicionales con información:
abclinux - Btrfs
Página oficial de Oracle sobre Btrfs
guía-para-principiantes-de-btrfs

OpenAlt 2017 - Charla sobre BTRFS

Una grabación de mi charla sobre Btrfs y copias de seguridad:

Formación

Para que tu departamento de informática vaya más allá, no dudes en ponerte en contacto conmigo para solicitar formación sobre el sistema de archivos BTRFS.

Vídeo sobre BTRFS

Transmisión en directo sobre filesystem BTRFS filmada con Eken H9R:

RAID1 y bloques

La implementación básica de RAID1 en un sistema de ficheros Btrfs es que un bloque está siempre en dos discos. Lo que puede suponer una diferencia con las implementaciones tradicionales en las que, al usar RAID1, el bloque está siempre en N discos de N discos al usar varios discos. En el caso de Btrfs y el sistema de archivos RAD1 base, el bloque está siempre en dos discos de N.

Si el bloque debe estar en varios discos, existen otros nuevos implantes RAID RAID1C3, RAID1C4 etc..

Notas

Microsoft presentó Windows Server 2012 Sistema de archivos ReFS, que ahora es más moderno y debería poder hacer cosas como snapshots. Sin embargo, yo soy un experto en Linux y servidores Linux, así que no califico el sistema de archivos ReFS porque no tengo experiencia con él.

Btrfs utiliza Synology como FS por defecto para NASs. Pero RAID se resuelve usando mdadm.

RadHat ha eliminado el soporte Brfs del kernel de su distribución Linux.

phoronix.com: Linux 5.5 SSD RAID 0/1/5/6/10 Benchmarks Of Btrfs / EXT4 / F2FS / XFS

Una interesante herramienta de backup que utiliza el sistema de archivos Btrfs como base es btrfs-sxbackup y aquí está fork btrfs-sxbackup .

El proyecto Rockstor utiliza el sistema de archivos BTRFS. Rockstor es un software que convierte un PC en un NAS. Sin duda será una alternativa interesante a Synology, QNAP o FreeNAS. FreeNAS utiliza ZFS.

¿A dónde vamos ahora?

Si quieres saber más sobre el sistema de archivos BTRFS, lee mi artículo de serie de tutoriales sobre el sistema de archivos Btrfs.

Si quieres aprender a usar Btrfs, puedes hacerlo de forma efectiva en Formación sobre el sistema de archivos Btrfs .

Para Para consulta y servicio personalizado no dudes en contactar conmigo por correo electrónico.

Články na podobné téma

Cambio en las licencias de VMware
Ejecución de Microsoft SQL Server en Linux
Copia de seguridad: el Proxmox Backup Server
Linux como router y cortafuegos
Cómo subir una imagen Docker al Registro Docker
Linux: gestión de volúmenes lógicos
Software RAID para Linux
Ejecutar una aplicación web detrás de un proxy
Migración de correo electrónico
Construcción multietapa Docker
Copia de seguridad de los datos al encender el ordenador
Podman
Importación de Windows a la virtualización Proxmox
Docker y correo PHP
Virtualización Proxmox
Docker y Cron
Lenovo ThinkPad X1 Carbon: puesta en servicio del módem LTE EM7544
Proyecto Yocto: Cree un sistema operativo personalizado para dispositivos integrados
Preparación de un servidor Linux para ejecutar una aplicación web en Python
Cómo solucionar el bajo rendimiento de los archivos compartidos en Docker
Cómo empezar a utilizar Docker correctamente
Instalación de Linux en un servidor HPE ProLiant DL320e dedicado
Cómo poner a prueba una aplicación web
Por qué utilizar el sistema de archivos JFS
Cómo arrancar desde un disco de 4TB con GTP usando UEFI
Raspberry PI
WINE - ejecución de programas Windous en Linux
Sistema operativo GNU/Linux

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+