Construire un NAS avec un Raspberry

Objectif

construire-nas

Construire un NAS pour la sauvegarde de mes données personnelles.

Utiliser au maximum les éléments en ma possession

Utiliser un Raspberry pour gérer le NAS

Installer un système en miroir Raid 1



Le Hardware

  • raspberry
  • disque
  • boitier-disque
  • mimi-hub-usb
  • ventilateur
  • cable-reseau


  • Raspberry PI 1 modèle B    # Voir photo
    • 2 ports USB 2
    • 1 port Ethernet 10/100Mo
    • Mémoire 512Mo
    • CPU 700Mhz
    • Carte SD 8Go
    • Alimentation 5V/1,2A
  • Disques durs
    • 2 disques 500Go Sata 2.5
  • Adaptateur Sata/USB
    • 2 adaptateurs Sata/USB avec boitier # Achat en ligne
  • Mini-hub USB
    • High-Speed USB2 4 ports
    • Alimentation 5v/1.2A
  • Boitier
    • boitier (dimension à définir)  # Achat en ligne
  • Ventilateur 12v/130mA
  • Adaptateur réseau Male/femelle # Achat en ligne



Le Software

Utilisation de Raspbian Stecht Lite


Personnalisation de Raspbian

  • sudo raspi-config
    • Français
    • Validation de SSH
    • Mise à jour
    • etc ... 

La configuration du NAS se fera en SSH

  • ssh pi@192.168.x.y

La configuration de l'adresse IP    # Voir la page   Réseau Ethernet et Wifi sur Raspberry

  Pour un NAS, il est préférable de définir une adresse IP fixe  

  • sudo nano /etc/dhcpcd.conf # Nouvelle méthode
ou
  • sudo nano /etc/network/interfaces # Ancienne méthode

Modifier la configuration réseau du Raspberry en IP fixe en fonction de votre réseau


Installation de Samba   # Voir la page   NAS avec un Raspberry
  • sudo apt-get install samba samba-common-bin
  • etc ...


Installation du miroir Raid 1    # Voir la page  NAS Raid 1 sur Raspberry

  • sudo apt-get install mdadm
  • etc ...


Préparation des disques pour le Raid 1

  • Disque sur port USB n° 1 - /dev/sda
  • Disque sur port USB n° 2 - /dev/sdb

  • sudo fdisk /dev/sd(x)
Partition - Prendre l'intégralité du disque et le configurer en type fd

Création du Volume miroir Raid 1
  • sudo mdadm --create --verbose /dev/md0 --level=1 --assume-clean --raid-device=2 /dev/sda1 /dev/sdb1

Formatage du volume md0 en Ext4
  • sudo mkfs.ext4 /dev/md0

Vérification du Raid 1
  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0

Montage du volume Raid 1 md0 sur /home/nom_repertoire_de_montage
  • sudo mount /dev/md0 /home/nom_repertoire_de_montage

Modification du fichier /etc/fstab
  • sudo nano /etc/fstab

Reboot


Les Contraintes

  • ventilateur-5v
  • alimentation-regule

J'ai deux containtes à régler.


  • Le bruit et l'alimentation du ventilateur
Le ventilateur de récupération est bruyant et il est alimenté en 12V, se qui pose un souci puisque que les alimentations du Raspberry et du mini-hub USB fournissent du 5V.

J'ai donc opté pour acheter des ventilateurs silencieux 5V 120mA. # Achat en ligne


  • Les alimentations
    • l'alimentation pour le Raspberry 5V
    • l'alimentation pour le mini-hub USB 5V
    • l'alimentation du ventilateur en 12V

Puisque j'ai opté pour l'achat de petits ventilateurs silencieux 5V 120mA, j'élimine l'alimentation 12V pour le ventilateur de récupération.

Si j'utilise les blocs d'alimentations du Raspberry et du mini-hub USB, je vais avoir deux alimentations pour mon boitier NAS. Ce qui n'est pas pratique ...

De plus pour alimenter mon montage en 5V, j'ai besoin de 2 x 1.2A (Raspberry et mini-hub USB) + 4 x 120mA pour les ventilateurs, soit un total de 5V 2,88A

J'ai donc opté pour acheter un bloc d'alimentation 5V 4A. # Achat en ligne


Le matériel

materiel-complet



Voilà j'ai tous les éléments pour la fabrication de mon NAS.

Maintenant, voyons un peu l'implantation des éléments afin de choisir le boitier.


Le but est de mettre tout cela dans une boite la plus compacte possible, mais suffisament ventilée.



implantation des elements

  • longueur
  • largeur
  • hauteur
  • complet
  • boitier



En posant tous les éléments sur la table, la meilleure implantation semble etre la suivante :

  • le Raspberry et le bloc d'alimentation cote à cote # Voir photo
  • les disques et le mini-hub l'un au dessus de l'autre # Voir photo


Le tout dans un espace de :

  • longueur : 200mm
  • largeur : 160mm
  • hauteur : 50mm


J'ai donc acheté un boitier de L 200 x l 175 x h 70  # Achat en ligne



