{{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.//