# [Debian] Raid mdadm

## Introduction

Le raid logiciel est disponible sur les distributions Linux grâce à l'outil **mdadm** qui supporte les plus grands types de raid (RAID0, RAID1, RAID5, RAID10 etc).

Le tutoriel suivant sera réalisé sur une **Debian 12** équipée d'un disque accueillant le système de 15Go ainsi que 2 disques de 1Go utilisées d'abord pour faire du raid0 puis pour faire du raid1 dans la seconde partie du tutoriel.

Sources :

- [Documentation Ubuntu](https://doc.ubuntu-fr.org/raid_logiciel)
- [Article Adrien Linuxtricks](https://www.linuxtricks.fr/wiki/mdadm-raid-logiciel-sous-linux)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/qyfimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/qyfimage.png)

## Installation

#### Raid0

Dans l'exemple ci-dessous nous aurons 2 disques de 1Go en **raid0**.

Tout d'abord, partitionnez les disques avec **fdisk** en type **fd** (Linux raid) :

```bash
fdisk /dev/sda
```

Tapez l'enchaînement de touches suivant :

**N / P / ENTER / ENTER / ENTER / T / FD / W**

Faire la même opération avec le deuxième disque (**/dev/sdb**)

Créer le **raid0** :

```bash
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
```

Vérifier l'état du raid :

```bash
mdadm --detail /dev/md0
```

#### Renommer le raid

Pour sauvegarder le nom du raid en **md0**, lancez cette commande :

```bash
mdadm --detail --scan > /etc/mdadm/mdadm.conf
```

Et pour prendre en compte les changements :

```bash
update-initramfs -u && reboot
```

#### Formater le système de fichiers du Raid

```bash
mkfs.ext4 /dev/md0
```

#### Monter le raid

Pour monter le raid manuellement et tester son bon fonctionnement on peut créer son point de montage et utiliser la commande **mount** :

```bash
mkdir /media/myRaid && mount /dev/md0 /media/myRaid
```

Si vous souhaitez conserver ce point de montage lors du redémarrage de la machine, il faut indiquer le raid dans le **/etc/fstab** :

```bash
/dev/md0        /media/myRaid   ext4    defaults        0 0
```

On peut vérifier la configuration du fstab grâce à la commande suivante qui ne doit rien renvoyer si la configuration est bonne :

```bash
mount -a
```


#### Raid1

Une fois les partitions configurées, créez le **raid1** :

```bash
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
```

#### Raid5

Dans cette configuration, nous avons un raid5 configuré avec 4 disques.

Une fois les partitions configurées, créez le **raid5** :

```bash
mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
```

#### Tester le raid

Afin de vérifier le bon fonctionnement du raid nous allons simuler la panne d'un des deux disques physiques.

Pour cela, nous allons supprimer un des deux disques dans VMware.

[![Image collée 2.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/image-collee-2.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/image-collee-2.png)

Une fois la machine redémarrée, le raid passe en état inactif comme on peut le voir :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/zZbimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/zZbimage.png)

On peut éteindre la machine pour ajouter un disque sur la VM afin de reconstruire le raid.

La première étape consiste à éteindre le raid actuel :

```bash
mdadm --stop /dev/md0
```

Une fois la machine redémarrée, nous devons créer la partition de type **Linux Raid** sur notre nouveau disque (se référer à la partie installation du raid).

Ensuite, il faut recréer le raid en indiquant le nouveau disque et l'ancien sans oublier l'option **--assume-clean** :

```bash
mdadm --create /dev/md0 --level=1 --assume-clean --raid-devices=2 /dev/sda1 /dev/sdb1
```

<p class="callout success">Le raid devrait se reconstruire sans perte de données !</p>

#### Supprimer un raid

Tout d'abord, il faut penser à démonter le raid (s'il est monté) :

```bash
umount /dev/md0
```

Ensuite on peut éteindre le raid :

```bash
mdadm --stop /dev/md0
```

Et on supprime l'entrée (la ligne) du raid dans le **/etc/fstab** :

```bash
nano /etc/fstab
```