Comment configurer RAID1 sur Linux

Comment configurer RAID1 sur Linux

RAID signifie une éventail redondant de disques bon marché; Selon le niveau RAID que nous configurons, nous pouvons obtenir une réplication de données et / ou une distribution de données. Une configuration RAID peut être réalisée via du matériel dédié ou via un logiciel. Dans ce tutoriel, nous voyons comment implémenter un RAID1 (Mirror) via un logiciel sur Linux, en utilisant
le mdadm utilitaire.

Dans ce tutoriel, vous apprendrez:

  • Les particularités des niveaux de raid les plus utilisés
  • Comment installer MDADM sur les principales distributions Linux
  • Comment configurer un RAID1 avec deux disques
  • Comment remplacer un disque dans le tableau RAID

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel mdadm
Autre Autorisation
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Un bref aperçu des niveaux de raid les plus utilisés



Avant de commencer avec notre tutoriel et de voir comment implémenter une configuration logicielle RAID1 sur Linux en utilisant mdadm, C'est une bonne idée de faire un bref récapitulatif des niveaux de raid les plus utilisés et de voir quelles sont leurs particularités.

Raid0

Son objectif principal est d'améliorer les performances. Dans ce niveau ou raid, nous avons deux disques ou plus qui devraient être de taille égale. Les données sont distribuées alternativement sur les disques (rayures), et cela diminue les temps de lecture et d'écriture.

Diagramme RAID0

Raid1

RAID1 (miroir) est ce que nous allons mettre en œuvre dans ce tutoriel: dans ce niveau RAID, les données sont écrites simultanément, et ainsi reproduites sur les deux ou plusieurs disques qui font partie du tableau.



Diagramme RAID1

Raid5

Pour créer une configuration avec ce niveau RAID, un minimum de trois disques est requis et les disques N-1 peuvent contenir des données. Cette configuration peut gérer la défaillance d'un disque sans subir de perte de données. Tout comme RAID0, dans cette configuration, les données sont rayées, donc distribuées sur plusieurs disques. La principale différence est que aussi Informations sur la parité des données existe et est également rayé. Qu'est-ce que les informations de parité de données? Fondamentalement, tous les disques
Dans le tableau RAID, contiennent des informations sur l'état des données; Ces informations permettent de reconstruire les données si l'un des disques échoue.



Diagramme RAID5

Raid6

RAID6 fonctionne de manière similaire à RAID5; La principale différence est que cette configuration implique la présence de deux Disques de parité, donc avec ce niveau RAID, il est possible de gérer la défaillance de deux disques sans souffrir de perte de données. Un minimum de quatre disques sont nécessaires pour atteindre cette configuration.

Diagramme RAID6

Installation de MDADM



MDADM est l'utilitaire qui gère le raid logiciel sur Linux. Il est disponible dans toutes les principales distributions. Sur Debian et ses dérivés, il est possible de l'installer en utilisant la commande suivante:

$ sudo apt-get update && sudo apt-get install mdadm 

Sur la famille de distributions Red Hat, nous pouvons utiliser le DNF directeur chargé d'emballage:

$ sudo dnf installer mdadm 

Sur archlinux, nous pouvons installer le package à l'aide du Pac-Man directeur chargé d'emballage:

$ sudo Pacman -Sy Mdadm 

Une fois le logiciel installé, nous pouvons continuer et créer notre configuration RAID1.

Créer le raid

Pour le bien de ce tutoriel, je travaillerai dans un environnement virtuel, en utilisant un système de Debian «Buster», et deux disques virtuels que j'ai précédemment créés, qui feront partie de la configuration RAID1. Ces disques sont reconnus comme vdb et VDC, comme vous pouvez le voir sur la sortie du lsblk commande:

SR0 11: 0 1 1024M 0 ROM VDA 254: 0 0 7G 0 DISK ├fique-VDA1 254: 1 0 6G 0 PART / ├AVDA2 254: 2 0 1K 0 PARTIE └AVDA5 254: 5 0 1021M 0 PART [SWAP] VDB 254: 16 0 1G 0 DISK VDC 254: 32 0 1G 0 DISK 

Partitionner les disques



Bien qu'il soit possible de créer le raid directement à l'aide de disques bruts, c'est toujours une bonne idée d'éviter cela et, à la place, de créer une partition sur chacun des deux disques. Pour effectuer une telle tâche, nous utiliserons séparé. La première chose que nous voulons faire est de créer une table de partition. Pour le bien de cet exemple, nous utiliserons mbr tables de partition, mais gp Ceux sont requis dans les scénarios du monde réel si vous utilisez des disques de 2 To ou plus. Pour initialiser un disque, nous pouvons exécuter la commande suivante:

$ sudo séparé -s / dev / vdb mklabel msdos 

Maintenant, nous pouvons créer une partition qui prend tout l'espace disponible:

$ sudo séparé -s / dev / vdb mkpart primaire 1mib 100% 

Nous pouvons maintenant mettre le drapeau RAID sur la partition (cela définira le type de partition sur FD - «Linux Raid AutoDetect»):

$ sudo a séparé -s / dev / vdb set 1 raid 

Dans ce cas, nous avons travaillé sur le / dev / vdb dispositif, nous devons évidemment répéter les mêmes opérations également sur le / dev / vdc disque.

Configuration de Raid1

Une fois que nous avons initialisé et partitionné les disques que nous pouvons utiliser mdadm Pour créer la configuration réelle. Tout ce que nous avons à faire est d'exécuter la commande suivante:

$ sudo mdadm \ --verbose \ --create / dev / md0 \ --level = 1 \ --raid-devices = 2 \ / dev / vdb1 / dev / vdc1 

Analysons la commande ci-dessus. Tout d'abord, nous avons utilisé le --verbeux Option afin de faire en sorte que la commande puisse la sortie plus d'informations sur les opérations qui sont effectuées.

Nous avons utilisé mdadm En «mode création», c'est pourquoi --créer Option, fournissant le nom de l'appareil qui doit être créé (/ dev / md0 dans ce cas). Nous avons précisé le niveau à utiliser pour le raid avec --niveau, et le nombre d'appareils qui devraient en faire partie avec --dispositifs de raid. Enfin, nous avons fourni le chemin des appareils qui doivent être utilisés.

Une fois que nous exécutons la commande, nous devons visualiser la sortie suivante:

MDADM: Remarque: Ce tableau a des métadonnées au début et peut ne pas convenir en tant que périphérique de démarrage. Si vous prévoyez de stocker «/ démarrer» sur cet appareil, veuillez vous assurer que votre chargeur de démarrage comprend MD / V1.x métadonnées, ou utilisation --metadata = 0.90 MDADM: Taille définie sur 1046528K Continuez à créer un tableau? y 

Dans ce cas, nous pouvons répondre affirmativement à la question et continuer à créer le tableau:



MDADM: défaut de version 1.2 métadonnées MDADM: Array / Dev / MD0 démarré. 

Pour visualiser les informations et l'état de la configuration du raid créé, nous pouvons exécuter mdadm avec le --détail Option, passer le nom de l'appareil que nous voulons vérifier. Dans ce cas, la sortie est la suivante:

$ sudo mdadm --detail / dev / md0 / dev / md0: version: 1.2 Temps de création: ven 23 avril 11:16:44 2021 RAID Niveau: RAID1 Taille du tableau: 1046528 (1022.00 MIB 1071.64 Mo) Taille de développement utilisé: 1046528 (1022.00 MIB 1071.64 MB) Dispositifs RAID: 2 Total Devices: 2 Persistance: SuperBlock est un temps de mise à jour persistant: Ven 23 avril 11:17:04 2021 État: Clean Active Devices: 2 Dispositifs de travail: 2 Dispositifs défaillants: 0 Dispositifs de rechange: 0 Politique de cohérence: Resync Nom: Debian: 0 (local pour héberger Debian) UUID: 4721F921: BB82187C: 487DEFB8: E960508A Événements: 17 Nombre majeur Minor RaidDevice State 0 254 17 0 Sync / Dev / Vdb1 1 254 33 1 Sync / Vdc1 actif / VDC1 

Avec le --détail Option Nous pouvons recueillir des informations sur le raid dans son ensemble. Si nous voulons des informations sur chaque disque unique qui est membre de la configuration, nous pouvons utiliser --examiner Au lieu de cela, et passez les appareils comme argument. Dans ce cas, par exemple, nous courions:

$ sudo mdadm --examine / dev / vdb1 / dev / vdc1 


La commande produirait une sortie similaire à ce qui suit:

/ dev / vdb1: magie: A92B4EFC Version: 1.2 Carte de fonction: 0x0 Array UUID: 4721F921: BB82187C: 487DEFB8: E960508A Nom: Debian: 0 (Local to Host Debian) Temps de création: Fri 23 avril 2093056 (1022.00 MIB 1071.64 Mo) Taille du tableau: 1046528 (1022.00 MIB 1071.64 MB) Données Offset: 2048 Secteurs Super Offset: 8 Secteurs Espace inutilisé: Avant = 1968 Secteurs, After = 0 Secteurs État: Clean Dispositif UUID: A9575594: 40C0784B: 394490E8: 6EB7E9A3 Temps de mise à jour: FRI 23 11:30:02 2021 Bad Block Journal: 512 Entrées disponibles au décalage 16 Secteurs Vérification: 51AFC54D - Événements corrects: 17 Rôle du périphérique: Appareil actif 0 État du tableau: aa ('A' == Active, '.'== Missing,' r '== Remplacement) / dev / vdc1: magie: A92B4EFC Version: 1.2 Carte de fonction: 0x0 Array UUID: 4721F921: BB82187C: 487DEFB8: E960508A Nom: Debian: 0 (Local to Host Debian) Temps de création: Fri 23 avril 2093056 (1022.00 MIB 1071.64 Mo) Taille du tableau: 1046528 (1022.00 MIB 1071.64 MB) Données Offset: 2048 Secteurs Super Offset: 8 Secteurs Espace inutilisé: Avant = 1968 Secteurs, After = 0 Secteurs État: Clean Device UUID: B0CF8735: 5FE765C0: 6C269C2F: 3777D11D Temps de mise à jour: FRI 23 11:30:02 2021 Bad Block Journal: 512 Entrées disponibles au décalage 16 Secteurs Vérification: 28C3066F - Événements corrects: 17 Rôle du périphérique: Appareil actif 1 État du tableau: AA ('A' == Active, '.'== manquant,' r '== Remplacement) 

Utilisation du périphérique RAID



Dans la section précédente, nous avons créé une configuration RAID1 en utilisant deux disques (virtuels):
/ dev / vdb et / dev / vdc. Le périphérique RAID que nous avons créé est appelé / dev / md0. Pour pouvoir l'utiliser, nous devons créer un système de fichiers dessus. Pour utiliser le ext4, Système de fichiers, par exemple, nous exécutrions:

$ sudo mkfs.ext4 / dev / md0 

Une fois le système de fichiers créé, nous devons le monter quelque part, et que de procéder à l'utiliser comme un périphérique de blocage normal. Pour faire en sorte que le système monte automatiquement l'appareil au démarrage, nous devons créer une entrée pour lui dans le fichier / etc / fstab. Ce faisant, nous devons référencer le dispositif RAID par son Uuid, Puisque son chemin peut changer sur le redémarrage. Pour trouver l'UUID de l'appareil, nous pouvons utiliser le lsblk commande:

$ lsblk -o uuid / dev / md0 uuid 58ff8624-e122-419e-8538-d948439a8c07 

Remplacement d'un disque dans le tableau



Maintenant, imaginez que l'un des disques du tableau échoue. Comment devrions-nous procéder? Comme nous le verrons, nous pouvons le supprimer du tableau sans perdre de données. Supposons que le disque dur échoué est / dev / vdc, Nous pouvons émettre la commande suivante pour le marquer comme tel:

$ sudo mdadm --manage / dev / md0 --fail / dev / vdc1 

La sortie de la commande ci-dessus sera:

MDADM: SET / DEV / VDC1 défectueux dans / dev / md0 

Nous pouvons vérifier l'état du raid pour confirmer que l'appareil a été marqué comme défectueux:

$ sudo mdadm --detail / dev / md0 / dev / md0: version: 1.2 Temps de création: ven 23 avril 11:16:44 2021 RAID Niveau: RAID1 Taille du tableau: 1046528 (1022.00 MIB 1071.64 Mo) Taille de développement utilisé: 1046528 (1022.00 MIB 1071.64 MB) Dispositifs RAID: 2 Total Devices: 2 Persistance: Superblock est un temps de mise à jour persistant: Ven 23 avril 15:01:36 2021 État: Clean, Dégusation active dégradée: 1 Dispositifs de travail: 1 Périphériques défaillants: 1 Dispositifs de rechange: 0 cohérence Politique: Resync Nom: Debian: 0 (local à hôte debian) UUID: 4721F921: BB82187C: 487DEFB8: E960508A Événements: 19 Numéro Minor Minor RaidDevice State 0 254 17 0 Synchronisation active / dev / vdb1 - 0 0 1 REMORD 1 254 33 - défectueux / dev / vdc1 

Avez-vous vu qu'il n'y en a maintenant qu'un appareil actif, et / dev / vdc1 État
est: défectueux. Maintenant, pour retirer le disque du tableau, nous pouvons courir:

$ sudo mdadm --manage / dev / md0 --remove / dev / vdc1 

En passant --gérer Nous travaillons avec mdadm en mode «gérer»; Dans ce mode, nous pouvons effectuer des actions comme supprimer les disques défectueux ou en ajouter de nouveaux. Si tout se passe comme prévu, l'appareil doit être «à chaud»:

MDADM: Hot supprimé / dev / vdc1 de / dev / md0 


Nous devons maintenant formater le nouveau disque dur que nous utiliserons pour remplacer celui défectueux de la même manière que nous avons fait pour les deux autres, au début de ce tutoriel. Nous pourrions également utiliser un raccourci qui consiste dans l'utilisation du sfdisk commande. Si nous exécutons cette commande avec le -d Option (abréviation pour --décharge), il videra des informations sur les partitions d'un appareil que nous passons comme argument. Ces informations peuvent être utilisées comme sauvegarde et reproduire la configuration. Nous pouvons rediriger la sortie vers un fichier ou l'utiliser directement dans un pipeline. Supposer que le nouveau disque est / dev / vdd, Nous courions:

$ sudo sfdisk -d / dev / vdb | sudo sfdisk / dev / vdd 

Une fois que le nouveau disque est partitionné et prêt, nous pouvons l'ajouter à notre tableau RAID1 avec la commande suivante:

$ sudo mdadm --manage / dev / md0 --add / dev / vdd1 

Si nous vérifions maintenant l'état du périphérique RAID, nous pouvons voir qu'il «reconstruise» sur l'appareil de rechange que nous avons ajouté:

$ sudo mdadm --detail / dev / md0 / dev / md0: version: 1.2 Temps de création: ven 23 avril 11:16:44 2021 RAID Niveau: RAID1 Taille du tableau: 1046528 (1022.00 MIB 1071.64 Mo) Taille de développement utilisé: 1046528 (1022.00 MIB 1071.64 MB) Dispositifs RAID: 2 Total Devices: 2 Persistance: Superblock est un temps de mise à jour persistant: ven 23 avril 15:29:45 2021 État: propre, dégradé, récupération des appareils actifs: 1 Dispositifs de travail: 2 Périphériques défaillants: 0 Dispositifs de rechange: 1 Politique de cohérence: Resync Rebuild Statut: 19% Nom complet: Debian: 0 (local à hôte Debian) UUID: 4721F921: BB82187C: 487DEFB8: E960508A Événements: 26 Nombre majeur Minor Raiddevice State 0 254 17 0 SYNC / DEV / VDB1 2 254 49 1 Rebuilding de rechange / DEV / VDD1 

D'après la sortie de la commande, nous pouvons voir que l'État est signalé comme «propre, dégradé, récupérant» et le / dev / vdd1 La partition est signalée comme une «reconstruction de rechange». Une fois le processus de reconstruction terminé, il se transformera en «synchronisation active».

Conclusions

Dans ce tutoriel, nous avons vu un bref aperçu des niveaux de raid les plus utilisés, comment créer un logiciel RAID1 avec deux disques en utilisant le mdadm utilitaire, comment vérifier l'état du périphérique RAID et de chaque disque unique dans le tableau. Nous avons également vu comment retirer et remplacer un disque défectueux. N'oubliez pas que RAID1 parons à la redondance des données mais ne doit pas être considéré comme une sauvegarde!

Tutoriels Linux connexes:

  • Miroirs Ubuntu
  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Boucles imbriquées dans les scripts bash
  • Fichiers de configuration Linux: 30 premiers
  • Téléchargement Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…