This file is indexed.

/usr/share/doc/HOWTO/fr-html/Software-RAID-HOWTO.html is in doc-linux-fr-html 2013.01-2.

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
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Software-RAID HOWTO</title>
</head>
<body>
<h1>Software-RAID HOWTO</h1>
<h2>Jakob &Oslash;&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&eacute;crit l'utilisation du RAID logiciel 0.90
sous Linux mis au point par Ingo Molnar et d'autres
d&eacute;veloppeurs. Il s'agit de la couche RAID qui sera standard
pour les versions 2.4.x du noyau Linux et qui est &eacute;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&egrave;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&eacute;rieure de
l'interface RAID standard dans les noyaux 2.0 et 2.2, reportez vous
&agrave; l'excellent document de Linas Vepstas ( <a href=
"mailto%C2%A0:linas@linas.org">linas@linas.org</a>) disponible via
le Linux Documentation Project &agrave; 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&eacute;f&eacute;rence pour ce HOWTO o&ugrave; les
derni&egrave;res mises &agrave; jour seront disponibles. Ce
document a &eacute;t&eacute; r&eacute;dig&eacute; par Jakob
Ostergaard &agrave; partir de nombreux messages
&eacute;lectroniques &eacute;chang&eacute;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&eacute;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&eacute;daction de ce HOWTO a &eacute;t&eacute;
motiv&eacute;e par le besoin de documentation du nouveau
syst&egrave;me RAID alors que le Software-RAID existant ne
documentait que les versions pr&eacute;c&eacute;dentes. Des
fonctionnalit&eacute;s nouvelles ont notamment &eacute;t&eacute;
introduites.</p>
<p>Pour utiliser la nouvelle mouture du RAID avec les noyaux 2.0 ou
2.2, vous devez r&eacute;cup&eacute;rer le patch correspondant, par
exemple &agrave; 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&egrave;rent directement que l'ancien
type de RAID et les patches sont donc n&eacute;cessaires.
<em>L'ancien syst&egrave;me RAID des noyaux 2.0 et 2.2 est
bugg&eacute;</em>. De surcro&icirc;t, il lui manque d'importantes
fonctionnalit&eacute;es pr&eacute;sentes dans la nouvelle
version.</p>
<p>La nouvelle mouture du RAID est en cours d'int&eacute;gration
dans les noyaux de d&eacute;veloppement 2.3.x et sera donc
disponible dans la branche 2.4. Jusqu'&agrave; la sortie de
celle-ci, il sera n&eacute;cessaire de patcher manuellement les
noyaux.</p>
<p>Peut-&ecirc;tre esssayerez vous les versions <code>-ac</code> du
noyau propos&eacute;es par Alan Cox pour disposer du RAID.
<em>Certaines</em> d'entre elles incluent le nouveau syst&egrave;me
et vous &eacute;pargneront donc l'application de patches.</p>
<p>Le HOWTO contient des informations triviales pour ceux qui
ma&icirc;trisent d&eacute;j&agrave; les principes des
syst&egrave;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&egrave;me RAID semble stable
chez moi et chez de nombreuses personnes, cela pourrait ne pas
&ecirc;tre le cas pour vous. Si vous perdez vos donn&eacute;es,
votre emploi, votre femme ou que vous vous faites &eacute;craser
par un camion, ce ne sera ni de ma faute, ni de celle des
d&eacute;veloppeurs. Vous utilisez les fonctionnalit&eacute;s RAID,
ainsi que toutes les informations contenues dans ce documenti,
&agrave; vos risques et p&eacute;rils. Il n'y a pas la moindre
garantie concernant le logiciel ou ce document ni la moindre
assurance que cela puisse servir &agrave; quoi que ce soit.
Sauvegardez toutes vos donn&eacute;es avant la moindre
manipulation. Il vaut mieux &ecirc;tre prudent que
d&eacute;sol&eacute;.</p>
<p>Ceci &eacute;tant, je dois reconnaitre que je n'ai pas eu de
probl&egrave;mes de stabilit&eacute; avec le RAID logiciel, que je
l'employe sur quelques machines et que je n'ai entendu personne
&eacute;voquer des plantages al&eacute;atoires ou des
instabilit&eacute;s avec le RAID.</p>
<h2><a name="ss1.2">1.2 Pr&eacute;requis</a></h2>
<p>Le HOWTO suppose que vous utilisez un des derniers noyaux 2.2.x
ou 2.0.x modifi&eacute; par le patch raid0145 ad&eacute;quat ainsi
que la version 0.90 des raidtools ou que vous vous servez d'un 2.3
post&eacute;rieur &agrave; la &gt; 2.3.46, voire d'un 2.4. Les
patches et les outils se trouvent par exemple &agrave; &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 &agrave; 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-&ecirc;tre parfois
n&eacute;cessaire de se restreindre &agrave; des noyaux plus
anciens si les patches ne sont pas disponibles pour le
derni&egrave;r noyau sorti.</p>
<h2><a name="s2">2. Motivation du RAID</a></h2>
<p>Il existe diff&eacute;rentes bonnes raisons pour se servir du
RAID parmis lesquelles figurent la possibilit&eacute; de fusionner
plusieurs disques physiques en un p&eacute;riph&eacute;rique
virtuel plus important, l'am&eacute;lioration des performances et
la redondance.</p>
<h2><a name="ss2.1">2.1 Aspects techniques</a></h2>
<p>Le RAID Linux est adapt&eacute; &agrave; la majeure partie des
p&eacute;riph&eacute;riques de type bloc. Peu importe que vous
utilisiez de l'IDE, du SCSI ou un m&eacute;lange des deux. Certains
ont &eacute;galement obtenu quelques succ&egrave;s en s'en servant
avec des p&eacute;riph&eacute;riques de type bloc en r&eacute;seau
(Network Block Device ou NBD).</p>
<p>V&eacute;rifiez que les bus d'acc&egrave;s aux
p&eacute;riph&eacute;riques sont assez rapides. Il n'est pas
conseill&eacute; d'installer 14 disques Ultra Wide sur une
m&ecirc;me chaine si chacun d'entre eux peut d&eacute;biter 10 Mo/s
car le bus, lui, ne d&eacute;passera pas les 40 Mo/s. Vous avez
&eacute;galement int&eacute;r&ecirc;t &agrave; ne pas mettre plus
d'un disque par interface IDE sans quoi les performances ne vont
pas &ecirc;tre fameuses. L'IDE n'est pas adapt&eacute; pour
l'acc&egrave;s simultan&eacute; &agrave; plusieurs disques sur une
m&ecirc;me interface. Toutes les cartes m&egrave;res
r&eacute;centes incluent deux ports et vous pourrez donc configurer
deux disques en RAID sans acheter de contr&ocirc;leur
suppl&eacute;mentaire.</p>
<p>La couche RAID est ind&eacute;pendante du syst&egrave;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&eacute; pour "RAID logiciel Linux". Le document
ne traite pas du RAID mat&eacute;riel.</p>
<p>Dans la description des configurations, on utilise
fr&eacute;quemment le nombre de disques et leur taille. <b>N</b>
d&eacute;signera le nombre de disques dans une matrice RAID, les
disques de secours &eacute;tant exclus, <b>S</b> sera la taille du
plus petit disque et <b>P</b> le d&eacute;bit d'un disque en Mo/s.
Quand on se servira de P, on supposera que les disques ont tous les
m&ecirc;mes performances (&agrave; v&eacute;rifier).</p>
<p>P&eacute;riph&eacute;rique et disque seront synonymes. En
g&eacute;n&eacute;ral, les matrices RAID sont davantage construites
avec des partitions qu'avec des disques complets. La combinaison de
plusieurs partitions appartenant &agrave; un m&ecirc;me disque ne
pr&eacute;sente gu&egrave;re d'int&eacute;r&ecirc;t et on entendra
donc par p&eacute;riph&eacute;rique et disque "des partitions sur
diff&eacute;rents disques".</p>
<h2><a name="ss2.3">2.3 Niveaux RAID</a></h2>
<p>Voici une br&egrave;ve description des niveaux de RAID
g&eacute;r&eacute;s par Linux. Certaines de ces infos sont basiques
mais j'ai fait mention d'&eacute;l&eacute;ments sp&eacute;cifiques
&agrave; la mise en oeuvre au sein de Linux. Sautez cette section
si vous savez ce qui se cache derri&egrave;re le RAID. Vous y
reviendrez quand vous aurez des probl&egrave;mes :o)</p>
<p>Les patches RAID pour Linux offrent les possibilit&eacute;s
suivantes &nbsp;:</p>
<ul>
<li><b>mode lin&eacute;aire</b>
<ul>
<li>Deux disques et plus sont combin&eacute;s par
concat&eacute;nation. L'&eacute;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&eacute;cessaire que les disques
soient de la m&ecirc;me taille et, pour tout dire, la taille n'est
ici d'aucune importance.</li>
<li>Il n'y a aucune redondance &agrave; ce niveau. Si un disque
tombe en panne, vous perdrez surement toutes vos donn&eacute;es.
Vous aurez peut &ecirc;tre la chance d'en r&eacute;cup&eacute;rer
une partie si, du point de vue du syst&egrave;me de fichiers, il ne
manque qu'un gros bloc cons&eacute;cutif de donn&eacute;es.</li>
<li>Les performances en lecture/&eacute;criture ne vont pas
s'am&eacute;liorer automatiquement mais si plusieurs utilisateurs
se servent simultan&eacute;ment du p&eacute;riph&eacute;rique, il
se peut qu'ils acc&egrave;dent &agrave; des disques
diff&eacute;rents et que les performances en soient
augment&eacute;es.</li>
</ul>
</li>
<li><b>RAID-0</b>
<ul>
<li>Ou "stripe". Semblable au mode lin&eacute;aire &agrave; ceci
pr&egrave;s que les lectures et les &eacute;critures ont lieu en
parall&egrave;le sur les disques. Les disques doivent avoir
sensiblement la m&ecirc;me taille. Les p&eacute;riph&eacute;riques
se remplissent progressivement de la m&ecirc;me fa&ccedil;on. Si
l'un des deux est plus grand que l'autre, l'espace
suppl&eacute;mentaire est toujours employ&eacute; 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&eacute;aire, il n'y a pas de redondance des
donn&eacute;es mais en plus vous ne serez pas capable de
r&eacute;cup&eacute;rer vos donn&eacute;es si un disque tombe en
panne. Au lieu de ce qu'il vous manque un gros bloc de
donn&eacute;es, votre syst&egrave;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/&eacute;criture augmenteront
puisque les lectures et les &eacute;critures auront lieu sur les
deux disque en m&ecirc;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
&agrave; partir de deux disques auxquels viennent
&eacute;ventuellement se greffer des disques de secours. Ce mode
duplique les informations d'un disque sur l(es)'autre(s). Bien
s&ucirc;r, les disques doivent &ecirc;tre de m&ecirc;me taille. Si
un disque est plus grand que les autres, la matrice sera de la
taille du plus petit.</li>
<li>Jusqu'&agrave; N-1 disques ot&eacute;s (ou d&eacute;fectueux),
les donn&eacute;es restent intactes et si le contr&ocirc;leur
(SCSI, IDE, etc...) survit, la reconstruction sera
imm&eacute;diatement entam&eacute;e sur un des disques de secours
apr&egrave;s d&eacute;tection de l'anomalie.</li>
<li>Les performances en &eacute;criture sont
l&eacute;g&egrave;rement inf&eacute;rieures &agrave; celles d'un
disque unique vu que les donn&eacute;es doivent &ecirc;tre
&eacute;crites sur chaque disque de la matrice. Les performances en
lecture sont <em>en g&eacute;n&eacute;ral</em> bien plus mauvaises
en raison de la mise en oeuvre au sein du code d'une
strat&eacute;gie d'&eacute;quilibrage simpliste. Cependant, cette
partie des sources a &eacute;t&eacute; revue pour le noyau
2.4.</li>
</ul>
</li>
<li><b>RAID-4</b>
<ul>
<li>Ce niveau RAID n'est pas utilis&eacute; tr&egrave;s souvent. Il
s'employe &agrave; partir de trois disques et plus. Au lieu
d'effectuer une copie des informations, on conserve la
parit&eacute; sur un disque et on &eacute;crit les donn&eacute;es
sur les autres comme on le ferait avec une matrice RAID-0. Un
disque &eacute;tant d&eacute;di&eacute; &agrave; la parit&eacute;,
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&ecirc;me taille sans quoi le S pr&eacute;c&eacute;dent
correspondra &agrave; celui du plus petit disque.</li>
<li>Si un disque lache, l'information de parit&eacute; permet de
reconstruire toutes les donn&eacute;es. Si deux disques lachent,
toutes les donn&eacute;es sont perdues.</li>
<li>On n'utilise pas beaucoup ce niveau en raison du stockage de la
parit&eacute; sur un disque unique. L'information doit &ecirc;tre
mise &agrave; jour &agrave; <em>chaque</em> fois qu'on &eacute;crit
sur un des disques, ce qui constitue un goulot
d'&eacute;tranglement si le disque de parit&eacute; n'est pas
nettement plus rapide que les autres. Cependant, si vous avez
beaucoup de petits disques lents et un disque tr&egrave;s rapide,
le RAID-4 peut s'av&eacute;rer tr&egrave;s utile.</li>
</ul>
</li>
<li><b>RAID-5</b>
<ul>
<li>Il s'agit surement du mode le plus appropri&eacute; quand on
souhaite combiner un grand nombre de disques tout en conservant de
la redondance. Le RAID-5 s'employe &agrave; partir de trois disques
avec &eacute;ventuellement des disques de secours. La matrice sera
de taille (N-1)*S, comme en RAID-4. A la diff&eacute;rence du
RAID-4, l'information de parit&eacute; est r&eacute;partie
&eacute;quitablement entre les diff&eacute;rents disques,
&eacute;vitant ainsi le goulot d'&eacute;tranglement du
RAID-4.</li>
<li>Si un des disques tombe en panne les donn&eacute;es restent
intactes. La reconstruction peut commencer imm&eacute;diatement si
des disques de secours sont disponibles. Si deux disques rendent
simultan&eacute;ment l'&acirc;me, toutes les donn&eacute;es sont
perdues. Le RAID-5 ne survit pas &agrave; la d&eacute;faillance de
plus d'un disque.</li>
<li>Les performances en lecture/&eacute;criture s'am&eacute;liorent
mais il est difficile de pr&eacute;voir de combien.</li>
</ul>
</li>
</ul>
<h3>Disques de secours</h3>
<p>Les disques de secours ne prenent pas part &agrave; la matrice
RAID jusqu'&agrave; ce qu'un des disques de celle-ci tombe en
panne. Quand un disque lache, il est marqu&eacute;
d&eacute;fectueux et la reconstruction est entam&eacute;e sur le
premier disque de secours disponible.</p>
<p>Les disques de secours renforcent donc la s&eacute;curit&eacute;
de syst&egrave;mes RAID-5 qui peuvent &ecirc;tre difficilement
accessibles. Le syst&egrave;me peut fonctionner pendant un certain
temps aec un disque d&eacute;fectueux tant que le disque de secours
assure la redondance.</p>
<p>Vous ne pouvez &ecirc;tre s&ucirc;r de la survie de votre
syst&egrave;me en cas de d&eacute;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&eacute;nom&egrave;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&eacute;liorer les performances. Le noyau se charge
lui-m&ecirc;me d'&eacute;quilibrer le swap sur plusieurs
p&eacute;riph&eacute;riques si toutes les partitions ont la
m&ecirc;me priorit&eacute; dans la fstab.</p>
<p>Un fichier fstab correct ressemble &agrave; 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 &agrave; la machine de swaper en
parall&egrave;le avec sept p&eacute;riph&eacute;riques SCSI. Aucun
besoin du RAID pour &ccedil;a vu qu'il s'agit d'une
fonctionnalit&eacute; pr&eacute;sente dans le noyau de longue date.
<p>Le RAID s'emploie pour le swap &agrave; des fins de haute
disponibilit&eacute;. Si vous configurez un syst&egrave;me pour
d&eacute;marrer sur un p&eacute;riph&eacute;rique RAID-1, le
syst&egrave;me doit &ecirc;tre capable de survivre &agrave; une
d&eacute;faillance de disque. Seulement si le syst&egrave;me
&eacute;tait en train de swaper sur le p&eacute;riph&eacute;rique
d&eacute;fectueux, vous allez surement avoir des probl&egrave;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&eacute;
du swap sous une couche RAID logicielle. Le d&eacute;bat continue
car il d&eacute;pend fortement d'autres aspects du noyau. A la date
de r&eacute;daction de ce document, il semble que swaper via le
RAID soit parfaitement stable <em>&agrave; l'exception</em> des
phases de reconstruction (i.e. lorsqu'un nouveau disque est
ins&eacute;r&eacute; dans une matrice d&eacute;grad&eacute;e). La
question ne se posera plus lorsque le noyau 2.4 sortira mais jusque
l&agrave;, &agrave; vous de pousser le syst&egrave;me dans ses
retranchements afin de savoir si la stabilit&eacute; 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&egrave;me de
fichiers au dessus d'une couche RAID, activer le RAID pour le
fichier lui m&ecirc;me ou d&eacute;clarer un
p&eacute;riph&eacute;rique RAID en tant que swap. A vous de voir.
Comme d'habitude, le disque RAID apparaitra comme un
p&eacute;riph&eacute;rique de type bloc.</p>
<h2><a name="s3">3. Aspects mat&eacute;riels</a></h2>
<p>Cette section a trait &agrave; certaines probl&egrave;mes
mat&eacute;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&ocirc;leurs IDE, le choix de ce
mat&eacute;riel est &agrave; examiner lors de la mise en place d'un
syst&egrave;me RAID.</p>
<ul>
<li><b>Stabilit&eacute;&nbsp;:</b> les caract&eacute;ristiques de
tenue des disques IDE ont jusqu'ici &eacute;t&eacute; moins bonnes
que celles des disques SCSI. Aujourd'hui encore, la garantie des
disques IDE se cantonne typiquement &agrave; un an tandis qu'elle
est de trois &agrave; cinq ans pour les disques SCSI. Bien qu'il
soit exag&eacute;r&eacute; d'affirmer que les disques IDE ont une
qualit&eacute; intrins&egrave;que moindre, il faut reconnaitre que
<em>certains</em> disques auront tendance &agrave; tomber en panne
plus souvent que leurs &eacute;quivalents SCSI. Maintenant, la
m&eacute;canique est la m&ecirc;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&eacute;parer.</li>
<li><b>Int&eacute;grit&eacute; des
donn&eacute;es&nbsp;:</b>autrefois, il n'y avait aucune garantie
que les donn&eacute;es &eacute;crites sur le disques fussent bien
celles qui avaient &eacute;t&eacute; &eacute;mises sur le bus (pas
de v&eacute;rification de parit&eacute; ni de code d'erreur,
etc...). Les disques durs IDE conformes aux sp&eacute;cifications
Ultra-DMA effectuent un calcul de v&eacute;rification sur les
donn&eacute;es qu'ils re&ccedil;oivent. Il devient donc fortement
improbable que des donn&eacute;es soient corrompues.</li>
<li><b>Performance&nbsp;:</b> je ne vais pas m'&eacute;tendre sur
cet aspect des disques IDE. En r&eacute;sum&eacute; &nbsp;:
<ul>
<li>les disques IDE sont rapides (12 Mo/s et plus)</li>
<li>le syst&egrave;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&eacute;grader.</li>
</ul>
</li>
<li><b>R&eacute;sistance aux pannes&nbsp;:</b> le gestionnaire IDE
survit g&eacute;n&eacute;ralement &agrave; la d&eacute;faillance
d'un disque IDE. La couche RAID &eacute;tiquetera le disque comme
d&eacute;fectueux et si vous employez du RAID-1 et au del&agrave;,
la machine devrait continuer &agrave; fonctionner normalement
jusqu'&agrave; ce que vous l'arr&ecirc;tiez pour les
op&eacute;rations de maintenance.</li>
</ul>
<p>Il est <b>tr&egrave;s</b> important que vous n'utilisiez
<b>qu'un</b> disque IDE par nappe. Outre la question des
performances, la d&eacute;faillance d'un disque provoque
g&eacute;n&eacute;ralement le blocage de l'interface. Avec une
configuration RAID qui supporte les d&eacute;faillances (RAID-1, 4,
5), la panne d'un disque est support&eacute;e mais l'arr&ecirc;t
simultan&eacute; de deux disques bloque la matrice. Un bus, un
disque, telle est la r&egrave;gle.</p>
<p>Les contr&ocirc;leurs PCI IDE ne manquent pas et vous pourrez
vous procurer deux &agrave; quatre bus suppl&eacute;mentaires
autour de 600 FF. Au vu de la diff&eacute;rence de prix entre les
disques SCSI et le disques IDE, je dirais qu'un syst&egrave;me RAID
IDE est des plus attractifs si on est pr&ecirc;t &agrave; se
cantonner &agrave; un nombre de disques relativement peu important
(autour de 8 &agrave; moins que l'on ne dispose de suffisamment de
connecteurs PCI).</p>
<p>L'IDE est limit&eacute; par la longueur des cables lorsqu'il
s'agit de mettre en oeuvre des matrices importantes. M&ecirc;me si
votre machine comprend suffisament de connecteurs PCI il est peu
probable que vous puissiez loger plus de huit disques sans vous
heurter &agrave; des probl&egrave;mes de corruption des
donn&eacute;es dus &agrave; la longueur des cables.</p>
<h2><a name="ss3.2">3.2 Ajout et suppression de disque &agrave;
chaud &nbsp;:</a></h2>
<p>Le sujet a effectivement chauff&eacute; la liste de diffusion
linux-kernel il y a quelques temps. Bien que la
fonctionnalit&eacute; soit pr&eacute;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 &agrave; chaud vos disques IDE
! L'IDE n'est pas pr&eacute;vu pour. Bien s&ucirc;r, &ccedil;a se
passera peut-&ecirc;tre correctement chez vous si le gestionnaire
IDE est compil&eacute; en tant que module (vous utilisez donc un
noyau 2.2 et au del&agrave;) et que vous le rechargez une fois le
disque remplac&eacute; mais vous pouvez tout aussi bien vous
retrouver avec un controleur IDE grill&eacute;. Le temps
d'arr&ecirc;t du syst&egrave;me en cas de probl&egrave;me n'aura
alors pas grand chose &agrave; voir avec celui d'une maintenance
programm&eacute;e.</p>
<p>Outre les aspects purement &eacute;lectriques qui
d&eacute;truiront joyeusement votre mat&eacute;riel, le
probl&egrave;me r&eacute;side en ce que l'interface IDE doit
&ecirc;tre r&eacute;examin&eacute;e apr&egrave;s que des disques
soient &eacute;chang&eacute;s. Le gestionnaire IDE actuel ne le
permet pas. Si le nouveau disque est rigoureusement identique
&agrave; l'ancien, il se <em>peut</em> que cela fonctionne sans
nouvel examen du bus mais, franchement, vous &ecirc;tes en train de
tenter le diable.</p>
<h3>Disques SCSI</h3>
<p>Le mat&eacute;riel SCSI n'est pas davantage pr&eacute;vu pour.
Ca <em>peut</em> n&eacute;anmoins fonctionner. Si votre
contr&ocirc;leur SCSI est capable de r&eacute;examiner le bus,
d'autoriser l'ajout et la suppression de disques, vous y arriverez
peut-&ecirc;tre. Je ne vous le conseille vraiment pas mais
&ccedil;a peut fonctionner. Griller un disque neuf pousse parfois
&agrave; revoir ses fa&ccedil;ons de faire...</p>
<p>La couche SCSI <b>devrait</b> supporter la d&eacute;faillance
d'un disque mais tous les gestionnaires SCSI n'en sont pas
capables. Si le pilote SCSI accompagne le disque d&eacute;fectueux,
pouvoir &eacute;changer ce dernier &agrave; chaud est inutile.</p>
<h3>SCA</h3>
<p>L'&eacute;change &agrave; chaud doit &ecirc;tre possible mais je
ne dispose pas du mat&eacute;riel n&eacute;cessaire pour le
v&eacute;rifier et personne ne m'a fait part d'exp&eacute;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
&eacute;crire quelque chose que je ne peux pas v&eacute;rifier mais
juste vous donner quelques indications &nbsp;:</p>
<ul>
<li>partez &agrave; la recherche de <b>remove-single-device</b>
dans le fichier <b>linux/drivers/scsi/scsi.c</b></li>
<li>jetez un oeil &agrave; <b>raidhotremove</b> et &agrave;
<b>raidhotadd</b></li>
</ul>
<p>Tous les gestionnaires SCSI ne permettent pas l'ajout et la
suppression &agrave; chaud. Dans la s&eacute;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&eacute;n&eacute;rale</a></h2>
<p>Voici ce que requi&egrave;rent tous les niveaux de RAID
&nbsp;:</p>
<ul>
<li>Un noyau, de pr&eacute;f&eacute;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&eacute;n&eacute;ralement pour
les noyaux r&eacute;cents. Les noyaux 2.4.x ne n&eacute;cessiteront
pas de patch.</li>
<li>Les utilitaires RAID.</li>
<li>De la patience, des pizzas et des amph^H^H^H^H substances
&agrave; la caf&eacute;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&eacute;pertoire
<code>daemons/raid/alpha</code>. Le noyau se trouve dans le
r&eacute;pertoire <code>kernel</code>.</p>
<p>Patchez le noyau, configurez le de fa&ccedil;on &agrave; inclure
la gestion du RAID pour les niveaux qui vous int&eacute;ressent.
Compilez et installez.</p>
<p>D&eacute;tarrez, configurez, compilez et installez les outils
RAID.</p>
<p>Jusqu'ici, tout va bien. A pr&eacute;sent, si vous
red&eacute;marrez, vous devriez avoir un fichier appel&eacute;
<code>/proc/mdstat</code>. N'oubliez jamais que ce fichier est
votre alli&eacute;. 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&eacute;riph&eacute;rique RAID n'est actif.</p>
<p>Cr&eacute;ez les partitions que vous souhaitez inclure dans
votre matrice RAID.</p>
<p>La suite des op&eacute;rations d&eacute;pend &agrave;
pr&eacute;sent du mode RAID.</p>
<h2><a name="ss4.2">4.2 Mode lin&eacute;aire</a></h2>
<p>On dispose &agrave; pr&eacute;sent de deux partitions (ou plus)
qui ne sont pas n&eacute;cessairement de la m&ecirc;me taille et
que l'on va concat&eacute;ner.</p>
<p>Editez le fichier <code>/etc/raidtab</code> de fa&ccedil;on
&agrave; correspondre &agrave; votre configuration. Pour deux
disques en mode lin&eacute;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 &agrave; stocker
sur un disque de secours.
<p>Vous vous demanderez peut-&ecirc;tre pourquoi on pr&eacute;cise
un param&egrave;tre <code>chunk-size</code> quand le mode
lin&eacute;aire ne fait que concat&eacute;ner les disques en un
disque virtuel plus important sans y acc&eacute;der en
parall&egrave;le. Vous avez tout &agrave; fait raison. Mettez y une
valeur quelconque et pensez &agrave; autre chose.</p>
<p>On cr&eacute;e la matrice &nbsp;:</p>
<pre>
  mkraid /dev/md0
</pre>
<p>La commande initialise la matrice, &eacute;crit les superblocs
persistants et active le p&eacute;riph&eacute;rique.</p>
<p>Jetez un oeil &agrave; <code>/proc/mdstat</code>. Vous devriez y
voir que la matrice fonctionne.</p>
<p>A pr&eacute;sent cr&eacute;ez un syst&egrave;me de fichiers
comme sur un p&eacute;riph&eacute;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
&eacute;gale dont on veut additionner les capacit&eacute;s de
stockage tout en en am&eacute;liorant les performances au moyen
d'acc&egrave;s simultan&eacute;s.</p>
<p>Editez le fichier <code>/etc/raidtab</code> de fa&ccedil;on
&agrave; correspondre &agrave; 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&eacute;aire, il n'y a pas de disque de secours.
Le RAID-0 n'offre aucune redondance et la d&eacute;faillance d'un
disque signifie celle de la matrice enti&egrave;re.
<p>On ex&eacute;cute &nbsp;:</p>
<pre>
  mkraid /dev/md0
</pre>
La commande initialise la matrice, &eacute;crit les superblocs
persistants et active la matrice.
<p>/dev/md0 est pr&ecirc;t &agrave; &ecirc;tre format&eacute;,
mont&eacute; et &agrave; 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 &eacute;gale
que l'on souhaite mettre en mirroir. On peut avoir des disques
suppl&eacute;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&eacute;quence.
<p>A pr&eacute;sent, on peut initialiser la matrice RAID. Son
contenu doit &ecirc;tre construit et les contenus des deux disques
(sans importance pour l'instant) synchronis&eacute;s.</p>
<p>Ex&eacute;cutez &nbsp;:</p>
<pre>
  mkraid /dev/md0
</pre>
L'initialisation de la matrice d&eacute;marrera.
<p>Examinez le fichier <code>/proc/mdstat</code>. On doit y lire
que /dev/md0 a &eacute;t&eacute; d&eacute;marr&eacute;, que le
mirroir est en cours de reconstruction et y trouver une estimation
de la dur&eacute;e de reconstruction.</p>
<p>La reconstruction a lieu durant les p&eacute;riodes
d'inactivit&eacute; au niveau des entr&eacute;es/sorties.
L'interactivit&eacute; du syst&egrave;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&eacute;riph&eacute;rique RAID pendant cette
phase.</p>
<p>Formattez la matrice pendant la reconstruction. On peut
&eacute;galement la monter et s'en servir. Bien s&ucirc;r, si le
mauvais disque lache &agrave; ce moment l&agrave;, 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&eacute; personnellement
cette configuration et ce qui suit correspond &agrave; ce qui me
para&icirc;t le plus vraisemblable.</p>
<p>On dispose de trois disques ou plus de taille sensiblement
&eacute;quivalente, l'un d'eux est nettement plus rapide que les
autres et on souhaite les combiner en un p&eacute;riph&eacute;rique
de taille plus &eacute;lev&eacute;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&eacute;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&egrave;res de mke2fs avant
de formater le p&eacute;riph&eacute;rique.</p>
<h2><a name="ss4.6">4.6 RAID-5</a></h2>
<p>On dispose de trois disques ou plus de taille sensiblement
&eacute;quivalente que l'on veut combiner en un
p&eacute;riph&eacute;rique de taille plus &eacute;lev&eacute;e tout
en assurant la redondance des donn&eacute;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&eacute;es de parit&eacute; (redondance). Si un
disque tombe en panne, les donn&eacute;es restent intactes. Si deux
disques lachent, toutes les donn&eacute;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&eacute;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&eacute;faut pour de nombreux syst&egrave;mes de fichiers. La
matrice d&eacute;riv&eacute;e du fichier de configuration
pr&eacute;c&eacute;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&egrave;me de
fichiers ext2 avec une taille de blocs de 4 ko. Rien
n'emp&egrave;che d'aller au-del&agrave; via les param&egrave;tres
de bloc de la matrice et du syst&egrave;me de fichiers si ce
dernier est plus grand ou s'il doit contenir des fichiers de grande
taille.</p>
<p>A pr&eacute;sent, on ex&eacute;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&eacute;riph&eacute;rique a &eacute;t&eacute;
cr&eacute;&eacute; avec succ&egrave;s, la reconstruction est en
cours. La matrice ne sera pas coh&eacute;rente tant que celle-ci
n'aura pas pris fin. La matrice est cependant parfaitement
op&eacute;rationnelle (&agrave; la gestion des d&eacute;faillances
pr&egrave;s) et on peut d&eacute;j&agrave; la formater et s'en
servir.</p>
<p>On se reportera aux options particuli&egrave;res de mke2fs avant
de formatter le p&eacute;riph&eacute;rique.</p>
<p>Maintenant que le disque RAID fonctionne, on peut
l'arr&ecirc;ter ou le red&eacute;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
&agrave; tout faire fonctionner, on lira les paragraphes suivants
qui traitent de l'autod&eacute;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&egrave;me de fichiers sur lequel figurait le fichier
<code>/etc/raidtab</code> soit mont&eacute; &nbsp;: plut&ocirc;t
p&eacute;nible pour d&eacute;marrer sur un syst&egrave;me de
fichiers RAID.</p>
<p>L'ancienne approche conduisait de surcro&icirc;t &agrave; des
complications pour monter des syst&egrave;mes de fichiers reposant
sur p&eacute;riph&eacute;riques RAID. Ils ne pouvaient &ecirc;tre
simplement mis dans le fichier <code>/etc/fstab</code> habituel et
n&eacute;cessitaient des interventions chirurgicales dans les
scripts de d&eacute;marrage.</p>
<p>Les superblocs persistants r&eacute;solvent ces
probl&egrave;mes. Lorsqu'une matrice est initialis&eacute;e avec
l'option <code>persistent-superblock</code> dans le fichier
<code>/etc/raidtab</code>, un superbloc de type particulier est
&eacute;crit au d&eacute;but de chaque disque prenant part &agrave;
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 &agrave; la
disponibilit&eacute; al&eacute;atoire.</p>
<p>On gardera quand m&ecirc;me coh&eacute;rent le fichier
<code>/etc/raidtab</code> puisqu'on peut en avoir besoin
ult&eacute;rieurement en cas de reconstruction de la matrice.</p>
<p>Les superblocs persistants sont obligatoires si on souhaite
b&eacute;n&eacute;ficier de l'auto-d&eacute;tection des
p&eacute;riph&eacute;riques RAID au d&eacute;marrage du
syst&egrave;me. On se reportera &agrave; la section
<b>Autod&eacute;tection</b>.</p>
<h2><a name="ss4.8">4.8 Taille des blocs (chunk size)</a></h2>
<p>Ce param&egrave;tre m&eacute;rite quelques explications. On ne
peut jamais &eacute;crire de fa&ccedil;on rigoureusement
parall&egrave;le sur un ensemble de disques. Dans le cas de deux
disques sur lesquels on devrait &eacute;crire un octet, on pourrait
souhaiter que les quatres bits de poids fort aillent toujours sur
le m&ecirc;me disque, ceux de poids faible allant sur l'autre. Le
mat&eacute;riel ne le permet pas. On d&eacute;finit donc de
fa&ccedil;on plus ou moins arbitraire une taille de bloc
&eacute;l&eacute;mentaire qui correspondra &agrave; la plus petite
quantit&eacute; de donn&eacute;es "atomique" qui sera &eacute;crite
sur les disques. L'&eacute;criture de 16 ko avec une taille de bloc
de 4 ko provoquera l'envoi du premier et du troisi&egrave;me bloc
de 4 ko vers le premier disque et celui du deuxi&egrave;me et du
quatri&egrave;me bloc vers le second disque pour une matrice RAID-0
comportant deux disques. Pour de grosses &eacute;critures, la
consommation de ressources sera minimis&eacute;e par une taille de
blocs importante tandis qu'une matrice compos&eacute;e
essentiellement de petits fichiers profitera davantage d'une taille
de blocs r&eacute;duite.</p>
<p>Ce param&egrave;tre peut &ecirc;tre sp&eacute;cifi&eacute; pour
tous les niveaux de RAID, m&ecirc;me le mode lin&eacute;aire
o&ugrave; il n'a aucun effet.</p>
<p>A vous de modifier ce param&egrave;tre, ainsi que la taille de
blocs du syst&egrave;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&eacute;cise la taille en ko.</p>
<h3>RAID-0</h3>
<p>Les donn&eacute;es sont &eacute;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'&eacute;criture de 16
ko de donn&eacute;es sur un syst&egrave;me muni de trois disques,
la couche RAID &eacute;crira simultan&eacute;ment 4 ko sur chacun
des trois disques puis &eacute;crira les 4 ko restant sur le disque
0.</p>
<p>32 ko semble un bon point de d&eacute;part pour une
majorit&eacute; de matrices mais la valeur optimale d&eacute;pend
&eacute;troitement du nombre de disques impliqu&eacute;s, du
contenu du syst&egrave;me de fichiers et de divers autres facteurs.
A vous d'exp&eacute;rimenter pour trouver la meilleure valeur.</p>
<h3>RAID-1</h3>
<p>Pour les &eacute;critures le param&egrave;tre importe peu vu que
les donn&eacute;es doivent &ecirc;tre &eacute;crites sur tous les
disques. Cependant, pour les lectures, il fixe la quantit&eacute;
de donn&eacute;es &agrave; lire en une fois depuis un disque. Tous
les disques contenant la m&ecirc;me information, les lectures
peuvent &ecirc;tre &eacute;quilibr&eacute;es d'une fa&ccedil;on
similaire au RAID-0.</p>
<h3>RAID-4</h3>
<p>Lors d'une &eacute;criture dans une matrice RAID-4,
l'information de parit&eacute; doit &ecirc;tre mise &agrave; jour
sur le disque d&eacute;di&eacute;. La taille de bloc
sp&eacute;cifie alors la taille des blocs de parit&eacute;. Si un
octet est &eacute;crit dans une matrice RAID-4,
<code>chunk-size</code> octets seront lus depuis N-1 disques, la
parit&eacute; sera calcul&eacute;e et <code>chunk-size</code>
octets seront &eacute;crits sur le disque de parit&eacute;.</p>
<p>Le param&egrave;te affecte les performances de la m&ecirc;me
fa&ccedil;on que pour le RAID-0 puisque les lectures fonctionnent
de la m&ecirc;me fa&ccedil;on.</p>
<h3>RAID-5</h3>
<p>Le param&egrave;tre a la m&ecirc;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 &eacute;galement &agrave; la section traitant
des options particuli&egrave;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 &agrave; mke2fs
d'optimiser l'emplacement des structures de contr&ocirc;le
sp&eacute;cifiques &agrave; 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&eacute;es
cons&eacute;cutives r&eacute;sideront sur un m&ecirc;me disque. Si
on souhaite construire un syst&eacute;me de fichiers ext2 avec une
taille de blocs de 4 ko, il y aura 8 blocs de donn&eacute;es
cons&eacute;cutifs dans un bloc du tableau. On fournit
l'information &agrave; mke2fs de la mani&egrave;re suivante
&nbsp;:</p>
<pre>
  mke2fs -b 4096 -R stride=8 /dev/md0
</pre>
<p>Les performances du RAID-{4,5} d&eacute;pendent fortement de
cette option. Je ne suis pas s&ucirc;r de son influence sur les
autres niveaux RAID. Si quelqu'un a des informations &agrave; ce
sujet, elles seront les bienvenues.</p>
<p>La taille de bloc ext2 joue <code>tr&egrave;s</code> fortement
sur les performances du syst&egrave;me de fichier. D&egrave;s que
la taille de ce dernier d&eacute;passe quelques centaines de Mo,
une taille de bloc de 4 ko est conseill&eacute;e (&agrave; moins
que le syst&egrave;me de fichiers ne doivent stocker de tr&egrave;s
nombreux petits fichiers).</p>
<h2><a name="ss4.10">4.10 Autod&eacute;tection</a></h2>
<p>L'autod&eacute;tection permet une reconnaissance automatique des
p&eacute;riph&eacute;riques par le noyau au d&eacute;marrage, jsute
apr&egrave;s l'identification des partitions usuelles.</p>
<p>Requis &nbsp;:</p>
<ol>
<li>La gestion de l'autod&eacute;tection par le noyau.</li>
<li>Les disques RAID doivent avoir &eacute;t&eacute;
cr&eacute;&eacute;s avec l'option de persistance des
superblocs.</li>
<li>Les partitions doivent &ecirc;tre de type <b>0xFD</b> (&agrave;
positionner avec fdisk).</li>
</ol>
<p>Remarque &nbsp;: on v&eacute;rifiera que la matrice RAID est
arr&ecirc;t&eacute;e avant de changer le type des partitions
(<code>raidstop /dev/md0</code>).</p>
<p>En suivant les trois &eacute;tapes pr&eacute;c&eacute;dentes,
l'autod&eacute;tection devrait &ecirc;tre en place. Essayez de
red&eacute;marrer. Une fois le syst&egrave;me initialis&eacute;,
<code>/proc/mdstat</code> doit confirmer que la matrice RAID
fonctionne.</p>
<p>Des messages semblables aux suivants apparaitront au
d&eacute;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 &agrave; l'autod&eacute;tection des
partitions d'une matrice RAID-5 qui n'a pas &eacute;t&eacute;
arr&ecirc;t&eacute;e correctement (la machine a plant&eacute;). La
reconstruction a lieu spontan&eacute;ment. Le montage de
l'unit&eacute; est parfaitement licite puisque la reconstruction
est transparente et que toutes les donn&eacute;es sont
coh&eacute;rentes (seule l'information de parit&eacute; qui ne sert
qu'en cas de d&eacute;faillance d'un disque est
incoh&eacute;rente).
<p>Les p&eacute;riph&eacute;riques reconnus automatiquement sont
stopp&eacute;s de m&ecirc;me quand le syst&egrave;me
s'arr&ecirc;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 &ccedil;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
&ecirc;tre supprim&eacute;es sans h&eacute;sitation dans le cadre
de matrices RAID qui ont recours &agrave;
l'autod&eacute;tection.</p>
<h2><a name="ss4.11">4.11 D&eacute;marrage sur un disque
RAID</a></h2>
<p>Il existe plusieurs fa&ccedil;ons de mettre en place un
syst&egrave;me qui monte directement sa partition racine depuis un
p&eacute;riph&eacute;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 &agrave; la main mais il
n'y a l&agrave; rien d'impossible.</p>
<p>La derni&egrave;re version officielle de lilo (21) ne
g&egrave;re pas les disques RAID et le noyau ne peut donc pas
&ecirc;tre charg&eacute; au d&eacute;marrage depuis ce genre de
p&eacute;riph&eacute;riques. Il faudra donc que le
r&eacute;pertoire <code>/boot</code> r&eacute;side sur un
syst&egrave;me de fichier hors RAID. Afin d'&ecirc;tre s&ucirc;r
que le syst&egrave;me d&eacute;marre quel que soit son &eacute;tat,
dupliquez une partition <code>/boot</code> similaire sur chaque
disque. Le BIOS sera ainsi toujours capable de charger les
donn&eacute;es depuis, par exemple le premier disque disponible. Il
faudra donc que le syst&egrave;me ne d&eacute;marre pas avec un
disque d&eacute;fectueux.</p>
<p>Avec la RedHat 6.1 est fourni un patch pour lilo 21 qui permet
d'acc&eacute;der &agrave; <code>/boot</code> sur du RAID-1. On
notera que le patch n'est pas adapt&eacute; 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&eacute;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&eacute;narrage.</p>
<p>On peut &eacute;galement avoir recours &agrave; une disquette de
d&eacute;marrage.</p>
<h2><a name="ss4.12">4.12 Installer le syst&egrave;me de fichiers
racine sur une couche RAID</a></h2>
<p>Deux m&eacute;thodes sont fournies ci-dessous. A ma
connaissance, aucune distribution ne permet l'installation sur un
disque RAID et la m&eacute;thode que je sugg&egrave;re suppose que
vous installez d'abord le syst&egrave;me sur une partition normale
avant de mouvoir les fichiers sur la matrice RAID une fois
l'installation compl&egrave;te.</p>
<h3>Premi&egrave;re m&eacute;thode &nbsp;:</h3>
<p>On dispose d'un disque suppl&eacute;mentaire o&ugrave; on peut
installer le syst&egrave;me.</p>
<ul>
<li>Installez un syst&egrave;me normal sur le disque
suppl&eacute;mentaire.</li>
<li>Mettez en place un noyau incluant les patches
n&eacute;cessaires pour le RAID et v&eacute;rifiez que le
syst&egrave;me s'initialise correctement avec ce noyau. Il faudra
veiller &agrave; ce que le support RAID soit <b>dans</b> le noyau
et non sous forme de modules.</li>
<li>A pr&eacute;sent, configurez et cr&eacute;ez la matrice RAID
dont vous comptez vous servir en tant que racine. Il s'agit de la
proc&eacute;dure standard telle que d&eacute;crite
pr&eacute;c&eacute;demment dans le document.</li>
<li>Red&eacute;marrez le syst&egrave;me afin de v&eacute;rifier que
la matrice est d&eacute;tect&eacute;e correctement (elle devrait en
tout cas).</li>
<li>Cr&eacute;ez un syst&egrave;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&eacute;rentes fa&ccedil;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&ccedil;on &agrave; ce qu'il pointe vers le
p&eacute;riph&eacute;rique <code>/dev/md?</code> ad&eacute;quat
pour la racine.</li>
<li>D&eacute;montez le r&eacute;pertoire <code>/boot</code> courant
et montez le &agrave; la place en
<code>/mnt/newroot/boot</code>.</li>
<li>Mettez &agrave; jour <code>/mnt/newroot/etc/lilo.conf</code> de
fa&ccedil;on &agrave; pointer vers le bon
p&eacute;riph&eacute;rique. Le p&eacute;riph&eacute;rique de boot
doit rester un disque normal (non-RAID) mais le disque racine doit
pointer vers la matrice RAID. Ceci fait, ex&eacute;cutez un
<pre>
lilo -r /mnt/newroot
</pre>
. Lilo ne devrait pas &eacute;mettre d'erreurs.</li>
<li>Red&eacute;marrez le syst&egrave;me et admirez avec quel
facilit&eacute; tout se passe comme on le souhaite :o)</li>
</ul>
<p>Dans le cas de disques IDE, on sp&eacute;cifiera dans le BIOS
les disques comme &eacute;tant de type ``auto-detect'' pour que la
machine puisse red&eacute;marrer m&ecirc;me si un disque
manque.</p>
<h3>Seconde m&eacute;thode &nbsp;:</h3>
<p>Cette m&eacute;thode n&eacute;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&agrave;.</p>
<p>Il <b>faut</b> que la matrice soit au moins de type 1.
L'id&eacute;e consiste &agrave; installer le syst&egrave;me sur un
disque marqu&eacute; d&eacute;fectueux du point de vue RAID puis
&agrave; copier le syst&egrave;me sur la partie restante de la
matrice RAID qui sera consid&eacute;r&eacute;e comme
d&eacute;grad&eacute;e avant de r&eacute;ins&eacute;rer le disque
d'installation et de d&eacute;clencher sa resynchronisation.</p>
<ul>
<li>Installez un syst&egrave;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 &agrave; la matrice !</li>
<li>R&eacute;cup&eacute;rez le noyau, le patch, les outils, etc...
Red&eacute;marrez le syst&egrave;me avec le noyau qui est muni de
la gestion RAID.</li>
<li>Cr&eacute;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&egrave;re
position dans le fichier ou vous aurez du mal &agrave;
d&eacute;marrer la matrice. Activez la matrice et mettez y un
syst&egrave;me de fichiers.</li>
<li>Red&eacute;marrez et v&eacute;rifiez que la matrice RAID est
correctement activ&eacute;e.</li>
<li>Copiez les fichiers de la racine et modifiez les fichiers
syst&egrave;me du disque RAID de fa&ccedil;on &agrave; ce qu'il se
r&eacute;f&eacute;rence bien en tant que racine.</li>
<li>Lorsque le syst&egrave;me d&eacute;marre correctement depuis le
disque RAID, modifiez le fichier <code>raidtab</code> en
empla&ccedil;ant la directive <code>failed-disk</code> par une
directive <code>raid-disk</code>. Ajoutez &agrave; pr&eacute;sent
ce disque &agrave; la matrice avec <code>raidhotadd</code></li>
<li>Le syst&egrave;me doit &agrave; pr&eacute;sent d&eacute;marrer
depuis une matrice non-d&eacute;grad&eacute;e.</li>
</ul>
<h2><a name="ss4.13">4.13 D&eacute;marrer le syst&egrave;me depuis
le RAID</a></h2>
<p>Pour que le noyau soit capable de monter le syst&egrave;me de
fichiers racine, les pilotes des p&eacute;riph&eacute;riques
n&eacute;cessaires doivent &ecirc;tre pr&eacute;sents dans le noyau
(NdT&nbsp;: ou charg&eacute;s via un initrd qui peut
&eacute;galement contenir les modules RAID).</p>
<p>La fa&ccedil;on normale de proc&eacute;der consiste &agrave;
compiler un noyau qui inclut en dur toutes les options RAID
n&eacute;cessaires (NdT&nbsp;: je proteste !).</p>
<p>La redHat-6.0 &eacute;tant fournie avec un noyau modulaire qui
g&egrave;re la nouvelle mouture du RAID, je vais cependant en
d&eacute;crire l'emploi si on souhaite s'en servir pour
d&eacute;marrer son syst&eacute;me depuis un volume RAID.</p>
<h3>D&eacute;marrage avec le RAID modularis&eacute;</h3>
<p>Il faut pr&eacute;ciser &agrave; lilo qu'il doit
&eacute;galement charger un &eacute;quivalent de ramdisk en sus du
noyau au d&eacute;marrage. La commande <code>mkinitrd</code> permet
de cr&eacute;er un ramdisk (ici un initrd) contenant les modules
n&eacute;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&eacute;quat sera disponible
au d&eacute;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
&agrave; une matrice RAID. Si vous devez modifier la table des
partitions d'un disque au sein d'une matrice, arr&ecirc;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&eacute;.</p>
<p>L'ajout de contr&ocirc;leurs SCSI n'est susceptible
d'am&eacute;liorer les performances que si les bus
d&eacute;j&agrave; pr&eacute;sents sont proches de la saturation.
Vous ne tirerez rien de plus de deux contr&ocirc;leurs 2940 si vous
n'avez que deux vieux disques SCSI qui ne satureraient m&ecirc;me
pas un seul contr&ocirc;leur.</p>
<p>Si vous omettez l'option de persistance des superblocs votre
matrice ne red&eacute;marrera pas spontan&eacute;ment apr&egrave;s
un arr&ecirc;t. Reprenez la cr&eacute;ation de la matrice avec
l'option correctement positionn&eacute;e.</p>
<p>Si la resynchronisation d'une matrice RAID-5 &eacute;choue
apr&egrave;s qu'un disque ait &eacute;t&eacute; ot&eacute; puis
reins&eacute;r&eacute;, l'ordre des disques dans le fichier raidtab
est peut-&ecirc;tre le responsable. Essayez de d&eacute;placer la
premi&egrave;re paire ``device ...'' et ``raid-disk ...'' en
d&eacute;but de description de la matrice.</p>
<p>La plupart des retours d'erreur observ&eacute;s sur la liste de
diffusion linux-kernel proviennent de gens qui ont
proc&eacute;d&eacute; &agrave; des m&eacute;langes douteux entre
les patches et les outils RAID. Si vous utilisez le RAID 0.90,
v&eacute;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&eacute;liorer la
tol&eacute;rance aux pannes, vous voudrez surement tester votre
installation afin de v&eacute;rifier son fonctionnement. Comment
simule-t-on donc une d&eacute;faillance ?</p>
<p>En r&eacute;sum&eacute;, on ne peut pas &agrave; moins de
titiller un disque au lance-flammes pour "simuler" une
d&eacute;faillance. On ne peut pas pr&eacute;voir ce qui va se
passer en cas de perte d'un disque. Il pourrait tr&egrave;s bien
verouiller &eacute;lectriquement le bus et rendre tous les disques
sur le bus inaccessibles. Je n'ai n&eacute;anmoins jamais entendu
d'histoire de ce genre. Le disque signalera peut-&ecirc;tre une
erreur de lecture/&eacute;criture &agrave; la couche IDE ou SCSI
qui permettra &agrave; son tour &agrave; la couche RAID de
g&eacute;rer la situation avec &eacute;l&eacute;gance.
Heureusement, les choses se passent assez souvent ainsi.</p>
<h2><a name="ss5.1">5.1 D&eacute;faillance d'un disque</a></h2>
<p>D&eacute;branchez le disque. Ceci n'est &agrave; faire qu'avec
le syst&egrave;me <b>hors-tension</b> . Inutile de jouer les
aventuriers de l'ajout/suppression &agrave; chaud pour
v&eacute;rifier que les donn&eacute;es supportent bien la
disparition d'un disque. Arr&ecirc;tez le syst&egrave;me,
d&eacute;branchez le disque et red&eacute;marrez le de nouveau.</p>
<p>Syslog et <code>/proc/mdstat</code> permettent de
v&eacute;rifier l'&eacute;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&eacute;faillance
d'un disque. Les modes lin&eacute;aire et RAID-0 &eacute;chouent
compl&egrave;tement dans ce genre de situation.</p>
<p>Une fois le disque rebranch&eacute; (avec le courant
arr&ecirc;t&eacute;, merci), on ajoutera le ``nouveau'' disque au
syst&egrave;me RAID avec la commande <code>raidhotadd</code>.</p>
<h2><a name="ss5.2">5.2 Corruption de donn&eacute;es</a></h2>
<p>Le RAID, qu'il soit mat&eacute;riel ou logiciel, suppose que si
une &eacute;criture ne renvoie pas une erreur, alors elle s'est
d&eacute;roul&eacute;e normalement. Donc, si un diseue corrompt les
donn&eacute;es sans retourner d'erreur, les donn&eacute;es
<em>seront</em> corrompues. Bien que ce soit fortement improbable,
on ne peut l'exclure et cela aura pour cons&eacute;quence la
corruption du syst&egrave;me de fichiers.</p>
<p>Le RAID ne peut rien faire face &agrave; ce genre de
d&eacute;faillances et il n'a pas &eacute;t&eacute; pr&eacute;vu
pour de toutes fa&ccedil;ons. Il est donc inutile de
d&eacute;clencher sciemment des corruptions de donn&eacute;es (avec
<code>dd</code> par exemple) pour v&eacute;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&egrave;me de fichiers soit d&eacute;truit.</p>
<p>Il s'agit du fonctionnement normal du syst&egrave;me. Le RAID ne
garantit pas l'int&eacute;grit&eacute; des donn&eacute;es. Il
permet juste de les conserver si un disque tombe en panne (pourvu
qu'on utilise un niveau de RAID sup&eacute;rieur ou &eacute;gal
&agrave; 1).</p>
<h2><a name="s6">6. Reconstruction</a></h2>
<p>Si vous avez lu le reste du document, vous devez
d&eacute;j&agrave; avoir une bonne id&eacute;e de la
proc&eacute;dure &agrave; suivre pour la reconstruction d'une
matrice d&eacute;grad&eacute;e. Pour r&eacute;sumer &nbsp;:</p>
<ul>
<li>Arr&ecirc;tez le syst&egrave;me.</li>
<li>Remplacez le disque d&eacute;fectueux.</li>
<li>Red&eacute;marrez le syst&egrave;me.</li>
<li>Utilisez <code>raidhotadd /dev/mdX /dev/sdX</code> pour
r&eacute;ins&eacute;rer le disque dans la matrice.</li>
<li>Allez prendre un caf&eacute; pendant que la reconstruction
s'effectue.</li>
</ul>
C'est tout.
<p>Enfin, c'est g&eacute;n&eacute;ralement tout. Sauf si vous jouez
de malchance et que le syst&egrave;me RAID est devenu inutilisable
&agrave; cause de la d&eacute;faillance de plus de disques qu'il
n'y en a de redondant. Ca risque de se produire si plusieurs
disques r&eacute;sident sur un m&ecirc;me bus qui est bloqu&eacute;
par le disque en panne. Bien qu'en &eacute;tat, les autres disques
sur le bus vont &ecirc;tre inaccessibles &agrave; la couche RAID et
marqu&eacute;s comme d&eacute;fectueux. Pour une matrice RAID5
o&ugrave; on peut utiliser un disque en secours, la perte de deux
disques ou davantage risque de s'av&eacute;rer fatale.</p>
<p>La section suivante est tir&eacute;e d'une explication que m'a
donn&eacute;e Martin Bene et pr&eacute;sente une m&eacute;thode
possible de r&eacute;cup&eacute;ration dans le cas d'un
sc&eacute;nario catastrophe tel que celui d&eacute;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&agrave;.</p>
<h2><a name="ss6.1">6.1 Rattrapage d'une d&eacute;faillance de
plusieurs disques</a></h2>
<p>Sc&eacute;nario &nbsp;:</p>
<ul>
<li>un contr&ocirc;leur rend l'&acirc;me et bloque
simultan&eacute;ment l'acc&egrave;s &agrave; deux
disques&nbsp;;</li>
<li>tous les disques d'un m&ecirc;me bus SCSI sont bloqu&eacute;s
&agrave; cause d'un m&ecirc;me disque d&eacute;fectueux&nbsp;;</li>
<li>un cable s'envole pour le grand centre de traitement
automatis&eacute;.</li>
</ul>
En bref &nbsp;: le plus souvent, une panne <em>temporaire</em> se
produit sur plusieurs disques. Les superblocs RAID sont
d&eacute;synchronis&eacute;s et la matrice RAID refuse de
s'initialiser.
<p>Une seule chose &agrave; faire &nbsp;: re&eacute;crire les
superblocs RAID via <code>mkraid --force</code>.</p>
<p>Pour que &ccedil;a marche, le fichier
<code>/etc/raidtab</code>&nbsp;; doit &ecirc;tre &agrave; jour.
S'il ne correspond pas <b>exactement</b> &agrave; l'organisation
des disques et &agrave; leur ordre, &ccedil;a ne marchera pas.</p>
<p>Examinez la sortie de syslog produite lors de la tentative de
d&eacute;marrage de la matrice, vous y releverez le compteur
d'&eacute;venements pour chaque superbloc. En
g&eacute;n&eacute;ral, il vaut mieux laisser de c&ocirc;t&eacute;
le disque avec le compteur le plus faible, c'est &agrave; dire le
plus ancien.</p>
<p>Si vous ex&eacute;cutez <code>mkraid</code> sans la directive
<code>failed-disk</code>, le thread de r&eacute;cup&eacute;ration
va se mettre &agrave; fonctionner imm&eacute;diatement et commencer
&agrave; reconstruire les blocs de parit&eacute; - ce qui est
surement un peu pr&eacute;matur&eacute;.</p>
<p>Avec <code>failed-disk</code>, vous pr&eacute;ciserez quels
disques vous souhaitez voir actifs et essaierez peut-&ecirc;tre
diff&eacute;rentes combinaisons pour obtenir les meilleurs
r&eacute;sultats. Pendant la reconstruction, ne montez le
syst&egrave;me de fichier qu'en lecture seule. J'ai
&eacute;t&eacute; 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 &eacute;valuations de performances
issues de tests de syst&egrave;mes employant le RAID.</p>
<p>Les tests ont &eacute;t&eacute; conduits avec
<code>bonnie</code> et &agrave; chaque fois sur des fichiers de
taille &eacute;gale &agrave; deux fois ou plus celle de la
m&eacute;moire physique de la machine.</p>
<p>Ces tests ne mesurent <em>que</em> la bande passante en
lecture/&eacute;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&eacute;el font la m&ecirc;me chose que <code>bonnie</code> et
bien que ce genre de nombres soit agr&eacute;able &agrave;
regarder, il ne s'agit pas d'indicateurs de performances pour de
v&eacute;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&eacute;s au contr&ocirc;leur
U2W et le disque UW au contr&ocirc;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&ccedil;onne que cela
vienne de la v&eacute;tust&eacute; de ce dernier et de la
limitation de la bande passante de la m&eacute;moire (Nd&nbsp;:
pardon ?).</p>
<h2><a name="ss7.1">7.1 RAID-0</a></h2>
<p><b>Lecture</b> correspond &agrave; <b>Sequential block
input</b>, et <b>Ecriture</b> &agrave; <b>Sequential block
output</b>. La taille du fichier &eacute;tait de 1 Go pour tous les
tests. Les test ont eu lieu en mono-utilisateur. Le gestionnaire
SCSI &eacute;tait configur&eacute; de fa&ccedil;on &agrave; 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&egrave;tre
chunk-size du RAID n'ait pas un impact important. N&eacute;anmoins,
la taille de bloc pour ext2 a int&eacute;r&ecirc;t &agrave;
&ecirc;tre aussi &eacute;lev&eacute;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&eacute;e avec une
profondeur &eacute;gale &agrave; 8. Le reste est
inchang&eacute;.</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 &eacute;t&eacute; men&eacute;. L'emploi de
la queue de commandes am&eacute;liore les performances en
&eacute;criture mais la diff&eacute;rence n'est pas
&eacute;norme.</p>
<h2><a name="ss7.3">7.3 RAID-5</a></h2>
<p>On reprend les m&ecirc;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&egrave;tres semblent jouer.</p>
<h2><a name="ss7.4">7.4 RAID-10</a></h2>
<p>On d&eacute;signe sous ce terme la mise en mirroir de disques
concat&eacute;n&eacute;s ou un RAID-1 au dessus d'un RAID-0. La
taille de bloc est commune &agrave; tous les disques RAID. Je n'ai
pas proc&eacute;d&eacute; &agrave; des tests avec des tailles
diff&eacute;rentes bien qu'il s'agisse l&agrave; d'une
configuration tout &agrave; 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
&eacute;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&eacute; &agrave; la
cr&eacute;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&eacute;s de la liste de diffusion Linux-RAID</li>
<li>ceux que j'ai oubli&eacute;, d&eacute;sol&eacute; :o)</li>
</ul>
<p>Envoyez vos remarques et suggestions &agrave; l'auteur de ce
document. Il n'y a pas d'autre fa&ccedil;on d'en am&eacute;liorer
la qualit&eacute;.</p>
</body>
</html>