NAS casero con Raspberry Pi

uente: http://raspberryparatorpes.net


El almacenamiento conectado en red, Network Attached Storage (NAS), es el nombre dado a una tecnología de almacenamiento dedicada a compartir la capacidad de almacenamiento de un computador (servidor) con computadoras personales o servidores clientes a través de una red (normalmente TCP/IP), haciendo uso de un sistema operativo optimizado para dar acceso con los protocolos CIFS, NFS, FTP o TFTP.


Los sistemas NAS son dispositivos de almacenamiento a los que se accede desde los equipos a través de protocolos de red (normalmente TCP/IP). También se podría considerar un sistema NAS a un servidor (Microsoft Windows, Linux, etcétera) que comparte sus unidades por red, pero la definición suele aplicarse a sistemas específicos.


Los protocolos de comunicaciones NAS están basados en archivos por lo que el cliente solicita el archivo completo al servidor y lo maneja localmente, por lo que están orientados a manipular una gran cantidad de pequeños archivos. Los protocolos usados son protocolos de compartición de archivos como Network File System (NFS) o Microsoft Common Internet File System (CIFS).

Formatear el disco duro

Lo primer que haremos es formatear nuestro disco duro al formato EXT4 para que funcione 100% con nuestro sistema. Entonces verificamos que discos nos reconoce nuestra RBPi.

ls -laF /dev/disk/by-uuid/

Si te fijas hay una unidad que dice /sda1, ese es nuestro disco duro externo, el que procederemos a formatear, por lo tanto procederemos a desmontarlo para que el sistema no lo bloquee y podamos borrarlo.

$ sudo umount /dev/sda

Ahora continuamos con el comando para formatear

$ sudo mkfs.ext4 /dev/sda -L Respaldo

La parte final -L Respaldo corresponde a la etiqueta.

Nos informa que vamos a formatear todo el disco y que para seguir hay que decir Sí o No, o sea, s,n . Le damos a la tecla s y luego a tecla Enter / Intro / Return.


Ahora nos informa de como transcurre el proceso y si todo ha ido bien será más o menos este el resultado.

Ahora si volvemos a teclear el comando del principio, veremos que el resultado es algo distinto, y que ese código es la clave para que nuestro esté listo para usar al arrancar la próxima vez o lo podamos conectar y desconectar más fácilmente.

$ ls -laF /dev/disk/by-uuid/

Añadir el disco de Forma Permanente

Después de explicar cómo formatear el disco duro o la memoria. Vamos ahora a hacer que todo quede preparado para que se conecte de forma automática al encender la Raspberry con el disco conectado, o poder conectarlo y desconectarlo con un comando muy simple en caso de tenerla ya encendida.


Ahora toca obtener el código que identifica a nuestra partición de forma única, asi no nos preocupamos que conectemos el disco duro en otro usb o que pongamos otro disco con la misma etiqueta, sino que si no es específicamente esa partición no se montara.


Ejecutamos el siguiente comando:

$ sudo blkid

En este caso nos interesa la partición que se llama "Respaldo" o /dev/sda.

Apuntamos letra por letra lo que aparece tras UUID, por largo que sea, TODO.


Ahora creamos una carpeta nueva que será en la que "montemos" ese disco duro para que se pueda ver desde el explorador de archivos o desde otros programas. En mi caso he elegido crearla en la carpeta "media" que es la recomendada para esto y con el mismo nombre (o parecido ) que la etiqueta que le puse al formatearlo, en mi caso le he puesto "nas". Y luego, le damos permisos para que todo el mundo pueda escribir, esto es más o menos inseguro pero nos facilitará las cosas.


sudo mkdir /media/nas

sudo chmod 777 /media/nas

ln -s /media/nas/ /home/juaramir/respaldos

Hacemos una cosa más, que es poner un "enlace simbólico" estilo Linux para que desde la carpeta del usuario (juaramir) podamos acceder más rápido a nuestro disco.


Ahora con el código que copiamos al principio (UUID) o viéndolo de nuevo, vamos a editar el archivo de la configuración de discos de la Raspberry Pi.

sudo nano -w /etc/fstab

Ahora se nos abre una aplicación que se llama "nano" y que es un editor muy básico pero más o menos sencillo de manejar. Con los cursores, las teclas de las flechas, nos movemos hasta el final para añadir una línea parecida a la que les doy, pero con cuidado de poner el código UUID tuyo y tu directorio.

Ext4

UUID=0d6facc8-2e9d-4a7f-912e-58ac293752cf /media/nas ext4 defaults 0 0

NTFS

UUID=XXXXXXX /media/nas ntfs auto,exec,rw,user,dmask=002,fmask=113,uid=1000,gid=1000,locale=es_CL.UTF-8

0 0

Guardamos y cerramos el documento (ctrl+x, ctrl+o)

Ahora comprobamos que unidades hay montadas:

df -h

Luego hacemos montar todas las unidades que estén conectadas pero no montadas y luego verificamos que unidades hay con el mismo comando anterior.

sudo mount -a

df -h

Como pueden ver, la última unidad es la que hemos montado. Esto se mantendrá así cada vez que encendamos la raspberry con el disco encendido.


Ahora para desconectarlo o conectarlo usamos el comando

sudo umount /dev/sda #desmontarlo

sudo mount /dev/sda #montarlo

Siempre y cuando tu disco también esté en la unidad sda.

Instalar Samba

Ahora necesitamos instalar un servidor de archivos para que nuestro disco sea visible en la red. Para esto usaremos SAMBA.

sudo apt-get install samba samba-common-bin

A continuación configuraremos el archivo de SAMBA:

sudo nano -w /etc/samba/smb.conf

Se abre un archivo de texto enorme con cientos de líneas que no es necesario tocar. nos movemos con el cursor hasta el final del documento y ponemos las siguientes líneas (cambiando según tu configuración).


[PiRespaldos]

comment = USB Share

path = /media/nas

writeable = Yes

create mask = 0777

directory mask = 0777

browseable = Yes

valid users @users

force user = juaramir

Ya fuera del editor nano de vuelta a la terminal añadimos el usuario (en mi caso juaramir) a los usuarios de SAMBA

sudo smbpasswd -a juaramir

y le ponemos la contraseña de red dos veces y el usuario queda añadido.


Y reiniciamos el servidor para que tengan efectos los cambios

sudo /etc/init.d/samba restart


Y ya estará listo para acceder

Optimizar Samba

Después de haber instalado el servidor SAMBA, vamos a ver un par de cambios y al final una opción para optimizar el rendimiento en la Raspberry Pi al máximo.

Volvemos a abrir el archivo de configuración de SAMBA:

sudo nano -w /etc/samba/smb.conf


Ahora vamos a desactivar las carpetas o directorios que venían por defecto en la configuración y vamos a dejar exclusivamente el nuevo disco duro que hemos preparado. Para ello hay que comentar las líneas que no hacen falta, añadiendo al principio un punto y coma ; o un símbolo #.

Antes

Después

Antes

Después

Ahora vamos a añadir una serie de parámetros para sacarle todo el jugo a la Raspberry Pi como servidor con SAMBA. Volvemos al principio, dentro de la sección [global] e incluimos justo donde termina esa sección:

max xmit = 65535

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=65535 SO_RCVBUF=65535

read raw = yes

write raw = yes

max connections = 65535

max open files = 65535

Ya fuera del editor nano de vuelta a la terminal reiniciamos el servidor para que tengan efectos los cambios


sudo /etc/init.d/samba restart


Listo ya tenemos nuestro disco duro en red.