Servidor Raspberry Pi 4 B - Agregando almacenamiento externo

Servidor Raspberry Pi 4 B - Agregando almacenamiento externo
Photo by Shubham Bombarde / Unsplash

Bienvenidos al segundo capitulo de esta serie de Convirtiendo una Raspberry Pi 4 Model B en un poderoso servidor casero hoy veremos como agregar almacenamiento externo en mi caso como les mostré en al final del articulo pasado, uso un disco USB externo mediante puerto 3.0.

Entonces haciendo un ligero resumen mi servidor consta de una Raspberry Pi Model B de 8GB de RAM, una micro SD de 64GB (Con Manjaro Linux), un case con disipación + ventilador y un disco USB 3.0 de 2 TB de almacenamiento mecánico.

Nota: En mi experiencia no es recomendable conectar más de un disco duro mecánico a la Raspberry Pi debido a que la energía suministrada por la fuente de poder estándar de 5v 3A no es suficiente, para ello sería bueno optar por un HUB USB 3.0 con fuente externa de poder, ya que los discos mecánicos tienen un consumo más alto de energía, no estoy seguro si pasaría lo mismo con SSD's pero en principio deberían tener un menor consumo.

Entonces lo primero que necesitamos para iniciar es un disco USB preferiblemente con conexión 3.0 o superior, esto con el fin de tener mejores velocidades de lectura / escritura. Existen varias formas de hacer esto, supongo que llegados a este punto, si estás jugando / trasteando / cacharreando con una Raspberry, muy seguramente tienes algo de experiencia previa con informática y no sería extraño que ya cuentes con un disco USB o SATA III en casa quizá de alguna actualización de Hardware previa de un computador portátil, o un dispositivo para almacenar  copias de respaldo. Entonces con esa premisa tenemos 2 opciones, si ya tu dispositivo cuenta con el conector USB solo debes conectarlo a la Raspberry, sino y si tienes uno de tipo SATA III necesitaremos un adaptador de SATA a USB. Yo he comprado un par en el pasado de la marca UGREEN USB 3.0 Tipo C que me han funcionado muy bien.

Resuelto este punto, ya tenemos nuestro disco de almacenamiento USB conectado a nuestra Raspberry, ahora necesitamos formatearlo y "montarlo" para así poder usarlo como sistema de archivos en Linux.

Aquí nuevamente tenemos alternativas y varían de acuerdo al tamaño del disco a utilizar, primero veremos un poco de la teoría y luego nos pondremos manos a la obra.

Si usas un disco de menos de 2000GB (2TB) y no buscas crear más de 4 particiones puedes usar una Tabla de Particiones tipo MBR, Si por el contrario tienes un disco de 2TB o más lo mejor es usar una Tabla de Particiones GPT. Esto también depende de la versión del sistema operativo instalado ya que para poder usar GPT necesitaras que el Sistema Operativo sea de 64 bits.

Pero para no hacer más largo el proceso les cuento como lo tengo yo: como vimos en el capitulo pasado, instalamos Manjaro Linux para ARM64 (64 bits) y tengo un disco de 2TB por ende usé GPT como tabla de particiones.

Así luce mi pequeño servidor...

¿Qué es LVM y para que sirve?

En pocas palabras LVM - Logical Volume Manager (Gestor de volúmenes lógicos) es una forma de administrar volúmenes de forma dinámica desde una capa de Software y no de Hardware como lo hacen las particiones de disco tradicional. Más específicamente en nuestra Raspberry usaremos la versión LVM2 para crear diferentes volúmenes y así organizar nuestra información.

Nota: Este es un paso que para configuraciones básicas se puede omitir, pero ya que en mi caso yo quiero en el futuro poder agregar más almacenamiento a mi Raspberry de forma dinámica, ésta fue la mejor alternativa que encontré, sin embargo puede que en tu caso baste con solo conectar el disco y formatearlo con EXT4 para usarlo por ejemplo o incluso una alternativa más elaborada que la de LVM.

