GNU/Linux - Comment créer un NAS

Tux logo

Nous verrons ici comment créer notre propre NAS sous GNU/Linux.

L'avantage principal est d'avoir NAS peu coûteux (on pourra par exemple recycler un vieux PC), hautement flexible et configurable.

J'utiliserai la distribution Linux Debian avec l'outil mdadm pour gérer notre RAID et samba pour le partage de fichiers.

Architecture Cible

A la fin notre architecture devrait ressembler à ça.

Le but étant de rendre notre NAS accessible par différents appareils de notre réseau.

NAS avec trois disques de 2To
NAS Architecture

Configuration

Configuration matérielle

Comme discuté précédemment, on peut créer un NAS à peu de frais en recyclan un vieux PC.

  • Voici un exemple de configuration qui pourra être utilisée :
    • CPU : > intel dual core
    • RAM : 512 MB
    • HDD : 1x 500 GB (OS) + 3x 2TB (data)
Un ordinateur avec trois disques de 2 TB
NAS Hardware Configuration

Configuration

Nous installerons Debian sur notre premier disque dur (/dev/sda) puis créerons un RAID 5 avec nos trois disques de 2 TB (sdb, sdc and sdd). Cela nous donnera une taille de 4TB utile (Rappel : dans un RAID5 on perd la capacité d'un disque pour assurer la redondance).

Un NAS Debian avec trois disques de 2 TB
NAS Debian

Paramétrage

Nous avons tout d'abord besoin d'installer Debian comme brillamment expliqué ici.

Configuration Réseau

  • Éditer /etc/network/interfaces (remplacer ens192 par le nom de l'interface réseau) :
allow-hotplug ens192
iface ens192 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.254
	dns-nameservers 192.168.1.254
  • Redémarrer :
root@host:~# reboot

Configurer la table de partitionnement

  • Installer l'utilitaire gdisk, qui est la version gpt de fdisk :
root@host:~# apt update && apt install mdadm gdisk
  • Nettoyer la table de partitionnement du disque /dev/sdb :
root@host:~# wipefs -a /dev/sdb[1-9]*
root@host:~# wipefs -a /dev/sdb
  • Créer une nouvelle table de partitionnement pour /dev/sdb :
Bien vérifier la lettre d'attribution des disques avec fdisk -l pour éviter une suppression malencontreuse
root@host:~# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-4194270, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-3907028991, default = 3907028991) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): FD00
Changed type of partition to 'Linux RAID'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
  • Copier le table de partitionnement de /dev/sdb vers /dev/sdc et /dev/sdd :
root@host:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sdc
root@host:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sdd

mdadm

  • Installer l'utilitaire mdadm :
root@host:~# apt install mdadm
  • Créer notre RAID 5 :
root@host:~# mdadm --create --level=5 --raid-devices=3 /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1
  • Vérifier le statut de notre RAID :
root@host:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      418713600 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
  • Créer un système de fichier sur /dev/md0 :
root@host:~# mkfs.ext4 /dev/md0
  • Créer le dossier de montage :
root@host:~# mkdir /data
  • Monter le système de fichier de /dev/md0 vers le dossier /data :
root@host:~# mount /dev/md0 /data
  • Afficher les points de montage :
root@host:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            983M     0  983M   0% /dev
tmpfs           200M  5.6M  194M   3% /run
/dev/sda2        14G  1.5G   12G  12% /
tmpfs           998M     0  998M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           998M     0  998M   0% /sys/fs/cgroup
/dev/sda1       511M  3.3M  508M   1% /boot/efi
tmpfs           200M     0  200M   0% /run/user/0
tmpfs           200M     0  200M   0% /run/user/1000
/dev/md0        1.8T   16M  1.7T   1% /data
  • Configurer mdadm pour assembler notre RAID au démarrage :
root@host:~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  • Mettre à jour initramfs pour prise en compte :
root@host:~# update-initramfs -u
  • Ajouter le point de montage dans fstab pour un montage automatique au démarrage :
root@host:~# echo "/dev/md0 /data ext4 rw,nofail,relatime,x-systemd.device-timeout=20s,defaults 0 2" >> /etc/fstab

samba

  • Installation :
root@host:~# apt install samba
  • Créer un utilisateur samba :
root@host:~# adduser --home /data --system samba
  • Donner les droits :
root@host:~# chown samba: /data
  • Créer un mot de passe de protection pour l'accès au partage :
root@host:~# smbpasswd -a samba
  • Éditer le fichier /etc/samba/smb.conf :
[global]
   workgroup = WORKGROUP
   server string = nas
[share]
   path = /data
   read only = no
   valid users = samba
  • Redémarrer les services :
root@host:~# systemctl restart smbd; systemctl restart nmbd
  • Depuis un ordinateur vérifier l'accès au partage :
Connexion a un partage réseau depuis un ordinateur windows en trois étapes
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :