{{tag>tutoriel}}
====== Un NAS avec Raid 1 sur un Raspberry Pi (clés USB) ======
Ce tutoriel montre comment créer un serveur NAS RAID sur un Raspberry Pi à l'aide de lecteurs flash USB, de mdadm et pour que le lecteur s'affiche comme un dossier réseau normal sur un PC.
Ce tutoriel montre comment créer une matrice RAID Linux.
===== Pré-requis =====
* un Raspberry Pi (si possible Raspberry Pi 4 avec 4GB de RAM) :
* avec son bloc d'alimentation micro-USB
* Raspbian installé
* et configuré
* des clés USB de la même taille et si possible du même fabricant.
===== Première étape =====
* Mettez à jour le système et installez **mdadm** :pi@framboise:~ $ sudo apt update
pi@framboise:~ $ sudo apt upgrade
pi@framboise:~ $ sudo apt install mdadm
===== Autres étapes =====
==== Configurer les lecteurs ====
Sur un PC,
- Insérez l'une de vos clés USB (fermez toutes les fenêtres automatiques)
* Lancez **Disques**, sélectionnez le lecteur USB dans le panneau de gauche, cliquez sur l'icône d'engrenages :{{ tutoriel:disque:sd:raspi:nas:raid1:nas_raid-01.png?400 |}}
* Sélectionnez **Formater la partition...** et Choisissez les options suivantes :{{ tutoriel:disque:sd:raspi:nas:raid1:nas_raid-02.png?400 |}}
* Nom de volume : **USB01**
* **Désactivez Effacer**
* Type: **NTFS**
* Cliquez sur le bouton Suivant (en haut à droite) puis sur le bouton Formater dans la fenêtre d'alerte
- Répétez ce processus pour chaque clé USB à utiliser en incrémentant le nom : USB02, USB03, etc.
- Insérez vos clés USB dans votre Raspberry Pi, peu importe dans quelle prise USB.
- Trouvez les points de montage pour chaque lecteur :pi@framboise:~ $ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
└─sda1 ntfs USB01 2A32D9AE01C69BE5
sdb
└─sdb1 ntfs USB02 4B861C0D7BE397AD
...
Le plus souvent, ce sera : /dev/sda1, /dev/sdb1, /dev/sdc1 et /dev/sdd1
==== Configurer le RAID ====
=== Configurer un volume RAID-0 ===
Entrez le code suivant pour configurer deux disques USB ou plus dans une matrice RAID-0 hautes performances en parallèle, en remplaçant **--raid-devices=X** par le nombre de disques que vous utilisez et /dev/sda1 /dev/sdb1 par vos points de montage :pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
Si vous obtenez une erreur : “mdadm: RUN_ARRAY failed: Unknown error 524”, c'est un bogue dû au fait que les disques n'ont pas exactement la même taille pour RAID-0 ; ce bogue a été corrigé mais Raspbian n'a pas encore été mis à jour.
Avec 4 disques dans la matrice RAID-0, le code serait le suivant :pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
=== Configurer un volume RAID-1 ===
Pour configurer une matrice RAID-1 redondante avec deux disques, entrez le code suivant :
pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: partition table exists on /dev/sda1
mdadm: partition table exists on /dev/sda1 but will be lost or
meaningless after creating array
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: partition table exists on /dev/sdb1
mdadm: partition table exists on /dev/sdb1 but will be lost or
meaningless after creating array
mdadm: size set to 262011904K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/vol1 started.
pi@framboise:~ $
=== Configurer un volume RAID-4/5/6 ===
Pour configurer un RAID-4 redondant, un RAID-5 avec trois disques ou une matrice RAID-6 avec quatre disques, utilisez le code suivant, en remplaçant --level=X par le niveau RAID souhaité :pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=4 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
Pour une matrice RAID-5 utilisant trois disques et un disque de secours :pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1
=== Configurer un volume RAID-10 ===
Pour configurer un RAID-10 rapide et redondant (également appelé RAID-1 + 0 imbriqué), utilisez le code suivant :pi@framboise:~ $ sudo mdadm --create --verbose /dev/md/vol1 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Pour plus d'informations sur les matrices RAID complexes, consultez le [[https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm|wiki mdadm]].
==== Confirmez votre matrice RAID ====
Confirmez que la création de votre matrice RAID s'est bien passée :pi@framboise:~ $ sudo mdadm --detail /dev/md/vol1
/dev/md/vol1:
Version : 1.2
Creation Time : Tue Sep 1 10:56:07 2020
Raid Level : raid1
Array Size : 262011904 (249.87 GiB 268.30 GB)
Used Dev Size : 262011904 (249.87 GiB 268.30 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Tue Sep 1 11:01:15 2020
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : bitmap
Resync Status : 1% complete
Name : framboise4:vol1 (local to host framboise4)
UUID : 00cf86a6:2203941c:858016c8:7ed99f38
Events : 61
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
==== Sauvegarder votre matrice RAID ====
Raspbian ne nous laisse pas enregistrer la matrice RAID en tant que user:pi, même en utilisant sudo.
Passez donc temporairement en compte root puis enregistrez la matrice RAID et vérifiez le contenu du fichier **/etc/mdadm/mdadm.conf** (n'oubliez pas de sortir du mode root !) :
pi@framboise:~ $ sudo -i
root@framboise:~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
root@framboise:~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
root@framboise:~# nano /etc/mdadm/mdadm.conf
root@framboise:~# exit
pi@framboise:~ $
==== Créer un système de fichiers ====
Nous utiliserons le système de fichiers EXT4 car c'est le meilleur choix pour notre matrice RAID.
pi@framboise:~ $ sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md/vol1
mke2fs 1.44.5 (15-Dec-2018)
Found a dos partition table in /dev/md/vol1
Proceed anyway? (y,N) y
fs_types for mke2fs.conf resolution: 'ext4'
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=32 blocks, Stripe width=64 blocks
16375808 inodes, 65502976 blocks
65502 blocks (0.10%) reserved for the super user
First data block=0
Maximum filesystem blocks=2214592512
1999 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Filesystem UUID: ae18d5bc-909d-4e1e-b4bc-4d68192592a6
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
pi@framboise:~ $
sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md/vol1
(replace /dev/md/vol1 with your RAID array name)
Ce code produit un système de fichiers EXT4 avec :
* taille de bloc = 4096 ko
* stride = 32
* stripe-width = 64
* et laissera 1% libre pour éviter les problèmes de débordement
* and will leave 1% free so it won’t fill up and cause issues
L'opération prend une ou deux minutes.
Maintenant, montez le système de fichiers pour y accéder :pi@framboise:~ $ sudo mount /dev/md/vol1 /media/nas/
mount: /media/nas: wrong fs type, bad option, bad superblock on /dev/md127, missing codepage or helper program, or other error.
pi@framboise:~ $ FIXME Ne se monte pas !
===== Conclusion =====
===== Problèmes connus =====
===== Voir aussi =====
* **(en)** [[https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/]]
----
//Basé sur << [[https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/|Build a Raspberry Pi RAID NAS Server]] >> par Richie.//