Différences
Ci-dessous, les différences entre deux révisions de la page.
tutoriel:raid1_software [Le 16/12/2015, 20:03] – créée depuis https://doc.ubuntu-fr.org/installation/raid1_software L'Africain | tutoriel:raid1_software [Le 16/12/2015, 20:04] (Version actuelle) – créée depuis https://doc.ubuntu-fr.org/installation/raid1_software L'Africain | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | ====== Comment installer Ubuntu sur un RAID-1 logiciel ? ====== | ||
+ | |||
+ | Une des plus grandes hantises pour l' | ||
+ | |||
+ | Une des causes les plus fréquentes de cette perte de données est le crash du disque dur. Un composant matériel qui peut flancher (comme tout composants) et qui peut vous causer de gros tracas surtout si vous n'avez pas fait de sauvegarde de vos données. | ||
+ | |||
+ | Si vous avez un peu d' | ||
+ | |||
+ | La solution que je vais vous expliquer repose sur un RAID-1. Le RAID-1 est en fait, une copie miroir d'un disque sur un autre (ou plus mais alors, je vous conseille d' | ||
+ | |||
+ | **ATTENTION : bien que le risque de perdre vos données soit limité avec l' | ||
+ | |||
+ | Quelques idées pour les backups : | ||
+ | * Les CDs ou les DVDs et plus encore ([[: | ||
+ | * Les synchronisations avec une autre machine ([[: | ||
+ | * Une sauvegarde automatique et incrémentielle de son répertoire //home// ([[: | ||
+ | |||
+ | //Remarque : l' | ||
+ | |||
+ | La solution RAID-1 proposée ci-dessous est une solution **logicielle**. Il ne s'agit pas d'une carte contrôleur RAID que l'on installe dans la machine. Remarquez cependant que plusieurs contrôleurs RAID grand public __ne font pas du RAID en hardware__, une explication les concernant est disponible en fin de l' | ||
+ | |||
+ | ===== Préambule ===== | ||
+ | |||
+ | Je vais vous exposer comment j'ai installé un RAID-1 logiciel sur un serveur //Fujitsu Siemens RX100 S2// équipé d'un contrôleur fake-RAID //Promise Fasttrack S150 TX4//. Les disques durs sont deux disques SATA de 80 Go et sont reconnus comme étant les devices ''/ | ||
+ | |||
+ | Cet article considère que vous savez comment installer une Ubuntu Hoary de manière normale et que vous possédez une gravure sur CD d' | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | * Pour commencer l' | ||
+ | |||
+ | **Attention : Il est impératif d' | ||
+ | * Effectuez l' | ||
+ | |||
+ | ==== Partitionnement ==== | ||
+ | |||
+ | A ce moment, vous devriez avoir à l' | ||
+ | |||
+ | * Choisissez '' | ||
+ | * Partitionnez les disques et gardez en tête que les deux disques doivent être parfaitement identiques. C' | ||
+ | * Avec des disques de 80 Go, j'ai choisi de partitionner de la manière suivante : | ||
+ | < | ||
+ | sda1 / | ||
+ | sda2 | ||
+ | sda3 | ||
+ | </ | ||
+ | |||
+ | * Voici un autre exemple avec 2 disques de 250 Go : | ||
+ | Je crée d' | ||
+ | |||
+ | Disque 1 | ||
+ | < | ||
+ | sda1 | ||
+ | sda2 | ||
+ | sda3 | ||
+ | </ | ||
+ | Disque 2 | ||
+ | < | ||
+ | sdb1 | ||
+ | sdb2 | ||
+ | sdb3 | ||
+ | </ | ||
+ | Puis je crée 3 périphériques multidisques RAID. | ||
+ | Et enfin je formate ces 3 périphériques comme suit : | ||
+ | < | ||
+ | raid1 / | ||
+ | raid2 | ||
+ | raid3 / | ||
+ | </ | ||
+ | |||
+ | |||
+ | * Pour d' | ||
+ | **Important :** notez les informations concernant l' | ||
+ | |||
+ | **Remarque :** on m'a indiqué que GRUB et LILO sont capables de booter directement sur une device de type RAID software (''/ | ||
+ | |||
+ | * Pour indiquez que '' | ||
+ | * Répercutez la même table de partition sur le second disque '' | ||
+ | * **Remarque importante :** N' | ||
+ | * Maintenant, vous pouvez définir votre RAID-1 logiciel en allant sur le champ '' | ||
+ | * Ubuntu va vous demander si vous voulez appliquer les changements, | ||
+ | * Choisissez '' | ||
+ | * Choisissez l' | ||
+ | * Sélectionnez les deux périphériques actifs; chez moi, il s'agit de : | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | * Choisissez '' | ||
+ | * Vous avez maintenant une ligne supplémentaire avec quelque chose ressemblant à ceci, dans le cas du premier exemple de disques 80 Go, : | ||
+ | < | ||
+ | Périphérique RAID1 n°0 - 78.5 GB Périph. RAID1 logiciel | ||
+ | n°1 78.5 GB | ||
+ | </ | ||
+ | * Allez sur '' | ||
+ | * Changez le champ '' | ||
+ | * Sélectionnez '' | ||
+ | * Tout en bas de l' | ||
+ | * Confirmez le fait qu'il faut appliquer les changements sur les disques. | ||
+ | * A partir de maintenant, vous pouvez terminer l' | ||
+ | |||
+ | == Quelques explications == | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | Ensuite, vous me direz que les données RAID-1 seront sauvegardées mais pas les informations de démarrage (ce qui se trouve dans ''/ | ||
+ | |||
+ | Enfin, les partitions ne sont pas utilisées sur le second disque (notamment, '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Premier démarrage ==== | ||
+ | |||
+ | < | ||
+ | (s'il vous arrive de redémarrer votre machine avant la fin de la construction du Raid, celle ci reprendra quasiment là ou elle s'est arreté) | ||
+ | |||
+ | Pour savoir si la construction est finie, vous trouverez les informations en affichant le fichier ''/ | ||
+ | |||
+ | < | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | ou mieux : | ||
+ | < | ||
+ | watch -n 10 cat / | ||
+ | </ | ||
+ | qui affiche l' | ||
+ | |||
+ | Lorsque la construction est en cours, vous obtenez quelques lignes ressemblant à ceci : | ||
+ | |||
+ | < | ||
+ | Personalities : [raid1] | ||
+ | md0 : active raid1 sdb3[0] sda3[1] | ||
+ | 76670144 blocks [2/2] [UU] | ||
+ | [=================> | ||
+ | unused devices: < | ||
+ | </ | ||
+ | |||
+ | Lorsque la construction est terminée, vous obtenez quelques lignes ressemblant à cela : | ||
+ | |||
+ | < | ||
+ | Personalities : [raid1] | ||
+ | md0 : active raid1 sdb3[0] sda3[1] | ||
+ | 76670144 blocks [2/2] [UU] | ||
+ | |||
+ | unused devices: < | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | == Quelques explications == | ||
+ | |||
+ | Cette phase de construction prend un certain temps mais rassurez-vous, | ||
+ | |||
+ | < | ||
+ | |||
+ | En RAID 1, chaque disque physique a un numéro d' | ||
+ | |||
+ | En RAID 5, il est possible que le système ne sache pas quels sont les données à utiliser dans le cas où la matrice est désynchronisée ET est en mode dégradé (il manque un disque); il faut alors forcer la construction de la matrice pour pouvoir reprendre la synchronisation, | ||
+ | |||
+ | ==== Duplication du boot ==== | ||
+ | |||
+ | **Remarque :** Si vous avez configuré GRUB ou LILO pour un démarrage direct sur ''/ | ||
+ | |||
+ | Maintenant que la construction du RAID-1 est terminée, vous possédez deux disques partitionnés de manière identique. Cependant, un seul des disques contient une partition ''/ | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | Pour faire cela, nous devons configurer une partition ''/ | ||
+ | |||
+ | === Préparation des partitions et formatage === | ||
+ | |||
+ | Voici comment nous allons préparer ces deux partitions non-RAID afin que notre système puisse quand même démarrer sans le premier disque. | ||
+ | |||
+ | Pour ce faire, nous allons lancer '' | ||
+ | |||
+ | < | ||
+ | sudo fdisk -l | ||
+ | </ | ||
+ | |||
+ | Cette commande va nous indiquer quelque chose de similaire à ce qui suit : | ||
+ | |||
+ | < | ||
+ | Disk /dev/sda: 80.0 GB, 80026361856 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Disk /dev/sdb: 80.0 GB, 80026361856 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Disk /dev/md0: 78.5 GB, 78510227456 bytes | ||
+ | 2 heads, 4 sectors/ | ||
+ | Units = cylinders of 8 * 512 = 4096 bytes | ||
+ | |||
+ | Disk /dev/md0 doesn' | ||
+ | </ | ||
+ | |||
+ | Vous remarquerez que '' | ||
+ | |||
+ | < | ||
+ | sudo fdisk /dev/sdb | ||
+ | </ | ||
+ | |||
+ | Ensuite, vous demandez de changer le code d' | ||
+ | |||
+ | Enfin, entrez la commande '' | ||
+ | |||
+ | Il nous reste plus qu'à formater les partitions, pour la partition ''/ | ||
+ | |||
+ | < | ||
+ | sudo mkfs.ext3 /dev/sdb1 | ||
+ | </ | ||
+ | |||
+ | Et pour formater la partition '' | ||
+ | < | ||
+ | sudo mkswap /dev/sdb2 | ||
+ | </ | ||
+ | |||
+ | Redémarrez la machine pour que tout soit propre (en ligne de commande : '' | ||
+ | |||
+ | === Copie des informations de boot === | ||
+ | |||
+ | **Remarque :** Si vous avez configuré GRUB ou LILO pour un démarrage direct sur ''/ | ||
+ | |||
+ | Une fois le démarrage effectué, il ne vous reste plus qu'à copier les données boot du premier disque vers le deuxième. C'est cette procédure qu'il faut suivre si vous effectuer une modification de GRUB ou du Kernel (en fait, **vous devez mettre à jour les partitions /boot à chaque fois qu' | ||
+ | |||
+ | Pour ce faire, c'est très simple. Si ce n'est pas fait, créer un répertoire ''/ | ||
+ | |||
+ | < | ||
+ | sudo mkdir /boot2 | ||
+ | </ | ||
+ | |||
+ | Montez la partition ''/ | ||
+ | |||
+ | < | ||
+ | sudo mount /dev/sdb1 /boot2 | ||
+ | </ | ||
+ | |||
+ | Copiez l' | ||
+ | < | ||
+ | sudo cp -Rf /boot/* /boot2/ | ||
+ | </ | ||
+ | |||
+ | Il ne vous reste plus qu'à démonter la partition ''/ | ||
+ | < | ||
+ | sudo umount /boot2 | ||
+ | </ | ||
+ | |||
+ | Maintenant, vous devez configurer Grub2 pour le deuxième disque (il faut bien pouvoir démarrer si le sda crash). | ||
+ | Tapez : | ||
+ | < | ||
+ | sudo umount /boot | ||
+ | </ | ||
+ | |||
+ | Montez alors le deuxième disque à la place : | ||
+ | < | ||
+ | sudo mount /dev/sdb1 /boot | ||
+ | </ | ||
+ | |||
+ | Configurez Grub2 : | ||
+ | < | ||
+ | sudo dpkg-reconfigure grub-pc | ||
+ | </ | ||
+ | |||
+ | Faites ok et ok (rien à changer jusque là). Ensuite vient le choix entre sda1 et sdb1. Décochez alors sda1 pour cocher sdb1. Puis faites ok. Votre ordinateur est maintenant prêt à démarrer avec le deuxième disque. Redémarrez pour constater par vous même en choississant votre disque au démarrage Bios à l'aide de " | ||
+ | |||
+ | Votre système est maintenant prêt à subir une panne de disque dur. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Installer un RAID1 en mode terminal "à la main" ==== | ||
+ | |||
+ | Exécuter le terminal '' | ||
+ | Puis passer en root (Plus simple) | ||
+ | |||
+ | < | ||
+ | sudo -i | ||
+ | </ | ||
+ | |||
+ | On part du principe que vous avez installé 2 disques durs identiques comme moi de 500 Go. (sdb et sdc) comme il sont gros nous allons faire 2 partitions. | ||
+ | |||
+ | < | ||
+ | fdisk /dev/sdb | ||
+ | </ | ||
+ | |||
+ | créer une partition principale donc '' | ||
+ | créer une autre partition pricipale | ||
+ | |||
+ | Cela donne ceci : | ||
+ | |||
+ | < | ||
+ | Commande (m pour l' | ||
+ | |||
+ | Disque /dev/sdb: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | |||
+ | Périphérique Amorce | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | maintenant il faut installer le flag sur les deux partitions donc '' | ||
+ | |||
+ | < | ||
+ | Commande (m pour l' | ||
+ | |||
+ | Disque /dev/sdb: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | |||
+ | Périphérique Amorce | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | sauver les modifications '' | ||
+ | |||
+ | Après, formater les 4 partitions (je ne sais pas si c'est utile, mais bon) ; | ||
+ | |||
+ | <note tip>Non, ce n'est pas utile</ | ||
+ | |||
+ | < | ||
+ | mkfs.ext3 /dev/sdb1; mkfs.ext3 /dev/sdb2; mkfs.ext3 /dev/sdc1; mkfs.ext3 /dev/sdc2 | ||
+ | </ | ||
+ | |||
+ | C'est un peu long... | ||
+ | |||
+ | Maintenant, créer deux nouveaux devices | ||
+ | |||
+ | < | ||
+ | mknod /dev/md0 b 9 0 | ||
+ | mknod /dev/md1 b 9 1 | ||
+ | </ | ||
+ | |||
+ | c'est à ce stade que nous avons besoin de mdadm (donc installez-le) | ||
+ | |||
+ | < | ||
+ | apt-get install mdadm | ||
+ | </ | ||
+ | |||
+ | C'est presque fini. Enfin, là, ça va prendre beaucoup de temps mais c'est le plus simple : Il suffit de créer les deux volumes raid en raid1 et taper '' | ||
+ | |||
+ | < | ||
+ | mdadm --create --metadata=0.90 --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1 | ||
+ | mdadm --create --verbose /dev/md1 --level=raid1 --raid-devices=2 /dev/sdb2 /dev/sdc2 | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ça affiche ceci | ||
+ | |||
+ | < | ||
+ | mdadm --create --verbose /dev/md1 --level=raid1 --raid-devices=2 /dev/sdb2 /dev/sdc2 | ||
+ | mdadm: /dev/sdb2 appears to contain an ext2fs file system | ||
+ | size=293065760K | ||
+ | mdadm: /dev/sdc2 appears to contain an ext2fs file system | ||
+ | size=293065760K | ||
+ | mdadm: size set to 293065664K | ||
+ | Continue creating array? y | ||
+ | mdadm: array /dev/md1 started. | ||
+ | </ | ||
+ | |||
+ | On peut contrôler tout de suite avec | ||
+ | |||
+ | < | ||
+ | mdadm --detail -scan | ||
+ | </ | ||
+ | |||
+ | ce qui doit afficher ceci | ||
+ | |||
+ | < | ||
+ | ARRAY /dev/md0 level=raid1 num-devices=2 UID=b0be37d4: | ||
+ | ARRAY /dev/md1 level=raid1 num-devices=2 UID=17538a36: | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | < | ||
+ | mdadm -Es | grep md/0 >>/ | ||
+ | mdadm -Es | grep md/1 >>/ | ||
+ | </ | ||
+ | |||
+ | initramfs doit contenir le fichier de configuration mdadm.conf durant le démarrage de l' | ||
+ | |||
+ | < | ||
+ | sudo update-initramfs -u | ||
+ | </ | ||
+ | |||
+ | Maintenant vous devez attendre la construction du raid. Vous pouvez voir le détail de l' | ||
+ | |||
+ | < | ||
+ | mdadm --detail /dev/md0 | ||
+ | </ | ||
+ | |||
+ | ça affiche ceci : | ||
+ | |||
+ | < | ||
+ | /dev/md0: | ||
+ | Version : 00.90.03 | ||
+ | Creation Time : Tue Dec 18 12:36:06 2007 | ||
+ | Raid Level : raid1 | ||
+ | Array Size : 195318144 (186.27 GiB 200.01 GB) | ||
+ | Device Size : 195318144 (186.27 GiB 200.01 GB) | ||
+ | Raid Devices : 2 | ||
+ | Total Devices : 2 | ||
+ | Preferred Minor : 0 | ||
+ | Persistence : Superblock is persistent | ||
+ | |||
+ | Update Time : Tue Dec 18 12:36:06 2007 | ||
+ | State : clean, resyncing | ||
+ | | ||
+ | Working Devices : 2 | ||
+ | | ||
+ | Spare Devices : 0 | ||
+ | |||
+ | | ||
+ | |||
+ | UUID : b0be37d4: | ||
+ | | ||
+ | |||
+ | Number | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Là il est a 44%. Il parait que l'on peut le formater pendant la création du raid mais j' | ||
+ | |||
+ | < | ||
+ | mount /dev/md0 /home/ftp | ||
+ | mount /dev/md1 /home/samba | ||
+ | </ | ||
+ | |||
+ | Pour le reste suivre les procédures habituelles voir l' | ||
+ | |||
+ | |||
+ | ===== Utilisation du système RAID-1 logiciel ===== | ||
+ | |||
+ | ==== Comment obtenir des informations sur le statut du RAID ? ==== | ||
+ | |||
+ | Pour obtenir des informations sur le statut du RAID, vous pouvez le faire soit de manière non détaillée avec la commande suivante : | ||
+ | |||
+ | |||
+ | < | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Et vous obtenez une sortie de la sorte : | ||
+ | < | ||
+ | Personalities : [raid1] | ||
+ | md0 : active raid1 sdb3[0] sda3[1] | ||
+ | 76670144 blocks [2/2] [UU] | ||
+ | |||
+ | unused devices: < | ||
+ | </ | ||
+ | |||
+ | Pour obtenir les RAID existant dans le système : | ||
+ | < | ||
+ | sudo mdadm --detail -scan | ||
+ | </ | ||
+ | |||
+ | Qui génère ceci chez moi : | ||
+ | < | ||
+ | ARRAY /dev/md0 level=raid1 num-devices=2 UUID=48b74990: | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Ou alors, vous pouvez demander des informations beaucoup plus détaillée via la commande suivante (chez moi le RAID est sur la device ''/ | ||
+ | < | ||
+ | sudo mdadm --detail /dev/md0 | ||
+ | </ | ||
+ | |||
+ | Avec cette commande, vous savez tout ;-) : | ||
+ | < | ||
+ | /dev/md0: | ||
+ | Version : 00.90.01 | ||
+ | Creation Time : Wed Aug 31 09:38:34 2005 | ||
+ | Raid Level : raid1 | ||
+ | Array Size : 76670144 (73.12 GiB 78.51 GB) | ||
+ | Device Size : 76670144 (73.12 GiB 78.51 GB) | ||
+ | Raid Devices : 2 | ||
+ | Total Devices : 2 | ||
+ | Preferred Minor : 0 | ||
+ | Persistence : Superblock is persistent | ||
+ | |||
+ | Update Time : Fri Sep 9 10:50:48 2005 | ||
+ | State : active | ||
+ | | ||
+ | Working Devices : 2 | ||
+ | | ||
+ | Spare Devices : 0 | ||
+ | |||
+ | UUID : 48b74990: | ||
+ | | ||
+ | |||
+ | Number | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== Comment invalider un disque ? ==== | ||
+ | |||
+ | Quand un disque à l'air de poser problème (ou qu'il pose réellemment problème), il est de bonne pratique de l' | ||
+ | |||
+ | Par exemple, si votre disque tombe en panne et que vous ne pouvez pas arrêter le serveur tout de suite, vous allez être inondé de messages d' | ||
+ | |||
+ | Pour marquer le disque comme étant invalide (ou '' | ||
+ | |||
+ | < | ||
+ | sudo mdadm /dev/md0 -f /dev/sdb3 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Comment démarrer en cas de panne d'un des disques ? ==== | ||
+ | |||
+ | J'ai effectué plusieurs tests dans le cas où un disque viendrait à tomber en panne. Ces tests ont été effectués sur le serveur ci-dessus avec le fake-RAID. Si vous n'avez pas de contrôleur, | ||
+ | |||
+ | === Sans contrôleur === | ||
+ | |||
+ | Voici une solution qui fonctionne : | ||
+ | |||
+ | < | ||
+ | *invoquer le shell grub : | ||
+ | grub> | ||
+ | * Dans le shell de grub exécuter: | ||
+ | |||
+ | #Ecrire le MBR de /dev/sda | ||
+ | root (hd0,0) | ||
+ | setup (hd0) | ||
+ | #Ecrire le MBR de /dev/sdb | ||
+ | device (hd0) /dev/sdb | ||
+ | root (hd0,0) | ||
+ | setup (hd0) | ||
+ | </ | ||
+ | |||
+ | Grâce à l' | ||
+ | J'ai simulé tour à tour la panne de sdb puis de sda, sans problème, il faut simplement taper ctrl+D pour continuer le lancement quand on vous le demande. | ||
+ | |||
+ | === Avec contrôleur fake-RAID === | ||
+ | |||
+ | C'est le charme du contrôleur fake-RAID, il n'y a rien à faire ;-). | ||
+ | |||
+ | En fait, votre Linux est configuré pour travailler sur le disque '' | ||
+ | |||
+ | Si vous retirez le disque '' | ||
+ | |||
+ | ==== Comment remplacer le disque défectueux et réactiver le RAID ? ==== | ||
+ | |||
+ | Pour remplacer un disque défectueux, | ||
+ | |||
+ | Ensuite, vous indiquez correctement les identifications des partitions ('' | ||
+ | |||
+ | < | ||
+ | sudo mdadm /dev/md0 -a /dev/sdb3 | ||
+ | </ | ||
+ | |||
+ | **Attention :** la reconstruction du système RAID commence. Veillez à ne pas éteindre ou redémarrer la machine tant que ce n'est pas fini. (pour savoir quand c'est fini et le pourquoi, relisez la section //Premier démarrage// | ||
+ | |||
+ | Une fois la reconstruction finie, votre système est comme neuf. | ||
+ | |||
+ | ===== Agrandir un système RAID-1 logiciel ===== | ||
+ | Le principe même d'un RAID-1 est particulièrement gourmant en espace disque: pour deux disques de capacité égales, vous ne disposerez que de la capacité d'un seul. | ||
+ | |||
+ | Il est donc très probable que vous en arriviez à vouloir agrandir l' | ||
+ | * Soit en ajoutant de nouveaux disques | ||
+ | * Soit en remplaçant les disques existants par des disques de plus grande capacité | ||
+ | |||
+ | ==== Ajout de nouveaux disques ==== | ||
+ | Dans un RAID-1, l' | ||
+ | |||
+ | Dans tous les cas, ajouter des disques à un système RAID-1 existant n' | ||
+ | Ainsi pour augmenter la capacité d'un système en RAID-1 en ajoutant des disques, cela revient à créer de nouveaux points de montage ou a recourir aux partitions logiques (LVM). | ||
+ | |||
+ | En effet, si votre périphérique RAID est le support de partition logique, il est en fait vu comme un PV (ou physical volume) au sein d'un VG (Virtual Group) et dans ce VG vous avez défini des LV (Logical Volume). Ajouter des disques reviens à ajouter des PV au VG actuel puis à étendre vos partitions logiques. De cette manière vous aurez agrandis l' | ||
+ | |||
+ | <note important> | ||
+ | Si vous ajoutez à votre VG comportant des PV en RAID1, des PV qui ne sont pas en RAID1, vous fragilisez votre stockage et le premier RAID1 devient inutile. | ||
+ | |||
+ | En cas de défaillance d'un Physical Volume vous perdez les informations contenues dans le Volume Group. Il n'y a donc aucun sens d' | ||
+ | </ | ||
+ | |||
+ | ==== Remplacement des disques existants ==== | ||
+ | |||
+ | Tout d' | ||
+ | < | ||
+ | Personalities : [raid1] | ||
+ | md1 : active raid1 sdb2[0] sda2[1] | ||
+ | 312440064 blocks [2/2] [UU] | ||
+ | | ||
+ | md0 : active raid1 sdb1[0] sda1[1] | ||
+ | 128384 blocks [2/2] [UU] | ||
+ | | ||
+ | unused devices: < | ||
+ | </ | ||
+ | < | ||
+ | * La première partition de chacun des deux disques est attribué à un md0 qui sert de /boot. | ||
+ | * La seconde partition de chacun des deux disques est attribué à un md1 qui sert de support pour LVM (md1 est un PV). | ||
+ | </ | ||
+ | On va ensuite vérifier que chacune des partition de /boot est bien bootable: | ||
+ | < | ||
+ | |||
+ | WARNING: DOS-compatible mode is deprecated. It's strongly recommended to | ||
+ | | ||
+ | | ||
+ | |||
+ | Command (m for help): p | ||
+ | |||
+ | Disk /dev/sda: 2000.4 GB, 2000398934016 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x494ca524 | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | Il y a bien une étoile dans la colonne " | ||
+ | |||
+ | On répète l' | ||
+ | |||
+ | Si tout est bon, on peut arrêter la machine afin de procéder au premier échange. | ||
+ | < | ||
+ | |||
+ | On redémarre ensuite, il est possible qu'au cours du démarrage le démon mdadm qui gère le RAID vous dise que le RAID1 est endommagé et vous demande si vous souhaitez quand même continuer à utiliser la machine, c'est normal puisque vous avez volontairement retiré un disque. | ||
+ | |||
+ | Vous pouvez vérifier l' | ||
+ | < | ||
+ | |||
+ | Personalities : [raid1] | ||
+ | md1 : active raid1 sda2[1] | ||
+ | 312440064 blocks [2/1] [_U] | ||
+ | | ||
+ | md0 : active raid1 sda1[1] | ||
+ | 128384 blocks [2/1] [_U] | ||
+ | |||
+ | </ | ||
+ | Il y a donc un seul volume de disponible sur les deux qui le compose. | ||
+ | |||
+ | |||
+ | Un fois le système démarré, on partitionne le nouveau disque de manière à avoir : | ||
+ | * la partition /boot de la même taille que l' | ||
+ | * l' | ||
+ | < | ||
+ | fdisk /dev/sdb | ||
+ | Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel | ||
+ | Building a new DOS disklabel with disk identifier 0x1c8e53bb. | ||
+ | Changes will remain in memory only, until you decide to write them. | ||
+ | After that, of course, the previous content won't be recoverable. | ||
+ | |||
+ | Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) | ||
+ | |||
+ | WARNING: DOS-compatible mode is deprecated. It's strongly recommended to | ||
+ | | ||
+ | | ||
+ | |||
+ | Command (m for help): p | ||
+ | |||
+ | Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x1c8e53bb | ||
+ | |||
+ | | ||
+ | |||
+ | Command (m for help): n | ||
+ | Command action | ||
+ | | ||
+ | | ||
+ | p | ||
+ | Partition number (1-4): 1 | ||
+ | First cylinder (1-243201, default 1): | ||
+ | Using default value 1 | ||
+ | Last cylinder, +cylinders or +size{K, | ||
+ | |||
+ | Command (m for help): n | ||
+ | Command action | ||
+ | | ||
+ | | ||
+ | p | ||
+ | Partition number (1-4): 2 | ||
+ | First cylinder (17-243201, default 17): | ||
+ | Using default value 17 | ||
+ | Last cylinder, +cylinders or +size{K, | ||
+ | Using default value 243201 | ||
+ | |||
+ | Command (m for help): a | ||
+ | Partition number (1-4): 1 | ||
+ | |||
+ | Command (m for help): p | ||
+ | |||
+ | Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x1c8e53bb | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Command (m for help): t | ||
+ | Partition number (1-4): 1 | ||
+ | Hex code (type L to list codes): fd | ||
+ | Changed system type of partition 1 to fd (Linux raid autodetect) | ||
+ | |||
+ | Command (m for help): t | ||
+ | Partition number (1-4): 2 | ||
+ | Hex code (type L to list codes): fd | ||
+ | Changed system type of partition 2 to fd (Linux raid autodetect) | ||
+ | |||
+ | Command (m for help): p | ||
+ | |||
+ | Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x1c8e53bb | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Command (m for help): w | ||
+ | The partition table has been altered! | ||
+ | |||
+ | Calling ioctl() to re-read partition table. | ||
+ | Syncing disks. | ||
+ | </ | ||
+ | |||
+ | Ensuite, il suffit de rajouter les partitions aux volumes RAID-1: | ||
+ | < | ||
+ | et | ||
+ | < | ||
+ | |||
+ | La reconstruction commence immédiatement, | ||
+ | < | ||
+ | cat / | ||
+ | Personalities : [raid1] | ||
+ | md1 : active raid1 sdb2[2] sda2[1] | ||
+ | 312440064 blocks [2/1] [_U] | ||
+ | [=> | ||
+ | | ||
+ | md0 : active raid1 sdb1[0] sda1[1] | ||
+ | 128384 blocks [2/2] [UU] | ||
+ | | ||
+ | unused devices: < | ||
+ | </ | ||
+ | |||
+ | Une fois la reconstruction finie, il faut renouveler l' | ||
+ | <note help> | ||
+ | Il est possible que le grub vous joue des tours (une partie se trouve sur le MBR qui n'est pas recopié lors de la reconstruction). Je vous engage à vous renseigner selon le grub que vous utilisez et à garder vos anciens disques intacts tant que les nouveaux ne sont pas pleinement fonctionnels. | ||
+ | </ | ||
+ | |||
+ | Lorsque la synchro est terminée avec vos deux nouveaux disques en place, vous pouvez alors augmenter la taille des volumes en partant du plus bas (plus proche de la couche physique) jusqu' | ||
+ | - Redimensionnement du md < | ||
+ | mdadm: component size of /dev/md1 has been set to 1953383424K</ | ||
+ | - Redimensionnement du pv < | ||
+ | - Redimensionnement d'une partition logique (LV) < | ||
+ | - Redimensionnement du système de fichier sur la partition logique en question: < | ||
+ | ===== Notes ===== | ||
+ | |||
+ | ==== Concernant les fake-RAID ==== | ||
+ | |||
+ | La plupart des contrôleurs RAID ATA (ou SATA) (à l' | ||
+ | |||
+ | Les fake-RAID sont difficiles à supporter sous Linux. En effet, le reverse-engineering est difficile, les pilotes sont propriétaires et particuliers et il y a peu de coopération avec les constructeurs. | ||
+ | |||
+ | Le plus souvent, **Linux est incapable de lire des volumes fake-RAID existants** avec ce type de contrôleur; | ||
+ | |||
+ | Vous serez donc bien avisé de fuir les volumes fake-RAID, d' | ||
+ | |||
+ | //Remarque d'un utilisateur:// | ||
+ | J'ai fait l' | ||
+ | |||
+ | **Remarque importante :** La critique énoncée ci-dessus à propos des fake-RAID est justifiée mais il n'en est pas moins vrai que les contrôleurs (même si il ne s' | ||
+ | |||
+ | |||
+ | ==== Concernant le démarrage avec des contrôleurs Promise ==== | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | En fait, après plusieurs tentatives d' | ||
+ | |||
+ | Le problème auquel j' | ||
+ | * Les deux disques sont connectés sur le contrôleur. | ||
+ | * Le contrôleur m' | ||
+ | * Je boote sur le CD d' | ||
+ | * Premier problème, Ubuntu détecte 2 disques et ne voit pas les disques comme un périphérique RAID. | ||
+ | * Je me dis "Pas grave, j' | ||
+ | * J' | ||
+ | * A la fin de l' | ||
+ | |||
+ | Après quelques recherches, j'ai appris que les contrôleurs Promise de ce type ne sont pas des contrôleurs RAID hardware mais bien des **fake-RAID** (voir note ci-dessus à ce propos). | ||
+ | |||
+ | Je me dis, bon ok mais ça n' | ||
+ | |||
+ | Voici ce que j'ai fait : | ||
+ | - J'ai désactivé tous les arrays dans le BIOS du contrôleur (CTRL+F au démarrage), | ||
+ | - j'ai retiré physiquement le second disque | ||
+ | - et j'ai installé Ubuntu sur le premier comme si de rien était. | ||
+ | - Ensuite, j'ai reconnecté le second disque et j'ai créé un nouvel array dans le BIOS du contrôleur. **Attention :** lors de la création du nouvel array, j'ai demandé au contrôleur de faire un '' | ||
+ | - Enfin, j'ai suivi la procédure expliquée dans cet article pour avoir du RAID-1. | ||
+ | |||
+ | Ma théorie concernant ce comportement pour le moins étrange... | ||
+ | |||
+ | Je pense que le MBR pour le RAID est stocké dans le contrôleur et non sur le disque. Etant donné qu'on utilise pas les pilotes de Promise, le MBR (qui indique où booter) est inscrit uniquement sur le disque d' | ||
+ | |||
+ | Cependant, lors de la mise à jour du kernel via apt-get, le reboot est impossible. | ||
+ | |||
+ | ==== Boot directement sur la partition RAID ==== | ||
+ | |||
+ | Comme dit plus haut, on m'a indiqué que GRUB et LILO sont capables de booter directement sur une device de type RAID software (/dev/mdX). Je n'ai cependant pas eu l' | ||
+ | |||
+ | Il s'agit d'un cas idylique, aucune modification n'est à effectuer en cas de mise à jour du noyau. | ||
+ | |||
+ | == Avec GRUB == | ||
+ | |||
+ | Exécutez | ||
+ | < | ||
+ | login@hostname: | ||
+ | </ | ||
+ | |||
+ | Pour trouver où sont installés les fichiers de configuration du chargeur de démarrage GRUB du RAID 1 (Ici la partition est dédiée au boot donc elle est montée dans le répertoire /boot de la partition racine /, __si les fichiers de boot sont directement sur la partition racine__ / saisissez **grub> | ||
+ | < | ||
+ | Grub> | ||
+ | (hd0,0) | ||
+ | (hd1,0) | ||
+ | </ | ||
+ | |||
+ | Si vos disques du RAID 1 sont **/ | ||
+ | Pour installer le chargeur de démarrage GRUB dans le **MBR de / | ||
+ | < | ||
+ | Grub> | ||
+ | Grub> | ||
+ | Grub> | ||
+ | </ | ||
+ | |||
+ | Pour installer le chargeur de démarrage GRUB dans le **MBR de /dev/sdb**: | ||
+ | < | ||
+ | Grub> | ||
+ | Grub> | ||
+ | Grub> | ||
+ | </ | ||
+ | |||
+ | Éditez le fichier de configuration du chargeur de démarrage GRUB: | ||
+ | < | ||
+ | login@hostname: | ||
+ | </ | ||
+ | |||
+ | Modifiez la configuration du chargeur de démarrage GRUB pour une partition racine / sur le RAID 1 /dev/md1: | ||
+ | < | ||
+ | title | ||
+ | root (hd0,0) | ||
+ | kernel | ||
+ | initrd | ||
+ | quiet | ||
+ | </ | ||
+ | |||
+ | Mise à jour de la configuration du chargeur de démarrage GRUB | ||
+ | < | ||
+ | login@hostname: | ||
+ | </ | ||
+ | |||
+ | == Avec Lilo == | ||
+ | |||
+ | Voici l' | ||
+ | |||
+ | < | ||
+ | # fdisk -l | ||
+ | |||
+ | Disk /dev/sda: 36.4 GB, 36401479680 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | |||
+ | Device Boot Start | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Disk /dev/sdb: 36.4 GB, 36401479680 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = cylinders of 16065 * 512 = 8225280 bytes | ||
+ | |||
+ | Device Boot Start | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # cat / | ||
+ | |||
+ | disk=/ | ||
+ | partition=/ | ||
+ | map=/ | ||
+ | prompt | ||
+ | delay=20 | ||
+ | timeout=20 | ||
+ | vga=normal | ||
+ | default=Linux | ||
+ | |||
+ | image=/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | # df -h | ||
+ | Filesystem | ||
+ | / | ||
+ | tmpfs 1013M 0 1013M 0% /dev/shm | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Si vous insérez un périphérique de stockage amovible boutable, il risque de perturber l' | ||
+ | donc si votre ensemble raid1 est sur /dev/sdb1 et /dev/sdc1, il se peut que le périphérique de stockage utilise un de ces dev et que votre partition raid soit déplacée sur /dev/sdd1 ! | ||
+ | Vous obtenez alors un message d' | ||
+ | </ | ||
+ | |||
+ | Pour éviter le problème ci-dessus, soit vous boutez sans périphérique de stockage branché, soit vous mettez tous les noms éventuels sous lequel peuvent se retrouver les partitions RAID à assembler. Par exemple, pour un RAID 1 avec deux disques je mets dans mdadm.conf : | ||
+ | < | ||
+ | DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 | ||
+ | </ | ||
+ | ET mdadm trouvera les deux bonnes partitions de type RAID là-dedans! | ||
+ | |||
+ | |||
+ | ===== Liens ===== | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ---- | ||
+ | // |