#Convertir en configuration Raid1 sur le système Centos existant
Le **RAID** est une technologie qui combine plusieurs disques durs en un seul disque dur logique. Il existe différents types de niveaux **RAID** disponibles, dans la mesure où **RAID1** utilise deux disques durs et conserve des copies identiques des données. Il est également appelé Raid Mirroring. Ainsi, en utilisant **RAID1**, si un disque dur tombe en panne, le système continuera à fonctionner à partir du deuxième disque car les deux disques conservent exactement les mêmes données. L'un des inconvénients du **RAID 1** est que si on dispose de deux disques de 500 Go, l'espace disque total qu'on peut utiliser après la configuration du **RAID1** est toujours de 500 Go. En bref, on ne pourra utiliser que 50 % de l’espace disque total disponible.
On peut réaliser une configuration **RAID** soit au niveau matériel, soit via le logiciel. Le raid matériel est effectué via un périphérique contrôleur **RAID** (carte PCIe). Le **RAID** logiciel est effectué au niveau du système d'exploitation. Le système d'exploitation Linux prend en charge le **RAID** logiciel et peut configurer le **RAID** au moment de l'installation du système d'exploitation.
A titre d'exemple on va supposer qu'on a déjà un système d'exploitation **Centos7** fonctionnel sans **RAID** et on veut connecter un disque supplémentaire et convertir cette installation Centos7 existante en **RAID1**. On va donc voir comment convertir le système **CentOS 7** à disque unique existant en un système **RAID1** à deux disques sans perdre de données ni réinstaller le système. **RAID 1** produit un ensemble en miroir, qui peut tolérer une seule panne de disque. Le chargeur de démarrage **GRUB2** est également configuré de telle manière que le système pourra toujours démarrer en cas de panne de l'un des disques durs.
Le système existant a les caractéristiques suivantes:
```
Operating System : Centos 7.4
# Hard Disk partitions
2GB /boot partition as /dev/sda1
16GB / root partition as /dev/sda2
2GB swap space in /dev/sda3
Partition Type : ext4
```
On ajoute un deuxième disque identique `/dev/sdb` pour la configuration du **raid 1**. Le **raid** sera un **raid logiciel** Linux géré par **mdadm**. Si la commande **mdadm** n'est pas disponible, il faut l'installer:
```
yum install mdadm
```
Créer un schéma de partition identique à celui du disque actuel `/dev/sda`
```
sfdisk -d /dev/sda | sfdisk /dev/sdb
```
Vérifier les modifications à l’aide de la commande ci-dessous.
```
fdisk -l
```
Modifier le type de partition en **« Détection automatique du raid Linux »**, en utilisant **fdisk** pour convertir les 3 partitions du disque dur en "fd".
```
fdisk /dev/sdb
```
Vérifier le résultat à l’aide de la commande ci-dessous.
```
fdisk -l
```
Maintenant créer un **RAID1** dégradé. Ce qui signifie qu'on va créer des périphériques **RAID1** dans un état dégradé car un disque est manquant. Le `/dev/sda` qui est actuellement installé avec le système d'exploitation et utilisé pour démarrer.
Dans le cas étudié, on a trois partitions. Il faut donc le faire pour toutes les partitions du nouveau disque `/dev/sdb`:
```
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3
```
Vérifier le résultat avec :
```
cat /proc/mdstat
```
Créer les systèmes de fichiers sur les nouvelles partitions des périphériques **RAID**.
```
mkfs.ext4 /dev/md0
mkfs.ext4 /dev/md1
mkswap /dev/md2
```
Il faut maintenant répliquer manuellement les données existantes sur les partitions `/dev/sda` existantes vers de nouvelles partitions **RAID** logicielles. Pour cela, monter `/` et `/boot`:
```
mount /dev/md0 /mnt/boot/
mount /dev/md1 /mnt/
```
Copier les données existantes à l'aide de la commande **rsync**:
```
rsync -auxHAXSv --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/mnt/* --exclude=/run/* /* /mnt
```
Monter maintenant les dossiers système:
```
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
monter --bind /sys /mnt/sys
mount --bind /run /mnt/run
```
Chrooter dans la partition `/mnt` pour le disque `/dev/sdb`:
```
chroot /mnt/
```
Modifier `fstab` avec les informations UUID du nouveau lecteur:
```
blkid /dev/md*
/dev/md0 : UUID="bdf72caa-716c-431d-ab23-4699feb14bdf" TYPE="ext4"
/dev/md1 : UUID="cef39ac1-e53b-4a25-9608-7baf20fade02" TYPE="ext4"
/dev/md2 : UUID="45b6e2b2-cd79-4fdd-8288-80e1db0da874" TYPE="échange"
```
Maintenant, ouvrir le fichier `/etc/fstab` et ajouter les entrées comme ci-dessous:
```
vim /etc/fstab
UUID=new-UUID / ext4 defaults 1 1
UUID=new-UUID /boot ext4 defaults 1 2
UUID=new-UUID swap swap defaults 0 0
```
Remplacer **new-UUID** par l'UUID de partition de disque.
Créer maintenant un fichier `mdadm.conf` à partir de la configuration RAID actuelle :
```
mdadm --detail --scan > /etc/mdadm.conf
```
Sauvegarder, mettre à jour l'**initrd** actuel et reconstruire l'**initramfs** avec le nouveau `mdadm.conf`:
```
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bck
dracut --mdadmconf --fstab --add="mdraid" --filesystems "xfs ext4 ext3" --add-drivers="raid1" --force
/boot/initramfs-$(uname -r).img $(uname -r) -M
```
Modifier maintenant **grub** et ajouter quelques paramètres par défaut à **grub**:
```
vim /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.auto rd.auto=1 rhgb quiet"
GRUB_PRELOAD_MODULES="mdraid1x"
```
Créer une nouvelle configuration **Grub**:
```
grub2-mkconfig -o /boot/grub2/grub.cfg
```
Installer grub sur le nouveau disque `/dev/sdb`:
```
rub2-install /dev/sdb
```
À ce stade, redémarrer le système en choisissant le nouveau disque `/dev/sdb` dans le BIOS. Si tout fonctionne, le système démarrera avec le nouveau disque `/dev/sdb`. Après cela, vérifier les points de montage et l'état du raid à l'aide des commandes ci-dessous.
```
swapon -s
mount -t ext4
cat /proc/mdstat
```
Dans le cas étudié, on a changé les ports du disque afin qu'après le redémarrage, le nouveau disque devienne `/dev/sda` et l'ancien disque devienne `/dev/sdb`. Il ne faut pas se tromper avec les résultats de la sortie d'écran, si on choisi de démarrer à partir d'un nouveau disque à partir du BIOS au lieu de l'échange de port de disque, dans ce cas, les résultats de la commande **mdstat** afficheront le nouveau disque sous le nom `/dev/sdb` lui-même.
Il faut maintenant ajouter l'ancien disque à la matrice **RAID**. Il faut changer le type de partition en **« Détection automatique du raid Linux »** pour l'ancien disque en utilisant la commande **fdisk** pour convertir les 3 partitions en "fd" (dans notre cas, c'est `/dev/sdb`)
```
fdisk /dev/sdb
```
Ajouter maintenant l'ancien disque à la matrice **RAID 1** (Dans notre cas, c'est `/dev/sdb`):
```
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
mdadm --manage /dev/md2 --add /dev/sdb3
```
Vérifier l'état de la reconstruction à l'aide de la commande ci-dessous et vérifier si elle est en cours d'exécution.
```
watch -n1 "cat /proc/mdstat"
```
Réinstaller Grub sur l'ancien disque (dans notre cas, c'est `/dev/sdb`)
```
grub2-istall /dev/sdb
```
Ceci conclu la configuration de **raid1** sur l'installation **centos 7.4** existante. Une fois la reconstruction terminée, **mdstat** affichera le résultat et à partir de là, on pourra confirmer qu'il est terminé et fonctionne correctement. Redémarrer à nouveau.