Ir al contenido principal

NAS con raid1

Este proyecto consistió en crear un NAS (network attached storage) un almacenamiento adicional en red. Creando nuestro servicio personal de nube (Cloud).

Te permite almacenar tú información disponible en la red LAN (samba), en cualquier parte del mundo  con conexión  a Internet (owncloud) creando múltiples usuarios y de acceso multiplataforma acceso como puede ser un ordenador, un móvil o una tablet.


RAID1. Extraído de ASRock, manual 
RAID motherboard H97M Anniversary

Materiales:
  • Dos discos duros 1 TB cada uno (sda y sdb o disk0 y disk1)
  • Dos carcasas con sus fuentes de alimentación y sus cables USB
  • Una Raspberry Pi 2, tarjeta SD (8 GB, puede ser menos)
  • Cable de red UTP (de las raspi al router)
  • Router con Wifi
  • Keyboard
  • Mouse
  • Monitor


 Software GNU
  • Sistema raspbian (Linux para Raspberry bajo la arquitectura de un procesador ARM)
  • Owncloud (servidor multiusuario, multiplataforma GNU)
  • Mdadm (permite crear RAID por software en sistemas linux)


NAS con Rapsberry Pi
Cómomontar un NAS con Raspberry Pi

Read more at: https://www.vichaunter.org/como-se-hace/nas-raspberry-pi
Cómo montar discos duros y memorias usb por id en Linux

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux


 sudo apt-get install mdadm


pr02

seguramente nos pida instalar más paquetes que son necesarios según cada caso, le decimos que

pr03

--------------------------------------------------------------------------------------------------------------------------
Al instalarse nos preguntará dos cosas muy importantes, en el caso de la Raspberry Pi aún más:
  1. La primera es si queremos que el software RAID arranque al principio de todo para instalar ahí el sistema operativo. A lo que tenemos que contestar que no, pero que si leemos el texto se hace indicando:  none
  2. Y luego nos pregunta que si cuando haya discos RAID en el equipo los ponga en funcionamiento con esta configuración de forma automática y en este caso le decimos que sí:
pr04
pr05
pr06
pr07

A continuación termina de instalarse todo.

pr08

--------------------------------------------------------------------------------------------------------------------------
Esquema de interacción entre los dispositivos físicos y los md con sus respectivos directorios

Hemos Creados 4 particiones en cada disco de 1TB



Comprobamos los discos disponibles en la Raspberry Pi usando la orden:

 sudo lsblk
Lista dispositivos en bloques


pr09

--------------------------------------------------------------------------------------------------------------------------

Ahora conectamos los discos que van a formar parte del RAID y volvemos a comprobar con lsblk cual es su nombre

 sudo lsblk

pr10


A) DISCOS CON UNA SOLA PARTICIÓN DE 1 Tb CADA UNO
En este caso son sda y sdb . Y el comando para crear un solo disco de tipo RAID 1 es:

sudo mdadm --create /dev/md1 -l 1 -n 2 /dev/sda /dev/sdb

(Pueden cambiar el nombre de los dispositivos)

EL PROCESO DE SINCRONIZADO TARDA MUCHO TIEMPO (890 min, dos discos de 1 TB). DEBES ESPERAR QUE SE CREE EL RAID VER SU ESTADO CON EL COMANDO 




B) DISCOS CON UNA DOS PARTICIÓN ES DE 0.5 Tb CADA UNO
En este caso son sda y sdb . Y el comando para crear dos (RAID1 y RAID2) ambos de tipo RAID 1 es:

sudo mdadm --create /dev/md1 -l 1 -n 2 /dev/sda1 /dev/sdb1
sudo mdadm --create /dev/md2 -l 1 -n 2 /dev/sda2 /dev/sdb2

(Pueden cambiar el nombre de los dispositivos)

EL SINCRONIZADO TARDARA LA MITAD DEL TIEMPO (445 min, en dos discos de 1 TB). DEBES ESPERAR QUE SE CREE EL RAID VER SU ESTADO CON EL COMANDO

cat /proc/mdstat


pr11


Esto significa:
  • sudo mdadm –create >> crear un disco RAID
  • /dev/md1 >> será el nombre del disco RAID
  • -l 1 >> esto indica que es un RAID de nivel 1
  • -n 2 >> esto indica que vamos a usar 2 discos
  • /dev/sdb /dev/sdc >> estos son los nombre de los discos a incluir en el RAID
Al ejecutar el comando me advierte que los discos tienen otro formato y que se perderán. Respondemos que sí, o sea: Yes

pr12
pr13

Comprobamos que el disco ya está creado con lsblk

pr14

-------------------------------------------------------------------------------------------------------------------------- 
A partir de aquí todo es igual que lo expliqué en la guía para montar un NAS casero. Ahora formateamos el nuevo disco:  

sudo mke2fs -t ext4 /dev/md1

pr15


