This file is indexed.

/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 Ø&nbsp;;stergaard ( <a href=
"mailto%C2%A0:jakob@ostenfeld.dk">jakob@ostenfeld.dk</a>)</h2>
v. 0.90.7&nbsp;; 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&nbsp;://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 &nbsp;:</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
&gt; 2.3.46, voire d'un 2.4. Les patches et les outils se trouvent
par exemple à &nbsp;: <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 &nbsp;: <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
&nbsp;:</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 &nbsp;:</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é&nbsp;:</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&nbsp;:</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&nbsp;:</b> je ne vais pas m'étendre sur cet
aspect des disques IDE. En résumé &nbsp;:
<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&nbsp;:</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
&nbsp;:</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 &nbsp;:</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 &nbsp;:</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 &nbsp;:</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 &nbsp;:</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
&nbsp;:</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 &nbsp;:</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 &nbsp;:</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 &nbsp;:
<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 &nbsp;:</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&nbsp;:</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 &nbsp;:</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
&nbsp;:
<pre>
        device         /dev/sdf1
        spare-disk     0
</pre>
<p>La matrice s'initialise comme d'habitude &nbsp;:</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 &nbsp;:</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
&nbsp;:
<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 &nbsp;:</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 &nbsp;:</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é &nbsp;: 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
&nbsp;:</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 &nbsp;:</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 &nbsp;: 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
&nbsp;:</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&lt;sdb1,1&gt;
 Oct 22 00:51:59 malthe kernel: (read) sdc1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind&lt;sdc1,2&gt;
 Oct 22 00:51:59 malthe kernel: (read) sdd1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind&lt;sdd1,3&gt;
 Oct 22 00:51:59 malthe kernel: (read) sde1's sb offset: 6199872
 Oct 22 00:51:59 malthe kernel: bind&lt;sde1,4&gt;
 Oct 22 00:51:59 malthe kernel: (read) sdf1's sb offset: 6205376
 Oct 22 00:51:59 malthe kernel: bind&lt;sdf1,5&gt;
 Oct 22 00:51:59 malthe kernel: (read) sdg1's sb offset: 6205376
 Oct 22 00:51:59 malthe kernel: bind&lt;sdg1,6&gt;
 Oct 22 00:51:59 malthe kernel: autorunning md0
 Oct 22 00:51:59 malthe kernel: running: &lt;sdg1&gt;&lt;sdf1&gt;&lt;sde1&gt;&lt;sdd1&gt;&lt;sdc1&gt;&lt;sdb1&gt;
 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 &nbsp;:</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 &nbsp;:
<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 &nbsp;:</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&nbsp;: 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&nbsp;: 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 &nbsp;:</p>
<pre>
 mkinitrd --with=&lt;module&gt; &lt;ramdisk name&gt; &lt;kernel&gt;
</pre>
Par exemple &nbsp;:
<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 &nbsp;:</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 &nbsp;:</p>
<ul>
<li>un contrôleur rend l'âme et bloque simultanément l'accès à deux
disques&nbsp;;</li>
<li>tous les disques d'un même bus SCSI sont bloqués à cause d'un
même disque défectueux&nbsp;;</li>
<li>un cable s'envole pour le grand centre de traitement
automatisé.</li>
</ul>
En bref &nbsp;: 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 &nbsp;: reécrire les superblocs RAID via
<code>mkraid --force</code>.</p>
<p>Pour que ça marche, le fichier <code>/etc/raidtab</code>&nbsp;;
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 &nbsp;:</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&nbsp;: 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 &nbsp;:</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>