Page suivantePage pr�c�denteTable des mati�res

4. Configuration du RAID

4.1 Configuration g�n�rale

Voici ce que requi�rent tous les niveaux de RAID  :

Tous les logiciels se trouvent sur ftp://ftp.fi.kernel.org/pub/linux Les outils et les patches RAID sont dans le r�pertoire daemons/raid/alpha. Le noyau se trouve dans le r�pertoire kernel.

Patchez le noyau, configurez le de fa�on � inclure la gestion du RAID pour les niveaux qui vous int�ressent. Compilez et installez.

D�tarrez, configurez, compilez et installez les outils RAID.

Jusqu'ici, tout va bien. A pr�sent, si vous red�marrez, vous devriez avoir un fichier appel� /proc/mdstat. N'oubliez jamais que ce fichier est votre alli�. Examinez son contenu avec un cat /proc/mdstat. Il devrait vous confirmer que vous disposez du niveau (personality) RAID voulu et qu'aucun p�riph�rique RAID n'est actif.

Cr�ez les partitions que vous souhaitez inclure dans votre matrice RAID.

La suite des op�rations d�pend � pr�sent du mode RAID.

4.2 Mode lin�aire

On dispose � pr�sent de deux partitions (ou plus) qui ne sont pas n�cessairement de la m�me taille et que l'on va concat�ner.

Editez le fichier /etc/raidtab de fa�on � correspondre � votre configuration. Pour deux disques en mode lin�aire, voici un fichier type  :

raiddev /dev/md0
 raid-level      linear
 nr-raid-disks   2
 chunk-size      32
 persistent-superblock 1
 device          /dev/sdb6
 raid-disk       0
 device          /dev/sdc5
 raid-disk       1
On ne peut disposer de disques de secours. Si un disque tombe en panne, toute la matrice s'effondre. Il n'y a rien � stocker sur un disque de secours.

Vous vous demanderez peut-�tre pourquoi on pr�cise un param�tre chunk-size quand le mode lin�aire ne fait que concat�ner les disques en un disque virtuel plus important sans y acc�der en parall�le. Vous avez tout � fait raison. Mettez y une valeur quelconque et pensez � autre chose.

On cr�e la matrice  :

 mkraid /dev/md0

La commande initialise la matrice, �crit les superblocs persistants et active le p�riph�rique.

Jetez un oeil � /proc/mdstat. Vous devriez y voir que la matrice fonctionne.

A pr�sent cr�ez un syst�me de fichiers comme sur un p�riph�rique quelconque, montez le, incluez le dans votre fstab etc...

4.3 RAID-0

On dispose de deux disques (ou davantage) de taille sensiblement �gale dont on veut additionner les capacit�s de stockage tout en en am�liorant les performances au moyen d'acc�s simultan�s.

Editez le fichier /etc/raidtab de fa�on � correspondre � votre configuration. Voici un fichier type  :

raiddev /dev/md0
 raid-level      0
 nr-raid-disks   2
 persistent-superblock 1
 chunk-size     4
 device          /dev/sdb6
 raid-disk       0
 device          /dev/sdc5
 raid-disk       1
Comme en mode lin�aire, il n'y a pas de disque de secours. Le RAID-0 n'offre aucune redondance et la d�faillance d'un disque signifie celle de la matrice enti�re.

On ex�cute  :

 mkraid /dev/md0
La commande initialise la matrice, �crit les superblocs persistants et active la matrice.

/dev/md0 est pr�t � �tre format�, mont� et � subir les pires outrages.

4.4 RAID-1

On dispose de deux disques de taille sensiblement �gale que l'on souhaite mettre en mirroir. On peut avoir des disques suppl�mentaires que l'on gardera en attente comme disques de secours et qui prendront automatiquement place dans la matrice si un disque actif tombe en panne.

Voici le fichier /etc/raidtab typique  :

raiddev /dev/md0
 raid-level      1
 nr-raid-disks   2
 nr-spare-disks  0
 chunk-size     4
 persistent-superblock 1
 device          /dev/sdb6
 raid-disk       0
 device          /dev/sdc5
 raid-disk       1
Pour prendre en compte des disques de secours  :
 device          /dev/sdd5
 spare-disk      0
N'oubliez pas d'ajuster la variable nr-spare-disks en cons�quence.

A pr�sent, on peut initialiser la matrice RAID. Son contenu doit �tre construit et les contenus des deux disques (sans importance pour l'instant) synchronis�s.

Ex�cutez  :

 mkraid /dev/md0
L'initialisation de la matrice d�marrera.

Examinez le fichier /proc/mdstat. On doit y lire que /dev/md0 a �t� d�marr�, que le mirroir est en cours de reconstruction et y trouver une estimation de la dur�e de reconstruction.

La reconstruction a lieu durant les p�riodes d'inactivit� au niveau des entr�es/sorties. L'interactivit� du syst�me ne devrait donc pas en souffrir. Les LED des disques palpiteront gaiement.

Le processus de reconstruction est transparent et on peut utiliser le p�riph�rique RAID pendant cette phase.

Formattez la matrice pendant la reconstruction. On peut �galement la monter et s'en servir. Bien s�r, si le mauvais disque lache � ce moment l�, il ne s'agissait pas d'un jour de chance.

4.5 RAID-4

Remarque : je n'ai pas test� personnellement cette configuration et ce qui suit correspond � ce qui me para�t le plus vraisemblable.

On dispose de trois disques ou plus de taille sensiblement �quivalente, l'un d'eux est nettement plus rapide que les autres et on souhaite les combiner en un p�riph�rique de taille plus �lev�e tout en conservant un certain niveau de redondance. En outre, on peut introduire des disques de secours.

Fichier /etc/raidtab typique  :

raiddev /dev/md0
 raid-level      4
 nr-raid-disks   4
 nr-spare-disks  0
 persistent-superblock 1
 chunk-size      32
 device          /dev/sdb1
 raid-disk       0
 device          /dev/sdc1
 raid-disk       1
 device          /dev/sdd1
 raid-disk       2
 device          /dev/sde1
 raid-disk       3
Les disques de secours sont trait�s par les lignes suivantes  :
 device         /dev/sdf1
 spare-disk     0

La matrice s'initialise comme d'habitude  :

 mkraid /dev/md0

On se reportera aux options particuli�res de mke2fs avant de formater le p�riph�rique.

4.6 RAID-5

On dispose de trois disques ou plus de taille sensiblement �quivalente que l'on veut combiner en un p�riph�rique de taille plus �lev�e tout en assurant la redondance des donn�es. On peut introduire des disques de secours.

Si on employe N disques dont le plus petit est de taille S, la taille de la matrice sera (N-1)*S. L'espace manquant sert au stockage des donn�es de parit� (redondance). Si un disque tombe en panne, les donn�es restent intactes. Si deux disques lachent, toutes les donn�es sont perdues.

Fichier de configuration /etc/raidtab typique  :

raiddev /dev/md0
 raid-level      5
 nr-raid-disks   7
 nr-spare-disks  0
 persistent-superblock 1
 parity-algorithm        left-symmetric
 chunk-size      32
 device          /dev/sda3
 raid-disk       0
 device          /dev/sdb1
 raid-disk       1
 device          /dev/sdc1
 raid-disk       2
 device          /dev/sdd1
 raid-disk       3
 device          /dev/sde1
 raid-disk       4
 device          /dev/sdf1
 raid-disk       5
 device          /dev/sdg1
 raid-disk       6
Les disques de secours sont trait�s par les lignes suivantes  :
 device         /dev/sdh1
 spare-disk     0
Et ainsi de suite.

Une taille de bloc (chunk-size) de 32 ko est un bon choix par d�faut pour de nombreux syst�mes de fichiers. La matrice d�riv�e du fichier de configuration pr�c�dent est de 7 fois 6 Go soit 36 Go (n'oubliez pas que (n-1)*s = (7-1)*6 = 36). Il contient un syst�me de fichiers ext2 avec une taille de blocs de 4 ko. Rien n'emp�che d'aller au-del� via les param�tres de bloc de la matrice et du syst�me de fichiers si ce dernier est plus grand ou s'il doit contenir des fichiers de grande taille.

A pr�sent, on ex�cute  :

 mkraid /dev/md0
Normalement les disques devraient s'activer furieusement durant la construction de la matrice. On examinera le contenu du fichier /proc/mdstat pour savoir ce qui se passe.

Si le p�riph�rique a �t� cr�� avec succ�s, la reconstruction est en cours. La matrice ne sera pas coh�rente tant que celle-ci n'aura pas pris fin. La matrice est cependant parfaitement op�rationnelle (� la gestion des d�faillances pr�s) et on peut d�j� la formater et s'en servir.

On se reportera aux options particuli�res de mke2fs avant de formatter le p�riph�rique.

Maintenant que le disque RAID fonctionne, on peut l'arr�ter ou le red�marrer via les commandes  :

 raidstop /dev/md0
et
 raidstart /dev/md0

Au lieu de mettre ces commandes dans les scripts d'initialisation et de rebooter un milliard de fois pour arriver � tout faire fonctionner, on lira les paragraphes suivants qui traitent de l'autod�tection.

4.7 Les superblocs persistants

Autrefois (TM), les utilitaires RAID analysaient le fichier de configuration et initialisaient la matrice. Il fallait donc que le syst�me de fichiers sur lequel figurait le fichier /etc/raidtab soit mont�  : plut�t p�nible pour d�marrer sur un syst�me de fichiers RAID.

L'ancienne approche conduisait de surcro�t � des complications pour monter des syst�mes de fichiers reposant sur p�riph�riques RAID. Ils ne pouvaient �tre simplement mis dans le fichier /etc/fstab habituel et n�cessitaient des interventions chirurgicales dans les scripts de d�marrage.

Les superblocs persistants r�solvent ces probl�mes. Lorsqu'une matrice est initialis�e avec l'option persistent-superblock dans le fichier /etc/raidtab, un superbloc de type particulier est �crit au d�but de chaque disque prenant part � la matrice. Le noyau est alors capable d'obtenir directement la configuration de la matrice depuis les disques qui la composent au lieu de devoir analyser un fichier de configuration � la disponibilit� al�atoire.

On gardera quand m�me coh�rent le fichier /etc/raidtab puisqu'on peut en avoir besoin ult�rieurement en cas de reconstruction de la matrice.

Les superblocs persistants sont obligatoires si on souhaite b�n�ficier de l'auto-d�tection des p�riph�riques RAID au d�marrage du syst�me. On se reportera � la section Autod�tection.

4.8 Taille des blocs (chunk size)

Ce param�tre m�rite quelques explications. On ne peut jamais �crire de fa�on rigoureusement parall�le sur un ensemble de disques. Dans le cas de deux disques sur lesquels on devrait �crire un octet, on pourrait souhaiter que les quatres bits de poids fort aillent toujours sur le m�me disque, ceux de poids faible allant sur l'autre. Le mat�riel ne le permet pas. On d�finit donc de fa�on plus ou moins arbitraire une taille de bloc �l�mentaire qui correspondra � la plus petite quantit� de donn�es "atomique" qui sera �crite sur les disques. L'�criture de 16 ko avec une taille de bloc de 4 ko provoquera l'envoi du premier et du troisi�me bloc de 4 ko vers le premier disque et celui du deuxi�me et du quatri�me bloc vers le second disque pour une matrice RAID-0 comportant deux disques. Pour de grosses �critures, la consommation de ressources sera minimis�e par une taille de blocs importante tandis qu'une matrice compos�e essentiellement de petits fichiers profitera davantage d'une taille de blocs r�duite.

Ce param�tre peut �tre sp�cifi� pour tous les niveaux de RAID, m�me le mode lin�aire o� il n'a aucun effet.

A vous de modifier ce param�tre, ainsi que la taille de blocs du syst�me de fichier, pour obtenir les meilleurs performances possibles.

L'argument de l'option chunk-size dans le fichier /etc/raidtab pr�cise la taille en ko.

RAID-0

Les donn�es sont �crites successivement sur chaque disque par paquets de chunk-size octets.

Pour une taille de bloc de 4 ko, lors de l'�criture de 16 ko de donn�es sur un syst�me muni de trois disques, la couche RAID �crira simultan�ment 4 ko sur chacun des trois disques puis �crira les 4 ko restant sur le disque 0.

32 ko semble un bon point de d�part pour une majorit� de matrices mais la valeur optimale d�pend �troitement du nombre de disques impliqu�s, du contenu du syst�me de fichiers et de divers autres facteurs. A vous d'exp�rimenter pour trouver la meilleure valeur.

RAID-1

Pour les �critures le param�tre importe peu vu que les donn�es doivent �tre �crites sur tous les disques. Cependant, pour les lectures, il fixe la quantit� de donn�es � lire en une fois depuis un disque. Tous les disques contenant la m�me information, les lectures peuvent �tre �quilibr�es d'une fa�on similaire au RAID-0.

RAID-4

Lors d'une �criture dans une matrice RAID-4, l'information de parit� doit �tre mise � jour sur le disque d�di�. La taille de bloc sp�cifie alors la taille des blocs de parit�. Si un octet est �crit dans une matrice RAID-4, chunk-size octets seront lus depuis N-1 disques, la parit� sera calcul�e et chunk-size octets seront �crits sur le disque de parit�.

Le param�te affecte les performances de la m�me fa�on que pour le RAID-0 puisque les lectures fonctionnent de la m�me fa�on.

RAID-5

Le param�tre a la m�me signification que pour le RAID-4.

128 ko est une valeur raisonnable. A vous de l'ajuster.

On se reportera �galement � la section traitant des options particuli�res de mke2fs qui affectent les performances du RAID-5.

4.9 Options de mke2fs

L'option -R stride=nn permet � mke2fs d'optimiser l'emplacement des structures de contr�le sp�cifiques � ext2 lors du formatage d'un disque RAID-4 ou RAID-5.

Si la taille de bloc RAID est de 32 ko, 32 ko de donn�es cons�cutives r�sideront sur un m�me disque. Si on souhaite construire un syst�me de fichiers ext2 avec une taille de blocs de 4 ko, il y aura 8 blocs de donn�es cons�cutifs dans un bloc du tableau. On fournit l'information � mke2fs de la mani�re suivante  :

 mke2fs -b 4096 -R stride=8 /dev/md0

Les performances du RAID-{4,5} d�pendent fortement de cette option. Je ne suis pas s�r de son influence sur les autres niveaux RAID. Si quelqu'un a des informations � ce sujet, elles seront les bienvenues.

La taille de bloc ext2 joue tr�s fortement sur les performances du syst�me de fichier. D�s que la taille de ce dernier d�passe quelques centaines de Mo, une taille de bloc de 4 ko est conseill�e (� moins que le syst�me de fichiers ne doivent stocker de tr�s nombreux petits fichiers).

4.10 Autod�tection

L'autod�tection permet une reconnaissance automatique des p�riph�riques par le noyau au d�marrage, jsute apr�s l'identification des partitions usuelles.

Requis  :

  1. La gestion de l'autod�tection par le noyau.
  2. Les disques RAID doivent avoir �t� cr��s avec l'option de persistance des superblocs.
  3. Les partitions doivent �tre de type 0xFD (� positionner avec fdisk).

Remarque  : on v�rifiera que la matrice RAID est arr�t�e avant de changer le type des partitions (raidstop /dev/md0).

En suivant les trois �tapes pr�c�dentes, l'autod�tection devrait �tre en place. Essayez de red�marrer. Une fois le syst�me initialis�, /proc/mdstat doit confirmer que la matrice RAID fonctionne.

Des messages semblables aux suivants apparaitront au d�marrage  :

 Oct 22 00:51:59 malthe kernel: SCSI device sdg: hdwr sector= 512
 bytes. Sectors= 12657717 [6180 MB] [6.2 GB]
 Oct 22 00:51:59 malthe kernel: Partition check:
 Oct 22 00:51:59 malthe kernel:  sda: sda1 sda2 sda3 sda4
 Oct 22 00:51:59 malthe kernel:  sdb: sdb1 sdb2
 Oct 22 00:51:59 malthe kernel:  sdc: sdc1 sdc2
 Oct 22 00:51:59 malthe kernel:  sdd: sdd1 sdd2
 Oct 22 00:51:59 malthe kernel:  sde: sde1 sde2
 Oct 22 00:51:59 malthe kernel:  sdf: sdf1 sdf2
 Oct 22 00:51:59 malthe kernel:  sdg: sdg1 sdg2
 Oct 22 00:51:59 malthe kernel: autodetecting RAID arrays
 Oct 22 00:51:59 malthe kernel: (read) sdb1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind<sdb1,1> Oct 22 00:51:59 malthe kernel: (read) sdc1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind<sdc1,2> Oct 22 00:51:59 malthe kernel: (read) sdd1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind<sdd1,3> Oct 22 00:51:59 malthe kernel: (read) sde1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind<sde1,4> Oct 22 00:51:59 malthe kernel: (read) sdf1's sb offset: 6205376
 Oct 22 00:51:59 malthe kernel: bind<sdf1,5> Oct 22 00:51:59 malthe kernel: (read) sdg1's sb offset: 6205376
 Oct 22 00:51:59 malthe kernel: bind<sdg1,6> Oct 22 00:51:59 malthe kernel: autorunning md0
 Oct 22 00:51:59 malthe kernel: running: <sdg1><sdf1><sde1><sdd1><sdc1><sdb1> Oct 22 00:51:59 malthe kernel: now!
 Oct 22 00:51:59 malthe kernel: md: md0: raid array is not clean --
 starting background reconstruction
Il s'agit des messages � l'autod�tection des partitions d'une matrice RAID-5 qui n'a pas �t� arr�t�e correctement (la machine a plant�). La reconstruction a lieu spontan�ment. Le montage de l'unit� est parfaitement licite puisque la reconstruction est transparente et que toutes les donn�es sont coh�rentes (seule l'information de parit� qui ne sert qu'en cas de d�faillance d'un disque est incoh�rente).

Les p�riph�riques reconnus automatiquement sont stopp�s de m�me quand le syst�me s'arr�te. Oubliez les scripts d'initialisation et servez vous des disques /dev/md comme s'il s'agissait de /dev/sd ou /dev/hd.

C'est aussi simple que �a.

Les lignes comportant les commandes raidstart et raidstop dans les scripts d'initialisation ne servent que pour les matrices RAID qui reposent sur l'ancienne mouture du code. Elles peuvent �tre supprim�es sans h�sitation dans le cadre de matrices RAID qui ont recours � l'autod�tection.

4.11 D�marrage sur un disque RAID

Il existe plusieurs fa�ons de mettre en place un syst�me qui monte directement sa partition racine depuis un p�riph�rique RAID. Pour l'instant, seuls les outils d'installation graphiques de la RedHat 6.1 permettent l'installation directe sur une matrice RAID. Il vous faudra donc surement effectuer quelques manipulations � la main mais il n'y a l� rien d'impossible.

La derni�re version officielle de lilo (21) ne g�re pas les disques RAID et le noyau ne peut donc pas �tre charg� au d�marrage depuis ce genre de p�riph�riques. Il faudra donc que le r�pertoire /boot r�side sur un syst�me de fichier hors RAID. Afin d'�tre s�r que le syst�me d�marre quel que soit son �tat, dupliquez une partition /boot similaire sur chaque disque. Le BIOS sera ainsi toujours capable de charger les donn�es depuis, par exemple le premier disque disponible. Il faudra donc que le syst�me ne d�marre pas avec un disque d�fectueux.

Avec la RedHat 6.1 est fourni un patch pour lilo 21 qui permet d'acc�der � /boot sur du RAID-1. On notera que le patch n'est pas adapt� aux autres niveaux RAID. Le patch est disponible dans tous les mirroirs RedHat via dist/redhat-6.1/SRPMS/SRPMS/lilo-0.21-10.src.rpm. La version modifi�e de lilo acceptera un argument du type boot=/dev/md0 dans le fichier /etc/lilo.conf et rendra chaque disque du mirroir utilisable au d�narrage.

On peut �galement avoir recours � une disquette de d�marrage.

4.12 Installer le syst�me de fichiers racine sur une couche RAID

Deux m�thodes sont fournies ci-dessous. A ma connaissance, aucune distribution ne permet l'installation sur un disque RAID et la m�thode que je sugg�re suppose que vous installez d'abord le syst�me sur une partition normale avant de mouvoir les fichiers sur la matrice RAID une fois l'installation compl�te.

Premi�re m�thode  :

On dispose d'un disque suppl�mentaire o� on peut installer le syst�me.

Dans le cas de disques IDE, on sp�cifiera dans le BIOS les disques comme �tant de type ``auto-detect'' pour que la machine puisse red�marrer m�me si un disque manque.

Seconde m�thode  :

Cette m�thode n�cessite l'emploi d'outils RAID et du patch qui autorisent la directive failed-disk. Il faut donc disposer d'un noyau 2.2.10 ou au del�.

Il faut que la matrice soit au moins de type 1. L'id�e consiste � installer le syst�me sur un disque marqu� d�fectueux du point de vue RAID puis � copier le syst�me sur la partie restante de la matrice RAID qui sera consid�r�e comme d�grad�e avant de r�ins�rer le disque d'installation et de d�clencher sa resynchronisation.

4.13 D�marrer le syst�me depuis le RAID

Pour que le noyau soit capable de monter le syst�me de fichiers racine, les pilotes des p�riph�riques n�cessaires doivent �tre pr�sents dans le noyau (NdT : ou charg�s via un initrd qui peut �galement contenir les modules RAID).

La fa�on normale de proc�der consiste � compiler un noyau qui inclut en dur toutes les options RAID n�cessaires (NdT : je proteste !).

La redHat-6.0 �tant fournie avec un noyau modulaire qui g�re la nouvelle mouture du RAID, je vais cependant en d�crire l'emploi si on souhaite s'en servir pour d�marrer son syst�me depuis un volume RAID.

D�marrage avec le RAID modularis�

Il faut pr�ciser � lilo qu'il doit �galement charger un �quivalent de ramdisk en sus du noyau au d�marrage. La commande mkinitrd permet de cr�er un ramdisk (ici un initrd) contenant les modules n�cessaires au montage de la racine. Commande type  :

 mkinitrd --with=<module> <ramdisk name> <kernel>
Par exemple  :
 mkinitrd --with=raid5 raid-ramdisk 2.2.5-22

Ceci garantit que le module RAID ad�quat sera disponible au d�marrage lorsque le noyau devra monter la racine.

4.14 Mises en garde

Ne repartitionnez JAMAIS un disque qui appartient � une matrice RAID. Si vous devez modifier la table des partitions d'un disque au sein d'une matrice, arr�tez d'abord la matrice et repartitionnez ensuite.

On a vite fait de saturer un bus. Un bus Fast-Wide SCSI courant n'offre que 10 Mo/s, ce qui est largement en dessous des performances des disques actuels. Mettre six disques sur un canal de ce type n'apportera bien entendu pas le gain en performances souhait�.

L'ajout de contr�leurs SCSI n'est susceptible d'am�liorer les performances que si les bus d�j� pr�sents sont proches de la saturation. Vous ne tirerez rien de plus de deux contr�leurs 2940 si vous n'avez que deux vieux disques SCSI qui ne satureraient m�me pas un seul contr�leur.

Si vous omettez l'option de persistance des superblocs votre matrice ne red�marrera pas spontan�ment apr�s un arr�t. Reprenez la cr�ation de la matrice avec l'option correctement positionn�e.

Si la resynchronisation d'une matrice RAID-5 �choue apr�s qu'un disque ait �t� ot� puis reins�r�, l'ordre des disques dans le fichier raidtab est peut-�tre le responsable. Essayez de d�placer la premi�re paire ``device ...'' et ``raid-disk ...'' en d�but de description de la matrice.

La plupart des retours d'erreur observ�s sur la liste de diffusion linux-kernel proviennent de gens qui ont proc�d� � des m�langes douteux entre les patches et les outils RAID. Si vous utilisez le RAID 0.90, v�rifiez que vous vous servez bien de la bonne version des utilitaires.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:24