Y ahora lo preparamos todo para poder usarlo: (Creamos el directorio, le damos todos los permisos y montamos el dispositivo md(1,2)con acceso al directorio raid(1,2), según sea el caso.

Para md1

sudo mkdir /media/raid1
sudo chmod 777 /media/raid1
sudo mount /dev/md1 /media/raid1


Para md2

sudo mkdir /media/raid2
sudo chmod 777 /media/raid2
sudo mount /dev/md2 /media/raid2


pr16


Ya lo podemos utilizar y vemos como aparece con: df -h Este comando nos muestra df = disk free en formato -h = humano, o sea, para ver que espacio libre tenemos en los discos.
 sudo df -h


pr17

-------------------------------------------------------------------------------------------------------------------------- 
Para terminar vamos a incluirlo de forma permanente en el sistema, como también comenté la guía de NAS casero, pero que repito aquí. Primero buscamos el código único del nuevo disco con

 sudo blkid

pr18

Y ahora editamos el archivo fstab recordando que:
Cthulhu Warning Sign-100

OJO QUE PODEMOS LIARLA, VAMOS A IR CON CUIDADO AL TOCAR ESTE FICHERO

Para ello ejecutamos el editor de texto nano con la siguiente orden:  

sudo nano -w /etc/fstab


Código a pegar en fstab


Código


proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

##############Identifica cada disco y lo ancla a un fichero
# tengo dos discos duros de 1Tb cada uno con dos particiones, formando dos raids

#md1, del RAID raspi, chito
######## sugerido por Xavi Carretero
UUID=0db2ac7f-2b16-4d69-9483-14e800e9909c /media/raid1 ext4 defaults,nofail 0 0


#md2, del RAID2 raspi, chito
########sugerido por Xavi Carretero
UUID=fcbec6b9-4ccb-45e5-801c-0c86eaa13ae8su /media/raid2 ext4 defaults,nofail 0 0



# sugerencia de Xavi Carretero vídeo en youtube en:   https://www.youtube.com/watch?v=xYAUysZVg1Y






pr19

En principio podría valer con las opciones estándar defaults, pero para acelerar más este disco pensado para aprovechar la velocidad de 2 puertos USB a la vez, he puesto esta configuración:

UUID=el-que-tenga-tu-raid /media/raid ext4 rw,noauto,noatime,nodiratime 0 0


  • UUID=el-que-tenga-tu-raid >> obtenido mediante el comando blkid
  • /media/raid >> la carpeta que creamos para montar el disco
  • ext4 >> el tipo de formateo del disco
  • rw >> permiso de escritura y lectura
  • noauto >> no se monta automáticamente
  • noatime >> no cambia la fecha de los archivos
  • nodiratime >> no cambia la fecha de directorios
  • 0 >> no incluir en copia de tipo dump
  • 0 >> no detenerse en caso de fallo

fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin fin
----------------------------------------------------------------------------------------------------------------------------

ENLACES SIMBÓLICOS
Lo he usado para colocar un acceso directo al raid en el escritorio

Linux permite crear enlaces simbólicos (Symbolic link) que, para los usuarios que trabajen con windows, es el equivalente a los acceso directos. Podemos crear enlaces simbólicos tanto a archivos (scripts, programas, etc.) como a carpetas. Si borramos estos enlaces no afectaremos al contenido de la carpeta o al archivo.
1
ln -s /media/raid /home/pi/Desktop
Como hemos visto antes utilizamos ln -s para indicar que queremos crear un enlace simbólico (o acceso directo) seguido de la ruta a la carpeta (o archivo) al que queremos hacer el enlace y la ruta donde estará el enlace. 
?
1
ln -s [ruta del archivo o directorio] [ruta del enlace si)
En mi caso fue:
Crear un acceso directo en el escritorio de pi que apunte al raid1 montado
ln -s /media/raid1 /home/pi/Desktop/raid1

Crear un acceso directo en el escritorio de pi que apunte al raid2 montado  
ln -s /media/raid2 /home/pi/Desktop/raid2



En caso de apagón del sistema

De momento no reconoce bien el disco sda y sdb, los puede cambiar y los raid dan errores.

Solución:


Pasos para arrancar el raid (md1 y md2) después de un apagón
  • Encendemos la rapsberry pi, esperamos que cargue el sistema.
  • Verificamos en consola los dispositivos conectados al sistema: 
lsblk
  • Encendemos el HDD0 (sda), dejamos unos segundos
  • Verificamos en consola los dispositivos conectados al sistema: 
lsblk
  •  Encendemos el HDD1 (sdb), dejamos unos segundos
  •  Verificamos en consola los dispositivos conectados al sistema: 
lsblk
  • Ensamblamos y escaneamos los raid (md1 y md2): 
sudo mdadm --assemble --scan
  • Verificamos los estados de los raid (md1 y md2): 
cat /proc/mdstat
  • Anclamos los raid md1 y md2 a los directorios raid1 y raid2: 
sudo mount /dev/md1 /media/raid1
sudo mount /dev/md2 /media/raid2


  
Posible solución
https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux



mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux
root@raspberrypi:~# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 abr  1 13:19 C42ED50E25D4F9FE -> ../../sdb1
lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2

mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd


Webgrafía (fuentes consultadas)

NAS con Raspberry Pi
https://www.vichaunter.org/como-se-hace/nas-raspberry-pi

NAS casero avanzado disco RAID en Raspberry Pi
https://raspberryparatorpes.net/proyectos/nas-casero-avanzado-disco-raid-en-raspberry-pi/

RAID por software en Debian 7 con mdadm
https://blog.unlugarenelmundo.es/2013/10/23/raid-por-software-en-debian-7-con-mdadm/

How to set up software RAID for Raspberry Pi 
https://funnyvale.com/how-to-set-up-software-raid-for-raspberry-pi/

Gestión de un RAID 1 en un sistema linux (Debian) 
https://www.youtube.com/watch?v=yQT_dmFLbVo

Instalación y configuración de un Raid1 en Ubuntu. Xavi Carretero

Ver el identificador de una unidad usb en linux Por suerte, al igual que pasa con las MAC de las tarjetas de red, los dispositivos usb, así como las memorias flash y los discos duros, tienen cada uno un identificador único que nos indica exactamente una unidad, independientemente de cuando la conectemos al equipo. Para eso simplemente tendremos que conectar una unidad a nuestro equipo de ejecutar este comando: ls -l /dev/disk/by-uuid/ 1 ls -l /dev/disk/by-uuid/ Esto nos dará una lista con las unidades conectadas, por ejemplo: root@raspberrypi:~# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 abr 1 13:19 C42ED50E25D4F9FE -> ../../sdb1 lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2 1 2 3 4 5 root@raspberrypi:~# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 abr 1 13:19 C42ED50E25D4F9FE -> ../../sdb1 lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2 Como puedes ver en este caso la unidad que he conectado tiene la id C42ED50E25D4F9FE, y como nunca cambiará no importa en el orden que la conecte, ya que hará referencia siempre al disco sdX al que vaya asociado. Para cada unidad que conectemos podemos apuntarnos por ejemplo las 3 o 4 primeras letras para identificarla dentro de un archivo de texto. Cómo montar unidades usb por uuid en linux Ahora que sabes la uuid de tu disco usb simplemente tienes que montarla como haces siempre pero con la ruta a su identificador. Sería ejecutar un comando similar a este en mi caso: mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd 1 mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd En este caso este comando es lo mismo que si ejecuto mount /dev/sdb1 /var/hdd, ya que este uuid va asociado a dicha partición. Con esto puedes hacer muchas cosas, como por ejemplo tener un script que detecte cuando conectas una memoria usb en concreto y que haga de llave para desbloquear algo, o que se copie automáticamente el contenido de un disco duro específico, o en mi caso gestionar un sistema de backups que guardan las copias en discos duros determinados.

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux
Ver el identificador de una unidad usb en linux Por suerte, al igual que pasa con las MAC de las tarjetas de red, los dispositivos usb, así como las memorias flash y los discos duros, tienen cada uno un identificador único que nos indica exactamente una unidad, independientemente de cuando la conectemos al equipo. Para eso simplemente tendremos que conectar una unidad a nuestro equipo de ejecutar este comando: ls -l /dev/disk/by-uuid/ 1 ls -l /dev/disk/by-uuid/ Esto nos dará una lista con las unidades conectadas, por ejemplo: root@raspberrypi:~# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 abr 1 13:19 C42ED50E25D4F9FE -> ../../sdb1 lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2 1 2 3 4 5 root@raspberrypi:~# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 abr 1 13:19 C42ED50E25D4F9FE -> ../../sdb1 lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2 Como puedes ver en este caso la unidad que he conectado tiene la id C42ED50E25D4F9FE, y como nunca cambiará no importa en el orden que la conecte, ya que hará referencia siempre al disco sdX al que vaya asociado. Para cada unidad que conectemos podemos apuntarnos por ejemplo las 3 o 4 primeras letras para identificarla dentro de un archivo de texto. Cómo montar unidades usb por uuid en linux Ahora que sabes la uuid de tu disco usb simplemente tienes que montarla como haces siempre pero con la ruta a su identificador. Sería ejecutar un comando similar a este en mi caso: mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd 1 mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd En este caso este comando es lo mismo que si ejecuto mount /dev/sdb1 /var/hdd, ya que este uuid va asociado a dicha partición. Con esto puedes hacer muchas cosas, como por ejemplo tener un script que detecte cuando conectas una memoria usb en concreto y que haga de llave para desbloquear algo, o que se copie automáticamente el contenido de un disco duro específico, o en mi caso gestionar un sistema de backups que guardan las copias en discos duros determinados.

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux
ls -l /dev/disk/by-uuid/

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux
ls -l /dev/disk/by-uuid/

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux
ls -l /dev/disk/by-uuid/

Read more at: https://www.vichaunter.org/como-se-hace/montar-discos-duros-memorias-usb-id-linux

Comentarios