Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:raid1_logiciel_sur_installation_existante [Le 30/03/2016, 04:14] – [Changer le type des partitions (sdb)] 78.250.22.8 | tutoriel:raid1_logiciel_sur_installation_existante [Le 11/01/2018, 14:51] (Version actuelle) – [Sources] tarski | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Configurer un RAID 1 logiciel sur une installation existante ====== | ||
+ | |||
+ | <note warning> | ||
+ | **ATTENTION !** Cette page est en cours de rédaction ; elle n'est donc pas terminée et la procédure qu' | ||
+ | À moins de bien savoir ce que vous faites, ne suivez pas ces instructions. | ||
+ | </ | ||
+ | |||
+ | ===== Préambule ===== | ||
+ | |||
+ | ==== Objectif ==== | ||
+ | |||
+ | J' | ||
+ | |||
+ | ==== Limite de responsabilité ==== | ||
+ | |||
+ | Plutôt qu'un véritable guide, il s'agit d'une synthèse des étapes par lesquelles je suis moi-même passé pour y parvenir. N' | ||
+ | |||
+ | ==== Sources ==== | ||
+ | |||
+ | Ce tutoriel est très largement basé sur celui de Falko Timme que vous trouverez à cette adresse : http:// | ||
+ | Je l'ai traduit, légèrement adapté pour Ubuntu 10.04, et actualisé pour ce qui concerne la configuration de [[: | ||
+ | Il faut noter que Falko Timme est allé au bout de l' | ||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | Avant de commencer, je disposais : | ||
+ | * d'une installation fonctionnelle de Ubuntu Server Lucid Lynx (10.04) sur un disque de 500 Go (''/ | ||
+ | * des droits d' | ||
+ | * d'un disque de 500 Go, identique au premier, complètement vierge (ni formaté, ni partitionné), | ||
+ | * d'un Live CD d' | ||
+ | * du tutoriel (soit imprimé, soit affiché sur un autre ordinateur). | ||
+ | |||
+ | <note important> | ||
+ | J' | ||
+ | </ | ||
+ | |||
+ | ===== Notes préliminaires ===== | ||
+ | |||
+ | Le disque ''/ | ||
+ | * ''/ | ||
+ | * ''/ | ||
+ | * ''/ | ||
+ | |||
+ | Je souhaite aboutir à la situation suivante : | ||
+ | * ''/ | ||
+ | * ''/ | ||
+ | * ''/ | ||
+ | |||
+ | <note tip> | ||
+ | **Autres variantes d' | ||
+ | Je n'ai pas installé d' | ||
+ | </ | ||
+ | |||
+ | Voici donc la situation actuelle : | ||
+ | |||
+ | < | ||
+ | blueduck@serveur: | ||
+ | |||
+ | Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur | ||
+ | / | ||
+ | none 244M 200K 244M 1% /dev | ||
+ | none 249M 4,0K 249M 1% /dev/shm | ||
+ | none 249M 352K 249M 1% /var/run | ||
+ | none 249M | ||
+ | none 249M | ||
+ | none | ||
+ | / | ||
+ | |||
+ | blueduck@serveur: | ||
+ | |||
+ | Disque /dev/sda: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Identifiant de disque : 0x000860a2 | ||
+ | | ||
+ | Périphérique Amorce | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | | ||
+ | Disque /dev/sdb: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | | ||
+ | Le disque /dev/sdb ne contient pas une table de partition valide | ||
+ | </ | ||
+ | |||
+ | ===== Installer mdadm ===== | ||
+ | |||
+ | Il faut [[: | ||
+ | |||
+ | Puis, après avoir redémarré votre machine, exécutez : | ||
+ | |||
+ | sudo cat / | ||
+ | |||
+ | ce qui devrait vous afficher quelque chose comme : | ||
+ | |||
+ | < | ||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | unused devices: < | ||
+ | </ | ||
+ | |||
+ | ===== Préparer le second disque dur ===== | ||
+ | |||
+ | ==== Cloner la table des partitions ==== | ||
+ | |||
+ | Afin d' | ||
+ | | ||
+ | sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb | ||
+ | |||
+ | Ce qui doit provoquer l' | ||
+ | |||
+ | < | ||
+ | Vérification qu' | ||
+ | OK | ||
+ | |||
+ | Disque /dev/sdb : 60801 cylindres, 255 têtes, 63 secteurs/ | ||
+ | Vieille situation: | ||
+ | Unités= cylindres de 8225280 octets, blocs de 1024 octets, décompte à partir de 0 | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Nouvelle situation: | ||
+ | Unités= secteurs de 512 octets, décompte à partir de 0 | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | Succès d' | ||
+ | |||
+ | 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=/ | ||
+ | (Consulter fdisk(8).) | ||
+ | </ | ||
+ | |||
+ | La commande : | ||
+ | |||
+ | sudo fdisk -l | ||
+ | |||
+ | doit montrer que les deux disques durs ont maintenant exactement la même structure : | ||
+ | |||
+ | < | ||
+ | Disque /dev/sda: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Identifiant de disque : 0x000860a2 | ||
+ | |||
+ | Périphérique Amorce | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Disque /dev/sdb: 500.1 Go, 500107862016 octets | ||
+ | 255 têtes, 63 secteurs/ | ||
+ | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Identifiant de disque : 0x4caa4880 | ||
+ | |||
+ | Périphérique Amorce | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Plus simple et rapide que de partitionner à la main, non ;-) ? | ||
+ | |||
+ | ==== Changer le type des partitions (sdb) ==== | ||
+ | |||
+ | Ensuite, il faut régler le type des partitions sur //Linux raid autodetect// | ||
+ | Rapidement, je rappelle que '' | ||
+ | |||
+ | < | ||
+ | blueduck@serveur: | ||
+ | |||
+ | Commande (m pour l' | ||
+ | Commande d' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Commande (m pour l' | ||
+ | </ | ||
+ | |||
+ | Pour changer le type d'une partition, on utilise la commande '' | ||
+ | |||
+ | < | ||
+ | Commande (m pour l' | ||
+ | </ | ||
+ | |||
+ | Il faut ensuite indiquer le numéro de la partition à modifier (ici la '' | ||
+ | |||
+ | < | ||
+ | Numéro de partition (1-4): 1 | ||
+ | </ | ||
+ | |||
+ | Puis le code du type de partition voulu ('' | ||
+ | |||
+ | < | ||
+ | Code Hexa (taper L pour lister les codes): L | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 10 OPUS 56 Golden Bow a7 NeXTSTEP | ||
+ | 11 Cachée FAT12 5c Priam Edisk | ||
+ | 12 Compaq diagnost 61 SpeedStor | ||
+ | 14 Cachée FAT16 < 63 GNU HURD or Sys ab Amorce Darwin | ||
+ | 16 Cachée FAT16 64 Novell Netware | ||
+ | 17 Cachée HPFS/ | ||
+ | 18 AST SmartSleep | ||
+ | 1b Cachée W95 FAT 75 PC/IX | ||
+ | 1c Cachée W95 FAT 80 Minix ancienne | ||
+ | 1e Cachée W95 FAT | ||
+ | </ | ||
+ | |||
+ | Le type //Linux raid autodetect// | ||
+ | |||
+ | < | ||
+ | Code Hexa (taper L pour lister les codes): fd | ||
+ | |||
+ | Type système de partition modifié de 83 à fd (Linux raid autodetect) | ||
+ | | ||
+ | Commande (m pour l' | ||
+ | </ | ||
+ | |||
+ | On répète l' | ||
+ | |||
+ | Commande (m pour l' | ||
+ | Numéro de partition (1-4): 2 | ||
+ | Code Hexa (taper L pour lister les codes): fd | ||
+ | Type système de partition modifié de 83 à fd (Linux raid autodetect) | ||
+ | | ||
+ | Commande (m pour l' | ||
+ | Numéro de partition (1-4): 3 | ||
+ | Code Hexa (taper L pour lister les codes): fd | ||
+ | Type système de partition modifié de 82 à fd (Linux raid autodetect) | ||
+ | | ||
+ | Commande (m pour l' | ||
+ | Et on termine en appliquant les changements : | ||
+ | Commande (m pour l' | ||
+ | |||
+ | 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 == | ||
+ | |||
+ | Pour s' | ||
+ | blueduck@serveur: | ||
+ | blueduck@serveur: | ||
+ | blueduck@serveur: | ||
+ | S'il ne reste rien d'une précédente installation, | ||
+ | mdadm: Unrecognised md component device - /dev/sdb1 | ||
+ | Dans le cas contraire, rien ne s' | ||
+ | |||
+ | ===== Configurer le RAID 1 ===== | ||
+ | |||
+ | ==== Créer les grappes ==== | ||
+ | |||
+ | On crée ''/ | ||
+ | |||
+ | sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1 | ||
+ | sudo mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2 | ||
+ | sudo mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3 | ||
+ | |||
+ | La commande : | ||
+ | |||
+ | sudo cat / | ||
+ | |||
+ | devrait maintenant montrer que vous avez trois grappes RAID dégradées : | ||
+ | |||
+ | < | ||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | md2 : active raid1 sdb3[1] | ||
+ | 1052160 blocks [2/1] [_U] | ||
+ | | ||
+ | md1 : active raid1 sdb2[1] | ||
+ | 446373952 blocks [2/1] [_U] | ||
+ | | ||
+ | md0 : active raid1 sdb1[1] | ||
+ | 40957568 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 (sdb) ==== | ||
+ | |||
+ | On peut désormais choisir le système de fichiers de chaque grappe, //ext4// pour ''/ | ||
+ | |||
+ | blueduck@serveur: | ||
+ | |||
+ | mke2fs 1.41.11 (14-Mar-2010) | ||
+ | Étiquette de système de fichiers= | ||
+ | Type de système d' | ||
+ | Taille de bloc=4096 (log=2) | ||
+ | Taille de fragment=4096 (log=2) | ||
+ | Stride=0 blocks, Stripe width=0 blocks | ||
+ | 2564096 i-noeuds, 10239392 blocs | ||
+ | 511969 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 | ||
+ | 313 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 | ||
+ | | ||
+ | Écriture des tables d' | ||
+ | Création du journal (32768 blocs) : complété | ||
+ | Écriture des superblocs et de l' | ||
+ | fichiers : complété | ||
+ | | ||
+ | Le système de fichiers sera automatiquement vérifié tous les 24 montages ou | ||
+ | après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i | ||
+ | pour écraser la valeur. | ||
+ | |||
+ | Continuer avec : | ||
+ | |||
+ | sudo mkfs.ext4 /dev/md1 | ||
+ | |||
+ | et | ||
+ | |||
+ | sudo mkswap /dev/md2 | ||
+ | |||
+ | ==== Mettre à jour le fichier mdadm.conf ==== | ||
+ | |||
+ | À présent, adaptez le fichier ''/ | ||
+ | |||
+ | sudo cp / | ||
+ | |||
+ | puis faites un scan de la configuration RAID qui sera ajoutée au nouveau fichier : | ||
+ | |||
+ | sudo mdadm --examine --scan | sudo tee -a / | ||
+ | |||
+ | |||
+ | Vérifiez que votre fichier ''/ | ||
+ | blueduck@serveur: | ||
+ | |||
+ | < | ||
+ | # mdadm.conf | ||
+ | # | ||
+ | # Please refer to mdadm.conf(5) for information about this file. | ||
+ | # | ||
+ | | ||
+ | # by default, scan all partitions (/ | ||
+ | # alternatively, | ||
+ | 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 | ||
+ | | ||
+ | ARRAY /dev/md0 level=raid1 num-devices=2 UUID=e5e23f0a: | ||
+ | ARRAY /dev/md1 level=raid1 num-devices=2 UUID=057ec4b9: | ||
+ | ARRAY /dev/md2 level=raid1 num-devices=2 UUID=18366108: | ||
+ | </ | ||
+ | |||
+ | ==== Monter les grappes ==== | ||
+ | |||
+ | Les grappes sont prêtes à être montées, afin de pouvoir y accéder. Créez deux points de montage, par exemple ''/ | ||
+ | |||
+ | sudo mkdir /mnt/md0 | ||
+ | sudo mkdir /mnt/md1 | ||
+ | |||
+ | puis montez les deux grappes formatées en //ext4// : | ||
+ | |||
+ | sudo mount /dev/md0 /mnt/md0 | ||
+ | sudo mount /dev/md1 /mnt/md1 | ||
+ | |||
+ | La grappe d' | ||
+ | Vous devriez voir les deux grappes en tapant la commande : | ||
+ | |||
+ | blueduck@serveur: | ||
+ | |||
+ | /dev/sda1 on / type ext4 (rw, | ||
+ | proc on /proc type proc (rw) | ||
+ | none on /sys type sysfs (rw, | ||
+ | none on / | ||
+ | none on / | ||
+ | none on / | ||
+ | none on /dev type devtmpfs (rw, | ||
+ | none on /dev/pts type devpts (rw, | ||
+ | none on /dev/shm type tmpfs (rw, | ||
+ | none on /var/run type tmpfs (rw, | ||
+ | none on /var/lock type tmpfs (rw, | ||
+ | none on / | ||
+ | none on / | ||
+ | /dev/sda2 on /multimedia type ext4 (rw,acl) | ||
+ | rpc_pipefs on / | ||
+ | nfsd on / | ||
+ | / | ||
+ | /dev/md0 on /mnt/md0 type ext4 (rw) | ||
+ | /dev/md1 on /mnt/md1 type ext4 (rw) | ||
+ | ==== Mettre à jour les fichiers fstab et mtab ==== | ||
+ | |||
+ | <note important> | ||
+ | Je ne vais pas entrer ici dans le détail : les pages sur [[: | ||
+ | </ | ||
+ | |||
+ | ===== Dupliquer les données ===== | ||
+ | |||
+ | Maintenant que les grappes sont montées, on peut copier dessus le contenu du premier disque dur : | ||
+ | |||
+ | sudo cp -dpRx / /mnt/md0 | ||
+ | sudo cp -dpRx / | ||
+ | |||
+ | < | ||
+ | * s'il est présent, **le contenu** du dossier /multimedia sera copié dans /mnt/md1 ; | ||
+ | * s'il est absent, c'est **le dossier** /multimedia qui sera copié dans /mnt/md1, c' | ||
+ | |||
+ | Comme ici /multimedia sera un point de montage vers /dev/md1, il faut que ce slash soit présent. | ||
+ | |||
+ | |||
+ | __Rappel sur les options utilisées de la commande cp :__ | ||
+ | * **-d** préserve les liens symboliques ; | ||
+ | * **-p** préserve les propriétés des fichiers et dossiers (droits d' | ||
+ | * **-R** demande une copie récursive ; | ||
+ | * **-x** demande de ne pas sortir du système de fichier contenant le dossier à copier, ainsi même si **/** contient **/proc**, le contenu de **/proc** ne sera pas copié car **/proc** est dans un système de fichier virtuel (nommé //proc//, cf. ''/ | ||
+ | * l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | Pour ma part, j'ai préféré utiliser '' | ||
+ | |||
+ | 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 (plus de 400 Go depuis ''/ | ||
+ | |||
+ | <note important> | ||
+ | Il serait bien que quelqu' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Premier redémarrage ===== | ||
+ | |||
+ | ==== Configuration de GRUB (première partie) ==== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | |||
+ | ==== Après le premier redémarrage ==== | ||
+ | |||
+ | Si tout s'est bien passé, vous devriez obtenir le résultat suivant avec la commande '' | ||
+ | blueduck@serveur: | ||
+ | |||
+ | Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur | ||
+ | |||
+ | Et toujours : | ||
+ | |||
+ | blueduck@serveur: | ||
+ | |||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | |||
+ | |||
+ | ===== Ajouter le premier disque dur ===== | ||
+ | |||
+ | ==== Modifier le type des partitions (sda) ==== | ||
+ | |||
+ | De même que pour ''/ | ||
+ | |||
+ | ==== Intégrer le premier disque dur à la grappe ==== | ||
+ | |||
+ | Le temps est venu d' | ||
+ | |||
+ | ==== Mettre à jour le fichier mdadm.conf ==== | ||
+ | |||
+ | Une nouvelle fois, il faut scanner la configuration RAID pour mettre à jour le fichier ''/ | ||
+ | |||
+ | ==== Configuration de GRUB (deuxième partie) ==== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ==== Après le deuxième redémarrage ==== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ===== Test : simuler la panne d'un disque dur ===== | ||
+ | |||
+ | FIXME | ||
+ | ===== Liens ===== | ||
+ | |||
+ | * http:// | ||
+ | * https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // |