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 [2013/10/14 20:44] – modification externe 127.0.0.1informatique: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======
  
-====Créer un volume RAID1 avec un seul disque====+=====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. 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.
  
Line 131: Line 129:
  
  
-=====Création d'un raid5 + LVM=====+======Création d'un raid5 + LVM======
  
-====Volume RAID 5====+=====Volume RAID 5=====
  
-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é).+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é).
  
 Première chose : repérer les noms des disques : Première chose : repérer les noms des disques :
Line 147: Line 145:
 Dans mon cas je vais utiliser /dev/sdb, /dev/sdc et /dev/sdd pour mon RAID 5. Dans mon cas je vais utiliser /dev/sdb, /dev/sdc et /dev/sdd pour mon RAID 5.
  
-Puis, créer des partitions de type "Raid auto detect" (code : FD) et de même taille sur tous les disques. Je vous conseille d'utiliser cfdisk plutôt que fdisk car dans mon casj'obtenais ce message d'erreur en créant mon volume RAID (pourtant les modifications étaient bien écritent (w) sur les disques:+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) 
 + 
 +<code bash> 
 +sudo fdisk /dev/sdd 
 +Le périphérique ne contient pas une table de partitions DOS ou SunSGI, 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. 
 + 
 +Avertissement : drapeau 0x0000 non valable dans la table de partitions 4, sera corrigé par w(écriture) 
 + 
 +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): w 
 +La table de partitions a été altérée ! 
 + 
 +Appel de ioctl(pour relire la table de partitions. 
 +Synchronisation des disques
 +</code> 
 + 
 +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> <code bash>
-mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 --assume-clean /dev/sd[bdd]1 
 mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric
 mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric
Line 155: Line 204:
 mdadm: cannot open /dev/sdc1: No such file or directory mdadm: cannot open /dev/sdc1: No such file or directory
 </code> </code>
 +... recréez les partition avec **cfdisk** plutôt que fdisk !
  
-Après les avoir créés avec cfdisk, j'obtient encore une erreur !+Après avoir créés les partitions j'obtiens une erreur !
 <code bash> <code bash>
 mdadm --create --verbose /dev/md0 --level 5 --assume-clean --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 mdadm --create --verbose /dev/md0 --level 5 --assume-clean --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
Line 176: Line 226:
 ... mais toujours le même problème :( ... mais toujours le même problème :(
  
-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 enhanced" comme auparavent. 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ème. Mais au point où j'en suis..+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 enhanced" comme 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ème. Mais au point où j'en suis..
  
 Au reboot, les disques ont été renumérotés : Au reboot, les disques ont été renumérotés :
Line 252: 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 306: Line 358:
 </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 328: Line 380:
 Au redémarrage le volume RAID est monté correctement \o/. Au redémarrage le volume RAID est monté correctement \o/.
  
-===D'autres pistes :===+====D'autres pistes====
  
 <code bash> <code bash>
Line 480: Line 532:
  
  
-====LVM====+=====LVM=====
  
 Création du bousin LVM : déclaration dans l'ordre : Création du bousin LVM : déclaration dans l'ordre :
Line 525: Line 577:
 </code> </code>
  
-=====Management du raid=====+======Management du raid======
  
-====Monitorer son RAID====+=====Monitorer son RAID=====
  
 <note warning> <note warning>
Line 598: Line 650:
  
  
-=====Augmenter un RAID + LVM=====+======Augmenter un RAID + LVM======
  
 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 : 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 :
Line 604: Line 656:
   * augmenter le LV   * augmenter le LV
  
-====Augmenter le RAID====+=====Augmenter le RAID=====
  
 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) : 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) :
Line 612: Line 664:
 81 têtes, 63 secteurs/piste, 765633 cylindres, total 3907029168 secteurs 81 têtes, 63 secteurs/piste, 765633 cylindres, total 3907029168 secteurs
 Unités = secteurs de 1 * 512 = 512 octets Unités = secteurs de 1 * 512 = 512 octets
-Taille de secteur (logique / physique) : 512 octets 512 octets +Taille de secteur (logique / physique) : 512 octets 512 octets 
-taille d'E/S (minimale / optimale) : 512 octets 512 octets +taille d'E/S (minimale / optimale) : 512 octets 512 octets 
-Identifiant de disque : 0x720b8114+Identifiant de disque : 0x720b8114
  
 Périphérique Amorce  Début        Fin      Blocs     Id  Système Périphérique Amorce  Début        Fin      Blocs     Id  Système
Line 681: Line 733:
 C'est déjà bien mais c'est pô fini ; il faut maintenant le dire à LVM ! C'est déjà bien mais c'est pô fini ; il faut maintenant le dire à LVM !
  
-====Prise en compte par 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) : 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) :
Line 770: Line 822:
 Okaaaay ! Okaaaay !
  
-=====Tests et benchmarks=====+======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. 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.
Line 785: 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 817: 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 843: 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 886: 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.
  
  
-=====Suppression totale d'un volume RAID=====+======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 : 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 :
Line 953: Line 1005:
  
  
-=====Liens=====+======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.txt · Last modified: 2018/01/01 13:39 by pteu