Veamos algunos conceptos relacionados con LVM:

  • Physical Volumes (PV): Volumenes Físicos como discos o particiones disponibles para usar en LVM.
  • Volume Groups (VG): Es un grupo de volumenes de almacenamiento compuesto de uno o más PV's.
  • Logical Volumes (LV): Volumenes lógicos que se crean dentro de los VG's y que se pueden usar como particiones tradicionales.
  • EXT4: El formato de partición más comunmente usado en maquinas Linux.

Ahora si empecemos con los comandos

Iniciaremos sesión en nuestra Raspberry ya sea mediante SSH o bien con una pantalla y teclado conectado directamente.

Primero instalemos lvm2 ejecutando:

sudo pacman -S lvm2

Ahora ya que el resto de comandos vamos a necesitar permisos de administrador vamos a pasarnos al usuario root, ejecutando el siguiente comando:

sudo su

Nos solicitara ingresar nuestra contraseña del sistema.

Ahora ya como usuario root, iniciaremos la configuración de LVM:

  1. Identificar nuestro disco USB: Mediante el siguiente comando podremos ver los discos conectados, por lo general tienen un nombre como sda, sdb, sdc, etc.. # fdisk -l | grep /dev/s Disco /dev/sda: 1,82 TiB, 2000398933504 bytes, 3907029167 sectores /dev/sda1 2048 3907029133 3907027086 1,8T Sistema de ficheros de Linux como podemos observar en mi caso mi disco se llama sda y esta en la ruta /dev/sda.
  2. Creamos un PV usando nuestro disco: Ya con el nombre y ruta del disco identificado crearemos nuestro PV ejecutando # pvcreate /dev/sda de esta manera usaremos el total de la capacidad del disco como PV. Para verficar podemos usar el comando # pvdisplay.
    3.Ahora necesitamos crear un Volume Group VG: con el comando # vgcreate data_group /dev/sda, donde "data_group" es el nombre de mi VG. Nuevamente para valiar podemos usar # vgdisplay.
  3. Creando LV's (volumenes lógicos): finalmente ahora necesitamos crear los volumenes que vamos a usar como particiones, usando el siguiente comando # lvcreate -L 10G -n archivos data_group, donde archivos es el nombre de nuestro LV y datagroup el nombre de nuestro VG, lo que traduce que crearemos un volumen logico de 10GB llamado archivos en el grupo de volumenes data_group. Y como en los casos anteriores podemos verificar que quedó correctamente creado con # lvdisplay.
  4. Formatear nuestro LV: Ya tenemos una partición logica, ahora necesitamos darle formato para poderla usar, entonces usaremos el comando # mkfs.ext4 /dev/data_group/archivos, con esto estamos creando un sistema de archivos EXT4 en la partición ubicada en /dev/data_group/archivos.
  5. Finalmente debemos montar dicha partición para que el Sistema Operativo la pueda usar para esto podemos hacerlo de forma provisional mediante el comando mount, por ejemplo: mount -t auto /dev/data_group/archivos /mnt con esto estaremos montando la partición que formateamos en el paso anterior en la ruta /mnt. Hay que tener en cuenta que esta forma es provisional y que si nuestro servidor se reinicia se debe volver a ejecutar el comando, si queremos hacer que una partición sea persistente y se monte automaticamente si se reinicia el servidor debemos agregarla al archivo /etc/fstab, de la siguiente manera, agregando esta linea al archivo fstab: # Automount external volumes /dev/data_group/archivos /mnt/archivos ext4 defaults 0 0

Para ver información más detallada del proceso les comparto esta guía https://www.redhat.com/sysadmin/lvm-vs-partitioning

Así luce mi configuración LVM.

Esto ha sido todo por este capitulo, gracias por llegar hasta el final, nos vemos en el siguiente donde instalaremos Docker y guardaremos la configuración usando un volumen en el almacenamiento externo.