NAS casero, barato y bajo consumo con un SOC Banana Pi M1

Rasperry Pi, Cubieboard, Orange Pi, Banana Pi...
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero, barato y bajo consumo con un SOC Banana Pi M1

Mensaje sin leer por Naguissa »

Tengo pensado añadir un NAS casero, pero quería ciertas características no convencionales que los NAS normales no tienen o son muy caros.

Quiero que sea:
  • De (muy) bajo consumo
  • Silencioso (al menos, lo mas silencioso posible)
  • Ampliable
  • Relativamente compacto (una semitorre como máximo, ya que ha de ser ampliable...)
  • Versátil. Deseo poder tener algunos elementos en RAID (software RAID) y otros sin ello (elementos seguros e inseguros).
  • Debido a las opciones que quiero implementar, basado en Linux
  • Barato.
Si no fuese por el consumo una opción ideal sería un PC pequeño y silencioso, aunque el coste tampoco sería barato.

En los siguientes mensajes expondré cómo y por qué he montado el sistema que he montado e iré enlazando aquí cada decisión y parte.

Pasos de montaje:
  1. Elección de la familia de SOC a usar.
  2. Elección del modelo de placa a usar
  3. Piezas extra
  4. Sistema Operativo
  5. Instalación del Sistema Operativo base
  6. Configuración básica
  7. Servidor SAMBA (compartir unidades en red con Windows, Mac y Linux)
  8. Servidor DLNA
  9. Servidor RSYNC
  10. Servidor de descargas mldonkey (emule, torrent, etc)
  11. Tercer USB en Banana Pi M1 (uso del puerto USB OTG)
  12. Servidor NFS
  13. Servidor Syncthing
Fuentes:
Estos usuarios agradecieron al autor Naguissa por el mensaje:
Daniel
Valoración: 33%

Tags:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero. 1. Elección de la familia de SOC a usar

Mensaje sin leer por Naguissa »

1. Elección de la familia de SOC a usar

Puede parecer una cuestión trivial, pero tiene mucha mas miga de lo que parece. Podemos pensar que una Raspberry Pi 3 es la mejor opción, o cualquiera que sea nuestra placa preferida, pero hay que contar cosas que importan y no en un NAS.

Cosas importantes:
  • Conexiones SATA reales: Es ideal tener alguna conexión directa a disco, como es SATA (M2 o mPCI son también válidas -además, se pueden convertir a SATA con un conversor únicamente mecánico-, pero mas caras y no un requisito). Apunto REALES porque hay placas que no tienen SATA en el chip sino usando un mediocre conversor de USB a SATA (y alguna, además, compartiendop USB con un HUB).
  • Conexiones USB: Ante la falta de suficientes SATA usaremos adaptadores USB para conectar mas dispositivos. Mejor que sean USB3, debido a la mayor velocidad. En mi caso, además, usaré algunos antiguos discos PATA, con lo que necesito de estos conversores.
  • Conexión de red: Recomiendo encarecidamente usar Ethernet para un NAS. Y por ello, en éste aspecto, mejor si tiene un puerto Gigabit Ethernet, ya que dispone de mas velocidad y menos lag.
Cosas que no importan excesivamente:
  • CPU: Con que no sea excesivamente lenta ya nos valdrá para un NAS
  • RAM: En principio, para un servidor NAS funcionando en modo consola no necesita mucha RAM. Pero la RAM sobrante es aprovechada como cache, con lo que pese a no ser necesaria si es un buen punto a favor.
  • WiFi: Como he comentado antes, mucho mejor por Gigabit Ethernet. Pero si por cualquier motivo no podemos usarlo, la WiFi integrada en estos dispositivos suele ser de mala calidad, poco alcance y suele dar unos resultados de mediocres a directamente malos. Si realmente se necesita WiFi mucho mejor usar un adaptador USB.

SOCs disponibles

