User Tools

Site Tools


informatique:linux:raid0_sous_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:linux:raid0_sous_linux [2011/11/23 08:28] – [LVM] pvs, vgs et lvs pteuinformatique:linux:raid0_sous_linux [2018/01/01 13:39] (current) – [Le RAID logiciel sous Linux] pteu
Line 1: Line 1:
-{{tag>RAID stripping}} +=======Le RAID logiciel sous Linux=======
- +
-======Le RAID logiciel sous Linux======+
  
 Le RAID est un mécanisme de gestion de unités de stockage, qui peut être matériel (via une carte dédiée) ou logiciel (géré par le système d'exploitation ou un driver). Il existe différents type de RAID (0, 1, 5, etc) qui déterminent chacun un mode de gestion. Je ne m'attarde pas là dessus, pour plus d'info, aller voir [[http://fr.wikipedia.org/wiki/RAID_(informatique)|wikipédia : le RAID]]. Le RAID est un mécanisme de gestion de unités de stockage, qui peut être matériel (via une carte dédiée) ou logiciel (géré par le système d'exploitation ou un driver). Il existe différents type de RAID (0, 1, 5, etc) qui déterminent chacun un mode de gestion. Je ne m'attarde pas là dessus, pour plus d'info, aller voir [[http://fr.wikipedia.org/wiki/RAID_(informatique)|wikipédia : le RAID]].
  
- +Avant de le mettre en place, se renseigner sur quel type de RAID est adapté à notre besoin (en terme de performance, redondance, consommation, etc...). On pourra s'inspirer de [[https://fr.wikipedia.org/wiki/RAID_%28informatique%29|Wikipédia]] et de [[http://wintelguy.com/raidmttdl.pl|RAID Reliability Calculator]] qui permet de calculer les probabilités de perte de donnée en fonction du type de RAID et des caractéristiques des disques choisis. 
-=====Installation de Debian avec RAID0=====+======Installation de Debian avec RAID0======
  
 Le but de cet article est de décrire la procédure que j'ai utilisée pour installer une Debian Lenny sur 2 disques dur en RAID0 logiciel avec Linux Software RAID. Mes motivations sont : Le but de cet article est de décrire la procédure que j'ai utilisée pour installer une Debian Lenny sur 2 disques dur en RAID0 logiciel avec Linux Software RAID. Mes motivations sont :
Line 43: Line 41:
  
  
-=====Création d'un RAID1=====+======Création d'un RAID1======
 //à la main// //à la main//
  
Line 119: Line 117:
 </code> </code>
  
-=====Divers=====+======Divers======
  
-====Monitorer son RAID====+=====Créer un volume RAID1 avec un seul disque===== 
 +Il s'agit ici de créer un RAID 1 avec un seul disque, donc un RAID en défaut (pas de réplication de données mais la machine fonctionne toujours). Cela permet par exemple de préparer une machine avec un seul disque en attendant la livraison du second.
  
 <code> <code>
-cat /proc/mdstat  +mdadm --create /dev/md0 --level=--raid-devices=2 /dev/sda1 missing
- Personalities : [raid0]  +
- md1 : active raid0 sda3[0] sdb3[1] +
-       1945696256 blocks 64k chunks +
-        +
- md0 : active raid0 sda2[0] sdb2[1+
-       5863552 blocks 64k chunks +
-        +
- unused devices: <none>+
 </code> </code>
  
-On peut avoir plus de détails avec : +-> On créer /dev/md0 en RAID1 en utilisant 2 partitions : /dev/sda1 et une qui manque en temps normal c'est plus utile d'utiliser une 2nde partition 
-<code> + 
-mdadm --detail /dev/md1 + 
-    /dev/md1: +======Création d'un raid5 + LVM====== 
-         Version : 00.90 + 
-   Creation Time : Sat Feb  7 12:49:57 2009 +=====Volume RAID 5===== 
-      Raid Level : raid0 + 
-      Array Size : 1945696256 (1855.56 GiB 1992.39 GB+Un raid0 avec de la redondance pour la sécurité des données ? C'est un **raid5** et c'est ce que je vais réaliser sur mon NAS (malgré qu'il ne soit doté que d'un processeur [[http://fr.wikipedia.org/wiki/Intel_Atom#Pineview|atom n550]], un processeur un peu léger pour du calcul de parité). 
-    Raid Devices : 2 + 
-   Total Devices +Première chose repérer les noms des disques 
- Preferred Minor 1 +<code bash> 
-     Persistence : Superblock is persistent +sudo fdisk -l | grep Disk 
-  +Disk /dev/sda64.GB, 64023257088 bytes 
-     Update Time : Tue Feb 10 20:31:42 2009 +Disk /dev/sdb2000.4 GB, 2000398934016 bytes 
-           State : clean +Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes 
-  Active Devices : 2 +Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
- Working Devices : 2 +
-  Failed Devices : 0 +
-   Spare Devices +
-  +
-      Chunk Size : 64K +
-   +
-            UUID : 9695e8d2:87d83bd5:e070d1d4:842cdf7e +
-          Events : 0.5 +
-   +
-     Number   Major   Minor   RaidDevice State +
-        0              3        0      active sync   /dev/sda3 +
-                    19        1      active sync   /dev/sdb3+
 </code> </code>
 +Dans mon cas je vais utiliser /dev/sdb, /dev/sdc et /dev/sdd pour mon RAID 5.
  
-====Créer un volume RAID1 avec un seul disque==== +Puis, créer des partitions de type "Raid auto detect" (**code : fd**) et de même taille sur tous les disques avec **fdisk** : (NB : l'exemple ci-dessous est réalisé avec un disque de 3 To mais le principe est le même) 
-Il s'agit ici de créer un RAID 1 avec un seul disque, donc un RAID en défaut (pas de réplication de données mais la machine fonctionne toujours). Cela permet par exemple de préparer une machine avec un seul disque en attendant la livraison du second.+ 
 +<code bash> 
 +sudo fdisk /dev/sdd 
 +Le périphérique ne contient pas une table de partitions DOS ou Sun, SGI, OSF valable 
 +Création d'une nouvelle étiquette DOS avec id de disque 0x7b3be7ec. 
 +Les modifications restent en mémoire jusqu'à ce que vous les écriviez. 
 +Après quoi, bien sûr, le contenu précédent sera irrécupérable.
  
-<code> +Avertissement : drapeau 0x0000 non valable dans la table de partitions 4, sera corrigé par w(écriture) 
-mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 missing+ 
 +Attention : la taille du disque est 3.0 To (3000592982016 octets). 
 +Ce format de table de partitions DOS ne peut pas être utilisé 
 +sur des disques pour des volumes plus grand (2199023255040 octets) et 
 +secteurs de 512 octets. Utiliser parted(1) et le format de table 
 +de partitions à GUID (GPT). 
 + 
 + 
 +Le périphérique dispose d'une taille de secteur logique plus 
 +petite que la taille de secteur physique. Ajuster la limite de 
 +taille à celle de secteur physique (ou optimale en terme d'E/S) 
 +est conseillé, sinon les performances risquent d'être affectées. 
 + 
 +Commande (m pour l'aide):
 +Partition type: 
 +     primary (0 primary, 0 extended, 4 free) 
 +     extended 
 +Select (default p): p 
 +Numéro de partition (1-4, par défaut 1): 
 +Utilisation de la valeur par défaut 1 
 +Premier secteur (2048-4294967295, par défaut 2048): 
 +Utilisation de la valeur par défaut 2048 
 +Dernier secteur, +secteurs or +taille{K,M,G} (2048-4294967294, par défaut 4294967294): 
 +Utilisation de la valeur par défaut 4294967294 
 + 
 +Commande (m pour l'aide):
 +Partition sélectionnée 1 
 +Code Hexa (taper L pour lister les codes): fd 
 +Type système de partition modifié de 1 à fd (RAID Linux autodétecté) 
 + 
 +Commande (m pour l'aide):
 +La table de partitions a été altérée ! 
 + 
 +Appel de ioctl() pour relire la table de partitions. 
 +Synchronisation des disques.
 </code> </code>
  
--On créer /dev/md0 en RAID1 en utilisant 2 partitions : /dev/sda1 et une qui manque en temps normal c'est plus utile d'utiliser une 2nde partition+Créez le RAID : 
 +<code bash> 
 +mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 --assume-clean /dev/sd[bcd]1 
 +</code>
  
 +Si vous obtenez l'erreur suivante :
 +<code bash>
 +mdadm: layout defaults to left-symmetric
 +mdadm: layout defaults to left-symmetric
 +mdadm: chunk size defaults to 512K
 +mdadm: cannot open /dev/sdc1: No such file or directory
 +</code>
 +... recréez les partition avec **cfdisk** plutôt que fdisk !
  
-=====Création d'un raid5 + LVM=====+Après avoir créés les partitions j'obtiens une erreur ! 
 +<code bash> 
 +mdadm --create --verbose /dev/md0 --level 5 --assume-clean --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 
 +mdadm: layout defaults to left-symmetric 
 +mdadm: layout defaults to left-symmetric 
 +mdadm: chunk size defaults to 512K 
 +mdadm: super1.x cannot open /dev/sdc1: Device or resource busy 
 +mdadm: /dev/sdc1 is not suitable for this array. 
 +mdadm: super1.x cannot open /dev/sdd1: Device or resource busy 
 +mdadm: /dev/sdd1 is not suitable for this array. 
 +mdadm: create aborted 
 +</code>
  
-====Volume RAID 5====+D'après http://www.righteoushack.net/?p=197 il pourrait s'agir d'un reliquat de bug lié aux drivers d'un fake-raid (configuré dans le BIOS) ; je teste : 
 +<code bash> 
 +sudo aptitude remove dmraid 
 +</code> 
 + 
 +... mais toujours le même problème :(
  
-Un raid0 avec de la redondance pour la sécurité des données ? C'est un raid5 et c'est ce que je vais tenté ("tenter" car c'est un raid software avec un processeur [[http://fr.wikipedia.org/wiki/Intel_Atom#Pineview|atom n550]], et c'est un processeur un peu léger pour du calcul de parité).+N'ayant rien à perdre je décide de passer la prise en charge des disques SATA dans le BIOS en "AHCI" plutôt que "IDE enhancedcomme auparavant. Normalement les disques SATA doivent toujours être configurés en AHCI car cela permet la prise en charge du NCQ et autres, mais il me semble que lorsqu'on créer un RAID software cela est générateur de problèmeMais au point où j'en suis..
  
 +Au reboot, les disques ont été renumérotés :
 <code bash> <code bash>
-#création du raid 5 avec 3 partitions : /dev/sda1 /dev/sdc1 /dev/sdd1+sudo fdisk -l | grep Disk 
 +Disk /dev/sda: 2000.4 GB, 2000398934016 bytes 
 +Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes 
 +Disk /dev/sdc: 64.0 GB, 64023257088 bytes 
 +Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes 
 +</code> 
 + 
 +<code bash> 
 +Création du raid 5 avec 3 partitions : /dev/sda1 /dev/sdb1 /dev/sdd1
 # --assume-clean permet d'éviter le calcul de parité à la création # --assume-clean permet d'éviter le calcul de parité à la création
-mdadm --create --verbose /dev/md0 --level=raid5 --raid-devices=3 --assume-clean /dev/sd[abd]1+mdadm --create --verbose /dev/md0 --level 5 --assume-clean --raid-devices=3 /dev/sd[abd]1 
 +mdadm: layout defaults to left-symmetric 
 +mdadm: layout defaults to left-symmetric 
 +mdadm: chunk size defaults to 512K 
 +mdadm: /dev/sdb1 appears to be part of a raid array: 
 +    level=raid5 devices=3 ctime=Thu Sep  6 23:40:51 2012 
 +mdadm: size set to 1953381888K 
 +Continue creating array? y 
 +mdadm: Defaulting to version 1.2 metadata 
 +mdadm: array /dev/md0 started.
 </code> </code>
 +
 +Rofl ! It works !
  
 Il faut attendre un peu le temps de la construction du raid, puis on vérifie : Il faut attendre un peu le temps de la construction du raid, puis on vérifie :
 <code bash> <code bash>
-mdadm --detail /dev/md0 + sudo mdadm --detail /dev/md0 
- /dev/md0:+/dev/md0:
         Version : 1.2         Version : 1.2
-  Creation Time : Tue Feb 15 18:58:18 2011+  Creation Time : Wed Sep 12 21:35:52 2012
      Raid Level : raid5      Raid Level : raid5
-     Array Size : 3907020800 (3726.03 GiB 4000.79 GB) +     Array Size : 3906763776 (3725.78 GiB 4000.53 GB) 
-  Used Dev Size : 1953510400 (1863.01 GiB 2000.39 GB)+  Used Dev Size : 1953381888 (1862.89 GiB 2000.26 GB)
    Raid Devices : 3    Raid Devices : 3
   Total Devices : 3   Total Devices : 3
     Persistence : Superblock is persistent     Persistence : Superblock is persistent
  
-    Update Time : Wed Feb 16 12:32:05 2011+    Update Time : Thu Sep 13 18:00:13 2012
           State : clean           State : clean
  Active Devices : 3  Active Devices : 3
Line 211: Line 278:
  
            Name : ymir2: (local to host ymir2)            Name : ymir2: (local to host ymir2)
-           UUID : 9c8c8486:625dbdfd:98aa755c:b4266366+           UUID : 5766333b:7721932e:a40ebe2e:0c6fe1d0
          Events : 2          Events : 2
  
Line 222: Line 289:
 # ou : # ou :
 cat /proc/mdstat cat /proc/mdstat
- md0 : active raid5 sdd1[2] sdb1[1] sda1[0] +Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
-      3907020800 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]+md0 : active raid5 sdd1[2] sdb1[1] sda1[0] 
 +      3906763776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
  
- unused devices: <none>+unused devices: <none>
 </code> </code>
- 
  
 ---- ----
- 
  
 Dans le première commande on pourrait tilter sur la ligne : Dans le première commande on pourrait tilter sur la ligne :
Line 236: Line 302:
      Array Size : 3907020800 (3726.03 GiB 4000.79 GB)      Array Size : 3907020800 (3726.03 GiB 4000.79 GB)
 </code> </code>
 +
 3726.03 GiB alors que je devrait avoir 4 To ? WTF !! 3726.03 GiB alors que je devrait avoir 4 To ? WTF !!
  
-Juste un rappel pour vérifier tout ça :+====Rappel sur les unités==== 
   * 8 bits = 1 octet (byte en anglais : un octet et one byte c'est pareil !). Les abréviations respectives sont b (bit), o (octet) et B (byte).   * 8 bits = 1 octet (byte en anglais : un octet et one byte c'est pareil !). Les abréviations respectives sont b (bit), o (octet) et B (byte).
   * 1 kB = 1 ko = 1000 octets (bytes). Dans la même logique, 1 MB vaut 1000 kB, 1 GB vaut 1000 MB, etc... : **ce sont des puissances de 10** : 1000 c'est 10^3.   * 1 kB = 1 ko = 1000 octets (bytes). Dans la même logique, 1 MB vaut 1000 kB, 1 GB vaut 1000 MB, etc... : **ce sont des puissances de 10** : 1000 c'est 10^3.
Line 282: Line 350:
  
  
-Une fois le raid construit, si tout va bien, il faudra le monter automatiquement au démarrage la prochaine fois :+Une fois le raid construit, si tout va bien, il faudra le monter automatiquement au démarrage la prochaine fois ; commenter la ligne "ARRAY xxx" dans le fichier ''/etc/mdadm/mdadm.conf'' et ajouter le résultat de la commande :
 <code bash> <code bash>
-echo "DEVICE partitions" >> /etc/mdadm/mdadm.conf 
 mdadm --detail --scan >> /etc/mdadm/mdadm.conf mdadm --detail --scan >> /etc/mdadm/mdadm.conf
 +
 +# PI le résultat de la commande :
 +ARRAY /dev/md0 metadata=1.2 name=ymir2:0 UUID=5766333b:7721932e:a40ebe2e:0c6fe1d0
 </code> </code>
  
-====Raid en vrac au reboot====+=====Raid en vrac au reboot=====
  
 Sous Ubuntu 10.10 cette fois j'ai rencontré un problème lors du reboot car il me montait /dev/md avec 2 disques et /dev/md_d0 avec le dernier. Hideux. Même en retouchant le mdadm.conf celà n'a rien changé. Je suis alors tombé sur [[http://ubuntuforums.org/showpost.php?p=7424082&postcount=11|ce post sur ubuntuforums]] qui décrit cette procédure qui a résolu mon problème :  Sous Ubuntu 10.10 cette fois j'ai rencontré un problème lors du reboot car il me montait /dev/md avec 2 disques et /dev/md_d0 avec le dernier. Hideux. Même en retouchant le mdadm.conf celà n'a rien changé. Je suis alors tombé sur [[http://ubuntuforums.org/showpost.php?p=7424082&postcount=11|ce post sur ubuntuforums]] qui décrit cette procédure qui a résolu mon problème : 
Line 310: Line 380:
 Au redémarrage le volume RAID est monté correctement \o/. Au redémarrage le volume RAID est monté correctement \o/.
  
-====LVM====+====D'autres pistes==== 
 + 
 +<code bash> 
 +cat /proc/mdstat 
 +Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
 +md126 : inactive sdc[1] 
 +      1953514496 blocks 
 + 
 +md127 : active (auto-read-only) raid5 sdd[2] sdb[0] 
 +      3907028992 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U] 
 + 
 +unused devices: <none> 
 +</code> 
 + 
 +<code bash> 
 +mdadm --examine /dev/sdb1 
 +/dev/sdb1: 
 +          Magic : a92b4efc 
 +        Version : 0.90.00 
 +           UUID : cc5892bf:a52da5c0:2ddc0efe:cce42a60 (local to host ymir2) 
 +  Creation Time : Fri Aug 19 18:22:07 2011 
 +     Raid Level : raid5 
 +  Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB) 
 +     Array Size : 3907023872 (3726.03 GiB 4000.79 GB) 
 +   Raid Devices : 3 
 +  Total Devices : 3 
 +Preferred Minor : 0 
 + 
 +    Update Time : Thu Nov 17 19:32:24 2011 
 +          State : clean 
 + Active Devices : 3 
 +Working Devices : 3 
 + Failed Devices : 0 
 +  Spare Devices : 0 
 +       Checksum : 26f6dd32 - correct 
 +         Events : 39 
 + 
 +         Layout : left-symmetric 
 +     Chunk Size : 64K 
 + 
 +      Number   Major   Minor   RaidDevice State 
 +this                 17        0      active sync   /dev/sdb1 
 + 
 +                   17        0      active sync   /dev/sdb1 
 +                   33        1      active sync   /dev/sdc1 
 +                   49        2      active sync   /dev/sdd1 
 + 
 +mdadm --examine /dev/sdc1 
 +/dev/sdc1: 
 +          Magic : a92b4efc 
 +        Version : 0.90.00 
 +           UUID : cc5892bf:a52da5c0:2ddc0efe:cce42a60 (local to host ymir2) 
 +  Creation Time : Fri Aug 19 18:22:07 2011 
 +     Raid Level : raid5 
 +  Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB) 
 +     Array Size : 3907023872 (3726.03 GiB 4000.79 GB) 
 +   Raid Devices : 3 
 +  Total Devices : 3 
 +Preferred Minor : 0 
 + 
 +    Update Time : Thu Nov 17 19:32:24 2011 
 +          State : clean 
 + Active Devices : 3 
 +Working Devices : 3 
 + Failed Devices : 0 
 +  Spare Devices : 0 
 +       Checksum : 26f6dd44 - correct 
 +         Events : 39 
 + 
 +         Layout : left-symmetric 
 +     Chunk Size : 64K 
 + 
 +      Number   Major   Minor   RaidDevice State 
 +this                 33        1      active sync   /dev/sdc1 
 + 
 +                   17        0      active sync   /dev/sdb1 
 +                   33        1      active sync   /dev/sdc1 
 +                   49        2      active sync   /dev/sdd1 
 + 
 +mdadm --examine /dev/sdd1 
 +/dev/sdd1: 
 +          Magic : a92b4efc 
 +        Version : 0.90.00 
 +           UUID : cc5892bf:a52da5c0:2ddc0efe:cce42a60 (local to host ymir2) 
 +  Creation Time : Fri Aug 19 18:22:07 2011 
 +     Raid Level : raid5 
 +  Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB) 
 +     Array Size : 3907023872 (3726.03 GiB 4000.79 GB) 
 +   Raid Devices : 3 
 +  Total Devices : 3 
 +Preferred Minor : 0 
 + 
 +    Update Time : Thu Nov 17 19:32:24 2011 
 +          State : clean 
 + Active Devices : 3 
 +Working Devices : 3 
 + Failed Devices : 0 
 +  Spare Devices : 0 
 +       Checksum : 26f6dd56 - correct 
 +         Events : 39 
 + 
 +         Layout : left-symmetric 
 +     Chunk Size : 64K 
 + 
 +      Number   Major   Minor   RaidDevice State 
 +this                 49        2      active sync   /dev/sdd1 
 + 
 +                   17        0      active sync   /dev/sdb1 
 +                   33        1      active sync   /dev/sdc1 
 +                   49        2      active sync   /dev/sdd1 
 +</code> 
 + 
 +<code bash> 
 +egrep -v "^$|^#" /etc/mdadm/mdadm.conf 
 +DEVICE partitions 
 +CREATE owner=root group=disk mode=0660 auto=yes 
 +HOMEHOST <system> 
 +MAILADDR root 
 +ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=cc5892bf:a52da5c0:2ddc0efe:cce42a60 
 +   devices=/dev/sdb1,/dev/sdc1,/dev/sdd1 
 +</code> 
 + 
 +<code bash> 
 +mdadm --detail --scan 
 +ARRAY /dev/md/0_0 metadata=0.90 UUID=c50da923:2bb088ef:2ddc0efe:cce42a60 
 +ARRAY /dev/md/0_1 metadata=0.90 UUID=cb278753:2d171315:2ddc0efe:cce42a60 
 +</code> 
 + 
 +<code bash> 
 +mdadm --stop /dev/md126 
 + mdadm: stopped /dev/md126 
 +mdadm --stop /dev/md127 
 + mdadm: stopped /dev/md127 
 +mdadm --assemble /dev/md0 
 + mdadm: /dev/md0 has been started with 3 drives. 
 +</code> 
 + 
 +<code bash> 
 +mdadm --detail --scan 
 +ARRAY /dev/md0 metadata=0.90 UUID=cc5892bf:a52da5c0:2ddc0efe:cce42a60 
 +</code> 
 + 
 +<code bash> 
 +cat /proc/mdstat 
 +Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
 +md0 : active raid5 sdb1[0] sdd1[2] sdc1[1] 
 +      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 
 + 
 +unused devices: <none> 
 +</code> 
 + 
 + 
 +=====LVM=====
  
 Création du bousin LVM : déclaration dans l'ordre : Création du bousin LVM : déclaration dans l'ordre :
Line 354: Line 576:
   swap_1  ymir2  -wi-ao  2,47g   swap_1  ymir2  -wi-ao  2,47g
 </code> </code>
-=====Management du raid=====+ 
 +======Management du raid=====
 + 
 +=====Monitorer son RAID===== 
 + 
 +<note warning> 
 +Attention les commandes qui vont suivre ne proviennent pas toutes du même RAID ! 
 +</note> 
 + 
 +<code> 
 +cat /proc/mdstat  
 + Personalities : [raid0]  
 + md1 : active raid0 sda3[0] sdb3[1] 
 +       1945696256 blocks 64k chunks 
 +        
 + md0 : active raid0 sda2[0] sdb2[1] 
 +       5863552 blocks 64k chunks 
 +        
 + unused devices: <none> 
 +</code> 
 + 
 +On peut avoir plus de détails avec : 
 +<code> 
 +mdadm --detail /dev/md1 
 +    /dev/md1: 
 +         Version : 00.90 
 +   Creation Time : Sat Feb  7 12:49:57 2009 
 +      Raid Level : raid0 
 +      Array Size : 1945696256 (1855.56 GiB 1992.39 GB) 
 +    Raid Devices : 2 
 +   Total Devices : 2 
 + Preferred Minor : 1 
 +     Persistence : Superblock is persistent 
 +  
 +     Update Time : Tue Feb 10 20:31:42 2009 
 +           State : clean 
 +  Active Devices : 2 
 + Working Devices : 2 
 +  Failed Devices : 0 
 +   Spare Devices : 0 
 +  
 +      Chunk Size : 64K 
 +   
 +            UUID : 9695e8d2:87d83bd5:e070d1d4:842cdf7e 
 +          Events : 0.5 
 +   
 +     Number   Major   Minor   RaidDevice State 
 +        0              3        0      active sync   /dev/sda3 
 +        1             19        1      active sync   /dev/sdb3 
 +</code>
  
 Arrêter/Supprimer le raid : Arrêter/Supprimer le raid :
Line 379: Line 650:
  
  
-=====Management de LVM=====+======Augmenter un RAID + LVM======
  
-====Augmenter un lv====+Récemment j'ai ajouté un disque de 2 To à mon RAID 5 de 3x 2 To déjà en place. Voici la procédure que j'ai employée, elle se découpe en 2 étapes : 
 +  * augmenter le RAID 
 +  * augmenter le LV
  
-Synopsis : On a un lv ''/dev/md0_vg/data_lv'' de 2 To et on veut le monter à 4 To (soit la taille de son vg).+=====Augmenter le RAID=====
  
-Démonter le volume logique (NB : cette étape n'est pas obligatoire avec le système de fichier que j'utilise (ext4), mais vu que mon serveur n'est pas en prod ça ne me coûte pas plus cher) :+Bien sur ce nouveau disque disque a la même taille que les disques déjà inclus dans le RAID. Je créé une partition de type "fd" (Linux RAID auto) de taille max avec fdisk (en somme, exactement pareil que les autres disques) : 
 + 
 +<code bash> 
 +Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes 
 +81 têtes, 63 secteurs/piste, 765633 cylindres, total 3907029168 secteurs 
 +Unités = secteurs de 1 * 512 = 512 octets 
 +Taille de secteur (logique / physique) : 512 octets / 512 octets 
 +taille d'E/S (minimale / optimale) : 512 octets / 512 octets 
 +Identifiant de disque : 0x720b8114 
 + 
 +Périphérique Amorce  Début        Fin      Blocs     Id  Système 
 +/dev/sdc1            2048  3907029167  1953513560   fd  RAID Linux autodétecté 
 +</code> 
 + 
 +Puis on ajoute le disque à la grappe : 
 +<code bash> 
 +mdadm /dev/md0 -a /dev/sdc1 
 +</code> 
 + 
 +Et enfin on augmente le nombre de disque à notre RAID. **Attention** cette étape va automatiquement lancer la resynchronisation du RAID, qui prend beaucoup de temps et ne supporte pas d'arrêt ou de redémarrage électrique (sous peine de perdre vos données). 
 +<code bash> 
 +mdadm --grow /dev/md0 --raid-device=4 
 +mdadm: Need to backup 3072K of critical section.. 
 +</code> 
 + 
 +<note important> 
 +Ne faites pas comme moi qui ai lancé cette commande à peine 3h avant une coupure électrique programmée... D'ailleurs à ce propos (et pour info), en fait on peut arrêter la machine (et donc la synchro) passé un certain temps, le mdadm doit juste passer la section critique (!). Moi les 3h ont suffit, et en rallumant le bousin le lendemain le gentil RAID a poursuivi sa synchronisation comme si de rien n'était ! 
 +</note> 
 + 
 +Vérification de l'état d'avancement : 
 +<code bash> 
 +cat /proc/mdstat 
 +Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
 +md0 : active raid5 sdc1[3] sdd1[2] sdb1[1] sda1[0] 
 +      3906763776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] 
 +      [>....................]  reshape =  0.1% (3267072/1953381888) finish=1624.4min speed=20007K/sec 
 +</code> 
 + 
 +Une fois la synchro terminée (soit environ <del>28</del> 2 jours plus tard...) mdadm affiche enfin une taille digne de son rang : 6 To ! 
 +<code bash> 
 +mdadm --detail /dev/md0 
 + 
 +/dev/md0: 
 +        Version : 1.2 
 +  Creation Time : Wed Sep 12 21:35:52 2012 
 +     Raid Level : raid5 
 +     Array Size : 5860145664 (5588.67 GiB 6000.79 GB) 
 +  Used Dev Size : 1953381888 (1862.89 GiB 2000.26 GB) 
 +   Raid Devices : 4 
 +  Total Devices : 4 
 +    Persistence : Superblock is persistent 
 + 
 +    Update Time : Tue Feb 19 06:03:31 2013 
 +          State : clean 
 + Active Devices : 4 
 +Working Devices : 4 
 + Failed Devices : 0 
 +  Spare Devices : 0 
 + 
 +         Layout : left-symmetric 
 +     Chunk Size : 512K 
 + 
 +           Name : ymir2: (local to host ymir2) 
 +           UUID : 5766333b:7721932e:a40ebe2e:0c6fe1d0 
 +         Events : 14151 
 + 
 +    Number   Major   Minor   RaidDevice State 
 +                    1        0      active sync   /dev/sda1 
 +                   17        1      active sync   /dev/sdb1 
 +                   49        2      active sync   /dev/sdd1 
 +                   33        3      active sync   /dev/sdc1 
 +</code> 
 + 
 +C'est déjà bien mais c'est pô fini ; il faut maintenant le dire à LVM ! 
 + 
 +=====Prise en compte par LVM===== 
 + 
 +1) Première chose : Démonter le volume logique (NB : cette étape n'est pas obligatoire avec le système de fichier que j'utilise (ext4), mais vu que mon serveur n'est pas en prod ça ne me coûte pas plus cher) :
 <code bash> <code bash>
 umount /dev/md0_vg/data_lv umount /dev/md0_vg/data_lv
 </code> </code>
  
-Augmenter la taille du lv ; attention sa taille ne doit pas dépasser la taille de son volume group (vg), ni être inférieur sa taille actuelle (sinon on perd des données). Pour le vérifier :+2) Augmenter la taille du pv :
 <code bash> <code bash>
-# on regarde a quel vg le lv appartient -> md0_vg +pvresize /dev/md0 
-lvdisplay /dev/md0_vg/data_lv +  Physical volume "/dev/md0" changed 
-  --- Logical volume --- +  1 physical volume(s) resized / 0 physical volume(s) not resized
-  LV Name                /dev/md0_vg/data_lv +
-  VG Name                md0_vg +
-  LV UUID                WSTrwM-JLAG-Bu9R-GsHw-XVsT-Dpbo-Zm5imT +
-  LV Write Access        read/write +
-  LV Status              available +
-  # open                 0 +
-  LV Size                2,00 TiB +
-  Current LE             524288 +
-  Segments               1 +
-  Allocation             inherit +
-  Read ahead sectors     auto +
-  - currently set to     4096 +
-  Block device           253:2+
  
-on affiche les caractéristique du vg +vérif : c'est mieux ! 
-vgdisplay md0_vg+pvdisplay 
 +  --- Physical volume --- 
 +  PV Name               /dev/md0 
 +  VG Name               md0_vg 
 +  PV Size               5,46 TiB / not usable 1,50 MiB 
 +  Allocatable           yes (but full) 
 +  PE Size               4,00 MiB 
 +  Total PE              1430699 
 +  Free PE               0 
 +  Allocated PE          1430699 
 +  PV UUID               Cy7Zxe-Src9-5hQi-QQ0W-waMI-yv3V-mECzi8 
 +   
 +# le vg en tient compte immédiatement : 
 +vgdisplay
   --- Volume group ---   --- Volume group ---
   VG Name               md0_vg   VG Name               md0_vg
Line 416: Line 766:
   Format                lvm2   Format                lvm2
   Metadata Areas        1   Metadata Areas        1
-  Metadata Sequence No  2+  Metadata Sequence No  5
   VG Access             read/write   VG Access             read/write
   VG Status             resizable   VG Status             resizable
Line 425: Line 775:
   Cur PV                1   Cur PV                1
   Act PV                1   Act PV                1
-  VG Size               3,64 TiB+  VG Size               5,46 TiB
   PE Size               4,00 MiB   PE Size               4,00 MiB
-  Total PE              953862 +  Total PE              1430699 
-  Alloc PE / Size       524288 2,00 TiB +  Alloc PE / Size       1430699 5,46 TiB 
-  Free  PE / Size       429574 1,64 TiB +  Free  PE / Size       0 
-  VG UUID               1g20v1-7HKi-CWtx-D8IP-GS9P-rTfB-nL9WHr+  VG UUID               AEKER3-SOwc-zwSQ-rR4J-iJw0-IxlI-qP2hd6
 </code> </code>
-On a bien 3.64TiB au total soit 4 To. 
  
-On pourrait déclarer une nouvelle taille de 3.64 TiB (''-L 3.64T''), ou ajouter 1.64 To (''-L +1.64T''- pour toutes les options existantesconsulter le ''man lvresize''mais on veut la taille totale du vg donc on va être précis et utiliser l'option ''-l +100%FREE'' qui indique qu'on ajoute toute la place libre restante du vg :+3) Augmenter la taille du lv ; attention sa taille ne doit pas dépasser la taille de son volume group (vg), ni être inférieur sa taille actuelle (sinon on perd des données). 
 + 
 +On pourrait déclarer une nouvelle taille de 5,46 TiB (''-L 3.64T''), ou même ajouter 1.64 To (''-L +1.64T''), mais on veut la taille totale du vg donc on va être précis et utiliser l'option ''-l +100%FREE'' qui indique qu'on ajoute toute la place libre restante du vg :
 <code bash> <code bash>
 lvresize -l +100%FREE /dev/md0_vg/data_lv lvresize -l +100%FREE /dev/md0_vg/data_lv
-  Extending logical volume data_lv to 3,64 TiB+  Extending logical volume data_lv to 5,46 TiB
   Logical volume data_lv successfully resized   Logical volume data_lv successfully resized
 </code> </code>
  
-On doit ensuite vérifier l'intégrité du volume logique : +4) On doit ensuite vérifier l'intégrité du volume logique : 
-<code bash> +<code bash>e2fsck -f /dev/md0_vg/data_lv 
-e2fsck -f /dev/md0_vg/data_lv + e2fsck 1.42 (29-Nov-2011)
- e2fsck 1.41.12 (17-May-2010)+
  Passe 1 : vérification des i-noeuds, des blocs et des tailles  Passe 1 : vérification des i-noeuds, des blocs et des tailles
  Passe 2 : vérification de la structure des répertoires  Passe 2 : vérification de la structure des répertoires
Line 450: Line 800:
  Passe 4 : vérification des compteurs de référence  Passe 4 : vérification des compteurs de référence
  Passe 5 : vérification de l'information du sommaire de groupe  Passe 5 : vérification de l'information du sommaire de groupe
- /dev/md0_vg/data_lv 11/201326592 fichiers (0.0% non contigus), 12687388/805306368 blocs+ /dev/md0_vg/data_lv 287397/244178944 fichiers (1.0% non contigüs), 950095488/976689152 blocs
 </code> </code>
  
Line 456: Line 806:
 <code bash> <code bash>
 resize2fs /dev/md0_vg/data_lv resize2fs /dev/md0_vg/data_lv
- resize2fs 1.41.12 (17-May-2010+ resize2fs 1.42 (29-Nov-2011
- En train de retailler le système de fichiers sur /dev/md0_vg/data_lv à 976754688 (4k) blocs. + En train de redimensionner le système de fichiers sur /dev/md0_vg/data_lv à 1465035776 (4k) blocs. 
- Le système de fichiers /dev/md0_vg/data_lv a maintenant une taille de 976754688 blocs.+ Le système de fichiers /dev/md0_vg/data_lv a maintenant une taille de 1465035776 blocs.
 </code> </code>
  
-et on remonte le lv :+... et on remonte le lv :
 <code bash> <code bash>
 mount /dev/md0_vg/data_lv mount /dev/md0_vg/data_lv
  
-df -Th /mnt/data +df -hT /mnt/data 
- Sys. fich.    Type  Taille  Uti. Disp. Uti% Monté sur +Sys. de fichiers           Type Taille Utilisé Dispo Uti% Monté sur 
- /dev/mapper/md0_vg-data_lv +/dev/mapper/md0_vg-data_lv ext4   5,4T    3,5T  1,9T  65% /mnt/data
-             ext4    3,6T  196M  3,6T   1% /mnt/data+
 </code> </code>
-=====Tests et banchmarks===== 
  
-Je vais comparer ici mon ex raid0 avec le nouveau raid5 que je viens de créer. Attention il y a beaucoup de paramètres qui changent donc ces tests ne sont pas très "scientiques", mais ils donnent un ordre d'idée.+Okaaaay ! 
 + 
 +======Tests et benchmarks====== 
 + 
 +Je vais comparer ici mon ex raid0 avec mon précédent raid5 (sic). Attention il y a beaucoup de paramètres qui changent donc ces tests ne sont pas très "scientifiques", mais ils donnent un ordre d'idée.
  
 Le raid0 est sur le serveur ymir : Le raid0 est sur le serveur ymir :
Line 485: Line 837:
  
  
-====Test en écriture====+=====Test en écriture=====
  
-===A l'ancienne avec dd===+====A l'ancienne avec dd====
  
 J'utilise ici la commande ''dd'' pour créer un ficher de 1 Go et le remplir de 0. J'utilise ici la commande ''dd'' pour créer un ficher de 1 Go et le remplir de 0.
Line 517: Line 869:
 De ces valeurs on peut retenir une chose : l'écriture sur un raid5 nécessite un lourd calcul de parité qui surcharge clairement le processeur (atom n550 pour ceux qui ne suivent pas :)). Mais ça reste jouable vu qu'il a 2 cores + l'[[http://fr.wikipedia.org/wiki/Hyper_threading|hyper threading]] (ça laisse de la place pour les autres processus). De ces valeurs on peut retenir une chose : l'écriture sur un raid5 nécessite un lourd calcul de parité qui surcharge clairement le processeur (atom n550 pour ceux qui ne suivent pas :)). Mais ça reste jouable vu qu'il a 2 cores + l'[[http://fr.wikipedia.org/wiki/Hyper_threading|hyper threading]] (ça laisse de la place pour les autres processus).
  
-====Test en lecture====+=====Test en lecture=====
  
-===Avec hdparm===+====Avec hdparm====
 sur ymir2 : sur ymir2 :
 <code bash> <code bash>
Line 543: Line 895:
 </code> </code>
  
-===Avec dd===+====Avec dd====
  
 On réutilise le fichier précédemment créé et on le lis dans le vent (/dev/null) : On réutilise le fichier précédemment créé et on le lis dans le vent (/dev/null) :
Line 586: Line 938:
  
  
-=====Test avec bonnie++=====+======Test avec bonnie++======
  
 bonnie++ est un logiciel tierce qui mesure les performances d'un disque. bonnie++ est un logiciel tierce qui mesure les performances d'un disque.
  
-=====Liens=====+ 
 +======Suppression totale d'un volume RAID====== 
 + 
 +Parce que mdadm est coriace, et que la procédure de suppression d'un RAID pour récupérer les disques n'est pas si anodine que cela, voici une petite check-list : 
 + 
 +Supprimer les metadata avec dmraid 
 +<code bash> 
 +sudo dmraid -r -E /dev/sdb 
 +no raid disks and with names: "/dev/sdb" 
 + 
 +sudo dmraid -r -E /dev/sdc 
 +Do you really want to erase "ddf1" ondisk metadata on /dev/sdc ? [y/n] :y 
 +ERROR: ddf1: seeking device "/dev/sdc" to 1024204253954048 
 +ERROR: writing metadata to /dev/sdc, offset 2000398933504 sectors, size 0 bytes returned 0 
 +ERROR: erasing ondisk metadata on /dev/sdc 
 + 
 +sudo dmraid -r -E /dev/sdd 
 +Do you really want to erase "ddf1" ondisk metadata on /dev/sdd ? [y/n] :y 
 +ERROR: ddf1: seeking device "/dev/sdd" to 1024204253954048 
 +ERROR: writing metadata to /dev/sdd, offset 2000398933504 sectors, size 0 bytes returned 0 
 +ERROR: erasing ondisk metadata on /dev/sdd 
 +</code> 
 + 
 +Si ça ne marche pas on observe encore : 
 +<code bash> 
 +cat /proc/mdstat 
 +Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
 +md0 : inactive sdd[0](S) sdb[2](S) 
 +      3907028992 blocks 
 +unused devices: <none> 
 +</code> 
 + 
 +<code bash> 
 +umount /dev/md0 
 +mdadm --manage /dev/md0 --stop 
 +mdadm --manage /dev/md0 --remove 
 +rm /etc/mdadm/mdadm.conf 
 +</code> 
 + 
 +Suppression de la partition "raid" de chaque disque 
 +<code bash> 
 +sudo fdisk /dev/sdb 
 +
 +
 +
 +</code> 
 + 
 +On efface les superblocks : 
 +<code bash> 
 +sudo mdadm --zero-superblock /dev/sdb 
 +sudo mdadm --zero-superblock /dev/sdb1 
 +mdadm: Couldn't open /dev/sdb1 for write - not zeroing 
 +</code> 
 + 
 +Cela évite de se retrouver bloquer au boot par le prompt busybox ! 
 + 
 +Dans mon cas au reboot un nouveau volume raid est apparu tout seul : "md127". Il y a une procédure avec Ubuntu pour l'éradiquer (source : http://ubuntuforums.org/showthread.php?t=1764861%29: ) : 
 +<code bash> 
 +sudo update-initramfs -u 
 +sudo reboot 
 +</code> 
 + 
 + 
 +======Liens======
  
   * [[http://doc.ubuntu-fr.org/tutoriel/comment_installer_ubuntu_sur_raid0_logiciel|Comment installer ubuntu sur RAID 0]]   * [[http://doc.ubuntu-fr.org/tutoriel/comment_installer_ubuntu_sur_raid0_logiciel|Comment installer ubuntu sur RAID 0]]
informatique/linux/raid0_sous_linux.1322036924.txt.gz · Last modified: 2013/10/14 20:54 (external edit)