• Skip to main content
  • Skip to primary sidebar
  • Inicio
    • Acerca de
    • Cookies y RGPD
  • Sistemas Operativos
  • Tipos de Raspberry Pi
    • Mejores microSD
  • Glosario
  • Blog
    • Alternativas
    • FAQ
  • Contacto

Raspberry para torpes

pero para torpes, torpes

Usando btrfs en Raspberry Pi con Open Media Vault

22 enero, 2018 by manuti 2 Comments

Una guía para utilizar btrfs como mejora del servidor Open Media Vault montado como NAS casero con nuestra Raspberry Pi.

Montar discos en modo RAID ya lo expliqué en el blog hace tiempo. Sin embargo, a día de hoy es mejor en vez de configurar un RAID USB usando mdadm (que fallará de todos modos tarde o temprano y se dañará incluso con problemas menores de conectividad USB) hacerlo con btrfs.

Así se puede proporcionar integridad de datos y con su modo lineal, va llenando los discos del conjunto de 1 en 1, si se trata de añadir la capacidad de dos o más discos. Esto requiere usar la línea de comandos.

OJO QUE PODEMOS LIARLA, VAMOS A HACER COPIA DE SEGURIDAD E IR CON CUIDADO

 

Entramos en una Terminal por SSH. Instalamos el soporte para btrfs por si no lo tenemos.Y suponiendo que tenemos 2 discos (sda y sdb) lo siguiente creará una configuración lineal de btrfs:

sudo -s
apt install btrfs-tools
parted -s /dev/sda mklabel gpt 
parted -s /dev/sdb mklabel gpt 
partprobe 
mkfs.btrfs -f -d single -m raid1 -L BTRFS_LINEAR /dev/sd[ab]

Los dos comandos parted eliminan las particiones de ambos discos, luego el kernel lee en la tabla de particiones (ahora inexistente) y finalmente creamos una configuración multi disco con btrfs que almacena los datos en forma lineal (comenzando con sda y si está lleno entonces usando sdb)

Además la opción -m raid1 tiene la particularidad de que los metadatos (estructuras del sistema de archivos así como las sumas de comprobación para todos los datos almacenados) están duplicados en ambos discos. Así que incluso si un disco se ve afectado por la corrupción de datos, podemos saberlo con seguridad ya que tenemos dos copias de cada fragmento de metadatos.

Vamos ahora con la parte de montar y utilizar nuestro nuevo sistema de discos.

Montar el disco con Raspbian

Ahora la parte difícil, hemos creado una configuración multi dispositivo btrfs que consiste en sda y sdb. Para poder utilizarlo podemos montar sda o sdb, vale cualquiera ya que el código btrfs busca los discos restantes por su cuenta.

Si vas a usarlos con Raspbian por ejemplo, lo que habría que hacer es modificar fstab más o menos como expliqué en este post, pero con el siguiente texto para nuestro caso montando solo sda por ejemplo en una carpeta ya creada con el nombre /media/btrfs por ejemplo:

sudo -s
mkdir /media/btrfs/
mount /dev/sda /media/btrfs
btrfs filesystem df /media/btrfs/
blkid /dev/sda

La salida será algo así:

NAME FSTYPE LABEL UUID                                 MOUNTPOINT
sda  btrfs        e5b5c118-fb56-4fad-a45d-ff5fad9a649d /media/btrfs

Editamos /etc/fstab:

sudo cp /etc/fstab fstab.old
sudo nano /etc/fstab

Si lo montamos usando el UUID sería de la siguiente forma:

UUID=e5b5c118-fb56-4fad-a45d-ff5fad9a649d /media/btrfs           btrfs   defaults      0  1

O usando el nombre de la unidad, que es más fácil pero tiene sus inconvenientes en caso de que se cambien los nombres de las unidades al cambiarlas de puerto USB. Como ya he dicho, el resto de discos del conjunto se montarán indirectamente de forma automática a partir de ese:

/dev/sda /media/btrfs               btrfs   defaults 0       1

Montar el disco con Open Media Vault

De forma parecida a lo visto con Raspbian pero con la facilidad del entorno de OMV. Así que con nuestra configuración ahora simplemente usamos el interfaz web de OMV para montar sda por ejemplo, sin hacer nada con sdb, y se verá así:

montar disco btrfs en omv

Si desde la Terminal hacemos la siguiente comprobación vemos una incongruencia:

