/usr/share/doc/HOWTO/fr-html/Software-RAID-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Software-RAID HOWTO</title>
</head>
<body>
<h1>Software-RAID HOWTO</h1>
<h2>Jakob Ø ;stergaard ( <a href=
"mailto%C2%A0:jakob@ostenfeld.dk">jakob@ostenfeld.dk</a>)</h2>
v. 0.90.7 ; 19th of January 2000
<hr>
<em>Ce document décrit l'utilisation du RAID logiciel 0.90 sous
Linux mis au point par Ingo Molnar et d'autres développeurs. Il
s'agit de la couche RAID qui sera standard pour les versions 2.4.x
du noyau Linux et qui est également disponible sous forme de
patches pour la branche 2.2. La couche d'adaptation RAID 0.90 est
disponible sous forme de patches pour les branches 2.0 et 2.2. De
nombreuses personnes la considèrent comme bien plus robuste que la
couche RAID courante. those kernels.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Pour une description de la version antérieure de l'interface
RAID standard dans les noyaux 2.0 et 2.2, reportez vous à
l'excellent document de Linas Vepstas ( <a href=
"mailto%C2%A0:linas@linas.org">linas@linas.org</a>) disponible via
le Linux Documentation Project à l'adresse <a href=
"http%C2%A0://linuxdoc.org">linuxdoc.org</a>.</p>
<p><a href=
"http%C2%A0://ostenfeld.dk/~jakob/Software-RAID.HOWTO/">http ://ostenfeld.dk/~jakob/Software-RAID.HOWTO/</a>
est la page de référence pour ce HOWTO où les dernières mises à
jour seront disponibles. Ce document a été rédigé par Jakob
Ostergaard à partir de nombreux messages électroniques échangés
entre l'auteur et Ingo Molnar <a href=
"mailto%C2%A0:mingo@chiara.csoma.elte.hu">(mingo@chiara.csoma.elte.hu)</a>
- un des développeurs du RAID - , la liste de diffusion linux-raid
<a href=
"mailto%C2%A0:linux-raid@vger.rutgers.edu">(linux-raid@vger.rutgers.edu)</a>
ainsi que diverses personnes.</p>
<p>La rédaction de ce HOWTO a été motivée par le besoin de
documentation du nouveau système RAID alors que le Software-RAID
existant ne documentait que les versions précédentes. Des
fonctionnalités nouvelles ont notamment été introduites.</p>
<p>Pour utiliser la nouvelle mouture du RAID avec les noyaux 2.0 ou
2.2, vous devez récupérer le patch correspondant, par exemple à
l'adresse <a href=
"ftp://ftp.fi.kernel.org/pub/linux/daemons/raid/alpha">ftp://ftp.[your-country-code].kernel.org/pub/linux/daemons/raid/alpha</a>,
ou depuis <a href=
"http://people.redhat.com/mingo/">http://people.redhat.com/mingo/</a>.
Les noyaux 2.2 officiels ne gèrent directement que l'ancien type de
RAID et les patches sont donc nécessaires. <em>L'ancien système
RAID des noyaux 2.0 et 2.2 est buggé</em>. De surcroît, il lui
manque d'importantes fonctionnalitées présentes dans la nouvelle
version.</p>
<p>La nouvelle mouture du RAID est en cours d'intégration dans les
noyaux de développement 2.3.x et sera donc disponible dans la
branche 2.4. Jusqu'à la sortie de celle-ci, il sera nécessaire de
patcher manuellement les noyaux.</p>
<p>Peut-être esssayerez vous les versions <code>-ac</code> du noyau
proposées par Alan Cox pour disposer du RAID. <em>Certaines</em>
d'entre elles incluent le nouveau système et vous épargneront donc
l'application de patches.</p>
<p>Le HOWTO contient des informations triviales pour ceux qui
maîtrisent déjà les principes des systèmes RAID. Inutile de vous y
attarder.</p>
<h2><a name="ss1.1">1.1 Avertissement</a></h2>
<p>L'avertissement indispensable :</p>
<p>Bien que le fonctionnement du système RAID semble stable chez
moi et chez de nombreuses personnes, cela pourrait ne pas être le
cas pour vous. Si vous perdez vos données, votre emploi, votre
femme ou que vous vous faites écraser par un camion, ce ne sera ni
de ma faute, ni de celle des développeurs. Vous utilisez les
fonctionnalités RAID, ainsi que toutes les informations contenues
dans ce documenti, à vos risques et périls. Il n'y a pas la moindre
garantie concernant le logiciel ou ce document ni la moindre
assurance que cela puisse servir à quoi que ce soit. Sauvegardez
toutes vos données avant la moindre manipulation. Il vaut mieux
être prudent que désolé.</p>
<p>Ceci étant, je dois reconnaitre que je n'ai pas eu de problèmes
de stabilité avec le RAID logiciel, que je l'employe sur quelques
machines et que je n'ai entendu personne évoquer des plantages
aléatoires ou des instabilités avec le RAID.</p>
<h2><a name="ss1.2">1.2 Prérequis</a></h2>
<p>Le HOWTO suppose que vous utilisez un des derniers noyaux 2.2.x
ou 2.0.x modifié par le patch raid0145 adéquat ainsi que la version
0.90 des raidtools ou que vous vous servez d'un 2.3 postérieur à la
> 2.3.46, voire d'un 2.4. Les patches et les outils se trouvent
par exemple à : <a href=
"ftp://ftp.fi.kernel.org/pub/linux/daemons/raid/alpha">ftp://ftp.fi.kernel.org/pub/linux/daemons/raid/alpha</a>
ou pour certains à l'adresse : <a href=
"http://people.redhat.com/mingo/">http://people.redhat.com/mingo/</a>.
Les patches RAID, le paquetage des raidtools et le noyau doivent
s'accorder autant que possible. Il sera peut-être parfois
nécessaire de se restreindre à des noyaux plus anciens si les
patches ne sont pas disponibles pour le dernièr noyau sorti.</p>
<h2><a name="s2">2. Motivation du RAID</a></h2>
<p>Il existe différentes bonnes raisons pour se servir du RAID
parmis lesquelles figurent la possibilité de fusionner plusieurs
disques physiques en un périphérique virtuel plus important,
l'amélioration des performances et la redondance.</p>
<h2><a name="ss2.1">2.1 Aspects techniques</a></h2>
<p>Le RAID Linux est adapté à la majeure partie des périphériques
de type bloc. Peu importe que vous utilisiez de l'IDE, du SCSI ou
un mélange des deux. Certains ont également obtenu quelques succès
en s'en servant avec des périphériques de type bloc en réseau
(Network Block Device ou NBD).</p>
<p>Vérifiez que les bus d'accès aux périphériques sont assez
rapides. Il n'est pas conseillé d'installer 14 disques Ultra Wide
sur une même chaine si chacun d'entre eux peut débiter 10 Mo/s car
le bus, lui, ne dépassera pas les 40 Mo/s. Vous avez également
intérêt à ne pas mettre plus d'un disque par interface IDE sans
quoi les performances ne vont pas être fameuses. L'IDE n'est pas
adapté pour l'accès simultané à plusieurs disques sur une même
interface. Toutes les cartes mères récentes incluent deux ports et
vous pourrez donc configurer deux disques en RAID sans acheter de
contrôleur supplémentaire.</p>
<p>La couche RAID est indépendante du système de fichier. Vous
pourrez donc y superposer celui de votre choix.</p>
<h2><a name="ss2.2">2.2 Vocabulaire</a></h2>
<p>RAID sera employé pour "RAID logiciel Linux". Le document ne
traite pas du RAID matériel.</p>
<p>Dans la description des configurations, on utilise fréquemment
le nombre de disques et leur taille. <b>N</b> désignera le nombre
de disques dans une matrice RAID, les disques de secours étant
exclus, <b>S</b> sera la taille du plus petit disque et <b>P</b> le
débit d'un disque en Mo/s. Quand on se servira de P, on supposera
que les disques ont tous les mêmes performances (à vérifier).</p>
<p>Périphérique et disque seront synonymes. En général, les
matrices RAID sont davantage construites avec des partitions
qu'avec des disques complets. La combinaison de plusieurs
partitions appartenant à un même disque ne présente guère d'intérêt
et on entendra donc par périphérique et disque "des partitions sur
différents disques".</p>
<h2><a name="ss2.3">2.3 Niveaux RAID</a></h2>
<p>Voici une brève description des niveaux de RAID gérés par Linux.
Certaines de ces infos sont basiques mais j'ai fait mention
d'éléments spécifiques à la mise en oeuvre au sein de Linux. Sautez
cette section si vous savez ce qui se cache derrière le RAID. Vous
y reviendrez quand vous aurez des problèmes :o)</p>
<p>Les patches RAID pour Linux offrent les possibilités suivantes
:</p>
<ul>
<li><b>mode linéaire</b>
<ul>
<li>Deux disques et plus sont combinés par concaténation.
L'écriture sur le disque RAID se fera donc d'abord sur le premier
puis sur le second quand il sera plein et ainsi de suite. Il n'est
pas nécessaire que les disques soient de la même taille et, pour
tout dire, la taille n'est ici d'aucune importance.</li>
<li>Il n'y a aucune redondance à ce niveau. Si un disque tombe en
panne, vous perdrez surement toutes vos données. Vous aurez peut
être la chance d'en récupérer une partie si, du point de vue du
système de fichiers, il ne manque qu'un gros bloc consécutif de
données.</li>
<li>Les performances en lecture/écriture ne vont pas s'améliorer
automatiquement mais si plusieurs utilisateurs se servent
simultanément du périphérique, il se peut qu'ils accèdent à des
disques différents et que les performances en soient
augmentées.</li>
</ul>
</li>
<li><b>RAID-0</b>
<ul>
<li>Ou "stripe". Semblable au mode linéaire à ceci près que les
lectures et les écritures ont lieu en parallèle sur les disques.
Les disques doivent avoir sensiblement la même taille. Les
périphériques se remplissent progressivement de la même façon. Si
l'un des deux est plus grand que l'autre, l'espace supplémentaire
est toujours employé pour la matrice RAID mais vous n'utiliserez
qu'un des deux disques vers la fin. Les performances en
patiront.</li>
<li>Comme en linéaire, il n'y a pas de redondance des données mais
en plus vous ne serez pas capable de récupérer vos données si un
disque tombe en panne. Au lieu de ce qu'il vous manque un gros bloc
de données, votre système de fichiers comprendra de nombreux petits
trous. e2fsck ne sera vraisemblablement pas en mesure de
reconstituer quoi que ce soit.</li>
<li>Les performances en lecture/écriture augmenteront puisque les
lectures et les écritures auront lieu sur les deux disque en même
temps. C'est souvent ce qui motive l'emploi du RAID-0. Si les bus
sont assez rapides, vous pourrez flirter avec N*P Mo/s.</li>
</ul>
</li>
<li><b>RAID-1</b>
<ul>
<li>Il s'agit du premier mode redondant. Le RAID-1 s'employe à
partir de deux disques auxquels viennent éventuellement se greffer
des disques de secours. Ce mode duplique les informations d'un
disque sur l(es)'autre(s). Bien sûr, les disques doivent être de
même taille. Si un disque est plus grand que les autres, la matrice
sera de la taille du plus petit.</li>
<li>Jusqu'à N-1 disques otés (ou défectueux), les données restent
intactes et si le contrôleur (SCSI, IDE, etc...) survit, la
reconstruction sera immédiatement entamée sur un des disques de
secours après détection de l'anomalie.</li>
<li>Les performances en écriture sont légèrement inférieures à
celles d'un disque unique vu que les données doivent être écrites
sur chaque disque de la matrice. Les performances en lecture sont
<em>en général</em> bien plus mauvaises en raison de la mise en
oeuvre au sein du code d'une stratégie d'équilibrage simpliste.
Cependant, cette partie des sources a été revue pour le noyau
2.4.</li>
</ul>
</li>
<li><b>RAID-4</b>
<ul>
<li>Ce niveau RAID n'est pas utilisé très souvent. Il s'employe à
partir de trois disques et plus. Au lieu d'effectuer une copie des
informations, on conserve la parité sur un disque et on écrit les
données sur les autres comme on le ferait avec une matrice RAID-0.
Un disque étant dédié à la parité, la taille de la matrice sera
(N-1)*S ou S est la taille du plus petit disque. Comme en RAID-1,
les disques doivent avoir la même taille sans quoi le S précédent
correspondra à celui du plus petit disque.</li>
<li>Si un disque lache, l'information de parité permet de
reconstruire toutes les données. Si deux disques lachent, toutes
les données sont perdues.</li>
<li>On n'utilise pas beaucoup ce niveau en raison du stockage de la
parité sur un disque unique. L'information doit être mise à jour à
<em>chaque</em> fois qu'on écrit sur un des disques, ce qui
constitue un goulot d'étranglement si le disque de parité n'est pas
nettement plus rapide que les autres. Cependant, si vous avez
beaucoup de petits disques lents et un disque très rapide, le
RAID-4 peut s'avérer très utile.</li>
</ul>
</li>
<li><b>RAID-5</b>
<ul>
<li>Il s'agit surement du mode le plus approprié quand on souhaite
combiner un grand nombre de disques tout en conservant de la
redondance. Le RAID-5 s'employe à partir de trois disques avec
éventuellement des disques de secours. La matrice sera de taille
(N-1)*S, comme en RAID-4. A la différence du RAID-4, l'information
de parité est répartie équitablement entre les différents disques,
évitant ainsi le goulot d'étranglement du RAID-4.</li>
<li>Si un des disques tombe en panne les données restent intactes.
La reconstruction peut commencer immédiatement si des disques de
secours sont disponibles. Si deux disques rendent simultanément
l'âme, toutes les données sont perdues. Le RAID-5 ne survit pas à
la défaillance de plus d'un disque.</li>
<li>Les performances en lecture/écriture s'améliorent mais il est
difficile de prévoir de combien.</li>
</ul>
</li>
</ul>
<h3>Disques de secours</h3>
<p>Les disques de secours ne prenent pas part à la matrice RAID
jusqu'à ce qu'un des disques de celle-ci tombe en panne. Quand un
disque lache, il est marqué défectueux et la reconstruction est
entamée sur le premier disque de secours disponible.</p>
<p>Les disques de secours renforcent donc la sécurité de systèmes
RAID-5 qui peuvent être difficilement accessibles. Le système peut
fonctionner pendant un certain temps aec un disque défectueux tant
que le disque de secours assure la redondance.</p>
<p>Vous ne pouvez être sûr de la survie de votre système en cas de
défaillance d'un disque. La couche RAID peut faire son travail mais
les gestionnaires SCSI peuvent receller des erreurs, les composants
IDE peuvent se bloquer et d'autres phénomènes peuvent se
produire.</p>
<h2><a name="ss2.4">2.4 RAID et swap</a></h2>
<p>Il n'y a aucune raison d'employer le RAID au dessus du swap pour
en améliorer les performances. Le noyau se charge lui-même
d'équilibrer le swap sur plusieurs périphériques si toutes les
partitions ont la même priorité dans la fstab.</p>
<p>Un fichier fstab correct ressemble à ce qui suit :</p>
<pre>
/dev/sda2 swap swap defaults,pri=1 0 0
/dev/sdb2 swap swap defaults,pri=1 0 0
/dev/sdc2 swap swap defaults,pri=1 0 0
/dev/sdd2 swap swap defaults,pri=1 0 0
/dev/sde2 swap swap defaults,pri=1 0 0
/dev/sdf2 swap swap defaults,pri=1 0 0
/dev/sdg2 swap swap defaults,pri=1 0 0
</pre>
Cette configuration permet à la machine de swaper en parallèle avec
sept périphériques SCSI. Aucun besoin du RAID pour ça vu qu'il
s'agit d'une fonctionnalité présente dans le noyau de longue date.
<p>Le RAID s'emploie pour le swap à des fins de haute
disponibilité. Si vous configurez un système pour démarrer sur un
périphérique RAID-1, le système doit être capable de survivre à une
défaillance de disque. Seulement si le système était en train de
swaper sur le périphérique défectueux, vous allez surement avoir
des problèmes. Swaper sur une matrice RAID-1 aide dans ce genre de
situations.</p>
<p>Il y a eu beaucoup de discussions concernant la stabilité du
swap sous une couche RAID logicielle. Le débat continue car il
dépend fortement d'autres aspects du noyau. A la date de rédaction
de ce document, il semble que swaper via le RAID soit parfaitement
stable <em>à l'exception</em> des phases de reconstruction (i.e.
lorsqu'un nouveau disque est inséré dans une matrice dégradée). La
question ne se posera plus lorsque le noyau 2.4 sortira mais jusque
là, à vous de pousser le système dans ses retranchements afin de
savoir si la stabilité vous satisfait ou bien si vous ne vous
servirez pas du RAID pour le swap.</p>
<p>Vous pouvez utiliser un fichier de swap sur un système de
fichiers au dessus d'une couche RAID, activer le RAID pour le
fichier lui même ou déclarer un périphérique RAID en tant que swap.
A vous de voir. Comme d'habitude, le disque RAID apparaitra comme
un périphérique de type bloc.</p>
<h2><a name="s3">3. Aspects matériels</a></h2>
<p>Cette section a trait à certaines problèmes matériels qui se
posent lorsqu'on se sert du RAID logiciel.</p>
<h2><a name="ss3.1">3.1 Configuration IDE</a></h2>
<p>Le RAID fonctionne avec des disques IDE. On peut d'ailleur
obtenir d'excellentes performances. En fait, compte tenu du prix
actuel des disques et des contrôleurs IDE, le choix de ce matériel
est à examiner lors de la mise en place d'un système RAID.</p>
<ul>
<li><b>Stabilité :</b> les caractéristiques de tenue des
disques IDE ont jusqu'ici été moins bonnes que celles des disques
SCSI. Aujourd'hui encore, la garantie des disques IDE se cantonne
typiquement à un an tandis qu'elle est de trois à cinq ans pour les
disques SCSI. Bien qu'il soit exagéré d'affirmer que les disques
IDE ont une qualité intrinsèque moindre, il faut reconnaitre que
<em>certains</em> disques auront tendance à tomber en panne plus
souvent que leurs équivalents SCSI. Maintenant, la mécanique est la
même pour le SCSI et l'IDE. Il faut juste rester conscient de ce
que tous les disques lachent, un jour ou l'autre. Il suffit de s'y
préparer.</li>
<li><b>Intégrité des données :</b>autrefois, il n'y avait
aucune garantie que les données écrites sur le disques fussent bien
celles qui avaient été émises sur le bus (pas de vérification de
parité ni de code d'erreur, etc...). Les disques durs IDE conformes
aux spécifications Ultra-DMA effectuent un calcul de vérification
sur les données qu'ils reçoivent. Il devient donc fortement
improbable que des données soient corrompues.</li>
<li><b>Performance :</b> je ne vais pas m'étendre sur cet
aspect des disques IDE. En résumé :
<ul>
<li>les disques IDE sont rapides (12 Mo/s et plus)</li>
<li>le système IDE consomme plus de ressources CPU (mais qui s'en
soucie ?)</li>
<li>n'utilisez qu'<b>un</b> disque IDE par adaptateur sans quoi les
performances vont se dégrader.</li>
</ul>
</li>
<li><b>Résistance aux pannes :</b> le gestionnaire IDE survit
généralement à la défaillance d'un disque IDE. La couche RAID
étiquetera le disque comme défectueux et si vous employez du RAID-1
et au delà, la machine devrait continuer à fonctionner normalement
jusqu'à ce que vous l'arrêtiez pour les opérations de
maintenance.</li>
</ul>
<p>Il est <b>très</b> important que vous n'utilisiez <b>qu'un</b>
disque IDE par nappe. Outre la question des performances, la
défaillance d'un disque provoque généralement le blocage de
l'interface. Avec une configuration RAID qui supporte les
défaillances (RAID-1, 4, 5), la panne d'un disque est supportée
mais l'arrêt simultané de deux disques bloque la matrice. Un bus,
un disque, telle est la règle.</p>
<p>Les contrôleurs PCI IDE ne manquent pas et vous pourrez vous
procurer deux à quatre bus supplémentaires autour de 600 FF. Au vu
de la différence de prix entre les disques SCSI et le disques IDE,
je dirais qu'un système RAID IDE est des plus attractifs si on est
prêt à se cantonner à un nombre de disques relativement peu
important (autour de 8 à moins que l'on ne dispose de suffisamment
de connecteurs PCI).</p>
<p>L'IDE est limité par la longueur des cables lorsqu'il s'agit de
mettre en oeuvre des matrices importantes. Même si votre machine
comprend suffisament de connecteurs PCI il est peu probable que
vous puissiez loger plus de huit disques sans vous heurter à des
problèmes de corruption des données dus à la longueur des
cables.</p>
<h2><a name="ss3.2">3.2 Ajout et suppression de disque à chaud
:</a></h2>
<p>Le sujet a effectivement chauffé la liste de diffusion
linux-kernel il y a quelques temps. Bien que la fonctionnalité soit
présente dans une certaine mesure, il ne s'agit pas de quelque
chose de facile.</p>
<h3>Disques IDE</h3>
<p><b>N'essayez pas</b> de manipuler à chaud vos disques IDE !
L'IDE n'est pas prévu pour. Bien sûr, ça se passera peut-être
correctement chez vous si le gestionnaire IDE est compilé en tant
que module (vous utilisez donc un noyau 2.2 et au delà) et que vous
le rechargez une fois le disque remplacé mais vous pouvez tout
aussi bien vous retrouver avec un controleur IDE grillé. Le temps
d'arrêt du système en cas de problème n'aura alors pas grand chose
à voir avec celui d'une maintenance programmée.</p>
<p>Outre les aspects purement électriques qui détruiront
joyeusement votre matériel, le problème réside en ce que
l'interface IDE doit être réexaminée après que des disques soient
échangés. Le gestionnaire IDE actuel ne le permet pas. Si le
nouveau disque est rigoureusement identique à l'ancien, il se
<em>peut</em> que cela fonctionne sans nouvel examen du bus mais,
franchement, vous êtes en train de tenter le diable.</p>
<h3>Disques SCSI</h3>
<p>Le matériel SCSI n'est pas davantage prévu pour. Ca
<em>peut</em> néanmoins fonctionner. Si votre contrôleur SCSI est
capable de réexaminer le bus, d'autoriser l'ajout et la suppression
de disques, vous y arriverez peut-être. Je ne vous le conseille
vraiment pas mais ça peut fonctionner. Griller un disque neuf
pousse parfois à revoir ses façons de faire...</p>
<p>La couche SCSI <b>devrait</b> supporter la défaillance d'un
disque mais tous les gestionnaires SCSI n'en sont pas capables. Si
le pilote SCSI accompagne le disque défectueux, pouvoir échanger ce
dernier à chaud est inutile.</p>
<h3>SCA</h3>
<p>L'échange à chaud doit être possible mais je ne dispose pas du
matériel nécessaire pour le vérifier et personne ne m'a fait part
d'expériences de ce type. Je ne peux donc pas vous en dire
plus.</p>
<p>Si vous voulez essayer, il vous faudra connaitre le
fonctionnement interne du SCSI et du RAID. Je ne vais pas écrire
quelque chose que je ne peux pas vérifier mais juste vous donner
quelques indications :</p>
<ul>
<li>partez à la recherche de <b>remove-single-device</b> dans le
fichier <b>linux/drivers/scsi/scsi.c</b></li>
<li>jetez un oeil à <b>raidhotremove</b> et à
<b>raidhotadd</b></li>
</ul>
<p>Tous les gestionnaires SCSI ne permettent pas l'ajout et la
suppression à chaud. Dans la série 2.2.x des noyaux, les pilotes
Adaptec 2940 et Symbios NCR53C8xx en semblent capables. Toute
information concernant les autres pilotes sera la bienvenue.</p>
<h2><a name="s4">4. Configuration du RAID</a></h2>
<h2><a name="ss4.1">4.1 Configuration générale</a></h2>
<p>Voici ce que requièrent tous les niveaux de RAID :</p>
<ul>
<li>Un noyau, de préférence un 2.2.x ou le dernier 2.0.x. Si la
branche 2.4.x est disponible quand vous lirez ces lignes, servez
vous en.</li>
<li>Les patches RAID. Ils existent généralement pour les noyaux
récents. Les noyaux 2.4.x ne nécessiteront pas de patch.</li>
<li>Les utilitaires RAID.</li>
<li>De la patience, des pizzas et des amph^H^H^H^H substances à la
caféine.</li>
</ul>
<p>Tous les logiciels se trouvent sur
<code>ftp://ftp.fi.kernel.org/pub/linux</code> Les outils et les
patches RAID sont dans le répertoire
<code>daemons/raid/alpha</code>. Le noyau se trouve dans le
répertoire <code>kernel</code>.</p>
<p>Patchez le noyau, configurez le de façon à inclure la gestion du
RAID pour les niveaux qui vous intéressent. Compilez et
installez.</p>
<p>Détarrez, configurez, compilez et installez les outils RAID.</p>
<p>Jusqu'ici, tout va bien. A présent, si vous redémarrez, vous
devriez avoir un fichier appelé <code>/proc/mdstat</code>.
N'oubliez jamais que ce fichier est votre allié. Examinez son
contenu avec un <code>cat</code> <code>/proc/mdstat</code>. Il
devrait vous confirmer que vous disposez du niveau (personality)
RAID voulu et qu'aucun périphérique RAID n'est actif.</p>
<p>Créez les partitions que vous souhaitez inclure dans votre
matrice RAID.</p>
<p>La suite des opérations dépend à présent du mode RAID.</p>
<h2><a name="ss4.2">4.2 Mode linéaire</a></h2>
<p>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.</p>
<p>Editez le fichier <code>/etc/raidtab</code> de façon à
correspondre à votre configuration. Pour deux disques en mode
linéaire, voici un fichier type :</p>
<pre>
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
</pre>
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.
<p>Vous vous demanderez peut-être pourquoi on précise un paramètre
<code>chunk-size</code> 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.</p>
<p>On crée la matrice :</p>
<pre>
mkraid /dev/md0
</pre>
<p>La commande initialise la matrice, écrit les superblocs
persistants et active le périphérique.</p>
<p>Jetez un oeil à <code>/proc/mdstat</code>. Vous devriez y voir
que la matrice fonctionne.</p>
<p>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...</p>
<h2><a name="ss4.3">4.3 RAID-0</a></h2>
<p>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.</p>
<p>Editez le fichier <code>/etc/raidtab</code> de façon à
correspondre à votre configuration. Voici un fichier type
:</p>
<pre>
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
</pre>
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.
<p>On exécute :</p>
<pre>
mkraid /dev/md0
</pre>
La commande initialise la matrice, écrit les superblocs persistants
et active la matrice.
<p>/dev/md0 est prêt à être formaté, monté et à subir les pires
outrages.</p>
<h2><a name="ss4.4">4.4 RAID-1</a></h2>
<p>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.</p>
<p>Voici le fichier <code>/etc/raidtab</code> typique :</p>
<pre>
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
</pre>
Pour prendre en compte des disques de secours :
<pre>
device /dev/sdd5
spare-disk 0
</pre>
N'oubliez pas d'ajuster la variable nr-spare-disks en conséquence.
<p>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.</p>
<p>Exécutez :</p>
<pre>
mkraid /dev/md0
</pre>
L'initialisation de la matrice démarrera.
<p>Examinez le fichier <code>/proc/mdstat</code>. 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.</p>
<p>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.</p>
<p>Le processus de reconstruction est transparent et on peut
utiliser le périphérique RAID pendant cette phase.</p>
<p>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.</p>
<h2><a name="ss4.5">4.5 RAID-4</a></h2>
<p><b>Remarque :</b> je n'ai pas testé personnellement cette
configuration et ce qui suit correspond à ce qui me paraît le plus
vraisemblable.</p>
<p>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.</p>
<p>Fichier /etc/raidtab typique :</p>
<pre>
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
</pre>
Les disques de secours sont traités par les lignes suivantes
:
<pre>
device /dev/sdf1
spare-disk 0
</pre>
<p>La matrice s'initialise comme d'habitude :</p>
<pre>
mkraid /dev/md0
</pre>
<p>On se reportera aux options particulières de mke2fs avant de
formater le périphérique.</p>
<h2><a name="ss4.6">4.6 RAID-5</a></h2>
<p>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.</p>
<p>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.</p>
<p>Fichier de configuration /etc/raidtab typique :</p>
<pre>
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
</pre>
Les disques de secours sont traités par les lignes suivantes
:
<pre>
device /dev/sdh1
spare-disk 0
</pre>
Et ainsi de suite.
<p>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.</p>
<p>A présent, on exécute :</p>
<pre>
mkraid /dev/md0
</pre>
Normalement les disques devraient s'activer furieusement durant la
construction de la matrice. On examinera le contenu du fichier
<code>/proc/mdstat</code> pour savoir ce qui se passe.
<p>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.</p>
<p>On se reportera aux options particulières de mke2fs avant de
formatter le périphérique.</p>
<p>Maintenant que le disque RAID fonctionne, on peut l'arrêter ou
le redémarrer via les commandes :</p>
<pre>
raidstop /dev/md0
</pre>
et
<pre>
raidstart /dev/md0
</pre>
<p>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.</p>
<h2><a name="ss4.7">4.7 Les superblocs persistants</a></h2>
<p>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
<code>/etc/raidtab</code> soit monté : plutôt pénible pour
démarrer sur un système de fichiers RAID.</p>
<p>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
<code>/etc/fstab</code> habituel et nécessitaient des interventions
chirurgicales dans les scripts de démarrage.</p>
<p>Les superblocs persistants résolvent ces problèmes. Lorsqu'une
matrice est initialisée avec l'option
<code>persistent-superblock</code> dans le fichier
<code>/etc/raidtab</code>, 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.</p>
<p>On gardera quand même cohérent le fichier
<code>/etc/raidtab</code> puisqu'on peut en avoir besoin
ultérieurement en cas de reconstruction de la matrice.</p>
<p>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 <b>Autodétection</b>.</p>
<h2><a name="ss4.8">4.8 Taille des blocs (chunk size)</a></h2>
<p>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.</p>
<p>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.</p>
<p>A vous de modifier ce paramètre, ainsi que la taille de blocs du
système de fichier, pour obtenir les meilleurs performances
possibles.</p>
<p>L'argument de l'option chunk-size dans le fichier
<code>/etc/raidtab</code> précise la taille en ko.</p>
<h3>RAID-0</h3>
<p>Les données sont écrites successivement sur chaque disque par
paquets de <code>chunk-size</code> octets.</p>
<p>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.</p>
<p>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.</p>
<h3>RAID-1</h3>
<p>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.</p>
<h3>RAID-4</h3>
<p>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, <code>chunk-size</code> octets seront lus
depuis N-1 disques, la parité sera calculée et
<code>chunk-size</code> octets seront écrits sur le disque de
parité.</p>
<p>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.</p>
<h3>RAID-5</h3>
<p>Le paramètre a la même signification que pour le RAID-4.</p>
<p>128 ko est une valeur raisonnable. A vous de l'ajuster.</p>
<p>On se reportera également à la section traitant des options
particulières de mke2fs qui affectent les performances du
RAID-5.</p>
<h2><a name="ss4.9">4.9 Options de mke2fs</a></h2>
<p>L'option <code>-R stride=nn</code> 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.</p>
<p>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
:</p>
<pre>
mke2fs -b 4096 -R stride=8 /dev/md0
</pre>
<p>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.</p>
<p>La taille de bloc ext2 joue <code>très</code> 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).</p>
<h2><a name="ss4.10">4.10 Autodétection</a></h2>
<p>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.</p>
<p>Requis :</p>
<ol>
<li>La gestion de l'autodétection par le noyau.</li>
<li>Les disques RAID doivent avoir été créés avec l'option de
persistance des superblocs.</li>
<li>Les partitions doivent être de type <b>0xFD</b> (à positionner
avec fdisk).</li>
</ol>
<p>Remarque : on vérifiera que la matrice RAID est arrêtée
avant de changer le type des partitions (<code>raidstop
/dev/md0</code>).</p>
<p>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é, <code>/proc/mdstat</code> doit confirmer que la matrice
RAID fonctionne.</p>
<p>Des messages semblables aux suivants apparaitront au démarrage
:</p>
<pre>
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
</pre>
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).
<p>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.</p>
<p>C'est aussi simple que ça.</p>
<p>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.</p>
<h2><a name="ss4.11">4.11 Démarrage sur un disque RAID</a></h2>
<p>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.</p>
<p>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
<code>/boot</code> 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 <code>/boot</code> 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.</p>
<p>Avec la RedHat 6.1 est fourni un patch pour lilo 21 qui permet
d'accéder à <code>/boot</code> 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
<code>dist/redhat-6.1/SRPMS/SRPMS/lilo-0.21-10.src.rpm</code>. La
version modifiée de lilo acceptera un argument du type
<code>boot=/dev/md0</code> dans le fichier
<code>/etc/lilo.conf</code> et rendra chaque disque du mirroir
utilisable au dénarrage.</p>
<p>On peut également avoir recours à une disquette de
démarrage.</p>
<h2><a name="ss4.12">4.12 Installer le système de fichiers racine
sur une couche RAID</a></h2>
<p>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.</p>
<h3>Première méthode :</h3>
<p>On dispose d'un disque supplémentaire où on peut installer le
système.</p>
<ul>
<li>Installez un système normal sur le disque supplémentaire.</li>
<li>Mettez en place un noyau incluant les patches nécessaires pour
le RAID et vérifiez que le système s'initialise correctement avec
ce noyau. Il faudra veiller à ce que le support RAID soit
<b>dans</b> le noyau et non sous forme de modules.</li>
<li>A présent, configurez et créez la matrice RAID dont vous
comptez vous servir en tant que racine. Il s'agit de la procédure
standard telle que décrite précédemment dans le document.</li>
<li>Redémarrez le système afin de vérifier que la matrice est
détectée correctement (elle devrait en tout cas).</li>
<li>Créez un système de fichier sur la nouvelle matrice avec mke2fs
et montez la en /mnt/newroot (par exemple).</li>
<li>Copiez le contenu de la racine courante sur le disque RAID. Il
existe différentes façons de faire, par exemple :
<pre>
cd /
find . -xdev | cpio -pm /mnt/newroot
</pre></li>
<li>modifiez le fichier <code>/mnt/newroot/etc/fstab</code> de
façon à ce qu'il pointe vers le périphérique <code>/dev/md?</code>
adéquat pour la racine.</li>
<li>Démontez le répertoire <code>/boot</code> courant et montez le
à la place en <code>/mnt/newroot/boot</code>.</li>
<li>Mettez à jour <code>/mnt/newroot/etc/lilo.conf</code> 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
<pre>
lilo -r /mnt/newroot
</pre>
. Lilo ne devrait pas émettre d'erreurs.</li>
<li>Redémarrez le système et admirez avec quel facilité tout se
passe comme on le souhaite :o)</li>
</ul>
<p>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.</p>
<h3>Seconde méthode :</h3>
<p>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à.</p>
<p>Il <b>faut</b> 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.</p>
<ul>
<li>Installez un système normal sur un des deux disques (qui fera
plus tard partie de la matrice). Il est important que ce disque ne
soit pas le plus petit sans quoi il ne sera pas possible de
l'ajouter à la matrice !</li>
<li>Récupérez le noyau, le patch, les outils, etc... Redémarrez le
système avec le noyau qui est muni de la gestion RAID.</li>
<li>Créez votre matrice en indiquant le disque qui occupe la racine
actuelle comme <code>failed-disk</code> dans le fichier
<code>raidtab</code> 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.</li>
<li>Redémarrez et vérifiez que la matrice RAID est correctement
activée.</li>
<li>Copiez les fichiers de la racine et modifiez les fichiers
système du disque RAID de façon à ce qu'il se référence bien en
tant que racine.</li>
<li>Lorsque le système démarre correctement depuis le disque RAID,
modifiez le fichier <code>raidtab</code> en emplaçant la directive
<code>failed-disk</code> par une directive <code>raid-disk</code>.
Ajoutez à présent ce disque à la matrice avec
<code>raidhotadd</code></li>
<li>Le système doit à présent démarrer depuis une matrice
non-dégradée.</li>
</ul>
<h2><a name="ss4.13">4.13 Démarrer le système depuis le
RAID</a></h2>
<p>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).</p>
<p>La façon normale de procéder consiste à compiler un noyau qui
inclut en dur toutes les options RAID nécessaires (NdT : je
proteste !).</p>
<p>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.</p>
<h3>Démarrage avec le RAID modularisé</h3>
<p>Il faut préciser à lilo qu'il doit également charger un
équivalent de ramdisk en sus du noyau au démarrage. La commande
<code>mkinitrd</code> permet de créer un ramdisk (ici un initrd)
contenant les modules nécessaires au montage de la racine. Commande
type :</p>
<pre>
mkinitrd --with=<module> <ramdisk name> <kernel>
</pre>
Par exemple :
<pre>
mkinitrd --with=raid5 raid-ramdisk 2.2.5-22
</pre>
<p>Ceci garantit que le module RAID adéquat sera disponible au
démarrage lorsque le noyau devra monter la racine.</p>
<h2><a name="ss4.14">4.14 Mises en garde</a></h2>
<p>Ne repartitionnez <b>JAMAIS</b> 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.</p>
<p>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é.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2><a name="s5">5. Test de la couche RAID</a></h2>
<p>Si vous utilisez le RAID pour améliorer la tolérance aux pannes,
vous voudrez surement tester votre installation afin de vérifier
son fonctionnement. Comment simule-t-on donc une défaillance ?</p>
<p>En résumé, on ne peut pas à moins de titiller un disque au
lance-flammes pour "simuler" une défaillance. On ne peut pas
prévoir ce qui va se passer en cas de perte d'un disque. Il
pourrait très bien verouiller électriquement le bus et rendre tous
les disques sur le bus inaccessibles. Je n'ai néanmoins jamais
entendu d'histoire de ce genre. Le disque signalera peut-être une
erreur de lecture/écriture à la couche IDE ou SCSI qui permettra à
son tour à la couche RAID de gérer la situation avec élégance.
Heureusement, les choses se passent assez souvent ainsi.</p>
<h2><a name="ss5.1">5.1 Défaillance d'un disque</a></h2>
<p>Débranchez le disque. Ceci n'est à faire qu'avec le système
<b>hors-tension</b> . Inutile de jouer les aventuriers de
l'ajout/suppression à chaud pour vérifier que les données
supportent bien la disparition d'un disque. Arrêtez le système,
débranchez le disque et redémarrez le de nouveau.</p>
<p>Syslog et <code>/proc/mdstat</code> permettent de vérifier
l'état de la matrice.</p>
<p>N'oubliez pas que vous <b>devez</b> employer du RAID-{1,4,5}
pour que la matrice soit capable de supporter la défaillance d'un
disque. Les modes linéaire et RAID-0 échouent complètement dans ce
genre de situation.</p>
<p>Une fois le disque rebranché (avec le courant arrêté, merci), on
ajoutera le ``nouveau'' disque au système RAID avec la commande
<code>raidhotadd</code>.</p>
<h2><a name="ss5.2">5.2 Corruption de données</a></h2>
<p>Le RAID, qu'il soit matériel ou logiciel, suppose que si une
écriture ne renvoie pas une erreur, alors elle s'est déroulée
normalement. Donc, si un diseue corrompt les données sans retourner
d'erreur, les données <em>seront</em> corrompues. Bien que ce soit
fortement improbable, on ne peut l'exclure et cela aura pour
conséquence la corruption du système de fichiers.</p>
<p>Le RAID ne peut rien faire face à ce genre de défaillances et il
n'a pas été prévu pour de toutes façons. Il est donc inutile de
déclencher sciemment des corruptions de données (avec
<code>dd</code> par exemple) pour vérifier le comportement de la
couche RAID. A moins de modifier le superbloc RAID, il est
vraisemblable que la couche RAID ne remarque rien mais que le
système de fichiers soit détruit.</p>
<p>Il s'agit du fonctionnement normal du système. Le RAID ne
garantit pas l'intégrité des données. Il permet juste de les
conserver si un disque tombe en panne (pourvu qu'on utilise un
niveau de RAID supérieur ou égal à 1).</p>
<h2><a name="s6">6. Reconstruction</a></h2>
<p>Si vous avez lu le reste du document, vous devez déjà avoir une
bonne idée de la procédure à suivre pour la reconstruction d'une
matrice dégradée. Pour résumer :</p>
<ul>
<li>Arrêtez le système.</li>
<li>Remplacez le disque défectueux.</li>
<li>Redémarrez le système.</li>
<li>Utilisez <code>raidhotadd /dev/mdX /dev/sdX</code> pour
réinsérer le disque dans la matrice.</li>
<li>Allez prendre un café pendant que la reconstruction
s'effectue.</li>
</ul>
C'est tout.
<p>Enfin, c'est généralement tout. Sauf si vous jouez de malchance
et que le système RAID est devenu inutilisable à cause de la
défaillance de plus de disques qu'il n'y en a de redondant. Ca
risque de se produire si plusieurs disques résident sur un même bus
qui est bloqué par le disque en panne. Bien qu'en état, les autres
disques sur le bus vont être inaccessibles à la couche RAID et
marqués comme défectueux. Pour une matrice RAID5 où on peut
utiliser un disque en secours, la perte de deux disques ou
davantage risque de s'avérer fatale.</p>
<p>La section suivante est tirée d'une explication que m'a donnée
Martin Bene et présente une méthode possible de récupération dans
le cas d'un scénario catastrophe tel que celui décrit. Elle
implique l'emploi de la directive <code>failed-disk</code> dans le
fichier <code>/etc/raidtab</code>. Elle ne pourra donc fonctionner
qu'avec un noyau 2.2.10 et au delà.</p>
<h2><a name="ss6.1">6.1 Rattrapage d'une défaillance de plusieurs
disques</a></h2>
<p>Scénario :</p>
<ul>
<li>un contrôleur rend l'âme et bloque simultanément l'accès à deux
disques ;</li>
<li>tous les disques d'un même bus SCSI sont bloqués à cause d'un
même disque défectueux ;</li>
<li>un cable s'envole pour le grand centre de traitement
automatisé.</li>
</ul>
En bref : le plus souvent, une panne <em>temporaire</em> se
produit sur plusieurs disques. Les superblocs RAID sont
désynchronisés et la matrice RAID refuse de s'initialiser.
<p>Une seule chose à faire : reécrire les superblocs RAID via
<code>mkraid --force</code>.</p>
<p>Pour que ça marche, le fichier <code>/etc/raidtab</code> ;
doit être à jour. S'il ne correspond pas <b>exactement</b> à
l'organisation des disques et à leur ordre, ça ne marchera pas.</p>
<p>Examinez la sortie de syslog produite lors de la tentative de
démarrage de la matrice, vous y releverez le compteur d'évenements
pour chaque superbloc. En général, il vaut mieux laisser de côté le
disque avec le compteur le plus faible, c'est à dire le plus
ancien.</p>
<p>Si vous exécutez <code>mkraid</code> sans la directive
<code>failed-disk</code>, le thread de récupération va se mettre à
fonctionner immédiatement et commencer à reconstruire les blocs de
parité - ce qui est surement un peu prématuré.</p>
<p>Avec <code>failed-disk</code>, vous préciserez quels disques
vous souhaitez voir actifs et essaierez peut-être différentes
combinaisons pour obtenir les meilleurs résultats. Pendant la
reconstruction, ne montez le système de fichier qu'en lecture
seule. J'ai été en contact avec deux personnes qui s'en sont
sorties ainsi.</p>
<h2><a name="s7">7. Performances</a></h2>
<p>Cette partie offre quelques évaluations de performances issues
de tests de systèmes employant le RAID.</p>
<p>Les tests ont été conduits avec <code>bonnie</code> et à chaque
fois sur des fichiers de taille égale à deux fois ou plus celle de
la mémoire physique de la machine.</p>
<p>Ces tests ne mesurent <em>que</em> la bande passante en
lecture/écriture pour un seul fichier de grande taille. On ne sait
donc rien des performances qu'on observerait avec un serveur web,
un serveur de news, etc... Peu d'applications du monde réel font la
même chose que <code>bonnie</code> et bien que ce genre de nombres
soit agréable à regarder, il ne s'agit pas d'indicateurs de
performances pour de véritables applications. On en est loin.</p>
<p>Concernant ma machine :</p>
<ul>
<li>Bi-Pentium Pro 150 MHz</li>
<li>256 Mo RAM (60 MHz EDO)</li>
<li>trois IBM UltraStar 9ES 4.5 GB, SCSI U2W</li>
<li>Adaptec 2940U2W</li>
<li>un IBM UltraStar 9ES 4.5 GB, SCSI UW</li>
<li>Adaptec 2940 UW</li>
<li>un noyau 2.2.7 avec les patches RAID</li>
</ul>
<p>Les trois disques U2W sont connectés au contrôleur U2W et le
disque UW au contrôleur UW.</p>
<p>Avec ou sans RAID, il ne semble pas possible de tirer plus de 30
Mo/s du bus SCSI sur cette machine. Je soupçonne que cela vienne de
la vétusté de ce dernier et de la limitation de la bande passante
de la mémoire (Nd : pardon ?).</p>
<h2><a name="ss7.1">7.1 RAID-0</a></h2>
<p><b>Lecture</b> correspond à <b>Sequential block input</b>, et
<b>Ecriture</b> à <b>Sequential block output</b>. La taille du
fichier était de 1 Go pour tous les tests. Les test ont eu lieu en
mono-utilisateur. Le gestionnaire SCSI était configuré de façon à
ne pas utiliser la queue de commands SCSI.</p>
<p><br></p>
<center>
<table border>
<tr>
<td>Chunk size</td>
<td>Block size</td>
<td>Lecture ko/s</td>
<td>Ecriture ko/s</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>4k</td>
<td>1k</td>
<td>19712</td>
<td>18035</td>
</tr>
<tr>
<td>4k</td>
<td>4k</td>
<td>34048</td>
<td>27061</td>
</tr>
<tr>
<td>8k</td>
<td>1k</td>
<td>19301</td>
<td>18091</td>
</tr>
<tr>
<td>8k</td>
<td>4k</td>
<td>33920</td>
<td>27118</td>
</tr>
<tr>
<td>16k</td>
<td>1k</td>
<td>19330</td>
<td>18179</td>
</tr>
<tr>
<td>16k</td>
<td>2k</td>
<td>28161</td>
<td>23682</td>
</tr>
<tr>
<td>16k</td>
<td>4k</td>
<td>33990</td>
<td>27229</td>
</tr>
<tr>
<td>32k</td>
<td>1k</td>
<td>19251</td>
<td>18194</td>
</tr>
<tr>
<td>32k</td>
<td>4k</td>
<td>34071</td>
<td>26976</td>
</tr>
</table>
</center>
<br>
<p>A la lecture de ce tableau il semble que le paramètre chunk-size
du RAID n'ait pas un impact important. Néanmoins, la taille de bloc
pour ext2 a intérêt à être aussi élevée que possible, soit 4 ko
(i.e. la taille d'une page) avec une architecture IA32.</p>
<h2><a name="ss7.2">7.2 RAID-0 avec queue de commandes SCSI
(TCQ)</a></h2>
<p>La queue de commandes est cette fois-ci activée avec une
profondeur égale à 8. Le reste est inchangé.</p>
<p><br></p>
<center>
<table border>
<tr>
<td>Chunk size</td>
<td>Block size</td>
<td>Lecture ko/s</td>
<td>Ecriture ko/s</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>32k</td>
<td>4k</td>
<td>33617</td>
<td>27215</td>
</tr>
</table>
</center>
<br>
<p>Aucun autre test n'a été mené. L'emploi de la queue de commandes
améliore les performances en écriture mais la différence n'est pas
énorme.</p>
<h2><a name="ss7.3">7.3 RAID-5</a></h2>
<p>On reprend les mêmes tests.</p>
<p><br></p>
<center>
<table border>
<tr>
<td>Chunk size</td>
<td>Block size</td>
<td>Lecture ko/s</td>
<td>Ecriture ko/s</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>8k</td>
<td>1k</td>
<td>11090</td>
<td>6874</td>
</tr>
<tr>
<td>8k</td>
<td>4k</td>
<td>13474</td>
<td>12229</td>
</tr>
<tr>
<td>32k</td>
<td>1k</td>
<td>11442</td>
<td>8291</td>
</tr>
<tr>
<td>32k</td>
<td>2k</td>
<td>16089</td>
<td>10926</td>
</tr>
<tr>
<td>32k</td>
<td>4k</td>
<td>18724</td>
<td>12627</td>
</tr>
</table>
</center>
<br>
<p>Les deux paramètres semblent jouer.</p>
<h2><a name="ss7.4">7.4 RAID-10</a></h2>
<p>On désigne sous ce terme la mise en mirroir de disques
concaténés ou un RAID-1 au dessus d'un RAID-0. La taille de bloc
est commune à tous les disques RAID. Je n'ai pas procédé à des
tests avec des tailles différentes bien qu'il s'agisse là d'une
configuration tout à fait licite.</p>
<p><br></p>
<center>
<table border>
<tr>
<td>Chunk size</td>
<td>Block size</td>
<td>Lecture ko/s</td>
<td>Ecriture ko/s</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>32k</td>
<td>1k</td>
<td>13753</td>
<td>11580</td>
</tr>
<tr>
<td>32k</td>
<td>4k</td>
<td>23432</td>
<td>22249</td>
</tr>
</table>
</center>
<br>
<p>Il n'y a pas eu d'autres tests. La taille des fichiers était de
900 Mo car les partitions n'offraient que 500 Mo chacune, ce qui ne
suffit pas pour un fichier de 1 Go dans cette configuration (RAID-1
de deux matrices de 1000 Mo).</p>
<h2><a name="s8">8. Remerciements</a></h2>
<p>Les personnes suivantes ont contribué à la création de ce
document :</p>
<ul>
<li>Ingo Molnar</li>
<li>Jim Warren</li>
<li>Louis Mandelstam</li>
<li>Allan Noah</li>
<li>Yasunori Taniike</li>
<li>Martin Bene</li>
<li>Bennett Todd</li>
<li>les abonnés de la liste de diffusion Linux-RAID</li>
<li>ceux que j'ai oublié, désolé :o)</li>
</ul>
<p>Envoyez vos remarques et suggestions à l'auteur de ce document.
Il n'y a pas d'autre façon d'en améliorer la qualité.</p>
</body>
</html>
|