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.
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 1On 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...
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 1Comme 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/md0La 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.
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 1Pour prendre en compte des disques de secours :
device /dev/sdd5 spare-disk 0N'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/md0L'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.
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 3Les 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.
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 6Les disques de secours sont trait�s par les lignes suivantes :
device /dev/sdh1 spare-disk 0Et 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/md0Normalement 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/md0et
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.
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.
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.
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.
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.
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.
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.
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).
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 :
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 reconstructionIl 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.
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.
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.
On dispose d'un disque suppl�mentaire o� on peut installer le syst�me.
cd / find . -xdev | cpio -pm /mnt/newroot
/mnt/newroot/etc/fstab
de fa�on � ce
qu'il pointe vers le p�riph�rique /dev/md?
ad�quat pour la
racine. /boot
courant et montez le � la
place en /mnt/newroot/boot
. /mnt/newroot/etc/lilo.conf
de fa�on �
pointer vers le bon p�riph�rique. Le p�riph�rique de boot doit
rester un disque normal (non-RAID) mais le disque racine doit pointer
vers la matrice RAID. Ceci fait, ex�cutez un
lilo -r /mnt/newroot. Lilo ne devrait pas �mettre d'erreurs.
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.
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.
failed-disk
dans le fichier raidtab
Ne mettez pas ce disque en premi�re position dans le fichier ou vous
aurez du mal � d�marrer la matrice. Activez la matrice et mettez y un
syst�me de fichiers.raidtab
en empla�ant la directive
failed-disk
par une directive raid-disk
. Ajoutez �
pr�sent ce disque � la matrice avec raidhotadd
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.
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.
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.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:24