Le Boitier

  • boitier
  • boitier-ouvert



Voilà, le boitier a été livré.


Voyons cela !



Implantation des elements dans le boitier

  • implantation_a_plat
  • implantation_sur_coté
  • implantation_ventilateur
  • implantation
  • implantation-hub
  • implantation-final


Oups !
Ma solution d'implantation de départ ne me semble pas possible avec le boitier. Je teste d'autres possibilités d'implantations des éléments dans le boitier


L'implantation des éléments n'est pas une chose simple.

Il faut penser :

  • à caser tous les éléments 
  • à caser les cables
  • penser à la ventillation du boitier
  • permettre l'accés à la carte SD
  • permettre l'accés au disques 
  • faire des trous supplémentaires pour l'aération de l'alimentation
  • faire des trous supplémentaires pour les ventilateurs
  • etc ...





  • dedans-1
  • dedans-2
  • dedans-3
  • dedans-4
  • fan
  • face-arriere-01
  • face-arriere-02
  • face-avant-01
  • face-avant-02

La solution retenue

  • Le bloc d'alimentation du coté de la grille d'aération
  • Les 2 disques au fond du boitier, l'un au dessus de l'autre
  • Le Raspberry fixé à plat dans le boitier
  • Le mini-hub sans son boitier fixé dessus le Raspberry
  • Les ventilateurs répartis sur la face arrière
  • l'adapteur réseau fixé sur la face arrière
  • le cable d'alimentation à l'arrière
  • une led verte fixée sur la face avant







Controle du Volume raid1 et du Raspberry

controle-nas


Le NAS est contruit.

Pour controler l'état des disques, il faut se connecter en ssh

J'ai créé trois fichiers pour controler l'état du NAS



controle-raid

Fichier control-raid

Créer le fichier ci-dessous

sudo nano control-raid    # Controle l'état du volume Raid1

clear
echo "--------------------------------------------------------"
echo "$(date)"
echo $USER"@"$HOSTNAME
echo "--------------------------------------------------------"
echo "********************************************************************"
sudo cat /proc/mdstat
echo "********************************************************************"
sudo mdadm -D /dev/md0
echo "********************************************************************"
sudo df /dev/md0 -T -h
echo "********************************************************************"


[Ctrl]+[o] puis [Enter] pour sauvegarder le fichier
[Crtl]+[x] pour quitter l'éditeur



etat-disk

Fichier etat-disk

Créer le fichier ci-dessous

  • sudo nano etat-disk     # Controle le taux d'occupation du volume Raid1

clear
echo "--------------------------------------------------------"
echo "$(date)"
echo $USER"@"$HOSTNAME
echo "--------------------------------------------------------"
echo
df /dev/md0 -h
echo
echo


[Ctrl]+[o] puis [Enter] pour sauvegarder le fichier

[Crtl]+[x] pour quitter l'éditeur



monitor

Fichier monitor

Créer le fichier ci-dessous

  • sudo nano monitor    # Controle la fréquence et la température du CPU

#!/bin/bash
# -------------------------------------------------------
clear
echo 
echo 
echo "--------------------------------------------------------"
echo "$(date)"
echo $USER"@"$HOSTNAME
echo "--------------------------------------------------------"
C=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`
T=`cat /sys/class/thermal/thermal_zone0/temp`
cpu=$(</sys/class/thermal/thermal_zone0/temp)
echo "Heure | Frequence | Temperature"
echo "`date +%H:%M` $C $T" | awk  '{ printf "%s | %4dMhz | %-.2fC\n",$1, $2/100$
echo
echo


[Ctrl]+[o] puis [Enter] pour sauvegarder le fichier
[Crtl]+[x] pour quitter l'éditeur



Rendre exécutable les trois fichiers

  • sudo chmod +x control-raid
  • sudo chmod +x etat-disk
  • sudo chmod +x monitor



Exécuter les trois fichiers

  • ./control-raid    # Controle l'état du volume Raid1
  • ./etat-disk    # Controle le taux d'occupation du volume Raid1
  • ./monitor    # Controle la fréquence et la température du CPU




Led activité disque dur

  • led-verte
  • gpio-rpi2


Je souhaite que la led verte en façade clignote en fonction de l'activité du disque dur

Matériel:

  • Une LED verte
  • Une résistance de 1KOhm

Circuit:

  • Brancher une patte resistance sur la pin 3 du GPIO
  • Brancher l'autre patte de la résistance à l'anode de la LED
  • Brancher la cathode de la LED sur une masse du GPIO


Pour un Raspberry PI modèle B    # Uniquement sur un Raspberry Pi 1 B

Editer le fichier /boot/config.txt

  • sudo nano /boot/config.txt


Ajouter à la fin du fichier les lignes ci-dessous

  • # Use external LED as SD ACT LED
  • dtparam=act_led_gpio=3    # Brancher la led sur la pin 3 du GPIO

[Ctrl]+[o] puis [Enter] pour sauvegarder le fichier
[Crtl]+[x] pour quitter l'éditeur


Rebooter le NAS

La led verte doit clignoter en fonction de l'activité disque