File: Software-RAID-HOWTO

package info (click to toggle)
doc-linux-it 2000.01-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,136 kB
  • ctags: 19
  • sloc: perl: 249; makefile: 50; sh: 42
file content (3168 lines) | stat: -rw-r--r-- 123,196 bytes parent folder | download
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
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
  Software-RAID HOWTO
  Linas Vepstas, linas@linas.org
  v0.54  21 Novembre 1998

  RAID sta per "Redundant Array of Inexpensive Disks", un modo per
  creare un sottosistema di dischi veloce e affidabile da una serie di
  dischi singoli.  RAID pu proteggere da un malfunzionamento del disco
  e pu anche migliorare la situazione di un solo disco in caso di un
  malfunzionamento.  Questo documento  un tutorial/HOWTO/FAQ per gli
  utenti delle estensioni MD del kernel di Linux, dei tools ad esse
  associati, e del loro uso. Le estensioni MD implementano RAID-0
  (striping), RAID-1 (mirroring), RAID-4 e RAID-5 tramite software.
  Cos, con le MD, non sono richiesti hardware o controller speciali per
  ottenere molti dei benefici della tecnologia RAID.  Documentazione
  tradotta da Marco Meloni - eventuali suggerimenti o correzioni della
  traduzione italiana e contributi in italiano per l'autore possono
  essere inviati al traduttore: ( tonno@stud.unipg.it )


     Preambolo
        (la licenza viene riportata anche in inglese. ndt)
        Questo documento  copyright di Linas Vepstas (linas@linas.org)
        e viene distribuito nei termini della licenza GPL. Il permesso
        di usare, copiare, distribuire questo documento per qualsiasi
        utilizzo  concesso a patto che il nome dell'autore e
        dell'editore e questo preambolo appaiano in ogni copia e/o
        documento, e che una versione non modificata di questo documento
        sia resa liberamente disponibile.  Questo documento 
        distribuito nella speranza che sia utile ma SENZA ALCUNA
        GARANZIA n espressa n implicita. Anche se ogni sforzo  stato
        fatto per assicurare la accuratezza delle informazioni
        documentate qui di seguito, l'autore / editore / curatore NON SI
        ASSUME RESPONSABILIT per qualsiasi errore, o per qualsivoglia
        danno, diretto o consequenziale risultante dall'uso delle
        informazioni contenute in questo documento.
        This document is GPL'ed by Linas Vepstas (linas@linas.org).
        Permission to use, copy, distribute this document for any
        purpose is hereby granted, provided that the author's / editor's
        name and this notice appear in all copies and/or supporting
        documents; and that an unmodified version of this document is
        made freely available.  This document is distributed in the hope
        that it will be useful, but WITHOUT ANY WARRANTY, either
        expressed or implied.  While every effort has been taken to
        ensure the accuracy of the information documented herein, the
        author / editor / maintainer assumes NO RESPONSIBILITY for any
        errors, or for any damages, direct or consequential, as a result
        of the use of the information documented herein.


        RAID, anche se concepito per aumentare l'affidabilit del
        sistema tramite la ridondanza, pu anche portare ad un falso
        senso di sicurezza e confidenza quando usato impropriamente.
        Questa falsa confidenza pu portare a disastri ancora maggiori.
        Si noti in particolare che RAID  progettato per proteggere in
        caso di un funzionamento anomalo *del disco*, non in caso di un
        calo di tensione o di un errore dell'operatore. Cali di
        tensione, kernel di sviluppo contenenti errori o
        operatori/amministratori di sistema possono portare ad un
        danneggiamento non recuperabile dei dati!  RAID *non*
        sostituisce il normale backup del sistema.  Quindi sappiate cosa
        state facendo, fate sempre delle prove, state sul chi vive!

  1.  Introduzione



  1. D: Cosa  RAID?

       R: RAID sta per "Redundant Array of Inexpensive Disks", un
       modo per creare un sottosistema di dischi veloce e affid
       abile da una serie di dischi singoli. Nel mondo dei PC "I"
        diventata iniziale di "Indipendent", mentre il mercato
       continua a differenziare IDE e SCSI. Nel suo significato
       originale "I" significava "Inexpensive" (a basso costo. ndt)
       se comparato ad un mainframe 3380 DASD grande quanto un
       refrigeratore, dei drive mostruosi che facevano sembrare
       economiche le belle case e robetta gli anelli di diamante.



  2. D: Cos' questo documento?

       R: Questo documento  un tutorial/HOWTO/FAQ per gli utenti
       delle estensioni MD del kernel di Linux, dei tools ad esse
       associati e sul loro uso.  Le estensioni MD implementano
       RAID-0 (striping), RAID-1 (mirroring), RAID-4 e RAID-5
       tramite software. Con le MD, non sono cos richiesti hard
       ware o controller speciali per ottenere molti dei benefici
       della tecnologia RAID.

       Questo documento NON  un'introduzione alla tecnologia RAID;
       questa dovrete cercarla da qualche altra parte.




  3. D: Quali livelli di RAID implementa il kernel di Linux?

       R: Striping (RAID-0) e la concatenazione lineare sono parte
       dei kernel della serie 2.x.  La qualit di questo codice 
       buona (production quality);  ben compreso e ben aggiornato.
        usato in diversi grandi USENET news server.


       RAID-1, RAID-4 e RAID-5 sono parte del kernel dalla versione
       2.1.63 in poi. Per i kernel delle serie 2.0.x e 2.1.x , vi
       sono patch che forniscono questa funzione. Non sentitevi
       obbligati ad aggiornare il kernel alla versione 2.1.63;
       l'aggiornamento del kernel  difficile;  *molto* pi facile
       applicare una patch ad un kernel precedente. La maggioranza
       degli utenti di RAID utilizza kernel 2.0.x, ed  su queste
       versioni che si  focalizzato lo sviluppo storico della
       tecnologia RAID. Al momento queste implementazioni sono da
       considerarsi in stadio di codice "quasi di buona qualit";
       non ci sono bug noti ma ci sono dei lati poco sofisticati e
       dei setup di sistema non testati. Sono comunque molti gli
       utenti che usano il Software RAID in un ambiente di lavoro.


       La funzionalit RAID-1 "hot reconstruction"  stata
       recentemente introdotta (Agosto 1997) e deve essere
       considerata in stadio di alfa testing. La funzionalit
       RAID-5 "hot reconstruction" sar in alfa test prima o poi.


       Una parola va spesa sulla prudenza da usare con i kernel di
       sviluppo della serie 2.1.x: questi sono meno stabili per
       molteplici ragioni. I nuovi controller di dischi (ad es.
       Ultra Promise) sono supportati solo nei kernel 2.1.x.
       Tuttavia i kernel della serie 2.1.x hanno subito molti
       cambiamenti del driver per i dispositivi a blocchi, nel
       codice DMA e interrupt, in quello per le interfacce PCI,
  IDE, SCSI e nel driver dei controller di dischi. La
  combinazione di questi fattori, abbinata ad hard disk a
  basso prezzo e/o a cavi di scarsa qualit pu portare a
  discreti disastri. Il tool ckraid, come fsck e mount mette
  sotto stress il sistema RAID. Tutto questo pu portare
  all'impossibilit di fare il boot del sistema, una
  situazione dove anche la combinazione magica alt-SysReq non
  ci salver. Siate prudenti con i kernel 2.1.x e aspettatemi
  problemi. Oppure utilizzate ancora il kernel 2.0.34.




  4. D: Utilizzo un vecchio kernel. Dove posso trovare le patch?

       R: La funzionalit RAID-0 Software e quella "linear mode"
       fanno parte di tutti i nuovi kernel di Linux. Le patch per
       le funzionalit Software RAID-1,4,5 sono disponibili su
       <http://luthien.nuclecu.unam.mx/~miguel/raid>.  e sul quasi
       mirror <ftp://linux.kernel.org/pub/linux/daemons/raid/> per
       patch, tool e varie..



  5. D: Dove posso trovare del materiale sulla tecnologia RAID per
     Linux?

       R:

         Panoramica generale su RAID:
          <http://www.dpt.com/uraiddoc.html>.

         Opzioni di RAID per Linux:
          <http://linas.org/linux/raid.html>.

         Ultima versione di questo documento:
          <http://linas.org/linux/Software-RAID/Software-
          RAID.html>.

         Archivio della mailing-list Linux-RAID:
          <http://www.linuxhq.com/lnxlists/>.

         Linux Software RAID Home Page:
          <http://luthien.nuclecu.unam.mx/~miguel/raid>.

         Linux Software RAID tools:
          <ftp://linux.kernel.org/pub/linux/daemons/raid/>.

         Come configurare linear/stripped Software RAID:
          <http://www.ssc.com/lg/issue17/raid.html>.

         Bootable RAID mini-HOWTO:
          <ftp://ftp.bizsystems.com/pub/raid/bootable-raid>.

         Root RAID HOWTO: <ftp://ftp.bizsystems.com/pub/raid/Root-
          RAID-HOWTO>.

         Linux RAID-Geschichten:
          <http://www.infodrom.north.de/~joey/Linux/raid/>.



  6. D: Chi posso accusare di aver scritto questo documento?

       R: Questo documento  stato messo insieme da Linas Vepstas.
       Comunque molte informazioni e anche qualche parola sono
  state fornite da:

    Bradley Ward Allen <ulmo@Q.Net>

    Luca Berra <bluca@comedia.it>

    Brian Candler <B.Candler@pobox.com>

    Bohumil Chalupa <bochal@apollo.karlov.mff.cuni.cz>

    Rob Hagopian <hagopiar@vu.union.edu>

    Anton Hristozov <anton@intransco.com>

    Miguel de Icaza <miguel@luthien.nuclecu.unam.mx>

    Marco Meloni <tonno@stud.unipg.it>

    Ingo Molnar <mingo@pc7537.hil.siemens.at>

    Alvin Oga <alvin@planet.fef.com>

    Gadi Oxman <gadio@netvision.net.il>

    Vaughan Pratt <pratt@cs.Stanford.EDU>

    Steven A. Reisman <sar@pressenter.com>

    Michael Robinton <michael@bzs.org>

    Martin Schulze <joey@finlandia.infodrom.north.de>

    Geoff Thompson <geofft@cs.waikato.ac.nz>

    Edward Welbon <welbon@bga.com>

    Rod Wilkens <rwilkens@border.net>

    Johan Wiltink <j.m.wiltink@pi.net>

    Leonard N. Zubkoff <lnz@dandelion.com>

    Marc ZYNGIER <zyngier@ufr-info-p7.ibp.fr>


     Copyright

    Copyright (C) 1994-96 Marc ZYNGIER

    Copyright (C) 1997 Gadi Oxman, Ingo Molnar, Miguel de
     Icaza

    Copyright (C) 1997, 1998 Linas Vepstas

    Secondo le leggi sul copyright, i copyright sulle
     rimanenti parti sono implicitamente di coloro che hanno
     contribuito a questo documento e che sono stati
     precedentemente menzionati.


     Grazie a tutti di essere qui!





  2.  Considerazioni su RAID


  1. D: Cosa  RAID? Perch mai dovrei usarlo?

       R: RAID  una maniera per combinare diversi disk drive in
       una singola unit, in modo da aumentare le prestazioni e/o
       l'affidabilit. Vi sono diversi tipi e implementazioni di
       RAID, ognuna con i suoi vantaggi e svantaggi. Per esempio,
       mettendo una copia degli stessi dati su due dischi (cosa
       chiamata disk mirroring, o RAID livello 1), le prestazioni
       in lettura possono essere migliorate leggendo alternativa
       mente da ogni disco nel sistema di mirror. In media ogni
       disco  meno occupato poich effettua solo 1/2 (nel caso di
       2 dischi) o 1/3 (nel caso di tre dischi e cos via) delle
       letture richieste. In pi un sistema di mirror pu aumentare
       l'affidabilit: se un disco si rompe, gli altri dischi con
       tengono una copia dei dati. Differenti maniere di combinare
       pi dischi in uno, dette livelli RAID, possono fornire una
       superiore capacit di immagazzinamento dei dati del semplice
       mirroring, o possono alterare i tempi di attesa (tempi di
       accesso), o il throughput (transfer rate), nella lettura o
       scrittura, offrendo comunque la ridondanza che risulta utile
       in caso di malfunzionamenti.

       Anche se RAID pu proteggere da eventuali malfunzionamenti
       del disco, non protegge da errori dell'operatore e dell'
       amministratore (errori umani), o da errori dovuti a bug di
       programmazione (forse dovuti anche ad errori nello stesso
       software RAID). La rete abbonda di storie tragiche di
       amministratori di sistema che hanno installato RAID e hanno
       perso tutti i loro dati.  RAID non sostituisce un backup
       frequente e regolarmente programmato.


       RAID pu essere implementato via hardware, attraverso
       speciali controller di dischi, o via software, come un
       modulo del kernel che si interpone tra i driver di basso
       livello dei dischi e il file system. L'hardware RAID
       consiste comunque di un "controller di dischi", una
       periferica alla quale si possono collegare i disk drive.
       Usualmente si presenta come una scheda che si pu connettere
       su uno slot ISA/EISA/PCI/S-Bus/MicroChannel. Tuttavia
       qualche controller RAID  fatto per connettersi a met del
       cavo che collega il normale controller ai dischi. Quelli
       piccoli possono entrare nell'alloggiamento di un drive;
       quelli grandi possono essere installati in un loro cabinet
       con i loro alloggiamenti per dischi e una loro
       alimentazione.  Il pi recente hardware RAID usato con le
       ultime e pi veloci CPU fornir probabilmente la migliore
       performance, ad un prezzo comunque abbastanza alto. Questo
       perch molti controller RAID contengono un DSP e della
       memoria cache che permette di togliere una fetta
       considerevole di carico alla CPU, e permettono un alto
       transfer rate grazie alla ampia memoria cache del
       controller. Il vecchio hardware RAID pu agire come "freno"
       del sistema se usato con le nuove CPU: i vecchi DSP e
       memorie cache fanno da collo di bottiglia e la performance
       globale  spesso superata da quella del semplice RAID
       software e dai nuovi, normalissimi, controller.  Il RAID
       implementato via hardware  pu essere vantaggioso rispetto a
       quello via software se pu far uso della sincronizzazione
       dei dischi e pu sapere la posizione della testina del disco
       rispetto al blocco del disco desiderato.   vero per che
       molti dischi moderni (a basso costo) non offrono questi
       livelli di informazione e controllo sulla loro attivit e
  quindi molto hardware RAID non ne trae vantaggio.
  L'hardware RAID di diverse marche, versioni e modelli 
  normalmente incompatibile. Se un controller RAID si rompe,
  deve essere rimpiazzato da un altro controller dello stesso
  tipo. Al momento della stesura di questo documento (giugno
  1998) un'ampia gamma di controller hardware funzioner sotto
  Linux; in ogni caso nessuno di questi viene venduto con
  delle utilit di configurazione e gestione che funzionino
  sotto Linux.

  Software-RAID  formato da un set di moduli del kernel,
  combinato con delle utilit di gestione che implementano
  RAID solamente tramite software e non richiedono hardware
  speciale. Il sottosistema RAID di Linux  implementato come
  strato del kernel che si pone tra i driver a basso livello
  dei dischi (per dischi IDE, SCSI e Paraport) e l'interfaccia
  del dispositivo a blocchi. Il file system, sia esso ext2fs,
  DOS-FAT o altro, rimane sopra l'interfaccia del dispositivo
  a blocchi. Software-RAID, grazie alla sua natura software,
  risulta essere pi flessibile di una soluzione hardware.  Il
  lato negativo  che richiede un maggiore utilizzo della CPU
  per poter girare bene rispetto ad una uguale implementazione
  hardware. Naturalmente sul costo non pu essere battuto.
  Software-Raid ha una ulteriore importante caratteristica
  distintiva: opera su partizioni, perci la partizione RAID 
  formata da un certo numero di partizioni di dischi. Questo
  contrasta con le soluzioni adottate da gran parte dell'
  hardware RAID, che uniscono assieme interi dischi per
  formarne una serie.  Fatto sta che utilizzando l'hardware si
  ha una sottosistema RAID trasparente rispetto al sistema
  operativo, cosa che tende a semplificare la gestione. Con il
  software, ci sono molte pi opzioni di configurazione e
  scelte, che tendono a complicare la faccenda.


  Al momento della stesura di questo testo (giugno 1998) la
  gestione del RAID sotto Linux non  affatto banale, ed  una
  buona prova anche per degli esperti amministratori di
  sistema.  La teoria delle operazioni  complessa. I tool di
  sistema richiedono  modifiche agli script di avvio.
  Riprendere il controllo della situazione dopo un
  malfunzionamento del disco  un'operazione complessa che
  agevola l'errore umano. RAID non  per i novizi, ed ogni
  beneficio che pu apportare all'affidabilit e alle
  prestazioni pu essere facilmente controbilanciato da una
  maggiore complessit. In realt i moderni dischi sono
  incredibilmente affidabili e le moderne CPU e i controller
  sono veramente potenti. Si possono ottenere pi facilmente i
  livelli di prestazione e l'affidabilit desiderate
  acquistando hardware di alta qualit e/o pi veloce



  2. D: Cosa sono i livelli RAID? Perch cos tanti? Cosa li distingue?

       R: Differenti livelli RAID hanno prestazioni, ridondanza,
       capacit di immagazzinamento, affidabilit e costi differ
       enti. Molti, ma non tutti, i livelli RAID offrono ridondanza
       per cautelarsi contro i malfunzionamenti dei dischi. Di
       quelli che implementano la ridondanza RAID-1 e RAID-5 sono i
       pi popolari.  RAID-1 offre migliori prestazioni mentre
       RAID-5 un uso pi efficiente dello spazio disco a dispo
       sizione. Comunque cercare la migliore prestazione  una cosa
       completamente differente poich la performance dipende
       fortemente da un'ampia gamma di fattori, dal tipo di appli
       cazione alle dimensioni delle strisce, dei blocchi e dei
  file. Gli aspetti pi difficoltosi della ricerca della
  migliore performance sono rimandati ad una sezione di questo
  HOWTO che vedremo dopo.

  Quanto segue descrive i differenti livelli RAID nel contesto
  dell'implementazione su Linux del Software RAID.


    RAID-linear  una semplice concatenazione di partizioni
     che creano una pi ampia partizione virtuale.  utile se
     si ha un certo numero di piccoli dischi e si vuole creare
     una unica, grande partizione. Questa concatenazione non
     offre ridondanza ed in effetti diminuisce l'affidabilit
     globale; la partizione cos creata smetter di funzionare
     non appena un solo disco si rovina.


    RAID-1  chiamato anche "mirroring".  Due (o pi)
     partizioni, tutte della stessa grandezza, contengono
     ciascuna una copia degli stessi dati che risultano
     disposti nella stessa maniera sulle due partizioni (in
     inglese "disk-block by disk-block". ndt).  Il mirroring
     offre una forte protezione contro i malfunzionamenti dei
     dischi: se un disco si rompe se ne ha un altro con gli
     stessi dati. Il mirroring pu anche migliorare le
     prestazioni in sistemi "I/O laden" (con grossi carichi di
     input-output. ndt) poich le richieste di lettura possono
     essere divise su pi dischi. Sfortunatamente il mirroring
      il meno efficiente in materia di capacit di
     immagazzinamento: due partizioni in mirroring posso
     immagazzinare gli stessi dati di una.



    "Striping"  l'idea che sta dietro a tutti gli altri
     livelli RAID. Una striscia (in inglese "stripe" da cui il
     nome di "striping". ndt)  una sequenza continua di
     blocchi del disco. Una striscia pu essere cos corta da
     contenere un solo blocco disco o pu contenerne
     centinaia. I driver RAID dividono le partizioni in
     strisce; i vari livelli RAID differiscono nella maniera
     di organizzare le strisce e nei dati che vi memorizzano.
     Il rapporto tra le dimensioni delle strisce, la grandezza
     pi ricorrente dei file nel file system e la loro
     disposizione nel disco  quello che determina le
     prestazioni globali di un sottosistema RAID.



    RAID-0  molto simile a RAID-linear, tranne per il fatto
     che le partizioni che lo compongono vengono divise in
     strisce e quindi suddivise. Come nel caso del RAID-linear
     il risultato  una singola partizione virtuale. Ancora
     come RAID-linear, RAID-0 non offre ridondanza diminuendo
     quindi l'affidabilit globale: il malfunzionamento di un
     solo disco mette fuori uso tutto. Spesso si crede che
     RAID-0 abbia prestazioni migliori rispetto a RAID-linear.
     Questo pu essere o non essere vero, dipendendo dalle
     caratteristiche del file system, dalla grandezza pi
     frequente dei file comparata con la dimensione delle
     strisce e dal tipo di carico a cui  sottoposto. Il file
     system ext2fs dispone i file in una partizione in modo da
     diminuire la frammentazione. Cos, per semplicit, ogni
     dato accesso pu essere indirizzato ad uno o pi dischi e
     quindi la suddivisione delle strisce su pi dischi non
     offre un vantaggio apparente. Comunque sia vi sono delle
     differenze nelle prestazioni, dipendenti dai dati, dal
     carico di lavoro e dalla dimensione delle strisce.



    RAID-4 suddivide in strisce come RAID-0, ma richiede una
     partizione aggiuntiva per memorizzare le informazioni
     sulla parit. La parit  usata per offrire ridondanza
     sui dati: se un disco si rovina i dati sui dischi
     rimanenti possono essere usati per ricostruire quelli che
     erano sul disco rotto. Dati N dischi di dati e un disco
     di parit, la striscia di parit  computata prendendo
     una striscia da ognuno dei dischi di dati ed effettuando
     un XOR tra di esse. Quindi la capacit di memorizzazione
     di una serie di (N+1) dischi RAID-4  N, molto meglio del
     mirroring di (N+1) dischi e buona come un setup RAID-0,
     per N grande. Da notare che per N=1 vi  un disco di dati
     e un disco di parit e RAID-4 somiglia molto al
     mirroring, nel quale ognuno dei due dischi  la copia
     dell'altro. RAID-4 NON offre le prestazioni in
     lettura/scrittura del mirroring ed anzi la sua
     performance in scrittura  considerevolmente peggiore.
     In breve questo accade a causa del fatto che
     l'aggiornamento della parit richiede la lettura della
     vecchia parit prima che la nuova parit venga calcolata
     e scritta.  In ambienti con un grosso carico di scrittura
     il disco di parit pu diventare un collo di bottiglia
     poich ogni processo di scrittura deve accedere al disco
     di parit.



    RAID-5 evita il collo di bottiglia in scrittura di RAID-4
     memorizzando la striscia di parit su ognuno dei dischi.
     Ovviamente la prestazione in scrittura non  ancora buona
     come quella del mirroring, visto che la striscia di
     parit deve anche qui essere letta e deve esservi
     effettuato lo XOR prima che sia scritta. Anche la
     prestazione in lettura non  buona come quella del
     mirroring poich, dopo tutto, vi  una sola copia dei
     dati e non due o pi. Il vantaggio principale di RAID-5
     sul mirroring  che offre ridondanza e protezione nel
     caso di malfunzionamento di un solo disco, e allo stesso
     tempo ha una capacit di memorizzazione molto pi alta
     quando  usato con tre o pi drive.



    RAID-2 e RAID-3 sono usati raramente, e sono stati in
     qualche maniera resi obsoleti dalla moderna tecnologia
     dei dischi. RAID-2  simile a RAID-4, ma memorizza
     informazioni ECC al posto della parit.  Poich tutti i
     dischi moderni incorporano sotto sotto un controllo ECC,
     il vantaggio  minimo. RAID-2 pu dare una maggiore
     coerenza ai dati se viene a mancare la corrente mentre 
     in corso un'operazione di scrittura; per un gruppo di
     continuit e uno shutdown pulito danno gli stessi
     vantaggi.  RAID-3  simile a RAID-4 tranne per il fatto
     che usa la minore grandezza possibile per le strisce.  Il
     risultato  che ogni operazione di lettura interessa
     tutti i dischi, facendo diventare difficile/impossibile
     soddisfare richieste di I/O contemporanee. Per evitare il
     ritardo dovuto alla latenza rotazionale RAID-3 richiede
     che la rotazione di tutti i dischi possa essere
     sincronizzata. Molto hardware moderno non dispone della
     capacit di sincronizzazione o, se ne dispone, mancano i
     connettori necessari, i cavi e la documentazione di chi
     lo ha prodotto. N RAID-2 n RAID-3 sono livelli RAID
     supportati dai driver di Software RAID per Linux.



    Altri livelli RAID sono stati definiti da vari
     ricercatori e produttori. Molti di questi non sono altro
     che la sovrapposizione di un tipo di raid su un altro.
     Qualcuno richiede dell'hardware speciale e altri sono
     protetti da brevetto. Non vi  una nomenclatura
     universalmente accettata per questi altri livelli. A
     volte i vantaggi di questi altri sistemi sono piccoli o
     almeno non appaiono finch il sistema non  sottoposto ad
     un alto livello di stress. Eccettuata la sovrapposizione
     di RAID-1 su RAID-0/linear, il Software RAID per Linux
     non consente nessuna di queste altre variazioni.



  3.  Considerazioni sul setup e sull'installazione


  1. D: Quale  il modo migliore di configurare Software RAID?

       R: Continuamente riscopro il fatto che la pianificazione del
       file-system  uno dei lavori pi difficili sotto Unix. Per
       rispondere alla domanda, posso descrivere cosa si pu fare.

       Supponiamo il setup che segue:

         2 dischi EIDE, da 2.1 Gb ciascuno.


       disco partizione montata su   dimensione    dispositivo
         1      1       /                 300M   /dev/hda1
         1      2       swap               64M   /dev/hda2
         1      3       /home             800M   /dev/hda3
         1      4       /var              900M   /dev/hda4

         2      1       /root             300M   /dev/hdc1
         2      2       swap               64M   /dev/hdc2
         2      3       /home             800M   /dev/hdc3
         2      4       /var              900M   /dev/hdc4





    Ogni disco  su un controller (e cavo) separato.  La mia
     teoria  che un guasto al controller o al cavo non
     mander in tilt tutti e due i dischi. Questo permette un
     miglioramento delle performance rispetto alla gestione di
     operazioni parallele

    Installare Linux su (/) della  partizione /dev/hda1.
     Marcare questa partizione come avviabile.

    /dev/hdc1 conterr una copia ``fredda'' di /dev/hda1.
     Questa non  una copia RAID,  proprio una semplice
     copia. Serve solamente nel caso che il primo disco si
     rompa; si pu usare un disco, di recupero, marcare
     /dev/hdc1 come avviabile, e usare questa partizione per
     continuare a lavorare senza dover reinstallare il
     sistema. Pu anche essere utile mettere una copia del
     kernel di /dev/hdc1 su LILO per semplificare il boot in
     caso di malfunzionamento.

     Qui si suppone che nel caso di un grave malfunzionamento
     si possa ancora far partire il sistema senza
     preoccupazioni riguardanti la corruzione dei superblock
     raid o di altri errori del raid che non si capiscono.

    /dev/hda3 e /dev/hdc3 saranno il mirror /dev/md0.

    /dev/hda4 e /dev/hdc4 saranno il mirror /dev/md1.

    abbiamo scelto/var e /home per essere mirrorate in
     partizioni separate, seguendo questa logica

    / (la partizione root) conterr dati relativamente
     statici, non soggetti a cambiamenti. Ad ogni effetto sar
     si sola lettura anche se non sar impostata e montata
     veramente in sola lettura


    /home conterr i dati che cambiano "lentamente".

    /var conterr i dati che cambiano rapidamente, inclusi i
     mail spool, i database ed i log del web server.

     L'idea che sta dietro all'uso di pi partizioni separate
      che se, per qualche bizzarra, ragione che sia un errore
     umano, un calo di tensione, o altro il sistema operativo
     impazzisce, il danno  limitato ad una sola partizione.
     In un caso tipico vi  un calo di tensione mentre il
     sistema sta scrivendo sul disco. Questo lascer
     sicuramente il file system in uno stato di
     inutilizzabilit, a cui sar posto rimedio da fsck nel
     boot seguente. Anche se fsck far del suo meglio per
     rimettere a posto la situazione evitando di fare
     ulteriori danni,  confortante sapere che ogni danno 
     stato limitato ad una sola partizione. In un altro caso
     tipico l'amministratore di sistema fa un errore durante
     le operazioni di recupero del file system, cosa che porta
     alla cancellazione o alla distruzione dei dati.  L'uso
     delle partizioni pu aiutare a contenere le ripercussioni
     degli errori dell'operatore.

    Un'altra scelta ragionevole per la disposizione delle
     partizioni potrebbe essere quella di /usr o di /opt.  In
     effetti, /opt e /home sono una buona scelta come
     partizioni RAID-5, se si hanno pi hard disk. Una parola
     sulla prudenza da utilizzare: NON mettere /usr in una
     partizione RAID-5. Se si avesse un grave malfunzionamento
     si potrebbe scoprire che non si pu montare /usr, e che
     si ha bisogno di qualche strumento che vi risiede (ad es.
     i programmi per la rete, o il compilatore.)  Con RAID-1,
     se si ha un malfunzionamento e RAID smette di funzionare,
     si pu almeno montare uno dei due mirror.  La stessa cosa
     non si pu fare con ogni altro livello RAID (RAID-5,
     striping, linear RAID).



     Cos, per rispondere alla domanda:

    installare il S.O. sul disco 1, partizione 1.  NON
     montare altre partizioni.

    installare RAID seguendo le istruzioni.

    configurare md0 e md1.

    convincersi del fatto che si sa che cosa fare in caso di
     malfunzionamento del disco! Si scoprano gli errori
     dell'amministratore di sistema adesso, non non durante
     una vera crisi!  Sperimentate!  (noi abbiamo tolto
     corrente durante l'attivit del disco, poco ortodosso ma
     fa imparare molto).

    effettuate una successione di
     mount/copy/unmount/rename/reboot per muovere /var su
     /dev/md1.  Fatelo attentamente, non  pericoloso.

    godetevi il tutto!



  2. D: Quale  la differenza tra i comandi mdadd, mdrun, etc. e quelli
     raidadd, raidrun?

       R: I nomi dei tool sono stati cambiati dalla versione 0.5
       del pacchetto raidtools. La convenzione che voleva che i
       comandi iniziassero per  md era usata nella versione 0.43 e
       precedenti, mentre quella nuova che fa iniziare i comandi
       per raid viene usata nella versione 0.5 e successive.



  3. D: Vorrei utilizzare RAID-Linear/RAID-0 presente nel kernel 2.0.34.
     Vorrei non applicare la patch raid, poich non sono richieste per
     RAID-0/Linear. Dove posso procurarmi i tool RAID per gestire il
     sistema?

       R: Questa  una bella domanda, poich i pi nuovi tool raid
       abbisognano che le patch RAID-1,4,5 siano state applicate al
       kernel per compilarsi. Non conosco versioni binarie, precom
       pilate dei tool raid disponibili in questo momento. Comunque
       sia, esperimenti hanno dimostrato che i file binari dei tool
       raid, compilati su un kernel 2.1.100, sembrano funzionare
       abbastanza bene nella creazione di una partizione
       RAID-0/linear sotto 2.0.34. Un'anima impavida me li ha chi
       esti ed io ho temporaneamente reso disponibili i binari di
       mdadd, mdcreate, ecc, su http://linas.org/linux/Software-
       RAID/ Avrete bisogno delle pagine di manuale, ecc. che si
       trovano nel pacchetto standard dei raid-tools.



  4. D: Posso mettere in strip/mirror la partizione di root (/)?  Perch
     non posso far partire Linux direttamente dai dischi md?


       R: Sia LILO che Loadlin hanno bisogno di una partizione che
       non sia in strip/mirror per potervi leggere l'immagine del
       kernel.  Se volete mettere in strip/mirror la partizione di
       root (/), avrete bisogno di creare una partizione che non
       sia in strip/mirror dove poter mettere il kernel. Tipica
       mente questa partizione viene chiamata /boot. Fatto questo
       si pu quindi usare o il supporto per il ramdisk iniziale
       (initrd) o le patch di Harald Hoyer <HarryH@Royal.Net> che
       consentono ad una partizione in strip/mirror di essere usata
       come root. (Adesso queste patch sono una parte standard dei
       recenti kernel 2.1.x)


       Si possono usare approcci diversi.  Uno  documentato
  dettagliatamente nel Bootable RAID mini-HOWTO:
  <ftp://ftp.bizsystems.com/pub/raid/bootable-raid>.


  In alternativa, si pu usare mkinitrd per costruire
  un'immagine per il ramdisk, vedere di seguito.


  Edward Welbon <welbon@bga.com> ha scritto:

    ... tutto quello che serve  uno script che gestisca il
     setup di boot.  Per montare un file system md come root,
     la cosa principale da fare  costruire un'immagine
     iniziale del file system che abbia i moduli e i tool md
     necessari per far partire md. Io ho un semplice script
     che fa tutto ci.


    Come supporto per il boot utilizzo un piccolo ed
     economico disco SCSI (170MB lo ho preso usato per $20).
     Il disco  collegato ad un AHA1452, ma avrebbe potuto
     essere un disco IDE a buon prezzo sull'interfaccia nativa
     IDE.  Non c' bisogno che sia un disco molto veloce
     poich serve solamente per il boot.


    Questo disco contiene un piccolo file system dove trova
     posto il kernel e l'immagine del file system per initrd.
     L'immagine iniziale del file system contiene abbastanza
     roba da permettermi di caricare il modulo driver per il
     dispositivo raid SCSI e poter accedere alla partizione
     che diverr root.  Poi eseguo un


       echo 0x900 > /proc/sys/kernel/real-root-dev





  (0x900  per /dev/md0) e esco da linuxrc.  Il boot procede
  normalmente da qui in poi.


    Ho compilato molti driver come moduli eccetto quello per
     l'AHA1452 che serve per il file system initrd.  Il kernel
     che uso  cos molto piccolo. Il metodo  perfettamente
     affidabile, lo sto usando sin da prima della versione
     2.1.26 e non ho mai avuto un problema che non sia
     riuscito a risolvere facilmente. Il file system 
     addirittura sopravvissuto a diversi crash dei kernel
     2.1.4[45] senza reali difficolt.


    Una volta avevo partizionato i dischi raid in maniera
     tale che i cilindri iniziali del primo disco raid
     contenevano il kernel e i cilindri iniziali del secondo
     disco raid contenevano l'immagine iniziale del file
     system, adesso invece ho messo la swap nei primi cilindri
     dei dischi raid poich questi sono i pi veloci (perch
     sprecarli nel boot?).


    La cosa bella dell'avere un dispositivo che costa poco
     dedicato al boot  che  facile effettuarne il boot e che
     risulta utile come disco di recupero se necessario. Se
     siete interessati, potete dare un'occhiata allo script
     che genera l'immagine iniziale per il ram disk e che
     quindi fa partire LILO.

       <http://www.realtime.net/~welbon/initrd.md.tar.gz>



  Per adesso  abbastanza per fare quello che serve.  Non 
  specificamente bello e potrebbe sicuramente costruire
  un'immagine del file system molto pi piccola per il ram
  disk iniziale. Dovrebbe essere facile renderlo pi effi
  ciente.  Ma del resto usa LILO cos com'.  Se gli apportate
  dei miglioramenti vi prego di mandarmene una copia. 8-)



  5. D: Ho sentito dire che si pu usare il mirroring sullo striping
     RAID.   vero? Posso usare il mirroring sul dispositivo di
     loopback?

       R: Si, ma non il contrario. Si pu mettere una striscia su
       pi dischi e poi effettuarne il mirroring. Comunque sia lo
       striping non pu essere messo al di sopra del mirroring.


       Per darne una breve spiegazione tecnica si pu dire che le
       personality linear e stripe usano la routine ll_rw_blk per
       gli accessi. La routine ll_rw_blk mappa dispositivi di
       dischi e settori, non blocchi. I dispositivi a blocchi
       possono essere stratificati uno sull'altro; ma i dispositivi
       che effettuano un accesso al disco diretto, a basso livello,
       come fa ll_rw_blk non possono essere sovrapposti.


       In questo momento (Novembre 1997) RAID non pu funzionare
       sui dispositivi di loopback, anche se questo dovrebbe essere
       possibile a breve.



  6. D: Ho due piccoli dischi e tre dischi pi grandi. Posso concatenare
     i due dischi piccoli con RAID-0 e quindi creare una partizione
     RAID-5 con questi e quelli pi grandi?

       R: In questo momento (Novembre 1997), non si pu creare una
       partizione RAID-5 in questa maniera. Si pu farlo solo con
       RAID-1 al di sopra della concatenazione dei drive.



  7. D: Quale  la differenza tra RAID-1 e RAID-5 per una configurazione
     che prevede due dischi (cio la differenza tra una serie di due
     dischi RAID-1 e una serie di due dischi RAID-5)?

       R: Non c' differenza nella capacit di immagazzinamento.
       Non si possono aggiungere dischi a nessuno dei due sottosis
       temi per aumentarne la capacit (vedi la domanda qui di
       seguito per i dettagli).


       RAID-1 offre un vantaggio nella prestazione in lettura: il
       driver RAID-1 usa la tecnologia distributed-read (lettura
       distribuita. ndt) per leggere contemporaneamente due
       settori, uno da ogni disco, raddoppiando la performance in
       lettura.
  Il driver RAID-5, anche se fortemente ottimizzato,
  attualmente (Settembre 1997) non considera il fatto che il
  disco di parit  una copia del disco dati. Quindi le
  letture avvengono in maniera seriale.




  8. D: Come posso proteggermi dal malfunzionamento di due dischi?


       A: Qualcuno degli algoritmi RAID protegge da un malfunziona
       mento multiplo dei dischi, ma nessuno di questi algoritmi 
       attualmente implementato da Linux. Detto ci il Software
       RAID per Linux pu essere utilizzato per proteggersi da un
       malfunzionamento di pi dischi stratificando serie su serie
       di dischi. Per esempio, nove dischi possono essere utiliz
       zati per creare tre serie raid-5.  Quindi queste tre serie
       possono a loro volta essere legate assieme in una singola
       serie di dischi RAID-5.  In effetti questo tipo di configu
       razione arriva a proteggere da un malfunzionamento di tre
       dischi. Va notato il fatto che una grande quantit di spazio
       disco va ''persa'' per la ridondanza delle informazioni.



           Per una serie di NxN dischi raid-5
           N=3, 5 dischi su 9 sono usati per la parit (=55%)
           N=4, 7 dischi su 16
           N=5, 9 dischi su 25
           ...
           N=9, 17 dischi su 81 (=~20%)





  In generale, una serie di MxN dischi user MxN-1 dischi per
  la parit. Lo spazio "perso"  minimo quando M=N.

  Un'altra alternativa  quella di creare una serie RAID-1 con
  tre dischi. Va notato il fatto che poich tutti e tre i
  dischi contengono dati identici, 2/3 dello spazio vanno
  ``sprecati''.




  9. D: Mi piacerebbe capire come  possibile che ci sia un programma
     tipo fsck: se la partizione non  stata smontata in maniera
     ortodossa, fsck interviene e riaggiusta il filesystem da solo in
     pi del 90% dei casi. Poich la macchina  capace di porsi rimedio
     da sola con ckraid --fix, perch non farlo diventare automatico?


       R: Si pu ottenere ci aggiungendo linee come le seguenti a
       /etc/rc.d/rc.sysinit:

           mdadd /dev/md0 /dev/hda1 /dev/hdc1 || {
               ckraid --fix /etc/raid.usr.conf
               mdadd /dev/md0 /dev/hda1 /dev/hdc1
           }




  o

      mdrun -p1 /dev/md0
      if [ $? -gt 0 ] ; then
              ckraid --fix /etc/raid1.conf
              mdrun -p1 /dev/md0
      fi



  Prima di presentare uno script pi completo e affidabile,
  rivediamo la teoria delle operazioni.

  Gadi Oxman ha scritto: In uno shutdown sporco, Linux pu
  rimanere in uno degli stati seguenti:

    Il dischi RAID erano stati aggiornati con i dati
     contenuti nella memoria cache a loro destinata quando 
     avvenuto lo shutdown; non sono andati persi dati.

    La memoria cache dei dischi RAID conteneva informazioni
     non scritte sui dischi quando  avvenuto il blocco del
     sistema; questo ha portato ad un filesystem danneggiato e
     potenzialmente alla perdita di dati.

     Quest'ultimo stato pu essere ulteriormente suddiviso in
     altri due stati:


    Linux era in fase di scrittura dati quando si  avuto lo
     shutdown.

    Linux non era in fase di scrittura dati quando si 
     verificato il blocco.


     Supponiamo che stavamo usando una serie di dischi RAID-1.
     Nel caso (2a) potrebbe accadere che, prima del blocco, un
     piccolo numero di blocchi dati sia stato scritto con
     successo su solo alcuni dei dischi di mirror e al
     prossimo boot i mirror non conterranno pi` gli stessi
     dati.

     Se si ignorassero le differenze dei mirror, il codice di
     bilanciamento della lettura dei raidtools-0.36.3 potrebbe
     scegliere di leggere i suddetti dati da uno qualsiasi dei
     dischi di mirror, cosa che porterebbe ad un comportamento
     incoerente (per esempio, l`output di e2fsck -n /dev/md0
     potrebbe essere differente di volta in volta).


     Poich RAID non protegge dagli shutdown sporchi,
     usualmente non c`e` un modo ''sicuramente corretto'' di
     correggere le differenze nei dischi di mirror e il
     danneggiamento del filesystem.

     Per esempio il comportamento predefinito di ckraid --fix
     sar quello di scegliere il primo disco di mirror
     operativo e aggiornare gli altri dischi di mirror con il
     suo contenuto.  Tuttavia, a seconda della situazione dei
     dischi al momento del blocco, i dati negli altri dischi
     di mirror potrebbero essere pi recenti e si potrebbe
     scegliere di copiare i dati da quei dischi o forse di
     usare un metodo differente per riparare le cose.

     Lo script che segue definisce una delle pi robuste
     sequenze di boot. In particolare si cautela dalle lunghe
     ripetizioni dell`esecuzione di ckraid quando si ha a che
     fare con dischi, controller o driver dei controller che
     non cooperano.  Lo si modifichi in modo da adeguarlo alla
     propria configurazione, e lo si copi su rc.raid.init.
     Quindi si esegua rc.raid.init dopo che la partizione di
     root  stata controllata da fsck e montata in
     lettura/scrittura ma prima che le rimanenti partizioni
     siano controllate da fsck. Assicurarsi che la directory
     attuale sia nel percorso di ricerca.

         mdadd /dev/md0 /dev/hda1 /dev/hdc1 || {
             rm -f /fastboot             # forza l`esecuzione di fsck
             ckraid --fix /etc/raid.usr.conf
             mdadd /dev/md0 /dev/hda1 /dev/hdc1
         }
         # se il sistema si bloccasse pi avanti durante questo processo di boot
         # vorremmo che almeno questo dispositivo md non ne risentisse.
          /sbin/mdstop /dev/md0

         mdadd /dev/md1 /dev/hda2 /dev/hdc2 || {
             rm -f /fastboot             # forza l`esecuzione di fsck
             ckraid --fix /etc/raid.home.conf
             mdadd /dev/md1 /dev/hda2 /dev/hdc2
         }
         # se il sistema si bloccasse pi avanti durante questo processo di boot
         # vorremmo che almeno questo dispositivo md non ne risentisse.
         /sbin/mdstop /dev/md1

         mdadd /dev/md0 /dev/hda1 /dev/hdc1
         mdrun -p1 /dev/md0
         if [ $? -gt 0 ] ; then
             rm -f /fastboot             #  forza l`esecuzione di fsck
             ckraid --fix /etc/raid.usr.conf
             mdrun -p1 /dev/md0
         fi
         # se il sistema si bloccasse pi avanti durante questo processo di boot
         # vorremmo che almeno questo dispositivo md non ne risentisse.
         /sbin/mdstop /dev/md0

         mdadd /dev/md1 /dev/hda2 /dev/hdc2
         mdrun -p1 /dev/md1
         if [ $? -gt 0 ] ; then
             rm -f /fastboot             #   forza l`esecuzione di fsck
             ckraid --fix /etc/raid.home.conf
             mdrun -p1 /dev/md1
         fi
         # se il sistema si bloccasse pi avanti durante questo processo di boot
         # vorremmo che almeno questo dispositivo md non ne risentisse.
         /sbin/mdstop /dev/md1

         # OK, adesso con i soli comandi md. Se ci fossero stati errori
         # i controlli precedenti dovrebbero aver rimesso tutto a posto.
         /sbin/mdadd /dev/md0 /dev/hda1 /dev/hdc1
         /sbin/mdrun -p1 /dev/md0

         /sbin/mdadd /dev/md12 /dev/hda2 /dev/hdc2
         /sbin/mdrun -p1 /dev/md1




  In aggiunta a questo si dovr creare un file rc.raid.halt
  che dovrebbe apparire come questo:


      /sbin/mdstop /dev/md0
      /sbin/mdstop /dev/md1



  Assicuratevi di aver modificato sia rc.sysinit che
  init.d/halt per far eseguire questa procedura da qualsiasi
  parte il filesystem venga smontato prima di un halt/reboot.
  (Si noti che rc.sysinit smonta ed effettua un reboot se fsck
  termina l`esecuzione con un errore.)




  10.
     D: Posso configurare met di un mirror RAID-1 con il solo disco che
     ho adesso e poi dopo aggiungervi semplicemente un altro disco?


       R: Con gli strumenti di adesso no, almeno non in maniera
       semplice.  In particolare non si pu solamente copiare il
       contenuto di un disco su un altro e poi appaiarli. Questo a
       causa del fatto che i driver RAID usano un poco di spazio
       alla fine della partizione per memorizzare i superblock.
       Questo diminuisce leggermente lo spazio disponibile per il
       filesystem; ma se si provasse a forzare una partizione
       RAID-1 su una partizione con un filesystem preesistente, i
       superblock sovrascriverebbero una parte del filesystem con
       fondendo i dati. Poich il filesystem ext2fs distribuisce i
       file in maniera casuale su una partizione (per evitarne la
       frammentazione), con grossa probabilit qualche file
       risieder alla fine della partizione anche se il disco non 
       pieno.


       Se siete abili, suppongo che possiate calcolarvi quanto
       spazio il superblock RAID occuper e quindi rendere il
       filesystem leggermente pi piccolo, in modo da lasciare lo
       spazio di cui la memorizzazione del superblock RAID avr
       bisogno in seguito.  Ma, se siete cos abili, sarete quindi
       abbastanza bravi da modificare i tool in modo tale che lo
       facciano automaticamente (i tool non sono terribilmente
       complessi).


       Nota: il lettore attento avr pensato che il trucco seguente
       potrebbe funzionare; non l'ho provato n verificato:
       Eseguite mkraid con /dev/null come uno dei dispositivi.
       Quindi eseguite mdadd -r sul solo vero disco (non eseguite
       mdadd /dev/null). Il comando mkraid dovrebbe aver
       configurato con successo il sistema raid, e il comando mdadd
       serve solo a forzare il funzionamento del sistema in
       modalit "degradata" (in inglese "degraded mode". ndt), come
       se uno dei due dischi fosse rotto.



  4.  Riparare gli errori


  1. D: Lavoro con un dispositivo RAID-1 (mirroring) e la corrente 
     andata via mentre il disco era in attivit. Cosa devo fare?


       R: La ridondanza che i livelli RAID offrono serve a pro
       teggere nei confronti di un malfunzionamento del disco, non
  contro un difetto di alimentazione.

  Vi sono diversi modi di rimettere le cose a posto in questa
  situazione.


    Metodo (1): Usare i tool raid. Questi possono essere
     usati per rimettere in sincronia il sistema raid. I danni
     al filesystem non vengono corretti; dopo che il sistema
     raid  stato rimesso in sincronia, il filesystem deve
     ancora essere riparato con fsck. I sistemi RAID possono
     essere controllati con ckraid /etc/raid1.conf (per
     RAID-1, altrimenti /etc/raid5.conf, etc.)

     Eseguendo ckraid /etc/raid1.conf --fix il programma
     sceglier uno dei dischi della serie (usualmente il
     primo), e user questo come copia master, copiando i suoi
     blocchi su quelli degli altri dischi nel mirror. Per
     designare un disco da utilizzare come copia master si pu
     usare l'opzione --force-source: per esempio, ckraid
     /etc/raid1.conf --fix --force-source /dev/hdc3 . Il
     comando ckraid pu essere lanciato senza l'opzione --fix
     per verificare il sistema RAID inattivo senza apportargli
     modifiche. Quando vi sentirete a vostro agio con le
     modifiche proposte, potrete aggiungere l'opzione --fix.

    Metodo (2): Paranoico, spenditempo, non molto migliore
     del primo metodo. Assumiamo che la serie di dischi RAID
     sia formata da due dischi, e consista delle partizioni
     /dev/hda3 e /dev/hdc3. Potete provare ci che segue:

     a. fsck /dev/hda3

     b. fsck /dev/hdc3

     c. si decida quale delle due partizioni ha meno errori o
        dove si possano aggiustare meglio o dove sono i dati
        che vi interessano. Scegliete l'una o l'altra come
        nuova copia ``master''. Diciamo che avete scelto
        /dev/hdc3.

     d. dd if=/dev/hdc3 of=/dev/hda3

     e. mkraid raid1.conf -f --only-superblock


     Al posto degli ultimi due passi, potete eseguire ckraid
     /etc/raid1.conf --fix --force-source /dev/hdc3 che
     dovrebbe essere leggermente pi veloce.

    Metodo (3): Versione del metodo precedente per pigri. Se
     non avete voglia di aspettare che il lungo controllo di
     fsck venga completato, va bene anche saltare i primi tre
     passi illustrati sopra e andare direttamente agli ultimi
     due.  Assicuratevi solamente che venga eseguito fsck
     /dev/md0 dopo che avete fatto. Il metodo (3)  solo il
     metodo (1) travestito.


     In ogni caso i passi precedenti serviranno solo a
     sincronizzare i sistemi raid. Il filesystem probabilmente
     avr ancora bisogno di riparazioni: perci fsck dovr
     essere eseguito sul dispositivo md quando esso  attivo e
     non  stato montato.


     Con una serie di tre dischi RAID-1, vi sono pi
     possibilit come quella di usare due dischi per
     ''votare'' una risposta a maggioranza. I tool per
     automatizzare questa procedura attualmente (Settembre 97)
     non esistono.



  2. D: Ho un sistema RAID-4 o RAID-5 (parit) e la corrente  andata
     via mentre i dischi erano in attivit. Cosa devo fare adesso?


       R: La ridondanza che i livelli RAID offrono serve a pro
       teggere nei confronti di un malfunzionamento del disco, non
       contro un difetto di alimentazione.

       Poich i dischi formanti una serie RAID-4 o RAID-5 non con
       tengono un filesystem che fsck pu leggere vi sono meno
       scelte nella riparazione. Non si pu usare fsck per un con
       trollo o una riparazione preliminare; si deve usare prima
       ckraid.



       Il comando ckraid pu essere eseguito in modalit "sicura"
       senza l'opzione --fix per verificare il sistema RAID senza
       apportargli cambiamenti. Quando vi sentirete a vostro agio
       con i cambiamenti proposti baster aggiungere l'opzione
       --fix.


       Se si vuole si pu provare designando uno dei dei dischi
       come ``disco rotto''. Fatelo con l'opzione --suggest-failed-
       disk-mask (in inglese suona come "suggerisci-maschera-disco-
       rotto". ndt).

       Un solo bit dovr essere indicato nell'opzione: RAID-5 non
       pu recuperare due dischi non funzionanti.  La maschera 
       una maschera binaria: quindi:

           0x1 == primo disco
           0x2 == secondo disco
           0x4 == terzo disco
           0x8 == quarto disco, etc.




       In alternativa si pu scegliere di modificare i settori di
       parit usando l'opzione --suggest-fix-parity. Questa far si
       che la parit venga ricalcolata dagli altri settori.


       Le opzioni --suggest-failed-disk-mask e --suggest-fix-parity
       possono essere usate senza problemi per la sola verifica.
       Non vengono apportati cambiamenti se l'opzione --fix non 
       stata specificata. Quindi potete sperimentare schemi
       differenti di riparazione.




  3. D: Il mio dispositivo RAID-1, /dev/md0  formato da due partizioni
     di hard disk: /dev/hda3 e /dev/hdc3.  Recentemente, il disco che
     conteneva /dev/hdc3 si  rotto, ed  stato rimpiazzato da un nuovo
     disco.  Il mio migliore amico, che non conosce RAID, dice che la
     cosa corretta da fare adesso  ''dd if=/dev/hda3 of=/dev/hdc3''.
     Ho provato a farlo, ma le cose continuano a non funzionare.


       R: Il tuo migliore amico dovrebbe rimanere alla larga dal
       tuo computer.  Fortunatamente non vi sono stati danni gravi.
       Si pu riaggiustare il tutto eseguendo:


       mkraid raid1.conf -f --only-superblock





  Usando dd, sono state create due copie identiche della par
  tizione. Questo va quasi bene, tranne per il fatto che le
  estensioni RAID-1 del kernel si aspettano che i superblock
  RAID siano differenti.  Cos, quando si prova a riattivare
  RAID, il software nota il problema e disattiva una delle due
  partizioni. Ricreando i superblock, si dovrebbe avere un
  sistema perfettamente funzionante.



  4. D: La mia versione di mkraid non ha un'opzione --only-superblock .
     Che devo fare?

       R: I nuovi tool non supportano questa opzione, che  stata
       rimpiazzata da --force-resync.  stato riferito che la
       seguente sequenza di comandi funziona con gli ultimi tool e
       software:


         umount /web (dove /dev/md0  stata montata)
         raidstop /dev/md0
         mkraid /dev/md0 --force-resync --really-force
         raidstart /dev/md0





  Dopo questo, un cat /proc/mdstat dovrebbe dare resync in
  progress, e a questo punto dovrebbe essere possibile effet
  tuare un mount /dev/md0.



  5. D: Il mio dispositivo RAID-1, /dev/md0  formato da due partizioni:
     /dev/hda3 e /dev/hdc3.  Il mio migliore amico/a (in inglese "My
     best (girl)friend" NdT), che non conosce RAID, ha eseguito fsck su
     /dev/hda3 mentre io non guardavo e adesso RAID ha smesso di
     funzionare.  Cosa devo fare?


       R: Il concetto di "migliore amico" andrebbe riesaminato.  In
       generale, fsck non dovrebbe essere mai eseguito su una sin
       gola partizione facente parte di un sistema RAID.  Pre
       sumendo che nessuna partizione sia stata fortemente danneg
       giata non sono andati persi dati e il dispositivo RAID-1 pu
       essere recuperato come segue:

          a. effettuare un backup del filesystem di /dev/hda3


     b. dd if=/dev/hda3 of=/dev/hdc3

     c. mkraid raid1.conf -f --only-superblock

  Questo dovrebbe riportare al funzionamento il dispositivo di
  mirror.



  6. D: Perch la procedura precedente funziona?

       R: Perch ogni partizione componente un mirror RAID-1  una
       copia perfettamente valida del filesystem. Addirittura il
       mirroring pu essere disabilitato e una delle partizioni pu
       venire montata e funzioner senza problemi come un filesys
       tem normale, senza RAID. Quando si  pronti a ripartire con
       RAID-1, si smonti la partizione e si seguano le istruzioni
       sopracitate per far ripartire il mirror. Si noti che le
       istruzioni di cui sopra valgono SOLO per RAID-1 e per nessun
       altro livello.



       Vi potrebbe far sentire pi a vostro agio l'invertire la
       direzione della copia di cui sopra: copiare dal disco che
       non  stato toccato a quello che lo  stato. Solo
       assicuratevi che alla fine venga eseguito fsck sul
       risultante dispositivo md.



  7. D: Mi sento un po' confuso dalle domande riportate sopra, ma ancora
     non mollo. Ma  sicuro eseguire fsck /dev/md0 ?


       R: Si,  una cosa sicura l'esecuzione di fsck sui disposi
       tivi md. In effetti questo  l'unico posto sicuro dove
       eseguire fsck.



  8. D: Se un disco si sta deteriorando lentamente, sar ovvio scoprire
     quale sia? Sono preoccupato dal fatto che non lo sia, e questa
     confusione potrebbe portare a qualche decisione pericolosa da parte
     di un amministratore di sistema.



       R: Una volta che un disco si rompe, un codice di errore
       viene trasmesso dal driver a basso livello al driver RAID.
       Il driver RAID marcher questo disco come ``cattivo'' nei
       superblock dei dischi ``buoni'' (in questa maniera pi
       avanti sapremo quale dei dischi di mirror sia buono e quale
       non) e continuer le operazioni RAID sui rimasti dischi fun
       zionanti.


       Questo, va da s, d per certo che il disco ed i driver di
       basso livello possano accorgersi di un errore in
       lettura/scrittura e che, per esempio, non continuino a
       danneggiare i dati in silenzio.  Questo  vero per i driver
       attuali (schemi di rilevazione dell'errore sono usati
       internamente) ed  base delle operazioni RAID.



  9. D: E sulla riparazione a caldo?


       R: Si sta lavorando per completare la ``ricostruzione a
       caldo''.  Con questa funzionalit, si possono aggiungere dei
       dischi ``spare''  al set RAID (sia esso di livello 1 o 4/5),
       e quando un disco smette di funzionare i dati contenuti in
       esso saranno ricostruiti su uno dei dischi spare durante
       l'attivit, senza nemmeno aver bisogno di fermare il set
       RAID.


       Tuttavia, per usare questa funzionalit, il disco spare deve
       essere stato dichiarato durante il boot, o esso dovr essere
       aggiunto ``a caldo'', cosa che richiede l'uso di connettori
       e cabinet speciali che consentano di aggiungere un disco
       senza togliere corrente.


       Da Ottobre 97 esiste una versione beta di MD che consente:

         la ricostruzione dei livelli RAID 1 e 5 su dischi spare

         la ricostruzione della parit di RAID-5 dopo uno shutdown
          sporco

         l'aggiunta ``a caldo'' di dischi spare ad una serie gi
          in funzione di dischi RAID 1 o 4/5.

          Come predefinizione, la ricostruzione automatica  in
          questo momento (Dicembre 97) disabilitata a causa della
          natura ancora sperimentale di questo lavoro. Pu comunque
          essere abilitata cambiando il valore di
          SUPPORT_RECONSTRUCTION in include/linux/md.h.


          Se i drive spare sono stati configurati su un sistema
          raid quando esso  stato creato e la ricostruzione 
          stata attivata nel kernel, i drive spare conterranno da
          subito il superblock RAID (scritto da mkraid), e il
          kernel sar capace di ricostruire il contenuto in maniera
          automatica (senza bisogno degli usuali passi mdstop,
          cambia il drive,ckraid, mdrun).


          Se non avete configurato la ricostruzione automatica e
          non avete configurato un disco spare, la procedura
          descritta da Gadi Oxman <gadio@netvision.net.il>  quella
          raccomandata:

         Per adesso, una volta che il primo disco  stato rimosso,
          il sistema RAID continuer a funzionare in modalit
          ``degradata''.  Per riportarlo alla piena funzionalit
          avrete bisogno di:

         fermare il sottosistema RAID (mdstop /dev/md0)

         rimpiazzare il disco rotto

         eseguire ckraid raid.conf per ricostruire il suo
          contenuto

         far ripartire RAID (mdadd, mdrun).

          A questo punto, nel sistema funzioneranno di nuovo tutti
          i dischi, garantendoci dal malfunzionamento di uno di
     essi.

     Per adesso non  possibile assegnare singoli dischi spare
     a diverse serie RAID. Ogni sottosistema richieder il
     proprio disco spare.



  10.
     D: Vorrei che ci fosse un allarme udibile per ``ehi tu, si  rotto
     un disco nel mirror'' in modo tale che anche il novello
     amministratore di sistema possa sapere che c' un problema.


       R: Un evento come questo viene segnalato nei log di sistema
       dal kernel con la priorit ``KERN_ALERT''. Vi sono diversi
       pacchetti software che controllano i file log di sistema e
       fanno emettere un bip allo speaker del PC, eseguono un
       pager, mandano e-mail ecc. automaticamente.



  11.
     D: Come posso fare a far partire RAID-5 in modalit degradata (con
     un disco rotto e non ancora rimpiazzato)?


       R: Gadi Oxman <gadio@netvision.net.il> ha scritto: Normal
       mente, per far funzionare un set di n dischi RAID-5 si deve
       eseguire:


       mdadd /dev/md0 /dev/disk1 ... /dev/disk(n)
       mdrun -p5 /dev/md0





  Anche se uno dei dischi  rotto, si deve comunque eseguire
  mdadd su quel disco, come se tutto fosse normale. (??
  provare a usare /dev/null al posto del disco rotto ???
  occhio)

  Quindi,

  Il sistema RAID funzioner in modalit degradata con (n - 1)
  dischi. Se l'esecuzione di ``mdrun'' non va a buon fine, il
  kernel ha notato un errore (per esempio diversi dischi rotti
  o uno shutdown sporco). Si usi ``dmesg'' per visionare i
  messaggi di errore del kernel generati dall'esecuzione di
  ``mdrun''.  Se il set raid-5  rovinato a causa di un calo
  di tensione, e non a causa della rottura di un disco, si pu
  tentare di recuperare il tutto creando un nuovo superblock
  RAID:


       mkraid -f --only-superblock raid5.conf





  Una serie di dischi RAID non fornisce protezione alcuna con
  tro i difetti dell'alimentazione o contro un blocco del ker
  nel e quindi non pu nemmeno garantire un corretto recupero
  dei dati.  La ricostruzione del superblock servir solo a
  far ignorare al sistema la condizione in cui si trova mar
  cando tutti i drive come ``OK'' come se niente fosse
  accaduto.



  12.
     D: Come funziona RAID-5 nel caso che un disco smetta di funzionare?


       R: Uno scenario tipico  il seguente:

         Una serie di dischi RAID-5  attiva.

         Un disco si rompe mentre la serie  attiva.

         Il firmware del disco e i driver di basso livello del
          disco/controller si accorgono del malfunzionamento e
          inviano un messaggio di errore al driver MD.

         Il driver MD continua a fornire un dispositivo /dev/md0
          privo di errori ai driver di livello pi alto (anche se
          con performance ridotte) usando i rimanenti drive
          operativi.

         L'amministratore di sistema pu quindi eseguire umount
          /dev/md0 e mdstop /dev/md0 come al solito.

         Se il disco rotto non viene rimpiazzato, l'amministratore
          di sistema pu comunque far partire il sistema raid in
          modalit degradata come al solito eseguendo mdadd e
          mdrun.



  13.
     D: Ho appena sostituito un disco rotto in un sistema RAID-5. Dopo
     aver ricostruito il sistema, l'esecuzione di fsck mi d molti,
     molti errori.  normale?


       R: No. E, a meno che fsck non sia stato eseguito in modalit
       "verify only; do not update" ("verifica solamente; non
       aggiornare".  ndt),  del tutto possibile che abbiate rov
       inato i vostri dati.  Sfortunatamente, uno scenario non poco
       raro  quello nel quale si cambia accidentalmente l'ordine
       dei dischi in una serie di dischi RAID-5, dopo averne
       rimpiazzato uno. Anche se il superblock RAID memorizza
       l'ordine corretto, non tutti i tool tengono conto di questa
       informazione. In particolare, la versione attuale di ckraid
       user le informazioni specificate nell'opzione -f (usual
       mente il file /etc/raid5.conf) al posto di quelle contenute
       nel superblock. Se l'ordine specificato non  quello cor
       retto il disco rimpiazzato sar ricostruito in maniera
       errata.  Sintomo di questo tipo di sbaglio sembrano essere i
       pesanti e numerosi errori di fsck.


       E, nel caso siate meravigliati, s, qualcuno ha perso tutti
       i suoi dati commettendo questo sbaglio.   fortemente
       raccomandato un backup su nastro di tutti i dati prima di
       riconfigurare una serie di dischi RAID.



  14.
     D:

       R:



  15.
     D: Perch non vi  una domanda numero 13?


       A: Se siete scettici sul RAID, sull'Alta Affidabilit e UPS
       probabilmente  una buona idea l'essere anche superstiziosi.
       Male non pu fare, no?



  16.
     D: Il QuickStart dice che mdstop serve solo ad essere sicuri che i
     dischi siano in sincronia.  REALMENTE necessario? Non  abbastanza
     smontare il filesystem?


       R: Il comando mdstop /dev/md0:

         lo marcher come ''pulito''. Questo ci consente di
          rilevare gli shutdown sporchi dovuti, per esempio, ad un
          blocco del kernel o ad un malfunzionamento
          nell'alimentazione.

         metter in sincronia i dischi del dispositivo. Questa 
          una cosa meno importante dello smontare il filesystem ma
           importante se l'accesso a /dev/md0 avviene direttamente
          invece che attraverso un filesystem (ad esempio come nel
          caso di e2fsck).





  5.  Risoluzione dei problemi di installazione


  1. D: Quale  attualmente la patch pi stabile e conosciuta per RAID
     nei kernel della serie 2.0.x?


       R: Al 28 Settembre 1997  (riporto letteralmente. ndt)
       "2.0.30 + pre-9 2.0.31 + Werner Fink's swapping patch + the
       alpha RAID patch".  A Novembre 1997,  2.0.31 + ... !?



  2. D Le patch per il RAID non vengono correttamente installate.  Dov'
     l'errore?

       R: Assicuratevi che /usr/include/linux sia un link simbolico
       a /usr/src/linux/include/linux.

       Assicuratevi che i nuovi files raid5.c, etc.  siano stati
       copiati nei posti giusti.  A volte il comando patch non crea
       nuovi files. Provate con l'opzione -f del comando patch.




  3. D: Durante la compilazione di raidtools 0.42, il compilatore si
     blocca mentre cerca di includere <pthread.h> ma questo file non
     esiste nel mio sistema. Come posso correggere questo errore?


       R: raidtools-0.42 richiede linuxthreads-0.6 da:
       <ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy> In
       alternativa si possono usare le glibc v2.0.



  4. D: Ottengo il messaggio: mdrun -a /dev/md0: Invalid argument


       R: Si deve usare mkraid per inizializzare il set RAID prima
       che venga usato per la prima volta. mkraid si assicura del
       fatto che il sistema RAID sia inizialmente in uno stato di
       coerenza cancellando le partizioni RAID. In aggiunta,mkraid
       si occuper di creare i superblock RAID.



  5. D: Ottengo il messaggio: mdrun -a /dev/md0: Invalid argument La
     procedura di setup  stata:

    compilazione di raid come modulo del kernel

     stata seguita la normale procedura di installazione ...
     mdcreate, mdadd, etc.

    il comando cat /proc/mdstat produce questo output:

         Personalities :
         read_ahead not set
         md0 : inactive sda1 sdb1 6313482 blocks
         md1 : inactive
         md2 : inactive
         md3 : inactive




    mdrun -a genera il messaggio di errore /dev/md0: Invalid argument



       R: Si provi ad eseguire lsmod (o, in alternativa, cat
       /proc/modules) per vedere se i moduli raid sono stati cari
       cati. Se non lo sono stati, possono essere caricati in
       maniera esplicita con i comandi modprobe raid1 o modprobe
       raid5. In alternativa, se usate l'autoloader e se credete
       che kerneld debba caricarli e non lo fa, potrebbe essere a
       causa del fatto che il loader manca delle informazioni che
       servono per caricare i moduli. Modificate /etc/conf.modules
       aggiungendo le linee seguenti:


           alias md-personality-3 raid1
           alias md-personality-4 raid5







  6. D: Durante l'esecuzione del comando mdadd -a si ha l'errore:
     /dev/md0: No such file or directory.  Sembra per che non vi siano
     /dev/md0 da nessuna parte.  E adesso?


       R: Il package raid-tools crea questi dispositivi quando
       viene eseguito il comando make install come utente root. In
       alternativa, si pu fare cos:

           cd /dev
           ./MAKEDEV md







  7. D: Dopo aver creato un sistema raid su /dev/md0, provo a montarlo
     ma ottengo il seguente errore: mount: wrong fs type, bad option,
     bad superblock on /dev/md0, or too many mounted file systems.  Cosa
     c' che non va?

       R: Si deve creare un file system su /dev/md0 prima che sia
       possibile montarlo.  Usare mke2fs.




  8. D: Truxton Fulton ha scritto:

       Sul mio sistema Linux 2.0.30, mentre eseguivo mkraid su un
       dispositivo RAID-1, durante la pulizia delle due distinte
       partizioni ho visto apparire sulla console gli errori "Can
       not allocate free page" e altri errori "Unable to handle
       kernel paging request at virtual address ..." risultavano
       nel log di sistema. A questo punto il sistema  diventato
       pressoch inutilizzabile, ma si  poi ristabilito dopo un
       po'.  L'operazione sembra essersi conclusa senza errori e
       adesso utilizzo senza problemi il mio dispositivo RAID-1.
       Comunque quegli errori continuano a sconcertarmi. Qualche
       idea?




       R: Questo era un bug ben conosciuto nei kernel 2.0.30. 
       stato corretto nel kernel 2.0.31; in alternativa si pu
       tornare al 2.0.29.



  9. D: Non riesco ad eseguire mdrun su un dispositivo RAID-1, RAID-4 o
     RAID-5. Se provo ad eseguire mdrun su un dispositivo aggiunto con
     mdadd mi viene dato il messaggio ''invalid raid superblock magic''.


       R: Assicurarsi che sia stata seguita la parte della proce
       dura di installazione dove viene utilizzato mkraid.



  10.
     D: Quando accedo a /dev/md0 il kernel se ne esce con molti errori
     tipo md0: device not running, giving up ! e I/O error.... Ho
     aggiunto con successo i miei dispositivi al dispositivo virtuale.
       R: Per essere utilizzabile un dispositivo deve essere in
       funzione.  Si usi il comando mdrun -px /dev/md0 dove x  1
       per linear, 0 per RAID-0 o 1 per RAID-1, etc.



  11.
     D: Ho creato un dispositivo md lineare con 2 dispositivi.  cat
     /proc/mdstat mi dice la grandezza totale del dispositivo ma df mi
     fa vedere solo le dimensioni del primo dispositivo fisico


       R: Si deve eseguire mkfs su un nuovo dispositivo md prima di
       usarlo per la prima volta, in modo tale che il filesystem
       copra tutto il dispositivo.



  12.
     D: Ho configurato /etc/mdtab usando mdcreate, ho poi eseguito
     mdadd, mdrun e fsck sulle mie due partizioni /dev/mdX. Prima del
     reboot sembra tutto a posto. Appena effettuo il reboot fsck mi d
     errori su tutte e due le partizioni: fsck.ext2: Attempt to read
     block from filesystem resulted in short read while trying too open
     /dev/md0.  Perch?! Come posso fare a correggerlo?!


       R: Durante il processo di boot, le partizioni RAID devono
       essere messe in funzione prima che vengano controllate da
       fsck.  Questo deve essere fatto in uno degli script di boot.
       In qualche distribuzione fsck  eseguito da /etc/rc.d/rc.S,
       in altre  eseguito da /etc/rc.d/rc.sysinit. Si modifichino
       questi file in modo da eseguire mdadd -ar *prima* di fsck
       -A.  Ancora meglio, suggerisco che venga eseguito ckraid se
       mdadd restituisce un codice di errore. Come fare ci  dis
       cusso in maggiore dettaglio nella domanda 14 della sezione
       ''Riparare gli errori''.  (Qui l'originale inglese sembra
       incoerente, in quanto la domanda 14 della sezione menzionata
       non  attinente.  La domanda pi attinente sembra essere la
       7 della sezione "Considerazioni sul setup e sull'instal
       lazione". ndt)



  13.
     D: Quando provo a far funzionare un serie di partizioni pi grandi
     di 4 GB mi viene dato il seguente messaggio: invalid raid
     superblock magic


       R: Questo bug  stato corretto. (Settembre 97)  Assicuratevi
       di avere l'ultima versione del codice RAID.



  14.
     D: Quando provo ad eseguire mke2fs su una partizione pi grande di
     2 GB mi viene dato il messaggio Warning: could not write 8 blocks
     in inode table starting at 2097175


       R: Questo sembra essere un problema con mke2fs (Novembre 97)
       Un rimedio temporaneo consiste nel procurarsi il codice di
       mke2fs e aggiungere #undef HAVE_LLSEEK a
       e2fsprogs-1.10/lib/ext2fs/llseek.c subito prima del primo
       #ifdef HAVE_LLSEEK e quindi ricompilare mke2fs.
  15.
     D: ckraid non riesce a leggere /etc/mdtab


       R: Il formato del file di configurazione usato per
       RAID0/linear in /etc/mdtab  obsoleto, anche se sar suppor
       tato ancora per un po'. I file di configurazione usati
       attualmente sono chiamati /etc/raid1.conf, etc.



  16.
     D: I moduli delle personality (raid1.o) non vengono caricati
     automaticamente; si deve eseguire modprobe manualmente prima di
     eseguire mdrun. Come posso ovviare all'inconveniente?


       R: Per il caricamento automatico dei moduli, si possono
       aggiungere le seguenti linee a /etc/conf.modules:

           alias md-personality-3 raid1
           alias md-personality-4 raid5






  17.
     D: Ho aggiunto con mdadd 13 dispositivi e adesso sto cercando di
     eseguire mdrun -p5 /dev/md0, ma mi viene dato il messaggio:
     /dev/md0: Invalid argument


       R: La configurazione predefinita di software RAID prevede 8
       dispositivi reali. Editare linux/md.h, modificare #define
       MAX_REAL=8 con un numero pi alto e ricompilare il kernel.



  18.
     D: Non riesco a far funzionare md su delle partizioni nella nostra
     ultima SPARCstation 5. Sospetto che sia qualcosa che ha a che fare
     con le etichette di volume.


       R: Le etichette di volume Sun risiedono nel primo 1K di una
       partizione. Per RAID-1 le etichette di volume Sun non sono
       un problema poich ext2fs salter l'etichetta di ogni mir
       ror. Per gli altri livelli RAID (0, linear e 4/5) questo
       sembra essere un problema; non si  arrivati ancora ad una
       causa certa (Dicembre 97).



  6.  Hardware & Software Supportato


  1. D: Ho un adattatore SCSI della marca XYZ (con o senza diversi
     canali) e dischi di marche PQR e LMN, funzioneranno con md per
     creare una personality linear/stripped/mirrored?


       R: Si! Software RAID funzioner con ogni controller di dis
       chi (IDE o SCSI) e con ogni disco. Non c' bisogno che i
       dischi siano identici e nemmeno i controller. Per esempio un
  mirror RAID pu essere creato una met con dischi SCSI e
  l'altra met con dischi IDE. I dischi non devono neppure
  essere delle stesse dimensioni. Non ci sono restrizioni
  nella scelta e disposizione dei dischi e dei controller.


  Questo a causa del fatto che Software RAID lavora con le
  partizioni e non direttamente con il disco. La sola
  raccomandazione da fare per il RAID livelli 1 e 5  che le
  partizioni dei dischi che dovranno essere usate insieme
  siano delle stesse dimensioni.  Se le partizioni che
  compongono una serie di dischi RAID 1 o 5 non sono delle
  stesse dimensioni lo spazio in eccesso nella partizione pi
  grande andr perduto.



  2. D: Ho un BT-952 a doppio canale, e la confezione asserisce che
     supporta il RAID hardware livelli 0, 1 e 0+1. Ho messo su un set
     RAID con due dischi, la scheda sembra riconoscerli durante
     l'esecuzione delle routine di avvio del suo BIOS. Ho letto il
     codice sorgente del driver ma non ho trovato riferimenti ad un
     supporto per il RAID hardware. Qualcuno ci sta lavorando?


       R: Le schede Mylex/BusLogic FlashPoint con RAIDPlus sono in
       effetti RAID software e per nulla RAID hardware. RAIDPlus 
       supportato solo su Windows 95 e Windows NT, non su Netware o
       su piattaforma Unix. Esclusi il boot e la configurazione la
       gestione del RAID avviene tramite driver del S.O.


       Anche se in teoria il supporto per RAIDPlus sia possibile in
       Linux, l'implementazione del RAID-0/1/4/5 nel kernel di
       Linux  molto pi flessibile e dovrebbe avere performance
       superiori, quindi ci sono poche ragioni per decidere di
       supportare direttamente RAIDPlus.



  3. D: Voglio installare RAID su un computer SMP. RAID  adatto a SMP?

       R: "Penso di si"  la migliore risposta disponibile al
       momento (Aprile 98).  Diversi utenti dicono di aver usato
       RAID con SMP per circa un anno senza problemi.  Comunque
       alla data di Aprile 98 (circa kernel 2.1.9x), i seguenti
       problemi sono stati notati sulla mailing list:

         I driver Adaptec AIC7xxx SCSI non sono del tutto adatti a
          SMP (nota generica: gli adattatori Adaptec hanno una
          lunga storia di problemi e disfunzionamenti. Anche se
          sembrano essere gli adattatori SCSI pi disponibili,
          diffusi e a buon mercato gli Adaptec andrebbero evitati.
          Dopo aver calcolato il tempo perso, le frustrazioni e i
          dati andati perduti capirete che gli Adaptec sono il pi
          costoso errore che abbiate mai fatto. Detto questo, se
          avete problemi legati a SMP con il kernel 2.1.88, provate
          la patch su ftp://ftp.bero-
          online.ml.org/pub/linux/aic7xxx-5.0.7-linux21.tar.gz Non
          sono sicuro del fatto che questa patch sia stata inclusa
          negli ultimi kernel 2.1.x. Per altre informazioni date
          un'occhiata agli archivi di mail del Marzo 98 su
          http://www.linuxhq.com/lnxlists/linux-raid/lr_9803_01/
          Come sempre, dato il fatto che i kernel sperimentali
          della serie 2.1.x sono soggetti a continui cambiamenti, i
          problemi descritti in queste mailing list potrebbero o
     non potrebbero essere stati risolti nel frattempo.
     Caveat Emptor.)



     stato riferito che IO-APIC con RAID-0 su SMP non
     funziona su 2.1.90





  7.  Modificare una installazione preesistente


  1. D: I dispositivi MD linear sono espandibili?  Si pu aggiungere un
     nuovo drive/partizione e vedere cos aumentata la capienza del
     filesystem preesistente?


       D: Miguel de Icaza <miguel@luthien.nuclecu.unam.mx> ha
       scritto:

       Ho cambiato il codice di ext2fs per renderlo capace di
       trattare dispositivi multipli, modificando l'assunzione
       precedente che assegnava ad un filesystem un solo disposi
       tivo.


       Cos quando si vuole espandere un filesystem basta eseguire
       un'utilit che apporta le modifiche appropriate sul nuovo
       dispositivo (la partizione extra) e poi basta solo far
       sapere al sistema di estendere il fs usando il dispositivo
       specificato.


       Il filesystem pu essere esteso con dei nuovi dispositivi
       mentre il sistema sta funzionando, senza bisogno di doverlo
       arrestare (e quando avr altro tempo potrete rimuovere dei
       dispositivi da un volume ext2, ancora senza nemmeno dover
       andare in modalit single-user o fare altre cose come
       questa).


       Potete procurarvi la patch per il kernel 2.1.x sulla mia web
       page:

       <http://www.nuclecu.unam.mx/~miguel/ext2-volume>





  2. D: Posso aggiungere dei dischi ad un sistema RAID-5?


       R: Attualmente, (Settembre 1997), no, non senza cancellare
       tutti i dati. Una utilit di conversione che lo permetta
       ancora non esiste. Il problema  che la struttura e l'effet
       tiva disposizione in un sistema RAID-5 dipende dal numero
       dei dischi che ne fanno parte.

       Ovviamente si possono aggiungere dei dischi facendo un
       backup del sistema su nastro, cancellando tutti i dati, cre
       ando un nuovo sistema e recuperando i dati dal nastro.

  3. D: Cosa potrebbe succedere al mio set RAID1/RAID0 se sposto uno dei
     drive facendo diventare da /dev/hdb a /dev/hdc?

     A causa dei problemi di grandezza/stupidit con i cablaggi/cabinet
     devo mettere i miei set RAID sullo stesso controller IDE (/dev/hda
     e /dev/hdb). Adesso che ho messo a posto un po' di cose vorrei
     muovere /dev/hdb in /dev/hdc.

     Cosa potrebbe succedere se mi limito a cambiare i files /etc/mdtab
     e /etc/raid1.conf in modo che riflettano la nuova posizione?

       R: Nel caso del RAID-0/linear, si deve stare attenti nello
       specificare i drive esattamente nello stesso ordine. Quindi
       nell'esempio di cui sopra il file di configurazione origi
       nale era:


       mdadd /dev/md0 /dev/hda /dev/hdb





  E il nuovo file di configurazione *deve* essere


       mdadd /dev/md0 /dev/hda /dev/hdc






  Per quanto riguarda RAID-1/4/5, il ''numero RAID'' del drive
  viene memorizzato nel suo superblock RAID e quindi l'ordine
  nel quale vengono indicati i dischi non  importante.

  Il RAID-0/linear non ha un superblock a causa del suo vec
  chio design e del desiderio di mantenere la compatibilit
  con questo vecchio design.



  4. D: Posso convertire un mirror RAID-1 formato da due dischi in una
     serie di tre dischi RAID-5?


       R: Si. Micheal della BizSystems ha trovato un modo per farlo
       abilmente e astutamente. Per, come virtualmente tutte le
       manipolazioni di sistemi RAID una volta che essi contengono
       dati,  pericoloso e soggetto ad errore umano.  Fate un
       backup prima di cominciare.














  Ipotizzo la seguente configurazione:
  ---------------------------------------------
  dischi
  originale: hda - hdc
  partizioni raid1 hda3 - hdc3
  nome dispositivo raid /dev/md0

  nuovo hda - hdc - hdd
  partizioni raid5 hda3 - hdc3 - hdd3
  nome dispositivo raid: /dev/md1

  Si sostituiscano i nomi dei dischi e delle partizioni in modo
  da riflettere la propria configurazione di sistema.
  Questo vale anche per tutti gli esempi di file di configurazione.
  --------------------------------------------
  FATE UN BACKUP PRIMA DI FARE QUALSIASI ALTRA COSA
  1) ricompilare il kernel per includere sia il supporto raid1 che quello raid5
  2) installare il nuovo kernel e accertarsi che siano presenti le
     personality raid
  3) disabilitare la partizione ridondante sul sistema raid 1. Se questa 
     la partizione di root (la mia lo era) dovrete stare pi attenti.

   Fare il reboot del sistema senza mettere in funzione i dispositivi raid
   o fate ripartire il sistema da uno di recupero (i tool raid dovranno essere
   disponibili)

   fate partire raid1 in modalit non ridondante
  mdadd -r -p1 /dev/md0 /dev/hda3

  4) configurate raid5 con un 'buffo' file di configurazione, si noti che
     non viene nominato hda3 e che hdc3  ripetuto. Questo serve poich
     i tool raid non accettano una simile impostazione.
  -------------------------------
  # configurazione raid-5
  raiddev                 /dev/md1
  raid-level              5
  nr-raid-disks           3
  chunk-size              32

  # disposizione algoritmo di parit
  parity-algorithm        left-symmetric

  # dischi spare per ricostruzione a caldo
  nr-spare-disks          0

  device                  /dev/hdc3
  raid-disk               0

  device                  /dev/hdc3
  raid-disk               1

  device                  /dev/hdd3
  raid-disk               2
  ---------------------------------------
   mkraid /etc/raid5.conf
  5) attivare il sistema raid5 in modalit non ridondante

  mdadd -r -p5 -c32k /dev/md1 /dev/hdc3 /dev/hdd3

  6) create un filesystem sul dispositivo raid5

  mke2fs -b {blocksize} /dev/md1

  la dimensione del blocco raccomandata da alcuni  di 4096 al posto della
  predefinita 1024. Questo migliora l'utilizzazione della memoria da parte
  del kernel e delle routine raid facendo coincidere la grandezza del blocco
  con quella della pagina. Io ho trovato un compromesso su 2048 a causa del
  fatto che ho un numero relativamente alto di file piccoli nel mio sistema.

  7) montate da qualche parte i due dispositivi raid

  mount -t ext2 /dev/md0 mnt0
  mount -t ext2 /dev/md1 mnt1

  8) spostate i dati

  cp -a mnt0 mnt1

  9) verificate che i due set di dati siano identici
  10) fermate ambedue i dispositivi raid
  11) correggete le informazioni contenute nel file raid5.conf
    cambiate /dev/md1 in /dev/md0
    cambiate il primo disco da leggere in /dev/hda3

  12) portare il nuovo sistema in modalit ridondante
   (QUESTO DISTRUGGE LE RIMANENTI INFORMAZIONI raid1)

  ckraid --fix /etc/raid5.conf








  8.  Domande sulle performance, sui tool e domande stupide in genere


  1. D: Ho creato un dispositivo RAID-0 con /dev/sda2 e /dev/sda3. Il
     dispositivo  molto pi lento di una singola partizione. Ma allora
     md  un ammasso di robaccia?

       R: Per usufruire di un dispositivo RAID-0 che funzioni alla
       massima velocit, si devono utilizzare partizioni di dischi
       differenti. Oltretutto, mettendo le due met di un mirror su
       di un solo disco non ci si cautela da nessun tipo di malfun
       zionamento del disco.



  2. D: Dove  la necessit di avere RAID-linear quando RAID-0 fa le
     stesse cose con migliore efficienza?

       R: Il fatto che RAID-0 abbia sempre una performance migliore
       non  cosa ovvia; in effetti, in qualche caso, le cose
       potrebbero andare peggio.  Il filesystem ext2fs distribuisce
       i file su tutta la partizione, e cerca di mantenere contigui
       tutti i blocchi di un file, nel tentativo di impedirne la
       frammentazione. Quindi ext2fs si comporta "come se" ci fosse
       una striscia (di dimensioni variabili) per ogni file. Se
       diversi dischi vengono concatenati in un dispositivo RAID-
       linear, statisticamente i file verranno distribuiti su ogni
       disco. Quindi, almeno per ext2fs, RAID-linear si comporta in
       maniera molto simile a un RAID-0 con delle ampie strisce. Al
       contrario RAID-0 con strisce piccole pu causare un'ecces
       siva attivit del disco che pu portare ad un forte degrado
       delle prestazioni se si accede contemporaneamente a diversi
       grandi file.

       In molti casi RAID-0 pu risultare facile vincitore. Si
       immagini, per esempio un grande file di database. Poich
  ext2fs cerca di raggruppare insieme tutti i blocchi di un
  file, vi sono buone possibilit che esso finisca in un solo
  disco se si utilizza RAID-linear o finisca diviso in
  molteplici strisce se si usa RAID-0. Si immaginino adesso un
  certo numero di thread (del kernel) che stanno tentando di
  accedere al database in maniera casuale. Sotto RAID-linear
  tutti gli accessi finirebbero con il dover essere
  soddisfatti da un solo disco che finirebbe con l'essere
  inefficiente se paragonato alla possibilit di accessi
  multipli paralleli che RAID-0 consente.




  3. D: Come si comporta RAID-0 in una situazione nella quale le diverse
     partizioni di stripe hanno dimensioni diverse? Le strisce vengono
     distribuite uniformemente?


       R: Per comprendere meglio aiutiamoci con un esempio che
       coinvolge tre partizioni; una da 50Mb, una da 90Mb e una da
       125Mb.

       Chiamiamo D0 il disco da 50Mb, D1 il disco da 90Mb e D2
       quello da 125Mb. Quando si fa partire il dispositivo, il
       driver calcola le 'strip zones' (letteralmente "zone di
       striscia". ndt). In questo caso vengono individuate 3 zone,
       cos definite:


                   Z0 : (D0/D1/D2) 3 x 50 = 150MB  totali in questa zona
                   Z1 : (D1/D2)  2 x 40 = 80MB totali in questa zona
                   Z2 : (D2) 125-50-40 = 35MB totali in questa zona.




       Si pu notare come la dimensione totale delle zone sia la
       dimensione del dispositivo virtuale, ma la distribuzione
       delle strisce varia in funzione della zona. Z2  ineffi
       ciente, poich contenuta in un solo disco.

       Poich ext2fs e molti altri filesystem di Unix distribuis
       cono i file su tutto il disco, si ha il 35/265 = 13% di
       probabilit che i dati finiscano su Z2, e quindi non benefi
       cino dello striping.

       (DOS cerca di riempire un disco partendo dall'inizio e
       andando verso la fine e quindi i file pi vecchi finirebbero
       in Z0. Questo tipo di approccio porta per ad una pesante
       frammentazione, e questo  il perch nessun altro oltre a
       DOS gestisce il disco in questa maniera).



  4. D: Ho dei dischi di marca X e un controller di marca Y, sto
     considerando se usare md.  Ma il throughput aumenta sensibilmente?
     Le prestazioni sono notevolmente migliori?


       R: La risposta dipende dalla configurazione che si usa.


          Prestazioni di Linux MD RAID-0 e RAID-linear:
             Se il sistema deve sopperire ad un alto numero di
             richieste di I/O, statisticamente qualcuna andr su un
        disco e qualcun'altra su un altro. Quindi le
        prestazioni migliorano rispetto ad un singolo disco.
        Ma il miglioramento effettivo dipende molto dai dati,
        dalla dimensione delle strisce e da altri fattori. In
        un sistema con basso carico di I/O le prestazioni sono
        uguali a quelle di un singolo disco.


     Prestazioni in lettura di Linux MD RAID-1(mirroring):
        MD implementa il bilanciamento in lettura. Quindi il
        codice RAID-1 distribuir il carico su ognuno dei
        dischi nel mirror (due o pi), effettuando operazioni
        alternate di lettura da ognuno di essi. In una
        situazione con basso carico di I/O questo non
        influisce per niente sulle prestazioni: dovrete
        aspettare che un disco abbia finito di leggere. Ma con
        due dischi in una situazioni di alto carico di I/O la
        performance in lettura pu raddoppiare visto che le
        letture possono essere effettuate in parallelo da
        ciascuno dei due dischi. Per N dischi nel mirror, la
        prestazione pu essere N volte migliore.


     Prestazioni in scrittura di Linux MD RAID-1 (mirroring):
        Si deve attendere che la scrittura sia stata
        effettuata su tutti i dischi del mirror. Questo a
        causa del fatto che una copia dei dati deve essere
        scritta su ogni disco del mirror. Quindi le
        prestazioni saranno quasi uguali a quelle di un
        singolo disco in scrittura.


     Prestazioni in lettura di Linux MD RAID-4/5:
        Statisticamente un dato blocco pu trovarsi in un
        qualsiasi disco di una serie, e quindi le prestazioni
        in lettura di RAID-4/5 somigliano molto a quelle di
        RAID-0. Esse variano in funzione dei dati, della
        dimensione delle strisce e del tipo di utilizzo. Le
        prestazioni in lettura non saranno buone quanto quelle
        di una serie di dischi in mirror.


     Prestazioni in scrittura di Linux MD RAID-4/5:
        Questo sistema  in genere considerevolmente pi lento
        di un disco singolo. Questo a causa del fatto che la
        parit dovr essere scritta su un disco e i dati su un
        altro. E per poter calcolare la nuova parit quella
        vecchia e i vecchi dati devono prima essere letti.
        Viene quindi effettuato un XOR fra i vecchi dati, i
        nuovi dati e la vecchia parit: questo richiede
        numerosi cicli di CPU e diversi accessi al disco.



  5. D: Quale configurazione ottimizza le prestazioni di RAID?

       R: Interessa pi massimizzare il throughput o diminuire la
       latenza?  Non vi  una facile risposta dato il grande numero
       di fattori che influenzano la performance:


         sistema operativo - l'accesso al disco  effettuato da un
          solo processo o da pi thread?

         applicazioni          - accedono ai dati in maniera
          sequenziale o in maniera casuale?
    file system           - raggruppa i file o li
     distribuisce (ext2fs raggruppa insieme i blocchi di un
     file e distribuisce i file)

    driver del disco     - numero di blocchi di read ahead (
     un parametro impostabile)

    hardware CEC     - un drive controller o pi?

    hd controller         - gestisce la coda di richieste
     multiple? Ha una cache?

    hard drive            - dimensioni del buffer della
     memoria cache --  abbastanza ampia da gestire la
     quantit e la velocit degli accessi in scrittura di cui
     si ha bisogno?

    caratteristiche fisiche del disco - blocchi per cilindro
     -- accedere a blocchi su differenti cilindri porta il
     disco ad effettuare molte operazioni di seek.



  6. D: Quale  la configurazione di RAID-5 che ottimizza la
     performance?

       R: Poich RAID-5 genera un carico di I/O che  uniformemente
       distribuito su diversi dischi, le prestazioni migliori si
       otterranno quando il set RAID viene bilanciato usando drive
       identici, controller identici e lo stesso (basso) numero di
       drive su ciascun controller.

       Si noti comunque che l'uso di componenti identici alzer la
       probabilit di malfunzionamenti multipli e simultanei
       dovuti, per esempio a degli sbalzi repentini, al surriscal
       damento o a problemi di alimentazione durante un temporale.
       Questo tipo di rischio pu essere ridotto utilizzando dis
       positivi di marca e modello differenti.



  7. D: Quale  la dimensione ottimale di un blocco per un sistema
     RAID-4/5?


       R: Nell'uso dell'implementazione attuale (Novembre 1997) di
       RAID-4/5  fortemente raccomandato che il filesystem venga
       creato con mke2fs -b 4096 al posto della dimensione pre
       definita del blocco che  di 1024 byte.


       Questo perch l'attuale implementazione di RAID-5 alloca una
       pagina di memoria di 4K per ogni blocco del disco; se un
       blocco del disco fosse grande solo 1K il 75% della memoria
       allocata da RAID-5 per l'I/O non verrebbe usata. Se la
       grandezza del blocco del disco  uguale a quella della
       pagina di memoria il driver pu (potenzialmente) usare tutta
       la pagina. Quindi, su un filesystem con dei blocchi da 4096
       invece che da 1024, il driver RAID potr potenzialmente
       gestire una coda di richieste di I/O quattro volte pi
       grande senza usare memoria aggiuntiva.


       Nota: le considerazioni precedenti non si applicano ai
       driver Software RAID-0/1/linear.

  Nota: le considerazioni sulla pagina di memoria da 4K sono
  da applicare all'architettura Intel x86. Le dimensioni della
  pagina di memoria su Alpha, Sparc e altre CPU sono
  differenti; credo che siano 8k su Alpha/Sparc (????).
  Aggiustate le asserzioni precedenti in maniera da tenerne
  conto.


  Nota: se il vostro filesystem contiene un grande numero di
  piccoli file (file pi piccoli di 10KBytes), una frazione
  considerevole di spazio disco andr perduta. Questo a causa
  del fatto che la dimensione dello spazio disco allocata dal
  filesystem  un multiplo della dimensione del blocco.
  Allocare dei blocchi di grosse dimensioni per dei piccoli
  file porta chiaramente ad uno spreco di spazio disco; quindi
  si potrebbe voler continuare ad utilizzare blocchi di
  piccole dimensioni, avere una una capacit di
  immagazzinamento maggiore e non preoccuparsi della memoria
  "persa" a causa del fato che le dimensioni della pagina e
  del blocco non combaciano.


  Nota: molti sistemi ''tipici'' non contengono cos tanti
  piccoli file. Comunque, anche se ci fossero centinaia di
  piccoli file, questo potrebbe portare alla perdita di 10 -
  100 MB di spazio disco, che probabilmente  un compromesso
  accettabile per avere buone prestazioni se si usano hard
  disk multi-gigabyte.

  Nel caso dei news server, ci potrebbero essere decine o
  centinaia di migliaia di piccoli file. In questi casi i
  blocchi di dimensioni minori, e quindi una maggiore capacit
  di immagazzinamento, potrebbero essere pi importanti
  dell'efficienza dello scheduling di I/O.


  Nota: esiste un filesystem sperimentale per Linux che
  memorizza piccoli file e pezzi di file in un solo blocco.
  Apparentemente questo influisce in maniera positiva sulla
  performance quando la dimensione media dei file  molto pi
  piccola della dimensione del blocco.


  Nota: Le prossime versioni potrebbero implementare dei
  dispositivi che renderanno obsolete queste discussioni.
  Comunque sia la loro implementazione  difficoltosa a causa
  del fatto che la allocazione dinamica a tempo di esecuzione
  pu portare a dei blocchi; l'implementazione attuale
  effettua una pre-allocazione statica.



  8. D: Quanto influenza la velocit del mio dispositivo RAID-0, RAID-4
     o RAID-5 la grandezza del chunk (grandezza della striscia)?


       R: La grandezza del chunk  la quantit di dati contigui nel
       dispositivo virtuale che sono contigui anche nel dispositivo
       fisico. In questo HOWTO "chunk" e "striscia" sono la stessa
       cosa: quella che  comunemente chiamata "striscia" in altre
       documentazioni su RAID, nelle pagine del manuale di MD 
       chiamata "chunk". Si parla di strisce o chunk solo per RAID
       0, 4 e 5 poich le strisce non vengono utilizzate nel mir
       roring (RAID-1) e nella semplice concatenazione (RAID-lin
       ear).  Le dimensioni della striscia influenzano il tempo di
       latenza (ritardo) nella lettura e nella scrittura, il
  throughput (larghezza di banda) e la gestione di operazioni
  indipendenti (l'abilit di provvedere a richieste di I/O
  simultanee che si accavallano)


  Posto che si usino il filesystem ext2fs e le impostazioni
  attuali del kernel che regolano il read-ahead, le strisce di
  grosse dimensioni risultano quasi sempre essere una scelta
  migliore rispetto a quelle di piccole dimensioni, e strisce
  di dimensioni confrontabili con la grandezza di un quarto di
  cilindro del disco potrebbero essere ancora migliori. Per
  capire questa affermazione, consideriamo gli effetti delle
  strisce grandi su file piccoli, e delle strisce piccole sui
  file grandi.  La dimensione delle strisce non influenza le
  prestazioni durante la lettura di piccoli file: per una
  serie di N dischi il file ha 1/N probabilit di essere
  interamente contenuto in una striscia in uno dei dischi.
  Quindi sia la larghezza di banda che la latenza in lettura
  sono comparabili a quelle di un singolo disco. Ipotizzando
  il fatto che i file piccoli siano distribuiti in maniera
  statisticamente uniforme nel filesystem (e, se si usa il
  filesystem ext2fs, questo dovrebbe essere vero) il numero
  delle letture simultanee sovrapposte pu essere circa N
  volte maggiore, senza collisioni significanti. Al contrario,
  se vengono utilizzate strisce di dimensioni molto ridotte e
  un file grande viene letto sequenzialmente, vi sar un
  accesso in lettura da ogni disco del sottosistema. Nella
  lettura di un singolo file di grandi dimensioni, la latenza
  sar almeno raddoppiata, e la probabilit che un blocco si
  trovi molto distaccato dagli altri aumenter. Si noti
  comunque ci che si ottiene: la larghezza di banda pu
  aumentare di al pi N volte nella lettura di un singolo file
  di grandi dimensioni, poich N dischi lo leggono
  simultaneamente (se viene usato il read-ahead per mantenere
  attivi tutti i dischi). Ma vi  anche un effetto secondario
  controproducente: se tutti i drive sono occupati nella
  lettura di un singolo, grande file, il tentativo di leggere
  un secondo, un terzo file allo stesso tempo causer un grave
  contenzioso, e degrader le prestazioni a causa del fatto
  che gli algoritmi del disco lo porteranno ad effettuare
  numerosi seek. Quindi, strisce di grosse dimensioni danno
  quasi sempre i risultati migliori. L'unica eccezione 
  costituita dalla situazione nella quale si accede ad un
  singolo file di grandi dimensioni e si richiede la maggiore
  larghezza di banda possibile e si usa anche un buon
  algoritmo di read-ahead, in questo caso sarebbero
  desiderabili strisce di piccole dimensioni.



  Si noti che in precedenza questo HOWTO ha raccomandato
  strisce di piccole dimensioni per i news spool o per altri
  sistemi con un gran numero di piccoli file. Questo  stato
  un cattivo consiglio, ed ecco perch: i news spool
  contengono non solo molti piccoli file ma anche file
  sommario di grandi dimensioni e grandi directory. Se il file
  sommario  pi grande della striscia, la sua lettura
  comporter un accesso su pi dischi, rallentando il tutto
  come se ogni disco effettuasse un seek. Similmente,
  l'attuale filesystem ext2fs ricerca nelle directory in
  maniera lineare e sequenziale.  Quindi, per trovare un dato
  file o inode, in media met della directory verr letta. Se
  la directory  distribuita su pi strisce (su pi dischi),
  la lettura della directory (per es.  a causa del comando ls)
  potrebbe rallentare notevolmente.  Un grazie a Steven A.
  Reisman <sar@pressenter.com> per questa correzione.  Steve
  ha anche aggiunto:

       Ho scoperto che l'uso di una striscia da 256k d performance
       molto migliori. Sospetto che la dimensione ottimale sia
       quella di un cilindro del disco (o forse la dimensione della
       cache dei settori del disco). Comunque sia, oggi i dischi
       hanno zone di memorizzazione con un numero di settori vari
       abile (e le cache dei settori variano anche fra differenti
       modelli). Non c' un metodo per assicurarsi che le strisce
       non oltrepassino i confini del cilindro.




  I tool accettano le dimensioni delle strisce in KBytes.  Conviene
  specificare un multiplo della dimensione della pagina per la CPU che
  si usa (4KB su x86).



  9. D: Quale  il corretto fattore di stride da usare nella creazione
     di un filesystem ext2fs sulla partizione RAID? Per stride intendo
     l'opzione -R nel comando mke2fs:

     mke2fs -b 4096 -R stride=nnn  ...



  Cosa devo mettere al posto di nnn?

       R: L'opzione -R stride viene usata per comunicare al
       filesystem le dimensioni delle strisce RAID. Poich solo
       RAID-0,4 e 5 usano le strisce, e RAID-1 (mirroring) e RAID-
       linear non le usano, questa opzione ha senso solo per
       RAID-0,4,5.

       La conoscenza delle dimensioni delle strisce consente a
       mke2fs di dimensionare i blocchi e i bitmap degli inode in
       modo tale che non vengano a trovarsi tutti sullo stesso dis
       positivo fisico. Uno sconosciuto ha contribuito alla discus
       sione scrivendo:


       L'ultima primavera ho notato che in una coppia di dischi uno
       aveva sempre un I/O maggiore e ho attribuito la cosa a
       questi blocchi di meta-dati. Ted ha aggiunto l'opzione -R
       stride= in risposta alle mie spiegazioni e alla richiesta di
       una soluzione.


  Per un filesystem con blocchi da 4Kb e strisce da 256Kb, si potrebbe
  usare -R stride=64.


  Se non volete affidarvi all'opzione -R, potete ottenere un effetto
  simile in modo differente.  Steven A. Reisman <sar@pressenter.com>
  scrive:

       Un'altra questione  l'uso del filesystem su un dispositivo
       RAID-0.  Il filesystem ext2 alloca 8192 blocchi per ogni
       gruppo. Ogni gruppo ha il proprio set di inode. Se ci sono
       2, 4, o 8 dischi questi blocchi si accumulano nel primo
       disco. Ho distribuito gli inode su tutti i drive impostando
       mke2fs in modo da allocare solo 7932 blocchi per gruppo.


  Qualche pagina di mke2fs non descrive l'opzione [-g blocks-per-group]
  usata in questa operazione



  10.
     D: Dove posso mettere i comandi md negli script di avvio, in modo
     tale che tutto parta automaticamente al boot?


       R: Rod Wilkens <rwilkens@border.net> scrive:

       Quello che ho fatto  stato mettere ``mdadd -ar'' nel
       ``/etc/rc.d/rc.sysinit'' subito dopo il punto nel quale il
       kernel carica i moduli, e prima del controllo dischi di
       ``fsck''. In questa maniera si pu mettere il dispositivo
       ``/dev/md?'' in ``/etc/fstab''.  Quindi ho messo il comando
       ``mdstop -a'' subito dopo il comando ``umount -a'' nel file
       ``/etc/rc.d/init.d/halt''.


  Nel caso si usi raid-5 si dovr fare attenzione al codice di uscita di
  mdadd e, nel caso indichi un errore, eseguire


       ckraid --fix /etc/raid5.conf





  per riparare i danni.



  11.
     D: Mi chiedo se sia possibile configurare lo striping su pi di 2
     dispositivi in md0? Questo per un news server, e io ho 9 dischi...
     Non c' bisogno che dica che ne servono molti pi di due. 
     possibile?


       A: Si. (descrivere come)



  12.
     D: Quando Software RAID  superiore al RAID Hardware?

       R: Normalmente il RAID hardware  considerato superiore al
       RAID Software, poich i controller hardware dispongono
       spesso di una capiente cache e possono effettuare una pro
       grammazione migliore delle operazioni in parallelo. Comunque
       il software RAID integrato pu (e lo fa) avvantaggiarsi
       della sua integrazione con il sistema operativo.


       Per esempio, ... ummm. Oscura descrizione del caching dei
       blocchi ricostruiti nella cache del buffer tralasciata ...


        stato riferito che, su un sistema SMP con doppio PPro,
       software RAID supera le prestazioni di un hardware RAID di
       ben nota marca di un fattore variabile da 2 a 5.


  Software RAID  anche un'opzione molto interessante per
  sistemi server ridondanti ad altro gradi di affidabilit.
  In questa configurazione due CPU sono collegate ad un set di
  dischi SCSI. Se un server si blocca o non risponde pi
  l'altro server pu eseguire mdadd, mdrun e mount per montare
  la serie di dischi RAID, e continuare le operazioni. Questo
  tipo di operazione a doppio controllo non  sempre possibile
  con molti controller RAID, a causa del fatto che il
  controller hardware mantiene la stessa configurazione.



  13.
     D: Se aggiorno la mia versione di raidtools, posso avere problemi
     nella gestione di vecchi sistemi? In breve, devo ricreare i miei
     sistemi RAID ogni volta che aggiorno i programmi di utilit raid?


       R: No, a meno che non cambi il numero primario di versione.
       Una versione di MD x.y.z consiste di tre sottoversioni:

            x:      Versione primaria.
            y:      Versione secondaria.
            z:      Livello di patch.




       La versione x1.y1.z1 del driver RAID supporta un sistema
       RAID con versione x2.y2.z2 nel caso (x1 == x2) e (y1 >= y2).

       Le versioni che differiscono per il solo livello di patch
       (z) sono concepite in modo da essere compatibili.


       Il numero di versione secondario viene incrementato quando
       la struttura del sistema RAID viene modificata in modo tale
       da renderla incompatibile con le vecchie versioni del
       driver. Le nuove versioni del driver manterranno la
       compatibilit con i vecchi sistemi RAID.

       Il numero primario di versione viene incrementato quando non
       vi sono pi ragioni per continuare a supportare i vecchi
       sistemi RAID nel nuovo codice del kernel.


       Per quanto riguarda RAID-1,  improbabile che la struttura
       del disco o dei superblock venga alterata entro breve
       termine.  Le ottimizzazioni e le nuove funzioni
       (ricostruzione, tool che implementino il multithread, hot-
       plug ecc.) non vanno a modificare la struttura fisica.



  14.
     D: Il comando mdstop /dev/md0 dice che il dispositivo  occupato.


       R: C' un processo che ha un file aperto su /dev/md0 o
       /dev/md0  ancora montato. Chiudere il processo o eseguire
       umount /dev/md0.



  15.
     D: Vi sono dei tool per l'analisi delle prestazioni?
       R: Vi  anche un nuovo programma di utilit chiamato iotrace
       nella directory linux/iotrace. Esso legge /proc/io-trace e
       analizza/riporta il suo output. Se credete che le
       prestazioni dei vostri dispositivi a blocchi siano poco con
       vincenti, date un'occhiata all'output di iotrace.



  16.
     D: Leggendo i sorgenti di RAID ho visto il valore SPEED_LIMIT
     impostato a 1024K/sec. Che significa? Questo rallenta le
     prestazioni?


       R: SPEED_LIMIT viene usato per regolare la ricostruzione
       RAID quando essa avviene in automatico. Semplificando, la
       ricostruzione automatica permette di effettuare e2fsck e
       mount subito dopo uno shutdown sporco, senza prima dover
       eseguire ckraid. La ricostruzione automatica viene usata
       anche dopo la sostituzione di un disco rotto.


       Per evitare un sovraccarico del sistema mentre la
       ricostruzione  in corso, il processo di ricostruzione
       controlla la velocit alla quale essa avviene e la rallenta
       se  troppo veloce.  Il limite di 1M/sec  stato scelto
       arbitrariamente come ragionevole velocit che consente alla
       ricostruzione di finire in un tempo accettabile, con solo un
       leggero carico del sistema, in modo tale che gli altri
       processi non vengano disturbati.



  17.
     D: E riguardo la ''spindle synchronization'' o ''disk
     synchronization'' ("sincronizzazione dei dischi". ndt)?

       R: La sincronizzazione dei dischi viene usata per far girare
       pi hard disk esattamente alla stessa velocit, in modo tale
       che le loro superfici siano sempre perfettamente allineate.
       Questo metodo viene usato da qualche controller hardware per
       migliorare l'organizzazione degli accessi in scrittura.
       Tuttavia, per quanto riguarda Software RAID, questa infor
       mazione non viene usata e la sincronizzazione dei dischi pu
       addirittura influire negativamente sulle prestazioni.



  18.
     D: Come posso creare degli spazi di swap usando raid 0?  Lo stripe
     delle aree di swap su pi di 4 dischi  realmente veloce?

       R: Leonard N. Zubkoff risponde:  veramente veloce, ma non
       c' necessit di usare MD per mettere in strip le aree di
       swap. Il kernel usa automaticamente le strisce su diverse
       aree di swap a priorit uguale. Per esempio, la seguente
       configurazione di /etc/fstab mette in stripe le aree di swap
       su cinque drive suddivisi in tre gruppi:








  /dev/sdg1       swap    swap    pri=3
  /dev/sdk1       swap    swap    pri=3
  /dev/sdd1       swap    swap    pri=3
  /dev/sdh1       swap    swap    pri=3
  /dev/sdl1       swap    swap    pri=3
  /dev/sdg2       swap    swap    pri=2
  /dev/sdk2       swap    swap    pri=2
  /dev/sdd2       swap    swap    pri=2
  /dev/sdh2       swap    swap    pri=2
  /dev/sdl2       swap    swap    pri=2
  /dev/sdg3       swap    swap    pri=1
  /dev/sdk3       swap    swap    pri=1
  /dev/sdd3       swap    swap    pri=1
  /dev/sdh3       swap    swap    pri=1
  /dev/sdl3       swap    swap    pri=1





  19.
     D: Voglio ottimizzare le prestazioni. Devo usare controller
     multipli?

       R: In molti casi la risposta  si. L'uso di controller mul
       tipli per accedere in parallelo al disco consentir un
       incremento delle prestazioni. Ovviamente il miglioramento
       effettivo dipender dalla vostra particolare configurazione.
       Per esempio  stato riferito (Vaughan Pratt, gennaio 98) che
       un singolo Cheetah da 4.3Gb collegato ad un Adaptec 2940UW
       pu arrivare ad un trasferimento di 14Mb/sec (senza l'uso di
       RAID). Installando due dischi su un controller e usando una
       configurazione RAID-0 si arriva ad una prestazione di
       27Mb/sec.


       Si noti che il controller 2940UW  un controller SCSI
       "Ultra-Wide", capace di un trasferimento teorico di
       40Mb/sec.  quindi la velocit di trasferimento misurata non
       sorprende.  Tuttavia un controller pi lento collegato a due
       dischi veloci potrebbe fare da collo di bottiglia. Si noti
       anche che molte periferiche SCSI out-board (ad es. i tipi
       con le connessioni utilizzabili "a caldo")  non possono
       arrivare a 40Mb/sec a causa del rumore elettrico e di quello
       dovuto al cablaggio.



       Se state progettando un sistema a controller multipli tenete
       a mente il fatto che molti dischi e molti controller
       funzionano normalmente al 70-85% della loro velocit
       massima.


       Si noti anche che l'uso di un controller per disco pu
       ridurre la probabilit che il sistema si blocchi a causa di
       un malfunzionamento dei cavi o del controller (Teoricamente
       -- questo accade solo nel caso in cui il driver del
       controller riesca a gestire ordinatamente un controller
       rotto.  Non tutti i device driver SCSI sembrano riuscire a
       gestire una simile situazione senza andare in panico o
       bloccarsi in altra maniera).




  9.  RAID ad Alta Affidabilit


  1. D: RAID mi aiuta a cautelarmi dalla perdita di dati. Ma come posso
     anche assicurarmi che il sistema resti funzionante il maggior tempo
     possibile, e non sia soggetto a dei blocchi? Idealmente, vorrei un
     sistema che funzioni 24 ore al giorno, 7 giorni alla settimana, 365
     giorni all'anno.


       R: Raggiungere l'Alta Affidabilit  difficile e dis
       pendioso.  Pi si cerca di rendere indipendente dai guasti
       il sistema, pi il sistema diventa difficile e costoso. I
       seguenti trucchi, consigli, idee e voci non confermate forse
       possono aiutarvi nella vostra ricerca.

         I dischi IDE si possono rompere in maniera tale che il
          disco rotto su un cavo IDE pu impedire al disco
          funzionante sullo stesso cavo di rispondere, facendo
          apparire la cosa come se tutti e due i dischi fossero
          rotti.  Poich RAID non protegge dal malfunzionamento di
          due dischi si dovr o mettere un solo disco su un cavo
          IDE o, se ci sono due dischi sullo stesso cavo, essi
          devono fare parte di set RAID differenti.

         I dischi SCSI si possono rompere in maniera tale da
          impedire l'accesso alle altre unit SCSI collegate in
          cascata.  La modalit di malfunzionamento implica un
          cortocircuito del pin (condiviso dalle altre unit)
          attraverso il quale viene segnalato che il dispositivo 
          pronto; poich questo collegamento  condiviso, non si
          possono effettuare operazioni finch il cortocircito non
          sia rimosso.  Quindi, due dischi SCSI sulla stessa catena
          non devono appartenere allo stesso set RAID.

         Simili considerazioni valgono anche per i controller.
          Non usate tutti i canali di un controller; usate diversi
          controller.

         Non usate la stessa marca o modello per tutti i dischi.
          Non  improbabile che dei forti temporali ve ne possano
          rompere due o pi (s, tutti usiamo degli stabilizzatori
          di corrente, ma questi non sono macchine perfette).  Il
          caldo e l'insufficiente ventilazione del disco sono altri
          killer di dischi. I dischi a buon prezzo spesso si
          surriscaldano. L'uso di modelli differenti di dischi e
          controller diminuisce la probabilit che qualsiasi cosa
          succeda ad un disco (il caldo, uno shock fisico,
          vibrazioni, sovratensioni) possa succedere anche agli
          altri nello stesso modo.

         Per cautelarsi da malfunzionamenti del controller o del
          PC, potrebbe essere possibile costruire un set di dischi
          SCSI che sia "twin-tailed"; collegato cio a due
          computer. Un computer monta il filesystem in lettura-
          scrittura, mentre il secondo computer lo monta in sola
          lettura, e agisce da "hot spare" (ricambio a caldo ndt).
          Quando il computer che agisce da "hot spare" viene
          informato del fatto che il computer principale si  rotto
          (ad es. attraverso un watchdog), toglie tensione al
          computer principale (per essere sicuri che sia realmente
          spento) e quindi effettua un fsck e rimonta il filesystem
          in lettura-scrittura. Se qualcuno riesce a far funzionare
          questa configurazione lo prego di farmi sapere.


    Usare sempre un UPS ed effettuare shutdown puliti.  Anche
     se uno shutdown sporco pu non danneggiare i dischi,
     l'esecuzione di ckraid su un sistema di dischi anche
     piccolo  estremamente lenta. Oppure potete hackerare il
     kernel e fare un debug del codice che riguarda la
     ricostruzione a caldo...

    I cavi SCSI sono famosi per essere delle creature dal
     comportamento variabile, soggette ad ogni sorta di
     accidenti. Usate i migliori cavi che possiate rimediare.
     Si usi il bubble-wrap per assicurarsi che i cavi non
     stiano troppo vicino l'uno all'altro generando mutue
     interferenze. Si osservino rigorosamente le restrizioni
     sulla lunghezza dei cavi.

    Date un'occhiata a SSI (Serial Storage Architecture).
     Anche se dispendiosa, si dice che sia pi affidabile
     della tecnologia SCSI.

    Divertitevi,  pi tardi di quanto immaginiate.


  10.  Domande che attendono risposta


  1. D: Se, per ragioni di prezzo, metto in mirror un disco lento con
     uno veloce, il software sar abbastanza scaltro da bilanciare le
     richieste di lettura tenendo conto della velocit dei dischi o far
     rallentare il tutto alla velocit del disco pi lento?


  2. D: Per testare il thru-put del disco...  c' un dispositivo a
     caratteri cui si possa accedere direttamente al posto di /dev/sdaxx
     che si possa usare per valutare le prestazioni dei dischi raid??
     c' un programma GUI che si possa usare per controllare il thru-put
     del disco??


  11.  Desiderata di MD e del relativo software

  Bradley Ward Allen <ulmo@Q.Net> ha scritto:

       Le idee includono:

         Parametri di boot per dire al kernel quali dispositivi
          dovranno essere dispositivi MD (niente pi ``mdadd'')

         Rendere MD trasparente a ``mount''/``umount'' in modo
          tale che non vi siano pi ``mdrun'' e ``mdstop''

         Completa integrazione nel kernel di ``ckraid'' e sua
          esecuzione automatica in caso di bisogno.

          (Ho gi suggerito di smetterla di usare i tool e di
          integrarli nel kernel; io la penso cos, si parla di un
          filesystem, non di un giocattolo.)

         Trattare sistemi che possano facilmente sopravvivere al
          malfunzionamento (simultaneo o in momenti separati) di N
          dischi, con N intero > 0 definito dall'amministratore di
          sistema.

         Migliorarne il comportamento in caso di blocco del
          kernel, problemi con l'alimentazione e altri shutdown
          improvvisi.

    Non disabilitare l'intero disco se solo una parte di esso
     si  rovinata, ad es. se gli errori di lettura sono meno
     del 50% su 20 diverse richieste di accesso, si continua
     ad usare il disco ignorando i settori che hanno dato
     problemi.

    Settori danneggiati:

    Un meccanismo che consenta di memorizzare da qualche
     parte nel disco quali settori sono danneggiati.

    Se esiste gi una convenzione riconoscibile dai
     filesystem di livello pi alto per marcare i settori
     danneggiati, questa deve essere usata. Programmarne una
     se non ne esiste una riconoscibile.

    Forse in alternativa un meccanismo per fare sapere allo
     strato superiore che le dimensioni del disco si sono
     ridotte, magari implementando una automazione che
     consenta allo strato superiore di spostare i dati dalle
     aree che vengono eliminate. Questo potrebbe anche andare
     bene per trattare i blocchi danneggiati.

    Nel caso non si possano realizzare le idee di cui sopra,
     lasciare una piccola parte del disco (definibile
     dall'amministratore di sistema) da parte per i blocchi
     danneggiati (magari distribuita su tutto il disco?) e
     usare questa area (la pi vicina) al posto dei blocchi
     danneggiati quando questi vengono scoperti. Ovviamente
     questa soluzione  inefficiente. Oltretutto il kernel
     dovrebbe mettere nei log, ogni volta che il sistema RAID
     viene avviato, tutti i settori danneggiati e i
     provvedimenti adottati nei loro riguardi con priorit
     ``crit'', solo per far sapere all'amministratore che il
     suo disco  impolverato internamente (o ha una testina
     malata).

    Dischi (dis)attivabili via software:

     ``disattiva questo disco''
        si blocca fino a che il kernel non si  assicurato che
        non vi siano dati che possono servire sul disco che
        sta per essere disattivato (ad es. per completare uno
        XOR/ECC/ o altra correzione di errore), quindi cessa
        l'utilizzo del disco (in modo che possa essere
        rimosso, ecc.)

     ``attiva questo disco''
        esegue, se necessario, mkraid su un nuovo disco e
        quindi lo utilizza per le operazioni ECC/qualsiasi,
        ampliando quindi il sistema RAID5;

     ``ridimensiona il sistema''
        reimposta il numero totale di dischi e il numero di
        dischi ridondanti, spesso con il risultato di
        aumentare le dimensioni del sistema RAID; sarebbe
        bello poter usare questa opzione, quando serve, senza
        perdere dati, ma mi viene difficile immaginare come
        possa funzionare effettivamente; in ogni caso, un modo
        per sospendere (possibilmente per delle ore (il kernel
        dovrebbe scrivere qualcosa nei log ogni dieci secondi
        in questo caso)) potrebbe essere necessario;

     ``attiva questo disco mentre salvi i dati''
        che salvi i dati su un disco cos com' e lo inserisca
        in un sistema RAID5, in modo tale che l'orrendo "salva
        e ripristina" non debba essere eseguito ogni volta che
        qualcuno configuri un sistema RAID5 (oppure, potrebbe
        essere pi semplice salvare una partizione al posto di
        due, potrebbe addirittura entrare nella prima come
        file compresso con gzip); infine,

     ``riattiva disco''
        potrebbe essere un modo grazie al quale l'operatore
        scavalca il SO per provare un disco che in precedenza
        era risultato non funzionante (potrebbe semplicemente
        chiamare "disattiva" e quindi "attiva", penso).


  Altre idee dalla rete:


         rendere finalrd simile a initrd, per semplificare il boot
          da raid.

         una modalit raid di sola scrittura, per rendere pi
          semplice quanto sopra

         Contrassegnare il sistema RAID come "pulito" quando non
          siano state effettuate "mezze scritture". -- Sarebbe come
          dire che non vi sono operazioni di scrittura finite su un
          disco e ancora da ultimare su un altro disco.

          Aggiungere un timeout che segnali "inattivit in
          scrittura" (per evitare seek frequenti al superblock RAID
          quando il sistema RAID  relativamente occupato.)