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.
pi@framboise:~ $ sudo apt update pi@framboise:~ $ sudo apt upgrade pi@framboise:~ $ sudo apt install mdadm
Sur un PC,
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
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
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 arrayContinue creating array? ymdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md/vol1 started.pi@framboise:~ $
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
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 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
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 -iroot@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:~# exitpi@framboise:~ $
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/vol1Proceed anyway? (y,N) yfs_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: donepi@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 :
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:~ $
Ne se monte pas !