A la hora de elegir una placa, si deseamos que tenga SATA y Gigabit Ethernet directamente soportados en el chip, tenemos las siguientes familias soportadas:
  • Marvell Kirkwood / Armada: Usado en algunos NAS, no he encontrado SOCs de carácter general por Internet.
  • i.MX6: Usado en algunos NAS, aplicaciones industriales y algunos SBC. SATA y Gbit Ethernet limitados pero aceleración hardware de criptografía. No he encontrado SOCs de carácter general por Internet.
  • Alpine de Annapurna Labs: Usado en algunos NAS y en los datacenter de Amazon; no he encontrado SOCs de carácter general por Internet.
  • Allwinner A20: Muy usado en placas tipo Raspberry, tabletas, ordenadores... Muy buen soporte en Linux.
  • Allwinner R40: Usado en placas STB y otros dispositivos, pero no tiene buen soporte en Linux.
  • Otros SOCs, como SOCs de 64 bits, con PCIe, 10 Gbit Ethernet... pero con precios muy por encima (¡pero mucho!) de los anteriores.
Puedes revisar las especificaciones de los chips Allwinner, y ver que solo los dos listados tienen soporte SATA, USB y GBit Ethernet.

Conclusión:

Analizando la disponibilidad y compatibilidad de los SOCs anteriores, nos quedamos con un SOC Allwinner A20. Es ya un SOC 'veterano', pero que tiene todo lo que queremos y a un buen precio.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 2. Elección del modelo de placa a usar

Mensaje sin leer por Naguissa »

2. Elección del modelo de placa a usar

Ya hemos decidido que vamos a usar un SOC Allwinner A20. Ahora procederemos a decidir qué placa usar.

Tenemos bastantes placas disponibles para elegir, por lo que vamos a seleccionar una que tenga GBit Ethernet y SATA disponibles en la placa, esté bien construida, sea fácil de encontrar y sea barata.

Modelos disponibles de fácil adquisición:
  • Cubieboard 2: Buena placa, aunque algo cara.
  • CubieTruck: Mas buena y cara aún
  • Banana Pi M1: La mas barata que tiene lo que necesitamos; es la que usaré.
  • Banana Pro: Versión mejorada de la anterior. Es mas cara y no aporta ninguna mejora al NAS.
  • PCDuino 3 (y versión nano): Me gusta mucho esta placa por el tema de las conexiones Arduino, pero no lo necesitamos para un NAS y pagar algo mas por ello es absurdo. No es cara pero tampoco barata.
  • MarsBoard A20 (y A20-SOM): Muy curiosa esta placa en dos fases, pero innecesariamente cara para nuestro propósito.
He visto una Orange Pi Mini mas barata en Aliexpress, pero no tiene SATA.

Además, existen SBCs con el mismo chip, pero que por dificultad de encontrar, precio y dificultad de abrir/ampliar/reprogramar el firmware y usar no los he seleccionado. Aquí podéis ver un listado.


Conclusión

La placa mas barata que tiene lo que deseamos (y mucho mas) es la Banana Pi M1, y la que usaré en éste hilo.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 3. Piezas extra

Mensaje sin leer por Naguissa »

3. Piezas extra

Caja

Usaré un pequeña torre de un Pentium 3 para meter todos los componentes dentro. Podéis usar lo que mejor os parezca y que os vaya bien para el proyecto.

Fuente

Podría usar la fuente ATX de la torre, pero para tener mayor silencio he decidido usar algunos transformadores que tenía por casa:
  • Un cargador USB 5V@2A
  • Una fuente IDE que tenía, con un duplicador.
  • Mas adelante, es posible que use un disco USB con alimentación.
Tarjeta SD

Necesitaremos una tarjeta SD decente de al menos 2Gb (recomendable 4Gb o más) para instalar el Sistema Operativo. Aquí os recomiendo comprarla en una tienda de confianza, pues hay muchas falsificaciones.