root@raspberrypi:~# lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL /dev/sda 
NAME FSTYPE SIZE MOUNTPOINT LABEL 
sda btrfs 465.8G /srv/dev-disk-by-label-BTRFS_LINEAR BTRFS_LINEAR 
root@raspberrypi:~# df -h | grep '/dev/sd' 
/dev/sda 578G 428M 574G 1% /srv/dev-disk-by-label-BTRFS_LINEAR

Si os fijáis lsblk no detecta bien o no nos informa del espacio combinado de ambos discos. Sin embargo, con df o desde la web de OMV si se ve. Ahora solo queda añadir el nuevo conjunto btrfs creado:

compartir disco btrfs en omv

Lo interesante de usar btrfs viene ahora. Las sumas de comprobación se calcularán de nuevo al leer los datos y se comparan con los metadatos originales que además están guardados por duplicado en los discos del conjunto btrfs. En caso de que se produzca un desajuste (¡corrupción de datos detectada!) se registrará (dmesg y syslog).

Además podemos usar un script que se ejecute una vez al mes desde crontab redirigiendo la salida a un logfile e ir comprobando si todo está OK.

Este script es de Marc Merlin http://marc.merlins.org/perso/btrfs/post_2014-03-19_Btrfs-Tips_-Btrfs-Scrub-and-Btrfs-Filesystem-Repair.html y lo podéis copiar de aquí: https://pastebin.com/bd9yZTMQ

#! /bin/bash

# By Marc MERLIN  2014/03/20
# License: Apache-2.0

which btrfs >/dev/null || exit 0

export PATH=/usr/local/bin:/sbin:$PATH

# bash shortcut for `basename $0`
PROG=${0##*/}
lock=/var/run/$PROG

FILTER='(^Dumping|balancing, usage)'
test -n "$DEVS" || DEVS=$(grep '\' /proc/mounts | awk '{ print $1 }' | sort -u)
for btrfs in $DEVS
do
    tail -n 0 -f /var/log/syslog | grep "BTRFS: " | grep -Ev '(disk space caching is enabled|unlinked .* orphans|turning on discard|device label .* devid .* transid|enabling SSD mode|BTRFS: has skinny extents|BTRFS: device label)' &
    mountpoint="$(grep "$btrfs" /proc/mounts | awk '{ print $2 }' | sort | head -1)"
    logger -s "Quick Metadata and Data Balance of $mountpoint ($btrfs)" >&2
    # Even in 4.3 kernels, you can still get in places where balance
    # won't work (no place left, until you run a -m0 one first)
    btrfs balance start -musage=0 -v $mountpoint 2>&1 | grep -Ev "$FILTER"
    btrfs balance start -musage=20 -v $mountpoint 2>&1 | grep -Ev "$FILTER"
    # After metadata, let's do data:
    btrfs balance start -dusage=0 -v $mountpoint 2>&1 | grep -Ev "$FILTER"
    btrfs balance start -dusage=20 -v $mountpoint 2>&1 | grep -Ev "$FILTER"
    # And now we do scrub. Note that scrub can fail with "no space left
    # on device" if you're very out of balance.
    logger -s "Starting scrub of $mountpoint" >&2
    echo btrfs scrub start -Bd $mountpoint
    ionice -c 3 nice -10 btrfs scrub start -Bd $mountpoint
    pkill -f 'tail -n 0 -f /var/log/syslog'
    logger "Ended scrub of $mountpoint" >&2
done

La salida del script para un disco casi vació, fijaos en la parte del final donde dice 0 errors, sería así:

root@raspberrypi:~# /usr/local/bin/btrfs-scrub.sh 
root: Quick Metadata and Data Balance of /srv/dev-disk-by-label-BTRFS_LINEAR (/dev/sda) 
Done, had to relocate 1 out of 7 chunks 
Done, had to relocate 3 out of 6 chunks 
Done, had to relocate 1 out of 5 chunks 
Done, had to relocate 1 out of 5 chunks 
root: Starting scrub of /srv/dev-disk-by-label-BTRFS_LINEAR 
btrfs scrub start -Bd /srv/dev-disk-by-label-BTRFS_LINEAR 
scrub device /dev/sda (id 1) done 
scrub started at Fri Nov 24 18:33:15 2017 and finished after 159 seconds 
total bytes scrubbed: 3.09GiB with 0 errors 
scrub device /dev/sdb (id 2) done 
scrub started at Fri Nov 24 18:33:15 2017 and finished after 1 seconds 
total bytes scrubbed: 2.56MiB with 0 errors

En caso de que haya errores sabremos en qué archivos y que disco es el que da problemas. Así podemos actuar quitando ese disco del conjunto btrfs y recuperamos de una copia de seguridad, como debe ser.

En la web del Instituto Puig Castellar tienen un montón de buenos Ejemplos de uso de Btrfs.

Extraído del post en el foro de OMV de tkaiser: https://forum.openmediavault.org/index.php/Thread/18991-New-approach-for-Raspberry-Pi-OMV-images/?postID=160915#post160915

Artículos relacionados:

Open Media Vault para Raspberry Vídeos con cortes en Kodi media center en Raspberry Pi Prepara tu SD para Raspberry usando Ubuntu 14.04 Trusty Tahr Formatear disco en ext4 : preparando un NAS o servidor casero 1

Filed Under: proyectos Tagged With: btrfs, btrfs omv, btrfs open media vault, btrfs raspbian, nas raspberry pi 3, raid, raid btrfs, raid casero, raid omv, raid open media vault, raid raspbian

Primary Sidebar

Categorías

Archivos

RASPBERRY PI | RECOMENDACIONES

Raspberry Pi Spain RAS-4-4G - Placa Base Pi 4 Modelo B / 4 GB SDRAM (1822096)
Raspberry Pi Spain RAS-4-4G - Placa Base Pi 4 Modelo B / 4 GB SDRAM (1822096)
Amazon Prime
78,99 EUR
Comprar en Amazon
Samsung EVO Select - Tarjeta de Memoria microSDXC de 32 GB con Adaptador SD, 95 MB/s, UHS1, Color Verde y Blanco
Samsung EVO Select - Tarjeta de Memoria microSDXC de 32 GB con Adaptador SD, 95 MB/s, UHS1, Color Verde y Blanco
Comprar en Amazon
Raspberry Placa Base PI 3 Modelo A+, Cortex a 1.4GHZ, WiFi 5GHZ (11811853)
Raspberry Placa Base PI 3 Modelo A+, Cortex a 1.4GHZ, WiFi 5GHZ (11811853)
Amazon Prime
34,90 EUR
Comprar en Amazon
Raspberry Pi 4 Computer Official Premium Kit with MicroSD 32GB S.O. preloaded (2GB RAM, Black)
Raspberry Pi 4 Computer Official Premium Kit with MicroSD 32GB S.O. preloaded (2GB RAM, Black)
Comprar en Amazon
Rebajas Logitech MK270 Combo Teclado y Ratón Inalámbrico para Windows, 2,4GHz Inalámbrico, Ratón Compacto, 8 teclas multimedia y de acceso directo, 2 años de batería, PC, PC Portátil, QWERTY Español - Negro
Logitech MK270 Combo Teclado y Ratón Inalámbrico para Windows, 2,4GHz Inalámbrico, Ratón Compacto, 8 teclas multimedia y de acceso directo, 2 años de batería, PC, PC Portátil, QWERTY Español - Negro
Amazon Prime
27,93 EUR
Comprar en Amazon
Rebajas Logitech K400 Plus Teclado Inalámbrico Táctil para TV con Control Multimedia y Touchpad, Teclado QWERTY Español - Negro
Logitech K400 Plus Teclado Inalámbrico Táctil para TV con Control Multimedia y Touchpad, Teclado QWERTY Español - Negro
Amazon Prime
34,90 EUR
Comprar en Amazon
Raspberry Pi 4 Model B 2GB ARM-Cortex-A72 4x 1,50GHz, 2GB RAM, WLAN-ac, Bluetooth 5.0, LAN, 4x USB, 2x Micro-HDMI
Raspberry Pi 4 Model B 2GB ARM-Cortex-A72 4x 1,50GHz, 2GB RAM, WLAN-ac, Bluetooth 5.0, LAN, 4x USB, 2x Micro-HDMI
68,49 EUR
Comprar en Amazon

Última actualización el 2025-05-01 / Enlaces de afiliados / Imágenes de la API para Afiliados

© 2013–2025

Este sitio web usa cookies para mejorar su experiencia como usuario ► Aceptar Rechazar ◘ Si necesita más información
Política de Cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR