{{tag>tutoriel}} ====== Configurer un RAID 1 logiciel sur une installation existante ====== ===== Pré-requis ===== ==== Installer mdadm ==== * Installez le paquet **[[apt>mdadm]]** ou en ligne de commande :$ sudo apt install mdadm * Redémarrez la machine * Exécutez :$ sudo cat /proc/mdstat Personalities : unused devices: ===== Première étape : Préparer le second disque dur ===== ==== Cloner la table des partitions ==== Pour être sûr que le second disque dur (''/dev/sdb'') sera divisé en partitions absolument identiques à celles du premier disque dur (''/dev/sda''), on clone la table des partitions du premier pour l'appliquer au second. Pour cela, il faut d'abord passer en mode superutilisateur : $ sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdc Vérification qu'aucun autre n'utilise le disque en ce moment ... OK Disque /dev/sdc : 121601 cylindres, 255 têtes, 63 secteurs/piste sfdisk: ERREUR: le secteur 0 n'a pas une signature MS-DOS /dev/sdc : type non reconnu de table de partition Vieille situation: Aucune partition repérée Nouvelle situation: Unités= secteurs de 512 octets, décompte à partir de 0 Périph Amorce Début Fin #secteurs Id Système /dev/sdc1 1033316865 1953520064 920203200 83 Linux /dev/sdc2 63 1033316864 1033316802 83 Linux /dev/sdc3 0 - 0 0 Vide /dev/sdc4 0 - 0 0 Vide Attnetion : aucune partition primaire marquée amorçable (active) Peu important pour LILO, mais DOS MBR n'amorcera pas ce disque. Succès d'écriture de la nouvelle table de partitions Relecture de la table de partitions ... Si vous créez ou modifiez une partition DOS, /dev/foo7, par exemple, alors utiliser dd(1) pour mettre à zéro les premiers 512 octets: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (Consulter fdisk(8).) La commande suivante doit montrer que les deux disques durs ont maintenant exactement la même structure : $ sudo fdisk -l (...) Disque /dev/sdb: 1000.2 Go, 1000204886016 octets 255 têtes, 63 secteurs/piste, 121601 cylindres Unités = cylindres de 16065 * 512 = 8225280 octets Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Identifiant de disque : 0x000d6bd0 Périphérique Amorce Début Fin Blocs Id Système /dev/sdb1 64322 121601 460101600 83 Linux /dev/sdb2 1 64321 516658401 83 Linux Les entrées de la table de partitions ne sont pas dans l'ordre du disque Disque /dev/sdc: 1000.2 Go, 1000204886016 octets 255 têtes, 63 secteurs/piste, 121601 cylindres Unités = cylindres de 16065 * 512 = 8225280 octets Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Identifiant de disque : 0x00000000 Périphérique Amorce Début Fin Blocs Id Système /dev/sdc1 64322 121601 460101600 83 Linux /dev/sdc2 1 64321 516658401 83 Linux Les entrées de la table de partitions ne sont pas dans l'ordre du disque (...) Plus simple et rapide que de partitionner à la main ! ==== Changer le type des partitions (sdc) ==== Maintenant, il faut régler le type des partitions sur //Linux raid autodetect//. On utilise **fdisk** en ligne de commande : $ sudo fdisk /dev/sdc WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Commande (m pour l'aide): Sous **fdisk**, chaque commande est une lettre, que l'on valide avec ENTRÉE. Les modifications ne sont appliquées que lorsqu'on les écrit avec la commande **w**. La commande **m** affiche les commandes disponibles : Commande (m pour l'aide): m Commande d'action a bascule le fanion d'amorce b éditer l'étiquette BSD du disque c basculer le fanion de compatibilité DOS d supprimer la partition l lister les types de partitions connues m afficher ce menu n ajouter une nouvelle partition o créer une nouvelle table vide de partitions DOS p afficher la table de partitions q quitter sans enregistrer les changements s créer une nouvelle étiquette vide pour disque de type Sun t modifier l'id de système de fichiers d'une partition u modifier les unités d'affichage/saisie v vérifier la table de partitions w écrire la table sur le disque et quitter x fonctions avancées (pour experts seulement) Commande (m pour l'aide): Pour changer le type d'une partition : * utilisez la commande **t** * puis indiquez le numéro de la partition à modifier (ici la 1) * puis le code du type de partition voulu (**L** affiche la liste des codes possibles) * Le type Linux raid autodetect correspond au code **fd** Commande (m pour l'aide): t Numéro de partition (1-4): 1 Code Hexa (taper L pour lister les codes): L 0 Vide 24 NEC DOS 81 Minix / Linux a bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 cachée di c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux étendue c7 Syrinx 5 Etendue 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX amorçable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Etendue (LB 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Cachée FAT12 5c Priam Edisk a8 UFS Darwin f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Cachée FAT16 < 63 GNU HURD or Sys ab Amorce Darwin f2 DOS secondaire 16 Cachée FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Cachée HPFS/NT 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Cachée W95 FAT 75 PC/IX bb Boot Wizard hid fe LANstep 1c Cachée W95 FAT 80 Minix ancienne be Amorce Solaris ff BBT 1e Cachée W95 FAT Code Hexa (taper L pour lister les codes): fd Type système de partition modifié de 1 à fd (Linux raid autodetect) Commande (m pour l'aide): On répète l'opération pour les autres partitions (ici, la 2) : Commande (m pour l'aide): t Numéro de partition (1-4): 2 Code Hexa (taper L pour lister les codes): fd Type système de partition modifié de 2 à fd (Linux raid autodetect) Commande (m pour l'aide): Et on termine en appliquant les changements : Commande (m pour l'aide): w La table de partitions a été altérée! Appel de ioctl() pour relire la table de partitions. Synchronisation des disques. $ ==== Vérifier les partitions ==== Vérifiez qu'il ne reste rien d'une précédente installation RAID en exécutant les commandes suivantes : $ sudo mdadm --zero-superblock /dev/sdc1 mdadm: Unrecognised md component device - /dev/sdc1 $ sudo mdadm --zero-superblock /dev/sdc2 mdadm: Unrecognised md component device - /dev/sdc2 S'il ne reste rien d'une précédente installation, chacune de ces commandes renverra une erreur comme ci-dessus, sinon, rien ne s'affichera. ===== Autres étapes ===== ==== Configurer le RAID 1 ==== === Créer les grappes === On crée **/dev/md0** avec **/dev/sdb1** ; **/dev/md1** et **/sdv/sdb2** : **/dev/md2** à partir de **/dev/sdb3**. Les partitions correspondantes du premier disque ne peuvent pas être ajoutées pour le moment, car le système fonctionne dessus. C'est pourquoi on les remplace par le mot ''missing'' dans les commandes suivantes : $ sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdc1 mdadm: array /dev/md0 started. $ sudo mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdc2 mdadm: array /dev/md1 started. La commande suivante devrait maintenant montrer deux grappes RAID dégradées : $ sudo cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sdc2[1] 516658304 blocks [2/1] [_U] md0 : active raid1 sdc1[1] 460101504 blocks [2/1] [_U] unused devices: Les indicateurs [_U] ou [U_] signifient qu'une grappe est dégradée, alors que [UU] signifie que la grappe est normale. === Créer les systèmes de fichiers (sdc) === On peut désormais choisir le système de fichiers de chaque grappe, ici **ext4** pour les deux grappes **/dev/md0** et **/dev/md1** : $ sudo mkfs.ext4 /dev/md0 mke2fs 1.41.11 (14-Mar-2010) Étiquette de système de fichiers= Type de système d'exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 28762112 i-noeuds, 115025376 blocs 5751268 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=0 3511 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 8192 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 Écriture des tables d'i-noeuds : complété Création du journal (32768 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété Le système de fichiers sera automatiquement vérifié tous les 28 montages ou après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i pour écraser la valeur. Continuez avec : $ sudo mkfs.ext4 /dev/md1 === Mettre à jour le fichier mdadm.conf === Nous allons adapter le fichier **/etc/mdadm/mdadm.conf**, qui ne contient encore aucune information concernant les grappes, à la nouvelle situation. Par sécurité, faites une copie du fichier existant : $ sudo cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf-dist puis un scan de la configuration RAID qui sera ajoutée au nouveau fichier : $ sudo mdadm --examine --scan | sudo tee -a /etc/mdadm/mdadm.conf ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8208bf1f:959d5d13:09753872:6056aa4f ARRAY /dev/md1 level=raid1 num-devices=2 UUID=2a1cf1a4:8243eb9c:09753872:6056aa4f Vérifiez que le fichier **/etc/mdadm/mdadm.conf** ressemble à ça : $ sudo cat /etc/mdadm/mdadm.conf # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This file was auto-generated on Tue, 12 Oct 2010 22:07:40 +0200 # by mkconf $Id$ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8208bf1f:959d5d13:09753872:6056aa4f ARRAY /dev/md1 level=raid1 num-devices=2 UUID=2a1cf1a4:8243eb9c:09753872:6056aa4f === Monter les grappes === Les grappes sont prêtes à être montées, pour y accéder. Créons deux points de montage, par exemple **/mnt/md0** et **/mnt/md1** : $ sudo mkdir /media/md0 $ sudo mkdir /media/md1 Montons les deux grappes formatées en ext4 : $ sudo mount /dev/md0 /media/md0 $ sudo mount /dev/md1 /media/md1 On devrait voir les deux grappes en tapant la commande : $ sudo mount (...) /dev/sdb1 on /media/serveurs type ext4 (rw) /dev/sdb2 on /home type ext4 (rw) (...) /dev/md0 on /media/md0 type ext4 (rw) /dev/md1 on /media/md1 type ext4 (rw) === Mettre à jour les fichiers fstab et mtab === ... # /home sur la grappe /dev/md1 /dev/md1 /home ext4 defaults 0 2 ==== Dupliquer les données ==== Maintenant que les grappes sont montées, on peut copier dessus le contenu du premier disque dur : S'il s'agit de la racine, on utilise :$ sudo cp -dpRx / /mnt/md0 $ sudo cp -dpRx /multimedia /mnt/md1 Dans le cas 'un répertoire tel que le home, il faut d'abord s'y placer : $ cd /home $ sudo cp -dpRx . /media/md1 $ cd /media/serveurs $ sudo cp -dpRx . /media/md0 (A confirmer) On peut utiliser **rsync** : $ sudo rsync -av --progress --stats --filter "- /mnt" / /mnt/md0 $ sudo rsync -av --progress --stats /multimedia /mnt/md1 Compte-tenu des quantités de données à déplacer, cela permet en cas de besoin d'interrompre la synchronisation et de la reprendre plus tard. ==== Premier redémarrage ==== Après le premier redémarrage, si tout s'est bien passé, on devrait obtenir le résultat suivant avec la commande **df** : $ df -h Sys. de fichiers Tail. Occ. Disp. %Occ. Monté sur (...) /dev/md1 485G 138G 323G 30% /home /dev/md0 432G 76G 335G 19% /media/serveurs (...) En particulier, les partitions sdb et sdc ne doivent pas apparaître ; sinon, il faut les démonter par $ sudo umount /dev/sdb1 et toujours : $ sudo cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] ==== Ajouter le premier disque dur ==== === Modifier le type des partitions (sdb) === De même que pour **/dev/sdb** précédemment, nous utilisons **fdisk** pour changer le type des partitions de **/dev/sda** en //Linux raid autodetect//. $ sudo fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). # Commande (m pour l'aide): m Commande d'action a bascule le fanion d'amorce b éditer l'étiquette BSD du disque c basculer le fanion de compatibilité DOS d supprimer la partition l lister les types de partitions connues m afficher ce menu n ajouter une nouvelle partition o créer une nouvelle table vide de partitions DOS p afficher la table de partitions q quitter sans enregistrer les changements s créer une nouvelle étiquette vide pour disque de type Sun t modifier l'id de système de fichiers d'une partition u modifier les unités d'affichage/saisie v vérifier la table de partitions w écrire la table sur le disque et quitter x fonctions avancées (pour experts seulement) Commande (m pour l'aide): t Numéro de partition (1-4): 2 Code Hexa (taper L pour lister les codes): L 0 Vide 24 NEC DOS 81 Minix / Linux a bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 cachée di c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux étendue c7 Syrinx 5 Etendue 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX amorçable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Etendue (LB 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Cachée FAT12 5c Priam Edisk a8 UFS Darwin f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Cachée FAT16 < 63 GNU HURD or Sys ab Amorce Darwin f2 DOS secondaire 16 Cachée FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Cachée HPFS/NT 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Cachée W95 FAT 75 PC/IX bb Boot Wizard hid fe LANstep 1c Cachée W95 FAT 80 Minix ancienne be Amorce Solaris ff BBT 1e Cachée W95 FAT Code Hexa (taper L pour lister les codes): fd Type système de partition modifié de 2 à fd (Linux raid autodetect) Commande (m pour l'aide): t Numéro de partition (1-4): 1 Code Hexa (taper L pour lister les codes): fd Type système de partition modifié de 1 à fd (Linux raid autodetect) Commande (m pour l'aide): w La table de partitions a été altérée! Appel de ioctl() pour relire la table de partitions. Synchronisation des disques. === Intégrer le premier disque dur à la grappe === $ sudo mdadm --add /dev/md1 /dev/sdb2 mdadm: added /dev/sdb2 $ sudo mdadm --add /dev/md0 /dev/sdb1 mdadm: added /dev/sdb1 On suit par : $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb1[2] sdc1[1] 460101504 blocks [2/1] [_U] resync=DELAYED md1 : active raid1 sdb2[2] sdc2[1] 516658304 blocks [2/1] [_U] [>....................] recovery = 3.1% (16470400/516658304) finish=68.7min speed=121184K/sec unused devices: ou par la commande : $ watch cat /proc/mdstat Every 2,0s: cat /proc/mdstat Sat Oct 16 12:42:22 2010 $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb1[2] sdc1[1] 460101504 blocks [2/1] [_U] resync=DELAYED md1 : active raid1 sdb2[2] sdc2[1] 516658304 blocks [2/1] [_U] [>....................] recovery = 3.1% (16470400/516658304) finish=68.7min speed=121184K/sec unused devices: Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [ra id10] md0 : active raid1 sdb1[2] sdc1[1] 460101504 blocks [2/1] [_U] resync=DELAYED md1 : active raid1 sdb2[2] sdc2[1] 516658304 blocks [2/1] [_U] [=>...................] recovery = 5.1% (26754368/516658304) finish=67.1 min speed=121638K/sec unused devices: Every 2,0s: cat /proc/mdstat Sat Oct 16 15:22:34 2010 Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [ra id10] md0 : active raid1 sdb1[0] sdc1[1] 460101504 blocks [2/2] [UU] md1 : active raid1 sdb2[0] sdc2[1] 516658304 blocks [2/2] [UU] unused devices: Ctrl-C ----------------------------- === Mettre à jour le fichier mdadm.conf === ==== Test : simuler la panne d'un disque dur ==== ==== Réparation avec l'utilitaire de disque ==== {{ tutoriel:materiel:disque:raid:reparation_ensemble_raid_-_utilitaire_de_disque.png?400 |}} ==== Redémarrage ==== $ sudo cp /etc/mdadm/mdadm.conf-dist /etc/mdadm/mdadm.conf ===== Conclusion ===== ===== Problèmes connus ===== ===== Voir aussi ===== * **(fr)** [[http://doc.ubuntu-fr.org/tutoriel/raid1_logiciel_sur_installation_existante#dupliquer_les_donnees]] * **(en)** [[http://www.howtoforge.com/software-raid1-grub-boot-debian-etch-p3]] ---- //Basé sur << [[http://|Article]] >> par Auteur.//