Adaptadores y extras
  • Si vais a conectar algo que no sea un único disco SATA, recordad adaptadores USB a PATA o SATA.
  • Cables PATA y-o SATA según necesitéis.
  • Adaptadores y ladrones de conexiones SATA y-o PATA, según necesitéis.
  • ¿Quién no tiene algún cable ethernet por casa? Recordad: Cat5e o superior para usar Gbit Ethernet.
  • Cable HDMI si queréis conectarlo a una TV o monitor para configurarlo; se puede hacer por SSH con lo que no es imprescindible.
  • Si usáis mas de una fuente, un ladrón de enchufes. En mi caso lo he instalado dentro de la caja.
  • Bridas para atar 'cabos sueltos'. Tornillería, pegamento... lo que necesitéis en vuestro caso.
  • Sin ser imprescindibles, siempre va bien algún disipador para la CPU y RAM. Yo uso unos pequeños de cobre que tengo por casa de una placa de RAM de hace muchos años...
Aviso duplicadores SATA

Son completamente desaconsejables, especialmente en este caso. Podéis ver los motivos en este comentario del hilo.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 4. Sistema operativo

Mensaje sin leer por Naguissa »

4. Sistema operativo

Esta claro que hemos de usar Linux (aunque también hay Android disponible), pero dentro de ellos podéis elegir el que mas os guste.

Personalmente, me encanta Gentoo, pero dado el uso como NAS que va a tener no voy a usarlo. Podría usar Arch, que también me gusta, pero debido a que veo muy activa a la comunidad del proyecto usaré Armbian. En concreto, la versión servidor (no uséis la Desktop a no ser que deseéis usar el NAS como tal).

Distribuciones para Banana Pi M1: A partir de aquí pondré las instrucciones para la distribución Debian Server Mainline (Jessie); si habéis elegido otra distribución deberéis adaptar los nombres de los paquetes y los comandos de instalación (apt-get por emerge, pacman o lo que corresponda).
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 5. Instalación del Sistema Operativo base

Mensaje sin leer por Naguissa »

5. Instalación del Sistema Operativo base

La instalación de Rasbian es realmente sencilla.
  1. Descargamos la versión Debian Server Mainline (actualmente: Jessie) de Armbian para Banana Pi.
  2. Descomprimimos el archivo 7z descargado con un descompresor compatible, por ejemplo, 7Zip o WinRar (Windows), 7z o p7zip (Linux), o Keka (MacOS).
  3. Podemos usar Etcher o dd para grabar las imágenes en la SD.
  4. Insertamos la SD en el SoC y enchufamos el adaptador de corriente. El 1er arranque durará cerca de unos 3 minutos, mientras termina de configurar la tarjeta SD, y luego se reiniciará y tardará sobre un minuto más.
Con ésto tenemos el sistema instalado y el SoC arrancado esperando nuestros comandos.

Login

Puedes acceder usando un monitor/TV y un teclado o por SSH (si tenemos conectado un cable Ethernet a un dispositivo con DHCP).

El usuario es root y la contraseña es 1234

Nada mas entrar nos pedirá que cambiemos la contraseña, y luego, que creemos un usuario normal. Tened cuidado si usáis directamente un teclado ya que el teclado por defecto es QUERTY en_US.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

Re: NAS casero, barato y bajo consumo con un SOC. Banana Pi M1

Mensaje sin leer por Naguissa »

Precisamente hoy he visto un NAS como me gustaría tener de oferta. Un NAS con un SoC Alpine como los mostrados en la selección de SoC. Pero claro, rebajado sale por mas de 200€....

https://www.qnap.com/es-es/product/mode ... 59&event=3

Edito: Cambio el enlace a la página descriptiva del producto.
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 6. Configuración básica

Mensaje sin leer por Naguissa »

6. Configuración básica

Tras encender la Banana Pi M1 nos preguntará login. Como he dicho antes, las credenciales son:

User: root
Pass: 1234

Tras introducirlo nos pedirá que cambiemos la contraseña. Para ello, primero nos pregunta de nuevo la contraseña anterior (1234) y luego nos pregunta dos veces la nueva. Recuerda que si usas el SoC directamente con monitor y teclado el teclado estará en inglés.

Seguidamente nos pregunta la creación de un nuevo usuario. Voy a usar, como ejemplo:
User: nas
Pass: nas
Name: NAS
Otros campos: vacío (darle al enter directamente).


Tras estos dos pasos nos dejará en el intérprete de comandos.


Todos los siguientes comandos están ejecutados como root (puedes usar "sudo su" desde un usuario normal para escalar a root).

a. Actualizar sistema y base

Primero vamos a actualizar el sistema. Para ello hemos de estar conectados a Internet y ejecutar:

Código: Seleccionar todo

apt-get update; apt-get upgrade; apt-get install ntfs-3g

b. Configuración básica de idioma (locale), teclado y ratón

Para configurar el teclado:

Código: Seleccionar todo

dpkg-reconfigure keyboard-configuration
Seleccionamos teclado estándard, luego "Otras opciones", "Español", "default" y "No compose key". Usaremos los cursores para navegar entre opciones, espacio para marcar e intro para seleccionar y avanzar a la siguiente pantalla.


Para configurar la zona horaria:

Código: Seleccionar todo

dpkg-reconfigure tzdata
Para España seleccionamos: "Europe", "Madrid". Canarias no aparece y no sé cuál es la ciudad equivalente que sí aparece.


Para configurar el idioma:

Ejecutamos:

Código: Seleccionar todo

dpkg-reconfigure locales
Primero seleccionamos (activamos) es_ES@UTF-8 UTF-8 y en la 2a pantalla la seleccionamos como "default locale"

Tras ejecutar el comando nos queda configurado el español pero no para los mensajes y comandos del sistema. Si deseamos cambiarlo editaremos la configuración:

Código: Seleccionar todo

nano -w /etc/default/locale
Y lo cambiaremos por:

Código: Seleccionar todo

LANG=es_ES.UTF-8
LC_MESSAGES=es_ES.UTF-8
LANGUAGE=es_ES.UTF-8

Tras reiniciar tendremos todo configurado, como por ejemplo:

Código: Seleccionar todo

root@bananapi:~# df -h
S.ficheros     Tamaño Usados  Disp Uso% Montado en
udev              10M      0   10M   0% /dev
tmpfs            199M   5,7M  194M   3% /run
/dev/mmcblk0p1   7,3G   1,3G  6,0G  18% /
tmpfs            497M      0  497M   0% /dev/shm
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            497M      0  497M   0% /sys/fs/cgroup
tmpfs            497M      0  497M   0% /tmp
log2ram           50M   1,5M   49M   3% /var/log
tmpfs            100M      0  100M   0% /run/user/1000
root@bananapi:~#

c. Configurar sistema de escalado de frecuencia de CPU


He revisado el gobernador de frecuencia de la CPU y en este sistema viene por defecto el nuevo driver, schedutil. Si bien ondemand era el gobernador que mejor rendimiento daba, éste mejora sensiblemente al anterior, por lo cual no lo cambiaremos, aunque sí retocaremos los valores por defecto. Para ello editamos la configuración:

Código: Seleccionar todo

nano -w /etc/default/cpufrequtils

Código: Seleccionar todo

ENABLE=true
MIN_SPEED=480000

# Muy leve overclock para situaciones de alta carga
MAX_SPEED=1008000
#Original:
#MAX_SPEED=960000

GOVERNOR=schedutil

IO_IS_BUSY=1

# Opcionales, provienen de ondemand
UP_THERESHOLD=25
SAMPLING_DOWN_FACTOR=25
Y recargamos el servicio con los nuevos valores:

Código: Seleccionar todo

/etc/init.d/cpufrequtils reload


d. Irqbalancing

Parece ser que sigue sin funcionar el irqbalancing en los chipsets Allwinner, con lo que configuraremos el sistema para evitar que este problema penalice el rendimiento:

Código: Seleccionar todo

nano -w /etc/rc.local
y justo antes del "exit 0" del final del archivo añadimos:

Código: Seleccionar todo

for i in $(awk -F":" '/ahci/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done
for i in $(awk -F":" '/mmc/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done
for i in $(awk -F":" '/eth0/ {print $1}' </proc/interrupts); do echo 1 >/proc/irq/$i/smp_affinity; done
# Opcional, para el caso de usar discos USB
for i in $(awk -F":" '/usb[0-9]$/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done

echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 2 > /sys/class/net/eth0/queues/tx-0/xps_cpus

Y le damos permisos de ejecución:

Código: Seleccionar todo

chmod u+x /etc/rc.local


e. IP fija

Este paso es opcional, pero altamente recomendable. Procederemos a asignar una IP fija a nuestro NAS.

Para ello editamos el archivo de configuración:

Código: Seleccionar todo

nano -w /etc/network/interfaces
Y cambiamos:

Código: Seleccionar todo

iface eth0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
Por algo similar a:

Código: Seleccionar todo

## ETH0, original
#iface eth0 inet dhcp
##address 192.168.0.100
##netmask 255.255.255.0
##gateway 192.168.0.1
##dns-nameservers 8.8.8.8 8.8.4.4

## ETH0, fixed IP
iface eth0 inet static
        address 192.168.1.248
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4
Siendo 'address' la IP que queremos asignar al NAS y 'gateway' la IP del router. He puesto los DNS de Google, pero podéis usar los que deseéis.

Ahora tenemos dos opciones:
  1. Si estamos usando el teclado, podemos directamente usar

    Código: Seleccionar todo

    /etc/init.d/networking restart
  2. Si estamos conectados por SSH hemos de reiniciar la máquina

    Código: Seleccionar todo

    reboot
    o usar

    Código: Seleccionar todo

    /etc/init.d/networking restart
    dentro de una sesión "screen" (ya está instalado por defecto, pero si no sabes usarlo directamente reinicia y ya vale). De cualquier manera tendremos que reconectar por SSH si hemos cambiado la IP.
El problema de reiniciar el servicio por SSH es que al cortarse la conexión no termina de iniciar completamente y no pone la IP seleccionada, con lo que nos quedamos sin conexión. Esto se evita reiniciando o usando screen, que continúa ejecutando el 'restart' pese a no tener conexión.



f. Preparar discos extra

Para facilitar la tarea, los discos extra los podemos preparar en otro PC completo. Lo único que no haremos, preferentemente, es crear los arrays RAID, si es que queréis usarlos.

Podéis usar cualquier formato, pero yo recomiendo usar ext4.

Parar borrar todo podéis usar incluso el gestor de discos de Windows, pero para crear las particiones y formatearlas os recomiendo usar la herramienta de Discos de gnome o KDE o usar el liveCD o liveUSB gparted.

Si queremos conectar una unidad en la que ya tenemos datos podemos hacerlo sin formatear; así podremos compartirla sin mas (por ejemplo, para compartir un pendrive).

Para editar las particiones de un disco:

Código: Seleccionar todo

cfdisk /dev/sdX
Siendo X la letra del disco. Por ejemplo:

Código: Seleccionar todo

cfdisk /dev/sda

Si el disco no tiene particiones nos preguntará qué formato usar. Elegid "dos" o "gpt".
Para borrar particiones usaremos la opción "Delete"
Para crear particiones usaremos la opción "New". El tipo por defecto es "83 - Linux", que es el correcto.
Cuando tengamos todo a nuestro gusto hemos de seleccionar la opción "Write" y responder "yes". Recordad hacerlo antes de salir (Quit) o los cambios no se guardarán.

Tras ello formatearemos nuestras unidades:

Si el disco es interno al NAS usaremos ext4:

Código: Seleccionar todo

mkfs.ext4 /dev/sdX
Siendo X la unidad y, opcionalmente, partición (se puede usar la unidad entera sin particionar, si lo deseamos, por ejemplo en pendrives o SDs). Por ejemplo:

Código: Seleccionar todo

mkfs.ext4 /dev/sda1

Si el disco es externo usaremos FAT (compatible con todo) o NTFS (mas seguro):

Código: Seleccionar todo

mkfs.vfat /dev/sdX
mkfs.ntfs /dev/sdX
Siendo X la unidad y, opcionalmente, partición (se puede usar la unidad entera sin particionar, si lo deseamos, por ejemplo en pendrives o SDs). Por ejemplo:

Código: Seleccionar todo

mkfs.vfat /dev/sda1
mkfs.ntfs /dev/sda1




g. USB automount

Ya que deseamos que el NAS funcione sólo es aconsejable añadir esta pequeña utilidad que cargará nuestros discos USB automáticamente al conectarlos:

Código: Seleccionar todo

apt-get install usbmount

Cambiamos la configuración:

Código: Seleccionar todo

nano -w /etc/usbmount/usbmount.conf
y substituimos las líneas:

Código: Seleccionar todo

FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus"

MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime"

FS_MOUNTOPTIONS=""
Por:

Código: Seleccionar todo

FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus ntfs-3g fuseblk ntfs"

MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime,user"

FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=000,gid=46 -fstype=fuseblk,nls=utf8,umask=000,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=000"

Crea una configuración UDEV para solucionar varios problemas:

Código: Seleccionar todo

nano -w /etc/udev/rules.d/usbmount.rules

Código: Seleccionar todo

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
Y creamos el servicio systemd:

Código: Seleccionar todo

nano -w /etc/systemd/system/usbmount@.service

Código: Seleccionar todo

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

Ahora podéis comprobar que cualquier pendrive o disco USB conectado se monta automaicamente en /media/usbXX con permisos para todos los usuarios.



h. Soporte Software RAID

Paso opcional, aunque muy recomendado, es instalar el soporte para software RAID.

Código: Seleccionar todo

apt-get install mdadm
systemctl enable mdadm
Al instalar nos pregunta "MD arrays needed for the root file system:". Cambiaremos "all" por "none" para evitar problemas ya que nuestro sistema base (y con ello la partición root) estará todo en la SD y el RAID lo usaremos sólo para almacenamiento extra que puede activarse mas tarde, tras inicializar los USBs.
Luego nos pregunta sobre comprobaciones mensuales. De momento le he dicho que Sí, pero aquí elegid lo que deseéis.
Seguidamente pregunta sobre el demonio de monitorización. Podéis hacer lo que queráis, aunque yo he respondido que sí.
Si has respondido que sí en el punto anterior, tepregunta sobre el email de destino. Poned el vuestro.

Es posible que no os haga nada mas que la 1a pregunta. Si es así, o deseáis cambiar algo, podéis ejecutar:

Código: Seleccionar todo

dpkg-reconfigure mdadm
Para poder enviar emails fuera del propio NAS necesitaremos un MTA. Los mas comunes son sendmail y POSTFIX. Para cosas sencillas usaremos sendmail:

Código: Seleccionar todo

apt-get install sendmail





i. Crear un array Software RAID

Si deseamos, podemos crear arrays Software RAID en el nas. Es muy recomendable usar un RAID1 para los datos sensibles, ya que aunque falle un disco los datos seguirán accesibles desde el otro.


RAID1:

Para crear un RAID1 (discos en espejo, incrementa la seguridad de los datos en el NAS) necesitamos dos discos de igual o similar capacidad.

Además, con un RAID1 incrementamos el rendimiento de lectura de los discos.

Primero usaremos cfdisk para crear las particiones y su tipo:

Código: Seleccionar todo

cfdisk /dev/sdX
Siendo X la letra del disco.

Dejaremos una partición de tipo "fd Linux raid autodetect".

Luego seleccionaremos "Write", responderemos "yes" y finalmente seleccionaremos "Quit".

El comando para crearlo es:

Código: Seleccionar todo

mdadm --create --verbose  /dev/mdN --level=1 --raid-devices=2 /dev/sdX /dev/sdY
Siendo X e Y los discos y particiones a usar y N el número de RAID que queremos usar.

Si queremos usar la 1a partición de los discos a y b y el número 0:

Código: Seleccionar todo

mdadm --create --verbose  /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
Si queremos usar los discos a y b completos y sin particionar y el número 1:

Código: Seleccionar todo

mdadm --create --verbose  /dev/md1 --level=1 --raid-devices=2 /dev/sda /dev/sdb

RAID0:

RAID0 nos permite unir discos para que aparezcan como uno sólo, y además, incrementa el rendimiento, tanto de lectura como de escritura. El problema es que si cualquiera de ellos falla perdemos toda la información.


El comando para crearlo es:

Código: Seleccionar todo

mdadm --create --verbose  /dev/mdN --level=0 --raid-devices=2 /dev/sdX /dev/sdY
Siendo X e Y los discos y particiones a usar y N el número de RAID que queremos usar.

Si queremos usar la 1a partición de los discos a y b y el número 0:

Código: Seleccionar todo

mdadm --create --verbose  /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
Si queremos usar los discos a y b completos y sin particionar y el número 1:

Código: Seleccionar todo

mdadm --create --verbose  /dev/md1 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Configuración tras crear el RAID:

Tras crear el RAID deberemos guardar la configuración y crear una partición.


IMPORTANTE: Guardar configuración:

Código: Seleccionar todo

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
ln /etc/mdadm/mdadm.conf /etc/mdadm.conf
echo md >> /etc/modules
echo md-raid0 >> /etc/modules
echo md-raid1 >> /etc/modules
update-initramfs -u
Además, en este SoC el array no se inicia por defecto, probablemente debido a que son discos USB. Por ello hemos de añadir una línea de configuración final:

Código: Seleccionar todo

nano -w /etc/rc.local
Y añadimos, antes del "exit 0":

Código: Seleccionar todo

mdadm --assemble --scan


Luego crearems una partición (opcional) y formatear el sistema de archivos. Como los discos RAID suelen ser internos (siempre conectados), yo escogería ext4:

Código: Seleccionar todo

mkfs.ext4 /dev/mdX
En mi caso, la X es 0:

Código: Seleccionar todo

mkfs.ext4 /dev/md0
Y configuraremos el fstab:

Creamos el punto de montaje:

Código: Seleccionar todo

mkdir /media/RAID1n0
chmod 777 /media/RAID1n0
Editamos el archivo fstab:

Código: Seleccionar todo

nano -w /etc/fstab
Y añadimos al final, adaptando el md0 y nuestro punto de montaje (/media/RAID1n0) a la configuración deseada:

Código: Seleccionar todo

/dev/md0        /media/RAID1n0 ext4     defaults,user,noauto,noatime,nodiratime,errors=remount-ro,nofail,x-systemd.automount    0 0




Detalles:
  • nofail: Hace que aunque falle el montaje durante el arranque no de error de sistema y así previene que el NAS se detenga en el arranque.
  • x-systemd.automount: Hace que el dispositivo se monte al acceder a él por 1a vez en lugar de durante el arranque. El NAS arranca mas rápido y evitamos problemas durante el arranque.


j. Administración web; webmin


Opcionalmente, usaremos webmin como una forma de administrar el NAS desde un navegador en cualquier PC, ya sea desde nuestra red local o, si abrimos los puertos del router, desde fuera de casa. Yo no recomendaría hacer esto último, pues puede ser usado para atacar el NAS.

Lo instalaremos desde su repositorio oficial mediante los siguientes comandos:

Código: Seleccionar todo

echo deb http://download.webmin.com/download/repository sarge contrib >> /etc/apt/sources.list
curl http://www.webmin.com/jcameron-key.asc | apt-key add -
apt-get update
apt-get install webmin
systemctl enable webmin
systemctl start webmin

Podemos acceder a la interfaz poniendo https://<ip del NAS>:10000

Nos dirá que la conexión no es segura porque el certificado no es válido. Ésto es debido a que el certificado https ha sido creado por nosotros mismos al instalar webmin y por lo tanto no hay ninguna entidad de referéncia que lo respalde. Aceptad el certificado (permanentemente para mas comodidad) y continuad.


Podéis acceder con el usuario root o con el usuario normal que habéis creado al principio; ya que vamos a administrar el sistema lo mas apropiado es usar root.






Información sacada de:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 7. Servidor SAMBA

Mensaje sin leer por Naguissa »

7. Servidor SAMBA

Vamos a instalar servidores SAMBA. No instalaremos servidor AFS/Bonjour debido a que Apple soporta SaMBa y ellos mismos están potenciando su uso, debido a ciertas mejoras sobre dichos protocolos.

Todos los comandos aquí descritos se han de ejecutar como root (puedes usar "sudo su" desde un usuario normal para escalar a root).


Instalación

Instalamos los paquetes:

Código: Seleccionar todo

apt-get install samba samba-common


Configuración

Primero descartamos la configuración inicial, dejándola en una copia (.bak):

Código: Seleccionar todo

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Y la editamos desde cero:

Código: Seleccionar todo

nano -w /etc/samba/smb.conf
Escribiremos:

Código: Seleccionar todo

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = nas
dns proxy = no
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

[media]
comment = All disks on NAS
path = /media
browsable = yes
guest ok = yes
read only = no
create mask = 666
directory mask = 777
force user = nas
force group = users
printable = no
public = yes
Podéis cambiar el valor de "workgroup", aunque ése el valor por defecto.

La etiqueta media define una unidad de red, en este caso llamada "media". Cosas que se pueden cambiar son la etiqueta en sí, comment y path.

Luego añadimos el usuario a samba:

Código: Seleccionar todo

smbpasswd -a nas
Podéis poner cualquier contraseña, o ninguna.


Ahora procedemos a activar el servicio:

Código: Seleccionar todo

systemctl enable smbd
systemctl restart smbd
Con ésto ya tenemos el servidor funcionando.


No he añadido impresoras debido a que nos ocuparían USBs del NAS, aunque si lo necesitáis dejad un comentario en el hilo y os pongo las instrucciones.


Fuentes:
Avatar de Usuario
Naguissa
Administrador del Sitio
Mensajes: 495
Registrado: 04 Jul 2016, 11:17
Agradecido: 107 veces
Agradecimiento recibido: 134 veces

NAS casero: 8. Servidor DLNA

Mensaje sin leer por Naguissa »

8. Servidor DLNA

Vamos a instalar un servidor DLNA muy ligero llamado miniDLNA. Lo usaremos para poder conectar cualquier reproductor compatible (por ejemplo, Kodi) con el almacenamiento de nuestro NAS.

Todos los comandos aquí descritos se han de ejecutar como root (puedes usar "sudo su" desde un usuario normal para escalar a root).


Instalación

Instalamos los paquetes:

Código: Seleccionar todo

apt-get install minidlna


Configuración


Primero descartamos la configuración inicial, dejándola en una copia (.bak):

Código: Seleccionar todo

mv /etc/minidlna.conf /etc/minidlna.conf.bak
Y la editamos desde cero:

Código: Seleccionar todo

nano -w /etc/minidlna.conf
Escribiremos:

Código: Seleccionar todo

user=nas
media_dir=/media
port=8200
friendly_name=NAS
serial=681019810597110
inotify=yes
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg
album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg
album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
Podéis cambiar el valor de "friendly_name" y el "media_dir" (carpeta de contenido a compartir).

Además, editaremos los valores por defecto del servicio:

Código: Seleccionar todo

nano -w /etc/default/minidlna
Y lo dejaremos tal que así:

Código: Seleccionar todo

# Defaults for minidlna initscript
# sourced by /etc/init.d/minidlna
# installed at /etc/default/minidlna by the maintainer scripts

# These options can be set to modify the behavior of the minidlna init script.
# The options commented out show the default values.

# Start the daemon if set to "yes"
START_DAEMON="yes"

# Path to the configuration file
CONFIGFILE="/etc/minidlna.conf"

# Path to the log file
#LOGFILE="/var/log/minidlna.log"

# User and group the daemon should run as
USER="nas"
GROUP="nas"

# Additional options that are passed to the daemon
DAEMON_OPTS=""

Además, incrementaremos los inotify watches de los usuarios:

Código: Seleccionar todo

nano -w /etc/rc.local
Y añadimos antes del "exit 0":

Código: Seleccionar todo

echo 1024 > /proc/sys/fs/inotify/max_user_watches

Ahora procedemos a activar el servicio:

Código: Seleccionar todo

echo 1024 > /proc/sys/fs/inotify/max_user_watches
systemctl enable minidlna
systemctl stop minidlna
rm -Rf /var/cache/minidlna
mkdir /var/cache/minidlna
chown nas:users /var/cache/minidlna
systemctl restart minidlna
Con ésto ya tenemos el servidor funcionando.
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje