Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

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,

  1. 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 :
    • Sélectionnez Formater la partition… et Choisissez les options suivantes :
      • 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
  2. Répétez ce processus pour chaque clé USB à utiliser en incrémentant le nom : USB02, USB03, etc.
  3. Insérez vos clés USB dans votre Raspberry Pi, peu importe dans quelle prise USB.
  4. 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 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