This file is indexed.

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

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
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
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Guide pratique de LVM</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/><meta name="description" content="Ce document explique comment compiler, installer et configurer le gestionnaire de volumes logiques (LVM) de Linux. Il inclut aussi une description synthétique de LVM. Cette version de guide pratique couvre LVM 2 avec le mappeur de périphériques et LVM 1.0.8."/></head><body><div xml:lang="fr" class="book"><div class="titlepage"><div><div><h1 class="title"><a id="d0e1"/>
      Guide pratique de LVM
    </h1></div><div><h2 class="subtitle">
      Version française du <span class="foreignphrase"><em class="foreignphrase">LVM HOWTO</em></span>
    </h2></div><div><div class="author"><h3 class="author"><span class="firstname">A. J.</span> <span class="surname">Lewis</span></h3><div class="affiliation"><div class="address"><p><br/>
		<code class="email">&lt;<a class="email" href="mailto:alewis CHEZ rackable POINT com">alewis CHEZ rackable POINT com</a>&gt;</code><br/>
        </p></div></div></div></div><div><p class="othercredit"><span class="contrib">Adaptation française</span> : <span class="firstname">Emmanuel</span> <span class="surname">Araman</span></p></div><div><p class="othercredit"><span class="contrib">Relecture de la version française</span> : <span class="firstname">Camille</span> <span class="surname">Huot</span>, <span class="firstname">Alain</span> <span class="surname">Portal</span></p></div><div/><div><p class="othercredit"><span class="contrib">Préparation de la publication de la v.f.</span> : <span class="firstname">Jean-Philippe</span> <span class="surname">Guérard</span></p></div><div><p class="releaseinfo">Version : 0.19.fr.1.0</p></div><div><p class="copyright">Copyright © 2002-2003 Sistina Software, Inc</p></div><div><p class="copyright">Copyright © 2004-2005 Red Hat, Inc</p></div><div><p class="copyright">Copyright © 2005-2006 Terrascale Technologies, Inc</p></div><div><p class="copyright">Copyright © 2006 Rackable Systems, Inc</p></div><div><p class="copyright">Copyright © 2004-2007 Emmanuel Araman, Camille Huot, Alain Portal, Jean-Philippe Guérard</p></div><div><div class="legalnotice"><a id="d0e434"/><p>

        Vous est autorisé à copier, distribuer et modifier ce document
        selon les termes de la Licence de documentation libre GNU
        (GFDL), version 1.2 ou ultérieure, telle que publiée par la Free
        Software Foundation ; sans section inaltérable, ni texte de
        première de couverture, ni texte de quatrième de couverture. La
        section <span class="quote">« <span class="quote">GNU Free Documentation License</span> »</span> contient 
        une copie de cette licence.

      </p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

        Permission is granted to copy, distribute and/or modify
        this document under the terms of the GNU Free
        Documentation License, Version 1.2 published by the Free
        Software Foundation; with no Invariant Sections, no
        Front-Cover Texts and no Back-Cover Texts.  A copy of the
        license is included in the section entitled "GNU Free
        Documentation License".

      </em></span></p><p>

        Ce document est distribué dans l'espoir qu'il sera utile mais
        SANS AUCUNE GARANTIE, explicite ou implicite. Même si tous les
        efforts ont été faits pour assurer l'exactitude des informations
        fournies ici, les auteurs, éditeurs, responsables des mises à
        jours et contributeurs n'assument AUCUNE RESPONSABILITÉ pour les
        erreurs ou les dommages, directs ou indirects, qui pourraient
        résulter de l'utilisation des informations ci-incluses.

      </p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

         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(s)/editor(s)/maintainer(s)/contributor(s) assumes NO
         RESPONSIBILITY for any errors, or for any damages, direct or
         consequential, as a result of the use of the information
         documented herein.

      </em></span></p></div></div><div><p class="pubdate">28 janvier 2007</p></div><div><div class="revhistory"><table summary="Historique des versions"><tr><th align="left" valign="top" colspan="3"><strong>Historique des versions</strong></th></tr><tr><td align="left">Version 0.19.fr.1.0</td><td align="left">2007-01-28</td><td align="left">EA</td></tr><tr><td align="left" colspan="3">Mise à jour de la version française.</td></tr><tr><td align="left">Version 0.14.fr.1.0</td><td align="left">2004-10-11</td><td align="left">EA, CH, AP, JPG</td></tr><tr><td align="left" colspan="3">Première traduction française.</td></tr><tr><td align="left">Version 0.19</td><td align="left">2006-11-27</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
              Clarification des conditions pour les sauvegardes instantanées dans 
              <a class="link" href="#snapshotintro" title="8. Les instantanés (snapshots)">Section 8, « Les instantanés (snapshots) »</a> 
              et ajout d'une remarque sur le redimensionnement de la source d'un instantané  
              <span class="emphasis"><em>(Clarified full snapshot conditions in <a class="link" href="#snapshotintro" title="8. Les instantanés (snapshots)">Section 8, « Les instantanés (snapshots) »</a>
              and <a class="link" href="#snapbackcreate" title="4.1. Créer le volume d'instantané">Section 4.1, « Créer le volume d'instantané »</a> 
              and added a note about resizing the origin of a snapshot)</em></span> ;
              correction des droits d'utilisation <span class="emphasis"><em>(Fixed Rackable copyright)</em></span> ;
              correction de l'adresse e-mail <span class="emphasis"><em>(Fixed e-mail address)</em></span>.
        </td></tr><tr><td align="left">Version 0.18</td><td align="left">2006-11-27</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Clarification sur l'utilisation du disque complet dans <a class="link" href="#initdisks" title="1. Initialiser des disques ou des partitions de disques">Section 1, « Initialiser des disques ou des partitions de disques »</a>       <span class="emphasis"><em>(Clarify whole disk usage in <a class="link" href="#initdisks" title="1. Initialiser des disques ou des partitions de disques">Section 1, « Initialiser des disques ou des partitions de disques »</a>)</em></span> ;
          mise à jour des droits d'utilisation <span class="emphasis"><em>(Updated copyright)</em></span> ;
          mise à jour de l'adresse e-mail <span class="emphasis"><em>(Updated e-mail address)</em></span>.
        </td></tr><tr><td align="left">Version 0.17</td><td align="left">2005-10-03</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Ajout d'une entrée dans la FAQ sur la taille maximale des LVs avec LVM 2 <span class="emphasis"><em>(Added FAQ entry for max size of LVs in LVM2)</em></span> ;
          ménage dans le paragraphe "Récupération des méta-données d'un volume physique" <span class="emphasis"><em>(Did some cleanup of "Recover physical volume metadata" section)</em></span> ;
          mise à jour de l'adresse e-mail <span class="emphasis"><em>(Updated e-mail address)</em></span>.
        </td></tr><tr><td align="left">Version 0.16</td><td align="left">2005-07-15</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Ajout d'informations relatives au scripts de démarrage de LVM 2 <span class="emphasis"><em>(Added lvm2 boot-time scripts info)</em></span> ;
          ajout du paragraphe "Récupération des méta-données d'un volume physique" - remerciements à Maximilian Attems pour le patch  <span class="emphasis"><em>(Added "Recover physical volume metadata" section - thanks to Maximilian Attems for the patch)</em></span>.
        </td></tr><tr><td align="left">Version 0.15</td><td align="left">2005-06-09</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Suppression des références à xfs_freeze, qui ne sont plus nécessaires <span class="emphasis"><em>(Removed references to xfs_freeze - it is no longer needed)</em></span> ;
          mise à jour du paragraphe sur les instantanés dans le chapitre "Anatomie de LVM" <span class="emphasis"><em>(Updated snapshots subsection in Anatomy of LVM section)</em></span> ;
          ajout de plusieurs entrées dans la FAQ LVM 2 <span class="emphasis"><em>(Added a couple entries to the LVM2 FAQ)</em></span> ;
          correction de plusieurs coquilles <span class="emphasis"><em>(Fixed a couple typos)</em></span>.
        </td></tr><tr><td align="left">Version 0.14</td><td align="left">2004-10-06</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Ajout d'une référence au script lvm2_createinitrd dans les
          sources ; petite mise à jour de l'exemple de
          lvcreate ; ajout de « vgchange -ay » dans la
          recette « Déplacer un groupe de volumes vers un autre
          système » <span class="emphasis"><em>(Added reference to lvm2_createinitrd
          in source tree; Adjusted lvcreate example slightly; Added
          'vgchange -ay' in 'Moving a volume group to another system'
          recipe)</em></span>.

        </td></tr><tr><td align="left">Version 0.13</td><td align="left">2004-08-16</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Clarification de la description sur les liens ; correction du
          nombre majeur du périphérique de contrôle de dm ; suppression
          de /boot de vg dans l'exemple de petite configuration LVM ;
          ajout de commentaires sur /boot et / dans LVM ; suppression
          d'un lien mort <span class="emphasis"><em>(Clarify symlink farm description;
          Fix dm control device major number; Remove /boot from vg in
          small lvm setup example; Add notes about /boot and / on LVM;
          Remove outdated link)</em></span>.

        </td></tr><tr><td align="left">Version 0.12</td><td align="left">2004-06-07</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Mise à jour de la FAQ sur LVM 2
          <span class="emphasis"><em>(Updated LVM 2 FAQ entries)</em></span>
        </td></tr><tr><td align="left">Version 0.11</td><td align="left">2004-05-03</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">
          Mise à jour de la FAQ sur LVM 2
          <span class="emphasis"><em>(Updated LVM 2 FAQ entries)</em></span>
        </td></tr><tr><td align="left">Version 0.10</td><td align="left">2004-04-22</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Retrait de -print0 de la commande find suite aux retours
          indiquant que cela ne fonctionne pas <span class="emphasis"><em>(removed
          -print0 from find command after receiving reports that it
          doesn't work)</em></span>.

        </td></tr><tr><td align="left">Version 0.9</td><td align="left">2004-04-16</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Ajout de -print0 à la commande find avant la redirection vers
          cpio <span class="emphasis"><em>(Added -print0 to find command before pipingit
          to cpio)</em></span> ; changement de la ligne de commande
          vgimport pour LVM 2 <span class="emphasis"><em>(Changed vgimport command line
          for LVM 2)</em></span> ; ajout de ext3 au paragraphe de
          redimensionnement de ext2 <span class="emphasis"><em>(Added ext3 to the ext2
          resize section)</em></span> ; mise à jour de la FAQ
          <span class="emphasis"><em>(Updated FAQ)</em></span>  mise à jour des liens
          <span class="emphasis"><em>(Updated Links section)</em></span>.

        </td></tr><tr><td align="left">Version 0.8</td><td align="left">2004-02-25</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour de l'emplacement du CVS et des liens FTP
          <span class="emphasis"><em>(Updated CVS locations and FTP
          links)</em></span> ; ajout d'un paragraphe sur l'extension
          d'un système de fichiers JFS <span class="emphasis"><em>(Added section on
          extending a JFS filesystem)</em></span> ; corrections
          typographiques — utilisation d'aspell sur le document
          <span class="emphasis"><em>(Fixed typos - Ran aspell against
          document)</em></span>.

        </td></tr><tr><td align="left">Version 0.7</td><td align="left">2004-02-16</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour pour inclure les informations sur LVM 2 et le
          mappeur de périphériques <span class="emphasis"><em>(Updated to include LVM 2
          and device mapper information)</em></span>  mise à jour
          des adresses électroniques <span class="emphasis"><em>(Updated email
          addresses)</em></span> ; mise à jour des droits
          d'utilisation <span class="emphasis"><em>(Updated copyright)</em></span> ;
          ajout de la FAQ <span class="emphasis"><em>(Added FAQ
          section)</em></span> ; ajout de la licence
          <span class="emphasis"><em>(Added document license)</em></span> ; mise à
          jour vers DocBook 4.2 <span class="emphasis"><em>(Updated to docbook
          4.2)</em></span>.

        </td></tr><tr><td align="left">Version 0.6</td><td align="left">2003-12-09</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour pour LVM 1.0.8 <span class="emphasis"><em>(Updated for
          LVM 1.0.8)</em></span> ; réparation d'un lien cassé
          <span class="emphasis"><em>(fixed broken link)</em></span> ; clarification
          de la partie sur le script d'initialisation RedHat
          <span class="emphasis"><em>(Clarified redhat init script section)</em></span>.

        </td></tr><tr><td align="left">Version 0.5</td><td align="left">2003-02-10</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour des informations du script initscript de RedHat
          pour les versions 7.0 et supérieures <span class="emphasis"><em>(Updated Redhat
          initscript information for 7.0 and above)</em></span> ;
          ajout des informations pour supprimer une table de partitions
          d'un disque lorsque pvcreate échoue <span class="emphasis"><em>(Added
          information on removing a partition table from a disk if
          pvcreate fails)</em></span> ; la taille par défaut de PE
          est désormais de 32 Mo <span class="emphasis"><em>(Default PE size is 32MB
          now)</em></span> ; mise à jour de la méthode d'instantanés
          avec XFS <span class="emphasis"><em>(Updated method for snapshotting under
          XFS)</em></span>.

        </td></tr><tr><td align="left">Version 0.4</td><td align="left">2002-12-16</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour pour LVM 1.0.6 <span class="emphasis"><em>(Updated for LVM
          1.0.6)</em></span>.

        </td></tr><tr><td align="left">Version 0.3</td><td align="left">2002-09-16</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Suppression de l'exemple de pvmove du chapitre
          « Opérations de commandes » — nous pointons
          désormais vers la recette plus détaillée sur pvmove qui
          contient différents avertissements <span class="emphasis"><em>(removed example
          pvmove from Command Operations section - we now just point to
          the more detailed recipe on pvmove that contains various
          warnings and such)</em></span>.

        </td></tr><tr><td align="left">Version 0.2</td><td align="left">2002-09-11</td><td align="left">AJL</td></tr><tr><td align="left" colspan="3">

          Mise à jour pour LVM 1.0.5 et conversion vers DocBook XML
          4.1.2. <span class="emphasis"><em>(Updated for LVM 1.0.5 and converted to
          DocBook XML 4.1.2)</em></span>.

        </td></tr><tr><td align="left">Version 0.1</td><td align="left">2002-04-28</td><td align="left">gf</td></tr><tr><td align="left" colspan="3">

          Conversion initiale du source du format Latex de Sistina vers
          le format LinuxDoc du tLDP <span class="emphasis"><em>(Initial conversion from
          Sistina's LaTeX source and import to tLDP in LinuxDoc
          format)</em></span>.

        </td></tr></table></div></div><div><div class="abstract"><p class="title"><strong>Résumé</strong></p><p>

        Ce document explique comment compiler, installer et configurer
        le gestionnaire de volumes logiques (LVM) de Linux. Il inclut
        aussi une description synthétique de LVM. Cette version de guide
        pratique couvre LVM 2 avec le mappeur de périphériques et LVM
        1.0.8.

      </p></div></div></div><hr/></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="preface"><a href="#intro">Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="#latest_version">1. Dernière version de ce document</a></span></dt><dt><span class="sect1"><a href="#disclaimer">2. Limitations de responsabilité</a></span></dt><dt><span class="sect1"><a href="#contributors">3. Auteurs</a></span></dt></dl></dd><dt><span class="chapter"><a href="#whatislvm">1. Qu'est-ce que LVM ?</a></span></dt><dt><span class="chapter"><a href="#whatisvolman">2. Qu'est-ce que la gestion par volumes logiques ?</a></span></dt><dd><dl><dt><span class="sect1"><a href="#whywouldiwantit">1. Pourquoi en voudrais-je ?</a></span></dt><dt><span class="sect1"><a href="#benefitsoflvmsmall">2. Bénéfices de la gestion par volumes logiques sur un petit
      système</a></span></dt><dt><span class="sect1"><a href="#benefitsoflvmlarge">3. Avantages de la gestion par volumes logiques sur un gros
      système</a></span></dt></dl></dd><dt><span class="chapter"><a href="#anatomy">3. Anatomie de LVM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#VG">1. Groupe de volumes (Volume Group, VG)</a></span></dt><dt><span class="sect1"><a href="#PV">2. Volume physique (Physical Volume, PV)</a></span></dt><dt><span class="sect1"><a href="#LV">3. Volume logique (Logical Volume, LV)</a></span></dt><dt><span class="sect1"><a href="#PE">4. Extent physique (Physical Extent, PE)</a></span></dt><dt><span class="sect1"><a href="#LE">5. Extent logique (Logical Extent, LE)</a></span></dt><dt><span class="sect1"><a href="#tyingittogether">6. Mettre tout ensemble</a></span></dt><dt><span class="sect1"><a href="#mapmode">7. Types de correspondances (linéaire/répartie)</a></span></dt><dt><span class="sect1"><a href="#snapshotintro">8. Les instantanés (snapshots)</a></span></dt></dl></dd><dt><span class="chapter"><a href="#FAQ">4. Questions fréquemment posées</a></span></dt><dd><dl><dt><span class="sect1"><a href="#lvm2faq">1. FAQ LVM 2 </a></span></dt><dt><span class="sect1"><a href="#lvm1faq">2. FAQ LVM 1</a></span></dt></dl></dd><dt><span class="chapter"><a href="#getlvm">5. Obtenir LVM</a></span></dt><dd><dl><dt><span class="sect1"><a href="#downloadsource">1. Télécharger le code source</a></span></dt><dt><span class="sect1"><a href="#PublicCVS">2. Télécharger le code source de développement par CVS</a></span></dt><dt><span class="sect1"><a href="#beforebeginning">3. Avant de commencer</a></span></dt><dt><span class="sect1"><a href="#initsetup">4. Configuration initiale</a></span></dt><dt><span class="sect1"><a href="#checkoutsource">5. Récupération du code source</a></span></dt><dt><span class="sect1"><a href="#codeupdate">6. Mise à jour du code</a></span></dt><dt><span class="sect1"><a href="#startproj">7. Commencer un projet</a></span></dt><dt><span class="sect1"><a href="#hackingcode">8. Bidouiller le code</a></span></dt><dt><span class="sect1"><a href="#conflicts">9. Conflits</a></span></dt></dl></dd><dt><span class="chapter"><a href="#builddernelmods">6. Construire les modules du noyau</a></span></dt><dd><dl><dt><span class="sect1"><a href="#builddmmod">1. Construire le module noyau device-mapper</a></span></dt><dt><span class="sect1"><a href="#buildlvmmod">2. Construire le module du noyau pour LVM 1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#buildlvmpatch">2.1. Fabriquer un correctif pour votre noyau</a></span></dt><dt><span class="sect2"><a href="#buildlvm1-2.2">2.2. Construire le module LVM pour Linux 2.2.17+</a></span></dt><dt><span class="sect2"><a href="#buildlvm1-2.4">2.3. Compiler les modules LVM pour Linux 2.4</a></span></dt><dt><span class="sect2"><a href="#checkproc">2.4. Vérifier le système de fichiers proc</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#boot_scripts">7. Scripts de démarrage pour LVM 1</a></span></dt><dd><dl><dt><span class="sect1"><a href="#initscriptcaldera">1. Caldera</a></span></dt><dt><span class="sect1"><a href="#initscriptdebian">2. Debian</a></span></dt><dt><span class="sect1"><a href="#initscriptmandrake">3. Mandrake</a></span></dt><dt><span class="sect1"><a href="#initscriptredhat">4. Redhat</a></span></dt><dt><span class="sect1"><a href="#initscriptslackware">5. Slackware</a></span></dt><dt><span class="sect1"><a href="#initscriptsuse">6. SuSE</a></span></dt></dl></dd><dt><span class="chapter"><a href="#lvm2_boot">8. Scripts de démarrage pour LVM 2</a></span></dt><dt><span class="chapter"><a href="#buildlvm">9. Compiler LVM à partir des sources</a></span></dt><dd><dl><dt><span class="sect1"><a href="#makelvm1user">1. Compiler la bibliothèque et les utilitaires LVM </a></span></dt><dt><span class="sect1"><a href="#installlvm1user">2. Installer la bibliothèque LVM et les utilitaires</a></span></dt><dt><span class="sect1"><a href="#removelvm1user">3. Supprimer la bibliothèque LVM et les utilitaires</a></span></dt></dl></dd><dt><span class="chapter"><a href="#trans1">10. Migrer d'une version précédente de LVM vers LVM 1.0.8</a></span></dt><dd><dl><dt><span class="sect1"><a href="#upgradelvm1">1. Migrer vers LVM 1.0.8 avec une partition racine non LVM</a></span></dt><dt><span class="sect1"><a href="#upgradetolvmroot">2. Migrer vers LVM 1.0.8 avec une partition racine en LVM et
      initrd</a></span></dt></dl></dd><dt><span class="chapter"><a href="#commontask">11. Tâches courantes</a></span></dt><dd><dl><dt><span class="sect1"><a href="#initdisks">1. Initialiser des disques ou des partitions de disques</a></span></dt><dt><span class="sect1"><a href="#createvgs">2. Créer un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#activatevgs">3. Activer un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#removevgs">4. Enlever un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#addpvstovg">5. Ajouter un volume physique à un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#removepvsfromvg">6. Supprimer un volume physique d'un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#createlv">7. Créer un volume logique</a></span></dt><dt><span class="sect1"><a href="#removelv">8. Supprimer un volume logique</a></span></dt><dt><span class="sect1"><a href="#extendlv">9. Étendre un volume logique</a></span></dt><dt><span class="sect1"><a href="#reducelv">10. Réduire un volume logique</a></span></dt><dt><span class="sect1"><a href="#migrateoffpv">11. Migrer des données hors d'un volume physique</a></span></dt></dl></dd><dt><span class="chapter"><a href="#diskpart">12. Partitionnement de disques</a></span></dt><dd><dl><dt><span class="sect1"><a href="#multpartitions">1. Plusieurs partitions sur le même disque</a></span></dt><dt><span class="sect1"><a href="#sundisklabels">2. Étiquettes de disque Sun (Sun disk labels)</a></span></dt></dl></dd><dt><span class="chapter"><a href="#recipes">13. Recettes</a></span></dt><dd><dl><dt><span class="sect1"><a href="#recipethreescsi">1. Mettre en place LVM avec trois disques SCSI</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2292">1.1. Préparation des disques</a></span></dt><dt><span class="sect2"><a href="#d0e2311">1.2. Configuration du groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2330">1.3. Création du volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2339">1.4. Création du système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2346">1.5. Test du système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipethreescsistripe">2. Mise en place de LVM sur trois disques SCSI avec
      répartition (striping)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2371">2.1. Préparation des partitions de disque</a></span></dt><dt><span class="sect2"><a href="#d0e2390">2.2. Configuration du groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2409">2.3. Création du volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2426">2.4. Création du système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2433">2.5. Test du système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipeadddisk">3. Ajouter un nouveau disque dans un système avec plusieurs disques
      SCSI</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2450">3.1. Situation actuelle</a></span></dt><dt><span class="sect2"><a href="#d0e2468">3.2. Préparation du partitionnement du disque</a></span></dt><dt><span class="sect2"><a href="#d0e2479">3.3. Ajout des nouvelles partitions au groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2486">3.4. Extension des systèmes de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2499">3.5. Remontage des volumes étendus</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Snapshots_Backup">4. Faire une sauvegarde avec un instantané (snapshot)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#snapbackcreate">4.1. Créer le volume d'instantané</a></span></dt><dt><span class="sect2"><a href="#d0e2536">4.2. Monter le volume d'instantané</a></span></dt><dt><span class="sect2"><a href="#d0e2550">4.3. Faire la sauvegarde</a></span></dt><dt><span class="sect2"><a href="#d0e2557">4.4. Supprimer l'instantané</a></span></dt></dl></dd><dt><span class="sect1"><a href="#RemoveADisk">5. Enlever un disque</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2574">5.1. Distribuer les anciens extents vers des disques existants du
        groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2603">5.2. Distribuer les anciens extents sur un nouveau disque de
        remplacement</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipemovevgtonewsys">6. Déplacer un groupe de volumes vers un autre système</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2646">6.1. Démonter le système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2653">6.2. Marquer le groupe de volumes comme inactif</a></span></dt><dt><span class="sect2"><a href="#d0e2660">6.3. Exporter le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2672">6.4. Importer le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2683">6.5. Activer le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2690">6.6. Monter le système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipesplitvg">7. Diviser un groupe de volumes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2705">7.1. Déterminer l'espace libre</a></span></dt><dt><span class="sect2"><a href="#d0e2715">7.2. Déplacer les données des disques à réutiliser</a></span></dt><dt><span class="sect2"><a href="#d0e2724">7.3. Créer un nouveau groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2734">7.4. Enlever le volume restant</a></span></dt><dt><span class="sect2"><a href="#d0e2741">7.5. Créer le nouveau volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2748">7.6. Créez un système de fichiers sur le volume</a></span></dt><dt><span class="sect2"><a href="#d0e2753">7.7. Montez le nouveau volume</a></span></dt></dl></dd><dt><span class="sect1"><a href="#UpgradeRootToLVM">8. Convertir le système de fichiers racine en LVM 1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2795">8.1. Démarrer en mode mono-utilisateur</a></span></dt><dt><span class="sect2"><a href="#d0e2803">8.2. Utiliser Parted</a></span></dt><dt><span class="sect2"><a href="#d0e2826">8.3. Redémarrer</a></span></dt><dt><span class="sect2"><a href="#d0e2831">8.4. Vérifier les options de configuration du noyau</a></span></dt><dt><span class="sect2"><a href="#d0e2836">8.5. Ajuster le type de partition</a></span></dt><dt><span class="sect2"><a href="#d0e2843">8.6. Configurer LVM 1 pour la nouvelle configuration</a></span></dt><dt><span class="sect2"><a href="#d0e2867">8.7. Créer le système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2874">8.8. Mise à jour de /etc/fstab</a></span></dt><dt><span class="sect2"><a href="#d0e2885">8.9. Créez une image disque RAM d'initialisation pour LVM 1</a></span></dt><dt><span class="sect2"><a href="#d0e2892">8.10. Mise à jour de /etc/lilo.conf</a></span></dt><dt><span class="sect2"><a href="#d0e2909">8.11. Lancez lilo pour écrire le nouveau secteur de boot</a></span></dt><dt><span class="sect2"><a href="#d0e2914">8.12. Redémarrer avec LVM</a></span></dt><dt><span class="sect2"><a href="#d0e2928">8.13. Ajoutez le reste du disque dans LVM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recovermetadata">9. Restaurer les méta-données d'un volume physique</a></span></dt></dl></dd><dt><span class="appendix"><a href="#dangerousops">A. Opérations dangereuses</a></span></dt><dd><dl><dt><span class="sect1"><a href="#uuidfixer">1. Restaurer les UUID de VG avec uuid_fixer</a></span></dt><dt><span class="sect1"><a href="#sharinglvm1">2. Partager des volumes LVM</a></span></dt></dl></dd><dt><span class="appendix"><a href="#ReportBug">B. Signaler des erreurs ou des bogues</a></span></dt><dt><span class="appendix"><a href="#contactsandlinks">C. Contacts et liens</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Maillists">1. Listes de diffusion</a></span></dt><dt><span class="sect1"><a href="#Links">2. Liens</a></span></dt></dl></dd><dt><span class="appendix"><a href="#gfdl">D. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="#gfdl-0">1. PREAMBLE</a></span></dt><dt><span class="section"><a href="#gfdl-1">2. APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="#gfdl-2">3. VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="#gfdl-3">4. COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="#gfdl-4">5. MODIFICATIONS</a></span></dt><dt><span class="section"><a href="#gfdl-5">6. COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="#gfdl-6">7. COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="#gfdl-7">8. AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="#gfdl-8">9. TRANSLATION</a></span></dt><dt><span class="section"><a href="#gfdl-9">10. TERMINATION</a></span></dt><dt><span class="section"><a href="#gfdl-10">11. FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="#gfdl-addendum">12. ADDENDUM: How to use this License for
        your documents
      </a></span></dt></dl></dd></dl></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="intro"/>Introduction</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#latest_version">1. Dernière version de ce document</a></span></dt><dt><span class="sect1"><a href="#disclaimer">2. Limitations de responsabilité</a></span></dt><dt><span class="sect1"><a href="#contributors">3. Auteurs</a></span></dt></dl></div><p>
      Ce document essaie de rassembler tous les éléments nécessaires pour
      obtenir LVM et le faire fonctionner. Il traite l'ensemble du
      processus pour l'obtenir, le compiler, l'installer et le mettre en
      œuvre. Il fournit aussi des liens vers des configurations testées de
      LVM. Cette version de guide pratique couvre LVM 2 et LVM 1.0.8.
    </p><p>
      Toutes les versions précédentes de LVM sont considérées comme obsolètes
      et sont gardées uniquement pour des raisons historiques. Ce document n'a
      pas pour objet d'essayer d'expliquer et décrire le fonctionnement de ces
      versions.
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="latest_version"/>1. Dernière version de ce document</h2></div></div></div><p>

        Vous trouverez la plus récente version française de ce document
        à l'adresse : <a class="ulink" href="http://www.traduc.org/docs/howto/lecture/LVM-HOWTO.html" target="_top">http://www.traduc.org/docs/howto/lecture/LVM-HOWTO.html</a>.
        
      </p><p>

        La dernière version originale de ce guide pratique est
        disponible sur le serveur CVS du Projet de documentation Linux
        avec les autres guides pratiques (<span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">howto</em></span>). Vous pouvez l'obtenir en
        faisant un <span class="foreignphrase"><em class="foreignphrase">checkout</em></span> de
        <span class="quote">« <span class="quote">LDP/howto/docbook/LVM-HOWTO.xml</span> »</span> sur le serveur
        CVS du LDP. Vous devriez toujours pouvoir obtenir une version
        lisible de ce guide pratique à l'adresse : <a class="ulink" href="http://www.tldp.org/HOWTO/LVM-HOWTO.html" target="_top">http://www.tldp.org/HOWTO/LVM-HOWTO.html</a>.

      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="disclaimer"/>2. Limitations de responsabilité</h2></div></div></div><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

        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(s)/editor(s)/maintainer(s)/contributor(s) assumes NO
        RESPONSIBILITY for any errors, or for any damages, direct or
        consequential, as a result of the use of the information
        documented herein.

      </em></span></p><p>

        Ce document est distribué dans l'espoir qu'il sera utile mais
        SANS AUCUNE GARANTIE, explicite ou implicite. Même si tous les
        efforts ont été faits pour assurer l'exactitude des informations
        documentées ici, les auteurs, éditeurs, mainteneurs,
        contributeurs, traducteurs n'assument AUCUNE RESPONSABILITÉ pour
        les erreurs ou les dommages, directs ou indirects, qui
        pourraient résulter de l'utilisation des informations
        documentées ici.

      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="contributors"/>3. Auteurs</h2></div></div></div><p>
        Liste de tous ceux qui ont écrit dans ce document.
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
            <a class="ulink" href="mailto:alewis CHEZ redhat POINT com_NOSPAM" target="_top">AJ
            Lewis</a>
          </p></li><li class="listitem"><p>
            <a class="ulink" href="mailto:thornber CHEZ redhat POINT com_NOSPAM" target="_top">Joe
            Thornber</a>
          </p></li><li class="listitem"><p>
            <a class="ulink" href="mailto:pcaulfie CHEZ redhat POINT com_NOSPAM" target="_top">Patrick
            Caulfield</a>
          </p></li><li class="listitem"><p>
            <a class="ulink" href="mailto:agk CHEZ redhat POINT com_NOSPAM" target="_top">Alasdair
            Kergon</a>
          </p></li><li class="listitem"><p>
            <a class="ulink" href="mailto:jradmacher CHEZ gmx POINT de_NOSPAM" target="_top">Jochen
            Radmacher</a>
             - Informations sur l'extension de JFS
          </p></li></ul></div><p>
        S'il vous plaît, veuillez prévenir le mainteneur du guide pratique si
        vous pensez devoir être dans la liste ci-dessus.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="whatislvm"/>Chapitre 1. Qu'est-ce que LVM ?</h1></div></div></div><p>
      LVM est un gestionnaire de volumes logiques (Logical Volume Manager)
      pour le système d'exploitation Linux.
      Il existe désormais deux versions de LVM pour Linux :
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
            LVM 2 - La dernière et meilleure version de LVM pour Linux.
          </p><p>
            LVM 2 est presque entièrement compatible avec les volumes créés
            avec LVM 1, à l'exception des instantanés (il faut supprimer les
            volumes d'instantanés avant de passer à LVM 2).
          </p><p>
            LVM 2 utilise le mappeur de périphériques du noyau Linux.
            Le mappeur de périphériques est inclus dans les noyaux 2.6.
            Des mises à jour sont disponibles pour les noyaux 2.4 récents.
          </p></li><li class="listitem"><p>
            LVM 1 - La version présente dans les noyaux 2.4.
          </p><p>
            LVM 1 est un produit mature et considéré comme stable depuis
            plusieurs années. Le pilote noyau pour LVM 1 est inclus dans les
            noyaux 2.4, mais cela ne veut pas dire que votre noyau 2.4.x est
            à jour de la dernière version de LVM.
            Regardez dans le fichier <a class="ulink" href="ftp://ftp.sistina.com/pub/LVM/1.0/README" target="_top">README</a> pour
            obtenir les dernières informations sur les
            versions de noyaux possédant le code le plus récent.
          </p></li></ul></div><p>

    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="whatisvolman"/>Chapitre 2. Qu'est-ce que la gestion par volumes logiques ?</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#whywouldiwantit">1. Pourquoi en voudrais-je ?</a></span></dt><dt><span class="sect1"><a href="#benefitsoflvmsmall">2. Bénéfices de la gestion par volumes logiques sur un petit
      système</a></span></dt><dt><span class="sect1"><a href="#benefitsoflvmlarge">3. Avantages de la gestion par volumes logiques sur un gros
      système</a></span></dt></dl></div><p>
      La gestion par volumes logiques permet une gestion de plus haut niveau
      des problèmes de stockage sur disque par rapport à l'approche
      traditionnelle avec des disques et des partitions. Cela apporte à
      l'administrateur système une bien meilleure flexibilité pour allouer de
      l'espace aux applications et aux utilisateurs.
    </p><p>
      Les volumes de stockage créés au moyen du gestionnaire de volumes
      logiques peuvent être redimensionnés et déplacés à la demande, bien que
      cela puisse nécessiter une mise à jour des utilitaires des systèmes de
      fichiers.
    </p><p>
      Le gestionnaire de volumes logiques autorise aussi la gestion de volumes
      logiques par groupes d'utilisateurs, ce qui permet à l'administrateur
      système de gérer des groupes de volumes en utilisant un nommage
      compréhensible avec, par exemple, des noms comme
      <span class="quote">« <span class="quote">developpement</span> »</span> et <span class="quote">« <span class="quote">ventes</span> »</span> plutôt que les noms
      des disques physiques comme <span class="quote">« <span class="quote">sda</span> »</span> et <span class="quote">« <span class="quote">sdb</span> »</span>.
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="whywouldiwantit"/>1. Pourquoi en voudrais-je ?</h2></div></div></div><p>
        La gestion par volumes logiques est traditionnellement associée aux
        grosses installations contenant de nombreux disques mais elle est
        également appropriée pour les petites installations avec un ou deux
        disques.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="benefitsoflvmsmall"/>2. Bénéfices de la gestion par volumes logiques sur un petit
      système</h2></div></div></div><p>
        Le partitionnement du disque dur est l'une des décisions difficiles
        pour un nouvel utilisateur de Linux. La nécessité
        de devoir estimer précisément l'espace disque pour les fichiers
        systèmes et utilisateurs rend l'installation plus complexe que
        nécessaire et certains utilisateurs choisissent simplement de mettre
        toutes leurs données sur une seule grosse partition pour essayer de
        contourner ce problème.
      </p><p>
        Une fois que l'utilisateur (ou le programme d'installation) a déterminé
        l'espace nécessaire pour /home, /usr et /, il arrive
        fréquemment qu'une des partitions soit saturée alors qu'il reste
        encore plein d'espace libre sur une autre partition.
      </p><p>
        Avec la gestion par volumes logiques, le disque entier est alloué à
        un groupe de volumes et des volumes logiques sont créés pour
        contenir les systèmes de fichiers /, /usr et /home. Si, par exemple, le
        volume logique /home est plus tard saturé mais qu'il reste de l'espace
        libre dans /usr, alors il est possible de réduire /usr de quelques
        mégaoctets et de réallouer cet espace à /home.
      </p><p>
        Une autre solution est d'allouer un espace minimal pour chaque volume
        logique et de laisser une partie de l'espace disque non alloué.
        Ensuite, lorsque les partitions commencent à être remplies, elles
        peuvent être étendues suivant les besoins.
      </p><p>
        Par exemple :

        Joe achète un PC avec 8,4 Go d'espace disque et installe Linux avec
        le partitionnement suivant :
      </p><pre class="screen">
/boot    /dev/hda1     10 Mo
swap     /dev/hda2    256 Mo
/        /dev/hda3      2 Go
/home    /dev/hda4      6 Go
</pre><p>

       Il pense que cette répartition optimisera l'espace disponible
       pour tous ses fichiers MP3.

      </p><p>
        Quelque temps plus tard, Joe décide qu'il veut installer la dernière
        suite bureautique et le dernier environnement graphique disponible, mais
        il réalise que la partition racine n'est pas assez grande. Par contre,
        puisqu'il a archivé tous ses MP3 grâce à son nouveau graveur DVD, il lui
        reste plein d'espace libre dans /home.
      </p><p>
        Les différentes possibilités qui s'offrent à lui ne sont pas
        satisfaisantes :
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
            Reformater le disque, modifier le partitionnement et tout
            réinstaller.
          </p></li><li class="listitem"><p>
            Acheter un nouveau disque et trouver un nouveau partitionnement qui
            demandera le moins de déplacements de données.
          </p></li><li class="listitem"><p>
            Utiliser un lien symbolique de / vers /home et installer le nouveau
            logiciel dans /home.
          </p></li></ol></div><p>
        Avec LVM, tout cela devient beaucoup plus facile :
      </p><p>
        Jane achète un PC identique mais utilise LVM pour diviser son disque de
        manière similaire :
      </p><pre class="screen">
/boot     /dev/hda1         10 Mo
swap      /dev/vg00/swap   256 Mo
/         /dev/vg00/root     2 Go
/home     /dev/vg00/home     6 Go
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
          La partition de démarrage /boot n'est pas incluse dans le LV car les
          chargeurs de démarrage ne gèrent pas encore les volumes LVM.
          Il est possible que le démarrage sur une partition LVM fonctionne,
          mais vous risquez de vous retrouvez avec un système non amorçable.
        </p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: &#xA;          Seuls les utilisateurs avancés peuvent envisager de passer leur&#xA;          partition racine en LVM&#xA;        "><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">
          Seuls les utilisateurs avancés peuvent envisager de passer leur
          partition racine en LVM
        </th></tr><tr><td align="left" valign="top"><p>
          Pour passer la partition racine en LVM, une image initrd doit activer
          le LV racine au démarrage. Si le noyau est mis à jour sans créer
          l'image initrd nécessaire, le noyau ne pourra pas démarrer.
          Les nouvelles distributions incluent LVM dans leurs scripts mkinitrd
          ainsi que dans leurs images initrd, donc cela
          va devenir de moins en moins problématique.
        </p></td></tr></table></div><p>
        Lorsque Jane rencontre le même problème, elle peut réduire la taille de
        /home d'un gigaoctet et rajouter cet espace dans la partition racine.
      </p><p>
        Supposons que Joe et Jane remplissent aussi la partition /home et
        décident d'ajouter un nouveau disque de 20 Go dans leur système.
      </p><p>
        Joe formate le disque entièrement dans une seule partition (/dev/hdb1)
        et l'utilise comme /home en y déplaçant les données de son /home
        existant. Il lui reste alors 6 Go inutilisés qu'il peut faire
        apparaître comme une extension de /home avec un lien symbolique,
        /home/joe/anciens-mp3 par exemple.
      </p><p>
        Jane ajoute simplement le nouveau disque dans son groupe de volumes
        existant et étend son /home pour inclure le nouveau disque. Ou bien,
        elle pourrait déplacer les données de /home de l'ancien vers le nouveau
        disque et ensuite étendre le volume racine existant pour couvrir tout
        l'ancien disque.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="benefitsoflvmlarge"/>3. Avantages de la gestion par volumes logiques sur un gros
      système</h2></div></div></div><p>
        Les avantages de la gestion par volumes logiques sont plus évidents sur
        les gros systèmes avec de nombreux disques.
      </p><p>
        Gérer une importante ferme de disques prend beaucoup de temps et peut
        s'avérer particulièrement complexe si le système comporte de nombreux
        disques de tailles différentes. Gérer les problèmes d'espace,
        généralement conflictuels, entre les différents utilisateurs peut
        devenir un cauchemar.
      </p><p>
        Les différents groupes de volumes et volumes logiques, qui peuvent être
        agrandis autant que nécessaire, peuvent être alloués à des groupes
        d'utilisateurs. L'administrateur peut <span class="quote">« <span class="quote">garder en réserve</span> »</span> de
        l'espace jusqu'à ce qu'il soit requis. Cet espace peut alors être ajouté
        au groupe de volumes qui en a le plus besoin.
      </p><p>
        Quand de nouveaux disques sont ajoutés au système, il n'est plus
        nécessaire de déplacer les fichiers des utilisateurs pour optimiser le
        nouvel espace de stockage. Il suffit simplement d'ajouter le nouveau
        disque à un ou plusieurs groupes de volumes et d'étendre les volumes
        logiques suivant les besoins.
      </p><p>
        Il est aussi facile de se séparer des anciens disques en déplaçant les
        données sur des disques plus récents. Ceci peut être effectué à chaud,
        sans coupure de service pour l'utilisateur.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="anatomy"/>Chapitre 3. Anatomie de LVM</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#VG">1. Groupe de volumes (Volume Group, VG)</a></span></dt><dt><span class="sect1"><a href="#PV">2. Volume physique (Physical Volume, PV)</a></span></dt><dt><span class="sect1"><a href="#LV">3. Volume logique (Logical Volume, LV)</a></span></dt><dt><span class="sect1"><a href="#PE">4. Extent physique (Physical Extent, PE)</a></span></dt><dt><span class="sect1"><a href="#LE">5. Extent logique (Logical Extent, LE)</a></span></dt><dt><span class="sect1"><a href="#tyingittogether">6. Mettre tout ensemble</a></span></dt><dt><span class="sect1"><a href="#mapmode">7. Types de correspondances (linéaire/répartie)</a></span></dt><dt><span class="sect1"><a href="#snapshotintro">8. Les instantanés (snapshots)</a></span></dt></dl></div><p>
      Le schéma suivant donne une vision générale des composants d'un système à
      base de LVM.

    </p><pre class="screen">
+-- Groupe de volumes (Volume Group) ------------+
|                                                |
|    +----------------------------------------+  |
| PV | PE |  PE | PE | PE | PE | PE | PE | PE |  |
|    +----------------------------------------+  |
|      .          .         .         .          |
|      .          .         .         .          |
|    +----------------------------------------+  |
| LV | LE |  LE | LE | LE | LE | LE | LE | LE |  |
|    +----------------------------------------+  |
|            .         .         .         .     |
|            .         .         .         .     |
|    +----------------------------------------+  |
| PV | PE |  PE | PE | PE | PE | PE | PE | PE |  |
|    +----------------------------------------+  |
|                                                |
+------------------------------------------------+
</pre><p>
      Voici une autre façon de visualiser ceci (grâce à la gentillesse
      d'<a class="ulink" href="mailto:erik CHEZ bagfors POINT nu_NOSPAM" target="_top">Erik
      Bågfors</a> de la liste de diffusion linux-lvm) :
</p><pre class="screen">
    hda1   hdc1      (PV dans des partitions ou disques entiers)
       \   /
        \ /
       diskvg        (VG)
       /  |  \
      /   |   \
  usrlv rootlv varlv (LV)
    |      |     |
 ext2  reiserfs  xfs (Systèmes de fichiers)
</pre><p>
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="VG"/>1. Groupe de volumes (Volume Group, VG)</h2></div></div></div><p>
        Le groupe de volumes est l'abstraction de plus haut niveau utilisée
        dans LVM. C'est un ensemble de volumes logiques et physiques au sein
        d'une seule unité d'administration.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="PV"/>2. Volume physique (Physical Volume, PV)</h2></div></div></div><p>
        Un volume physique est typiquement un disque dur, bien que cela puisse
        aussi être un périphérique qui <span class="quote">« <span class="quote">ressemble</span> »</span> à un disque dur
        (par exemple, un périphérique de RAID logiciel).
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="LV"/>3. Volume logique (Logical Volume, LV)</h2></div></div></div><p>
        C'est l'équivalent d'une partition de disque d'un système sans LVM. Le
        LV est visible comme un périphérique de bloc standard. En tant que
        tel, le LV peut contenir un système de fichiers.
        (Ex : <code class="filename">/home</code>.)
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="PE"/>4. Extent physique (Physical Extent, PE)</h2></div></div></div><p>
        Chaque volume physique est divisé en morceaux de données, appelés
        extents physiques. Ces extents ont une taille identique à celle des
        extents logiques du groupe de volumes.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="LE"/>5. Extent logique (Logical Extent, LE)</h2></div></div></div><p>
        Chaque volume logique est divisé en morceaux de données, appelés
        extents logiques. La taille d'extents est la même pour tous les
        volumes logiques du groupe de volumes.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="tyingittogether"/>6. Mettre tout ensemble</h2></div></div></div><p>
        Voici un exemple concret pour aider à la compréhension :
      </p><p>
        Prenons un groupe de volumes nommé VG1, avec une taille d'extent
        physique de 4 Mo. Nous mettons dans ce groupe de volumes deux
        partitions de disques, /dev/hda1 et /dev/hdb1. Ces partitions vont
        devenir les volumes physiques PV1 et PV2 (l'administrateur peut mettre
        des noms plus parlants). Les PV sont divisés en morceaux de 4 Mo,
        puisque c'est la taille des extents pour le groupe de volumes.
        Les disques sont de tailles différentes et nous avons donc 99 extents
        pour PV1 et 248 pour PV2. Nous pouvons maintenant créer un volume
        logique de taille entre 1 et 347 (248 + 99) extents.
        Quand le volume logique est créé, une relation est définie entre les
        extents logiques et physiques, c'est-à-dire que l'extent logique 1
        peut correspondre à l'extent physique 51 de PV1 et les données écrites
        sur les quatre premiers mégaoctets du volume logique seront en fait
        écrites sur le 51<sup>ème</sup> extent de PV1.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="mapmode"/>7. Types de correspondances (linéaire/répartie)</h2></div></div></div><p>
        L'administrateur peut utiliser différentes stratégies pour effectuer
        la relation entre les extents logiques et les extents physiques :
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
            La <span class="strong"><strong>correspondance linéaire</strong></span> permet
            d'attribuer une plage de PE à un LV dans l'ordre. Par exemple, les
            LE 1 à 99 correspondront à PV1 et les LE 100 à 347 à PV2.
          </p></li><li class="listitem"><p>
            La <span class="strong"><strong>correspondance répartie
            (striped)</strong></span> permet
            de distribuer des morceaux d'extents logiques sur plusieurs
            volumes physiques, par exemple :
         </p><pre class="screen">
1er morceau de LE[1] -&gt; PV1[1],

2me morceau de LE[1] -&gt; PV2[1],

3me morceau de LE[1] -&gt; PV3[1],

4me morceau de LE[1] -&gt; PV1[2],
</pre><p>

            et ainsi de suite. Dans certaines situations, cette stratégie peut
            améliorer les performances du volume logique.

            </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Défaut de LVM 1"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Défaut de LVM 1</th></tr><tr><td align="left" valign="top"><p>
                Avec LVM 1, les LV créés par répartition ne peuvent pas être
                étendus au-delà des PV où ils ont été créés initialement.
              </p></td></tr></table></div><p>

            Avec LVM 2, les LV répartis peuvent être étendus en concaténant un
            autre lot de périphériques à la fin du premier lot. Par conséquent,
            vous pourrez vous retrouver avec un LV composé de deux lots de
            PE répartis concaténés avec un lot linéaire composé de quatre lots
            de PE. Je vous ai déjà perdu ?
          </p></li></ol></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="snapshotintro"/>8. Les instantanés (snapshots)</h2></div></div></div><p>
        Une des merveilleuses fonctionnalités apportées par LVM est
        l'instantané. Elle permet à l'administrateur de créer un nouveau
        périphérique qui est une copie exacte d'un volume logique figé à un
        moment donné. Typiquement, cela peut être utilisé lors de traitements
        par lots sur le volume logique, pour une sauvegarde par exemple, lorsque
        l'on ne veut pas arrêter une application qui est en train de modifier
        les données. Une fois que l'on a fini d'utiliser l'instantané,
        l'administrateur système peut tout simplement supprimer le
        périphérique.
        Cette fonctionnalité demande à ce que l'instantané soit effectué
        lorsque le volume logique se trouve dans un état consistant - Le patch 
        "VFS-lock" pour LVM 1 permet de garantir cet état à la création de 
        l'instantané pour certains systèmes de fichiers. Avec le noyau 2.6, 
        de nombreux systèmes de fichiers le font automatiquement à la 
        création de l'instantané, sans avoir besoin d'un patch.
      </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Les instantanés pleins sont automatiquement désactivés"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Les instantanés pleins sont automatiquement désactivés</th></tr><tr><td align="left" valign="top"><p>
          Lorsque le volume logique d'un instantané est plein, il est désactivé 
          (état inutilisable). Il est donc primordial de lui allouer un espace suffisant.
          Il n'y a pas de recette magique pour déterminer l'espace requis, qui dépend 
          uniquement de l'utilisation de l'instantané. Cependant, un instantané de taille 
          identique à sa source ne sera jamais saturé.
        </p></td></tr></table></div><p>
        Avec LVM 1, les instantanés sont en lecture seule. Ils fonctionnent 
        par l'utilisation d'une <span class="emphasis"><em>table d'exception</em></span> qui trace 
        les blocs modifiés : Lorsqu'un bloc est modifié sur la source, il est
        d'abord copié dans l'instantané, marqué comme modifié dans la table
        d'exceptions et ensuite modifié sur le volume source avec les nouvelles données.
      </p><p>
        Avec LVM 2, les instantanés sont par défaut en lecture/écriture.
        Le fonctionnement est similaire aux instantanés en lecture seule avec la 
        possibilité supplémentaire d'écrire sur l'instantané : le bloc est 
        alors marqué comme utilisé dans la table d'exception et ne sera plus récupéré
        du volume source. Cela ouvre de nouvelles perspectives par rapport
        au fonctionnement en lecture seule de LVM 1. Par exemple, on peut
        faire l'instantané d'un volume, le monter et tester un programme expérimental qui
        modifie les fichiers dessus. Si le résultat n'est pas satisfaisant, on peut le démonter,
        le supprimer et remonter le système de fichiers originel à la place.
        C'est aussi utile pour créer des volumes utilisés avec <a class="ulink" href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/" target="_top">Xen</a>.
        Vous pouvez créer une image disque et en faire un instantané que vous 
        pourrez modifier avec une instance spécifique de domU. 
        Vous pourrez ensuite créer un autre instantané de l'image orginale et le
        modifier avec une autre instance de domU. Comme les instantanés ne stockent 
        que les blocs modifiés, la majeure partie du volume sera partagée entre les domUs.
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
          Avec le mappeur de périphériques actuel et LVM 2, la source peut être agrandie 
          mais pas réduite. Avec LVM 1, le redimensionnement de la source est impossible.
        </p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Mise à jour de LVM 1 vers LVM 2"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Mise à jour de LVM 1 vers LVM 2</th></tr><tr><td align="left" valign="top"><p>
          Assurez-vous de supprimer tous les instantanés avant
          la mise à jour de LVM 1 vers LVM 2. (Cf. <a class="xref" href="#lvm2faq" title="1. FAQ LVM 2">Section 1, « FAQ LVM 2  »</a>.)
        </p></td></tr></table></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="FAQ"/>Chapitre 4. Questions fréquemment posées</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#lvm2faq">1. FAQ LVM 2 </a></span></dt><dt><span class="sect1"><a href="#lvm1faq">2. FAQ LVM 1</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="lvm2faq"/>1. FAQ LVM 2 </h2></div></div></div><div class="qandaset"><a id="d0e761"/><dl><dt>1.1. <a href="#d0e762">
              J'ai LVM 1 installé et fonctionnel sur mon système.
              Comment faire pour passer à LVM 2 ?
            </a></dt><dt>1.2. <a href="#d0e798">
              Un module noyau spécifique est-il nécessaire pour LVM 2 ?
            </a></dt><dt>1.3. <a href="#d0e805">
              J'ai des erreurs concernant
              /dev/mapper/control quand j'essaie
              d'utiliser les utilitaires LVM 2.
              Que se passe-t-il ?
            </a></dt><dt>1.4. <a href="#d0e855">
            
              Quelles sont les commandes et types de volumes logiques
              compatibles avec LVM 2 ?
            
            </a></dt><dt>1.5. <a href="#d0e875">
              Les formats de représentation sur le disque des groupes de
              volumes et volumes logiques sont-ils différents dans LVM 2 par
              rapport à LVM 1 ?
            </a></dt><dt>1.6. <a href="#d0e882">
            
              LVM 2 est-il compatible avec les VG et LV créés avec
              LVM 1 ?
            
            </a></dt><dt>1.7. <a href="#d0e889">
              Puis-je passer mes VG et LV qui proviennent de LVM 1 au format
              natif de LVM 2 ?
            </a></dt><dt>1.8. <a href="#d0e896">
              J'ai mis à jour mon système avec LVM 2, mais les utilitaires
              échouent constamment en indiquant qu'il ne reste plus de
              mémoire libre. Que se passe-t-il ?
            </a></dt><dt>1.9. <a href="#d0e906">
              Ma partition racine est sur un LV en LVM 1. Comment faire pour
              passer à LVM 2 ? Qu'est devenu lvmcreate_initrd ?
            </a></dt><dt>1.10. <a href="#d0e948">
              Comment se comporte LVM par rapport à un renommage soudain des
              disques physiques ?
            </a></dt><dt>1.11. <a href="#d0e963">
              J'essaie de remplir mon VG et vgdisplay/vgs indique que
              j'ai 1,87 Go de libre mais quand je fais un lvcreate vg
              -L1.87G, il indique « pas assez d'extents libres »
              (« insufficient free extents »). Que se
              passe-t-il ?
            </a></dt><dt>1.12. <a href="#d0e998">
              Quelles sont les différences entre les instantanés de LVM 2 et LVM 1 ?
            </a></dt><dt>1.13. <a href="#d0e1007">
              Quelle est la taille maximale d'un LV ?
            </a></dt></dl><table border="0"><colgroup><col align="left" width="1%"/><col/></colgroup><tbody><tr class="question"><td align="left" valign="top"><a id="d0e762"/><a id="d0e763"/><p><strong>1.1.</strong></p></td><td align="left" valign="top"><p>
              J'ai LVM 1 installé et fonctionnel sur mon système.
              Comment faire pour passer à LVM 2 ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Voici les instructions pour démarrer rapidement :)
              </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
                    Commencez par enlever tous les instantanés du système.
                    Ils ne sont pas gérés par LVM 2 et empêcheront l'activation
                    de leur volume d'origine au démarrage de LVM 2.
                  </p></li><li class="listitem"><p>
                    Assurez-vous de posséder un moyen de démarrage du système
                    autre que par la partition de démarrage standard.
                    Vous devez avoir les utilitaires de LVM 1, les outils
                    systèmes standards (mount) et un noyau compatible LVM 1 au
                    cas où il serait nécessaire de revenir en arrière pour
                    faire des corrections.
                  </p></li><li class="listitem"><p>
                    Récupérez les sources des utilitaires de LVM 2 et le
                    mappeur de périphériques. Compilez-les. Il faut installer
                    la bibliothèque du mappeur de périphériques avec
                    <span class="quote">« <span class="quote">make install</span> »</span> avant de compiler les
                    utilitaires de LVM 2. Copiez aussi le script
                    dm/scripts/devmap_mknod.sh dans /sbin.
                    Je recommande d'installer seulement le binaire
                    <span class="quote">« <span class="quote">lvm</span> »</span> pour
                    l'instant pour garder l'accès aux utilitaires de LVM 1 au
                    cas où. Si vous avez accès à des paquets de LVM 2
                    et du mappeur de périphériques, vous pouvez les installer
                    à la place mais il faut noter qu'il vont probablement
                    écraser les utilitaires de LVM 1.
                  </p></li><li class="listitem"><p>
                    Récupérez un noyau compatible avec le mappeur de
                    périphériques, compilé en interne ou avec un module.
                  </p></li><li class="listitem"><p>
                    Recherchez les commandes d'activation de LVM dans les
                    scripts de démarrage de la machine.
                    Assurez-vous que le module du mappeur de périphériques
                    est chargé à cet endroit (si vous utilisez le mappeur de
                    périphériques en tant que module) et ajoutez ensuite la
                    commande <span class="quote">« <span class="quote">/sbin/devmap_mknod.sh; lvm vgscan; lvm
                    vgchange -ay</span> »</span>.
                  </p></li><li class="listitem"><p>
                  
                    Installez le noyau compatible avec le mappeur de
                    périphériques et redémarrez. Si tout se passe bien,
                    vous devriez être en train d'utiliser LVM 2.
                  
                  </p></li></ol></div><p>

            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e798"/><a id="d0e799"/><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p>
              Un module noyau spécifique est-il nécessaire pour LVM 2 ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Non. Il faut le mappeur de périphériques (device-mapper).
              Les utilitaires de LVM 2 l'utilisent pour s'interfacer avec
              le noyau et effectuer tout le mappage des interfaces 
              (d'où le nom de mappeur de périphériques). A partir 
              du moment où le mappeur de périphériques est disponible, vous 
              devriez pouvoir utiliser LVM 2.
          </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e805"/><a id="d0e806"/><p><strong>1.3.</strong></p></td><td align="left" valign="top"><p>
              J'ai des erreurs concernant
              <code class="filename">/dev/mapper/control</code> quand j'essaie
              d'utiliser les utilitaires LVM 2.
              Que se passe-t-il ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              La cause première de ce problème est de ne pas avoir lancé la
              commande <span class="quote">« <span class="quote">dmsetup mknodes</span> »</span> après le redémarrage avec un noyau
              utilisant le mappeur de périphériques.
              Ce script génère le nœud de contrôle pour le mappeur de
              périphériques.
            </p><p>
              Si la commande <span class="quote">« <span class="quote">dmsetup mknodes</span> »</span> n'est pas 
              disponible, ne désespérez pas! (Cependant cela veut probablement dire
              que vous devriez migrer vers la dernière version de device-mapper.)
              Il est assez simple de créer le fichier
              <code class="filename">/dev/mapper/control</code> par vous même :
              </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
                    Assurez-vous d'avoir chargé le module du mappeur de
                    périphériques s'il n'est pas directement dans le noyau.
                  </p></li><li class="listitem"><p>
                    Tapez :
                  </p><pre class="screen">
# cat /proc/misc | grep device-mapper | awk '{print $1}'
</pre><p>
                    et notez le chiffre affiché. (S'il n'y a rien d'affiché,
                    reportez-vous à l'étape 1.)
                  </p></li><li class="listitem"><p>
                    Tapez :
                  </p><pre class="screen">
# mkdir /dev/mapper
</pre><p>
                    Si vous obtenez une erreur comme quoi
                    <code class="filename">/dev/mapper</code> existe déjà, vérifiez que
                    c'est un répertoire et continuez.
                  </p></li><li class="listitem"><p>
                    Tapez :
                  </p><pre class="screen">
# mknod /dev/mapper/control c 10 $nombre
</pre><p>
                    $nombre est le chiffre affiché à l'étape 2.
                  </p></li></ol></div><p>
              Cela devrait être bon maintenant.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e855"/><a id="d0e856"/><p><strong>1.4.</strong></p></td><td align="left" valign="top"><p>
            
              Quelles sont les commandes et types de volumes logiques
              compatibles avec LVM 2 ?
            
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
            
              Si vous utilisez le correctif de l'archive lvm2 pour les
              noyaux stables 2.4, toutes les fonctionnalités majeures de
              LVM1 seront compatibles avec les outils de LVM2 (il est
              toujours nécessaire de supprimer les instantanés avant la
              mise à jour de LVM 1 vers LVM 2.)
            
            </p><p>
              Si vous utilisez la version du mappeur de périphériques du noyau
              2.6 de kernel.org, les commandes et types de LV suivants ne sont
              pas compatibles :
              </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> pvmove </p></li><li class="listitem"><p> snapshots </p></li></ul></div><p>
              
              Vous pourrez trouver un début de compatibilité avec ces
              fonctionnalités dans <a class="ulink" href="http://people.sistina.com/~thornber/dm/" target="_top">les
              correctifs instables du mappeur de périphériques</a>
              maintenus par Joe Thornber.
              
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e875"/><a id="d0e876"/><p><strong>1.5.</strong></p></td><td align="left" valign="top"><p>
              Les formats de représentation sur le disque des groupes de
              volumes et volumes logiques sont-ils différents dans LVM 2 par
              rapport à LVM 1 ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
            
              Oui. LVM 2 utilise le format de méta-données
              lvm 2. Ce format est beaucoup plus flexible que celui
              de LVM 1. Il supprime ou réduit la plupart des limitations
              de LVM 1.
            
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e882"/><a id="d0e883"/><p><strong>1.6.</strong></p></td><td align="left" valign="top"><p>
            
              LVM 2 est-il compatible avec les VG et LV créés avec
              LVM 1 ?
            
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Oui. LVM 2 est capable d'activer et de fonctionner avec les VG
              et LV créés avec LVM 1 à l'exception des instantanés qui doivent
              être supprimés avant la mise à jour.
              Les instantanés qui restent après la mise à jour devront être
              supprimés afin que l'on puisse activer leur volume d'origine avec
              LVM 2.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e889"/><a id="d0e890"/><p><strong>1.7.</strong></p></td><td align="left" valign="top"><p>
              Puis-je passer mes VG et LV qui proviennent de LVM 1 au format
              natif de LVM 2 ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Oui. vgconvert permet de convertir un VG et tous les LV
              qu'il contient au nouveau format de méta-données lvm 2.
              Attention, il n'est pas toujours possible de revenir ensuite aux
              méta-données lvm 1.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e896"/><a id="d0e897"/><p><strong>1.8.</strong></p></td><td align="left" valign="top"><p>
              J'ai mis à jour mon système avec LVM 2, mais les utilitaires
              échouent constamment en indiquant qu'il ne reste plus de
              mémoire libre. Que se passe-t-il ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Une des causes possibles de cela est le non positionnement par
              certaines versions de LVM 1 du champ UUID dans les structures de
              PV et VG alors qu'elles étaient supposées le faire. (L'utilisateur
              qui a signalé l'anomalie utilisait une Mandrake 9.2, mais
              d'autres distributions peuvent être impactées.)
              Les dernières versions des utilitaires de LVM 2 positionnent
              les UUID automatiquement s'ils manquent, il vous suffit donc
              de récupérer une version plus récente que la vôtre et le
              problème devrait être résolu. Dans le cas contraire, envoyez
              un message sur <a class="link" href="#Maillists" title="1. Listes de diffusion">la liste de diffusion
              linux-lvm</a>.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e906"/><a id="d0e907"/><p><strong>1.9.</strong></p></td><td align="left" valign="top"><p>
              Ma partition racine est sur un LV en LVM 1. Comment faire pour
              passer à LVM 2 ? Qu'est devenu lvmcreate_initrd ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
            
              Passer à LVM 2 avec sa partition racine en LVM est un
              peu compliqué, mais pas impossible. Vous devez créer un
              noyau compatible avec le mappeur de périphériques et
              installer les utilitaires LVM 2. (Vous devriez faire
              une sauvegarde des utilitaires de LVM 1 ou trouver un
              disque de secours avec les utilitaires LVM au cas où vous
              en auriez besoin avant la fin de la migration.) Ensuite,
              vous devez trouver un script mkinitrd compatible avec
              votre distribution et de LVM 2.
            
            </p><p>
            
              Voici la liste des scripts mkinitrd que je connais et qui
              sont compatibles avec LVM 2, classés par
              distributions :
            
              </p><div class="variablelist"><p class="title"><strong>Scripts mkinitrd compatible LVM 2</strong></p><dl class="variablelist"><dt><span class="term">Fedora</span></dt><dd><p>
                      Le programme <a class="ulink" href="http://distro.ibiblio.org/pub/linux/distributions/fedora/linux/core/development/i386/Fedora/RPMS/mkinitrd-3.5.21-1.i386.rpm" target="_top">mkinitrd</a>
                      de la dernière Fedora Core 2 gère LVM 2, mais repose sur
                      un binaire lvm lié statiquement dans la dernière archive
                      LVM 2.
                    </p><p>
                      Les utilisateurs de Redhat 9 devraient pouvoir l'utiliser.
                    </p></dd><dt><span class="term">Debian</span></dt><dd><p>
                      Il existe une version non officielle <a class="ulink" href="http://www.poochiereds.net/svn/lvm2/" target="_top">ici</a>.
                    </p></dd><dt><span class="term">Générique</span></dt><dd><p>
                      Il en existe une version dans la distribution source de
                      LVM 2 dans le répertoire
                      <code class="filename">scripts/lvm2_createinitrd/</code>.
                      Voir la documentation dans ce répertoire pour plus de
                      détails.
                    </p></dd></dl></div><p>
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e948"/><a id="d0e949"/><p><strong>1.10.</strong></p></td><td align="left" valign="top"><p>
              Comment se comporte LVM par rapport à un renommage soudain des
              disques physiques ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Très bien : LVM identifie les PV par leur UUID et non par le
              nom du périphérique.
            </p><p>
              Chaque disque (PV) possède un UUID, qui est un identifiant
              unique dans le système. Il est utilisé par <span class="quote">« <span class="quote">vgscan</span> »</span>
              pour le reconnaître lorsqu'un nouveau disque est ajouté et change
              la numérotation du disque. Pour cela, la plupart des distributions
              lancent vgscan dans les scripts de démarrage pour détecter les
              ajouts de matériel.
              Si vous faites des ajouts à chaud, je pense que vous devrez
              faire cela manuellement. D'un autre coté, si votre VG est activé
              et utilisé, la renumérotation ne devrait pas l'affecter du tout.
              L'identifiant est uniquement utilisé lors de l'activation et le
              pire qu'il puisse arriver sans le vgscan est que l'activation
              échoue avec un message indiquant qu'il manque un PV.
            </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
                Des problèmes de fonctionnement ou l'enlèvement d'un disque en
                cours d'utilisation par LVM cause des problèmes avec
                l'utilisation en cours et les futures activations du VG
                concerné.
              </p></td></tr></table></div></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e963"/><a id="d0e964"/><p><strong>1.11.</strong></p></td><td align="left" valign="top"><p>
              J'essaie de remplir mon VG et vgdisplay/vgs indique que
              j'ai 1,87 Go de libre mais quand je fais un lvcreate vg
              -L1.87G, il indique <span class="quote">« <span class="quote">pas assez d'extents libres</span> »</span>
              (<span class="quote">« <span class="quote">insufficient free extents</span> »</span>). Que se
              passe-t-il ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Le chiffre 1,87 Go est arrondi à deux décimales, donc il
              correspond à quelque chose comme 1,866 Go.
              C'est juste une présentation à l'écran du chiffre pour donner
              une idée générale de la taille du VG.
              Si vous voulez donner une taille exacte, vous devez utiliser
              les extents à la place de quelque multiple d'octets.
            </p><p>
              Dans le cas de vgdisplay, utilisez le chiffre donné par Free PE
              à la place.
            </p><pre class="screen">
Free  PE / Size          478 / 1.87 GB
                         ^^^
</pre><p>

              Vous devriez donc lancer la commande suivante :
              
            </p><pre class="screen">
# lvcreate vg -l478
</pre><p>

              Remarquez qu'à la place d'un <span class="quote">« <span class="quote">L</span> »</span> majuscule,
              il faut utiliser un <span class="quote">« <span class="quote">l</span> »</span> minuscule pour dire à LVM
              d'utiliser les extents plutôt que les octets.

            </p><p>

              Dans le cas de vgs, il est nécessaire de lui demander
              explicitement le nombre d'extents disponibles :

            </p><pre class="screen">
# vgs -o +vg_free_count,vg_extent_count
</pre><p>

              Cela demande à vgs de rajouter le nombre d'extents libres et
              leur nombre total à la fin de la liste produite par vgs.
              Utilisez le nombre d'extents libres de la même façon
              que pour le cas de vgdisplay.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e998"/><a id="d0e999"/><p><strong>1.12.</strong></p></td><td align="left" valign="top"><p>
              Quelles sont les différences entre les instantanés de LVM 2 et LVM 1 ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Avec LVM 2, les instantanés sont en lecture/écriture par défaut, alors qu'ils sont en 
              lecture seule avec LVM 1. Voir <a class="xref" href="#snapshotintro" title="8. Les instantanés (snapshots)">Section 8, « Les instantanés (snapshots) »</a> pour plus de détails.
            </p></td></tr><tr class="question"><td align="left" valign="top"><a id="d0e1007"/><a id="d0e1008"/><p><strong>1.13.</strong></p></td><td align="left" valign="top"><p>
              Quelle est la taille maximale d'un LV ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Cela dépend de l'architecture CPU et du noyau utilisé :
              </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
                    Pour les noyaux 2.4, la taille maximale d'un LV est de 2TB.
                    Cependant, pour certains noyaux plus anciens, la limite était de 1TB
                    en raison d'un problème de nombres signés au niveau des blocs.
                    La distribution Red Hat Enterprise Linux Update 4 a un correctif pour
                    autoriser les LVs de 2TB. Consultez les informations de votre distribution
                    pour ce problème.
                  </p></li><li class="listitem"><p>
                    Pour les CPUs 32 bits avec les noyaux 2.6, la taille maximale des LVs est de 16TB.
                  </p></li><li class="listitem"><p>
                    Pour les CPUs 64 bits avec les noyaux 2.6, la taille maximale des LVs est de 6EB.
                    (Oui, c'est un nombre très gros.)
                  </p></li></ul></div><p>
            </p></td></tr></tbody></table></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="lvm1faq"/>2. FAQ LVM 1</h2></div></div></div><div class="qandaset"><a id="d0e1028"/><dl><dt>2.1. <a href="#d0e1029">
              Quand y aura-t-il des infos ici ?
            </a></dt></dl><table border="0"><colgroup><col align="left" width="1%"/><col/></colgroup><tbody><tr class="question"><td align="left" valign="top"><a id="d0e1029"/><a id="d0e1030"/><p><strong>2.1.</strong></p></td><td align="left" valign="top"><p>
              Quand y aura-t-il des infos ici ?
            </p></td></tr><tr class="answer"><td align="left" valign="top"/><td align="left" valign="top"><p>
              Quand les gens commenceront à envoyer des entrées de FAQ ;)
            </p></td></tr></tbody></table></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="getlvm"/>Chapitre 5. Obtenir LVM</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#downloadsource">1. Télécharger le code source</a></span></dt><dt><span class="sect1"><a href="#PublicCVS">2. Télécharger le code source de développement par CVS</a></span></dt><dt><span class="sect1"><a href="#beforebeginning">3. Avant de commencer</a></span></dt><dt><span class="sect1"><a href="#initsetup">4. Configuration initiale</a></span></dt><dt><span class="sect1"><a href="#checkoutsource">5. Récupération du code source</a></span></dt><dt><span class="sect1"><a href="#codeupdate">6. Mise à jour du code</a></span></dt><dt><span class="sect1"><a href="#startproj">7. Commencer un projet</a></span></dt><dt><span class="sect1"><a href="#hackingcode">8. Bidouiller le code</a></span></dt><dt><span class="sect1"><a href="#conflicts">9. Conflits</a></span></dt></dl></div><p>
      La première chose à faire est de récupérer une copie de LVM.
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Télécharger une archive de LVM par FTP.</p></li><li class="listitem"><p>
            Télécharger le code source en développement
            continu par CVS.
          </p></li></ul></div><p>
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="downloadsource"/>1. Télécharger le code source</h2></div></div></div><p>
        </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              <a class="ulink" href="ftp://sources.redhat.com/pub/dm/" target="_top">Mappeur de
              périphériques</a>
            </p></li><li class="listitem"><p>
              <a class="ulink" href="ftp://sources.redhat.com/pub/lvm2/" target="_top">LVM 2</a>
            </p><p>
              Assurez-vous de télécharger aussi les sources du
              mappeur de périphériques.
            </p></li><li class="listitem"><p>
              <a class="ulink" href="ftp://sources.redhat.com/pub/lvm/current/" target="_top">LVM 1</a>
            </p></li></ul></div><p>
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
        
          Le correctif du noyau pour LVM 1 doit être généré avec
          les sources de LVM 1. Plus d'informations sur ceci
          peuvent être trouvées dans la
          
          <a class="xref" href="#buildlvmmod" title="2. Construire le module du noyau pour LVM 1">Section 2, « Construire le module du noyau pour LVM 1 »</a>.
        
        </p></td></tr></table></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="PublicCVS"/>2. Télécharger le code source de développement par CVS</h2></div></div></div><p>
        <span class="strong"><strong>Remarque :</strong></span> L'état du code
        dans l'entrepôt CVS évolue sauvagement.
        Il contient des erreurs, certaines peuvent faire planter LVM ou
        le noyau. Il peut aussi ne pas compiler du tout.
        Considérez-le comme du code de qualité alpha et
        que vous pourriez perdre des données... Vous êtes prévenu.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="beforebeginning"/>3. Avant de commencer</h2></div></div></div><p>
        Pour suivre la progression des développements de LVM,
        abonnez-vous aux listes de diffusion de LVM, linux-lvm et
        la liste de commit appropriée. (Cf. <a class="xref" href="#Maillists" title="1. Listes de diffusion">Section 1, « Listes de diffusion »</a>.)
      </p><p>
        Pour construire LVM à partir des sources CVS, plusieurs outils GNU
        sont <span class="strong"><strong>nécessaires</strong></span> :
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>le client CVS version 1.9 ou supérieure ;</p></li><li class="listitem"><p>GCC 2.95.2 ;</p></li><li class="listitem"><p>GNU make 3.79 ;</p></li><li class="listitem"><p>autoconf version 2.13 ou supérieure.</p></li></ul></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initsetup"/>4. Configuration initiale</h2></div></div></div><p>
        Pour vous rendre la vie plus facile lors des mises à jour futures de
        l'arbre CVS, créez le fichier <code class="filename">$HOME/.cvsrc</code>
        et mettez-y les lignes suivantes qui permettent de configurer le
        comportement par défaut des commandes CVS les plus utilisées. Faites-le
        avant de continuer plus loin.
      </p><pre class="screen">
diff -u -b -B
checkout -P
update -d -P
</pre><p>
        De même, si vous utilisez une connexion à bas débit (comme un modem
        RTC), vous voudrez probablement rajouter une ligne contenant
        <code class="filename">cvs -z5</code> dans ce fichier. Cela active un niveau de
        compression qui sera utilisé par toutes les commandes CVS.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="checkoutsource"/>5. Récupération du code source</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
            <span class="strong"><strong>Bibliothèque et utilitaires du mappeur
            de périphériques</strong></span>
          </p><p>
            La bibliothèque du mappeur de périphériques est nécessaire
            pour construire LVM 2.
          </p><p>
            Vous devez vous authentifier lors de votre premier chargement :
          </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs
</pre><p>
            Le mot de passe est <span class="quote">« <span class="quote">cvs</span> »</span>. La commande ne renvoie rien
            en cas de succès et renvoie un message d'erreur en cas d'échec.
            Seule la première connexion nécessite une
            authentification explicite.
            Toutes les commandes CVS suivantes lisent le mot de passe
            stocké dans le fichier
            <code class="filename">$HOME/.cvspass</code> pour l'authentification.
          </p><p>
            La commande de <span class="quote">« <span class="quote">checkout</span> »</span> suivante permet de récupérer
            une copie du code :
          </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper
</pre><p>
            Cela crée un nouveau répertoire
            <code class="filename">device-mapper</code> dans le répertoire courant.
            Il contient la version la plus à jour possible du code du
            mappeur de périphériques.
          </p></li><li class="listitem"><p>
             <span class="strong"><strong>LVM 2</strong></span>
          </p><p>
            Vous devez vous authentifier lors de votre premier chargement :
          </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 login cvs
</pre><p>
            Le mot de passe est <span class="quote">« <span class="quote">cvs</span> »</span>. La commande ne renvoie rien
            en cas de succès et un message d'erreur en cas d'échec.
            Seule la première connexion nécessite une
            authentification explicite.
            Toutes les commandes CVS suivantes lisent le mot de passe
            stocké dans le fichier
            <code class="filename">$HOME/.cvspass</code> pour l'authentification.
          </p><p>
            La commande de <span class="quote">« <span class="quote">checkout</span> »</span> suivante permet de récupérer
            une copie du code :
          </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2
</pre><p>
            Cela crée un nouveau répertoire
            <code class="filename">LVM2</code> dans le répertoire courant.
            Il contient la version la plus à jour possible du code de LVM 2.
          </p></li><li class="listitem"><p>
             <span class="strong"><strong>LVM 1</strong></span>
          </p><p>
            Vous devez vous authentifier lors de votre premier chargement :
         </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm login cvs
</pre><p>
            Le mot de passe est <span class="quote">« <span class="quote">cvs</span> »</span>. La commande ne renvoie rien
            en cas de succès et un message d'erreur en cas d'échec.
            Seule la première connexion nécessite une
            authentification explicite.
            Toutes les commandes CVS suivantes lisent le mot de passe
            stocké dans le fichier
            <code class="filename">$HOME/.cvspass</code> pour l'authentification.
          </p><p>
            La commande de <span class="quote">« <span class="quote">checkout</span> »</span> suivante permet de récupérer
            une copie du code :
          </p><pre class="screen">
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout LVM
</pre><p>
            Cela crée un nouveau répertoire
            <code class="filename">LVM</code> dans le répertoire courant.
            Il contient la version la plus à jour possible du code de LVM 1.
          </p></li></ul></div><p>
        Les commandes CVS fonctionnent depuis <span class="emphasis"><em>n'importe où</em></span>
        dans l'arborescence des sources et de façon récursive.
        Par conséquent, si vous faites une mise à jour à partir
        du sous répertoire <span class="quote">« <span class="quote">tools</span> »</span>, cela fonctionnera mais
        uniquement pour le répertoire <span class="quote">« <span class="quote">tools</span> »</span> et ses
        sous-répertoires.
        Les commandes qui suivent supposent que vous êtes à la racine
        de l'arborescence des sources.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="codeupdate"/>6. Mise à jour du code</h2></div></div></div><p>
        Les modifications du code sont assez fréquentes dans le dépôt CVS.
        Elles sont annoncées automatiquement par un envoi dans la
        liste lvm-commit.
      </p><p>
        Vous pouvez mettre à jour votre copie des sources pour correspondre
        au dépôt maître avec la commande update.
        Il n'est pas nécessaire de récupérer une nouvelle copie des sources.
        Il est beaucoup plus simple et rapide d'utiliser la commande update,
        car elle télécharge uniquement les modifications des fichiers
        modifiés depuis la dernière mise à jour.
        Elle permet aussi de fusionner automatiquement les modifications
        du dépôt CVS avec les changements que vous auriez pu effectuer
        en local.
        Pour cela, il vous suffit juste d'aller dans le répertoire
        à mettre à jour et de taper la commande suivante :
      </p><pre class="screen">
# cvs update
</pre><p>
        Si vous n'avez pas spécifié de balise lors du <span class="quote">« <span class="quote">checkout</span> »</span>,
        cela mettra à jour vos sources par rapport à la dernière version
        de la branche principale des sources.
        Si vous aviez spécifié une balise de branche,
        cela mettra à jour suivant la dernière version de cette branche.
        Si vous aviez spécifié une balise de version, cela ne fera rien du tout.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="startproj"/>7. Commencer un projet</h2></div></div></div><p>
        Discutez de l'idée sur la liste de développement avant de commencer.
        Quelqu'un est peut-être déjà en train de travailler sur le même sujet
        ou peut avoir des bonnes idées pour le mener à bien.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="hackingcode"/>8. Bidouiller le code</h2></div></div></div><p>
        Ainsi, vous voulez corriger un bogue ?
        Développer une fonctionnalité de la liste TODO ?
        Développer une nouvelle fonctionnalité ?
        Bidouiller le code ne pourrait pas être plus simple.
        Utilisez votre copie des sources.
        Pas besoin de copier les fichiers en <code class="filename">.orig</code>
        ou autres. CVS garde la copie des originaux.
      </p><p>
      
        Quand votre code fonctionnera et aura été testé du mieux
        possible avec le matériel dont vous disposez, faites un
        correctif par rapport à la version <span class="emphasis"><em>current</em></span>
        des sources sur CVS.
      
      </p><pre class="screen">
# cvs update
# cvs diff &gt; patchfile
</pre><p>
        
        Envoyez le correctif à la liste linux-lvm ou dm-devel (<a class="xref" href="#Maillists" title="1. Listes de diffusion">Section 1, « Listes de diffusion »</a>) avec une description des modifications et
        ajouts que vous avez effectués.
        
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="conflicts"/>9. Conflits</h2></div></div></div><p>
        Si quelqu'un a travaillé sur les mêmes fichiers que vous,
        il se peut qu'il y ait des modifications conflictuelles.
        Vous le saurez quand vous mettrez à jour vos sources.
      </p><pre class="screen">
# cvs update
RCS file: LVM/tools/pvcreate.c,v
retrieving revision 1.5
retrieving revision 1.6
Merging differences between 1.5 and 1.6 into pvcreate.c
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in tools/pvcreate.c
C tools/pvcreate.c
</pre><p>
        Pas de panique ! Le fichier original,
        tel qu'il était avant la mise à jour, est conservé avec le nom
        <code class="filename">.#pvcreate.c.1.5</code>.
        Vous pouvez toujours le récupérer si les choses se passent mal.
        Le fichier nommé <code class="filename">pvcreate.c</code> contient désormais les
        <span class="strong"><strong>deux</strong></span> versions,
        la vôtre et la nouvelle, des lignes conflictuelles.
        Il vous reste simplement à ouvrir le fichier et résoudre les
        conflits en effaçant la mauvaise version des lignes.
      </p><pre class="screen">
&lt;&lt;&lt;&lt;&lt;&lt;&lt; pvcreate.c
   j++;
=======
   j--;
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.6
</pre><p>
        N'oubliez pas de supprimer les lignes avec les symboles
        <span class="quote">« <span class="quote">&lt;</span> »</span>, <span class="quote">« <span class="quote">=</span> »</span> et <span class="quote">« <span class="quote">&gt;</span> »</span>.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="builddernelmods"/>Chapitre 6. Construire les modules du noyau</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#builddmmod">1. Construire le module noyau device-mapper</a></span></dt><dt><span class="sect1"><a href="#buildlvmmod">2. Construire le module du noyau pour LVM 1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#buildlvmpatch">2.1. Fabriquer un correctif pour votre noyau</a></span></dt><dt><span class="sect2"><a href="#buildlvm1-2.2">2.2. Construire le module LVM pour Linux 2.2.17+</a></span></dt><dt><span class="sect2"><a href="#buildlvm1-2.4">2.3. Compiler les modules LVM pour Linux 2.4</a></span></dt><dt><span class="sect2"><a href="#checkproc">2.4. Vérifier le système de fichiers proc</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="builddmmod"/>1. Construire le module noyau device-mapper</h2></div></div></div><p>
        Le mappeur de périphériques est inclus dans les noyaux 2.6.9 et suivants,
        donc vous devez juste vérifier qu'il est activé directement dans le noyau ou
        sous forme de module. Pour cela, vous devez avoir la présence de <code class="filename">/sys/class/misc/device-mapper</code> 
        ou de la ligne <span class="strong"><strong>device-mapper</strong></span> dans <code class="filename">/proc/devices</code>.
        Si aucun n'est présent, essayez <span class="command"><strong>modprobe dm_mod</strong></span> et re-vérifiez.
        Pour les versions de noyau avant le 2.6.9, vous ou votre distribution doit
        patcher le noyau pour le supporter. Allez voir la page web du 
        <a class="ulink" href="http://sources.redhat.com/dm/" target="_top">mappeur de périphériques</a> 
        pour plus d'informations.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="buildlvmmod"/>2. Construire le module du noyau pour LVM 1</h2></div></div></div><p>
        Pour utiliser LVM 1, il faut que vous compiliez le module LVM 1 du noyau
        (recommandé) ou, si vous le préférez, que vous reconstruisiez le noyau
        avec le code LVM 1 lié statiquement dedans.
      </p><p>
        Votre système Linux est probablement basé sur une des distributions
        populaires de Linux (Redhat, Debian...) avec laquelle le module LVM 1
        est peut-être déjà fourni.
        Vérifiez la version des utilitaires que vous avez sur votre système
        en utilisant une des commandes de LVM avec l'option <span class="quote">« <span class="quote">-h</span> »</span>.
        Utilisez la commande <span class="command"><strong>pvscan -h</strong></span> si vous ne
        connaissez aucune des commandes.
        Si le numéro de version en tête du listing de l'aide est 1.0.8,
        <span class="strong"><strong>utilisez votre configuration actuelle</strong></span>
        et sautez le reste de ce chapitre.
      </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="buildlvmpatch"/>2.1. Fabriquer un correctif pour votre noyau</h3></div></div></div><p>
        
          Afin de mettre à jour le noyau pour qu'il soit compatible avec
          LVM v1.0.8, vous devez effectuer les opérations
          suivantes :
        
          </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Décompresser LVM 1.0.8 :</p><pre class="screen">
# tar zxf lvm_1.0.8.tar.gz
</pre></li><li class="listitem"><p>
                 Allez dans le répertoire racine de cette version :</p><pre class="screen">
# cd LVM/1.0.8
</pre></li><li class="listitem"><p>Lancez le script de configuration :</p><pre class="screen">
# ./configure
</pre><p>
                Il faut ajouter l'option <code class="option">--with-kernel_dir</code> à
                configure si les sources du noyau ne sont pas dans
                <code class="filename">/usr/src/linux</code>.
                (Lancez <span class="command"><strong>./configure --help</strong></span> pour
                visualiser toutes les options disponibles.)
              </p></li><li class="listitem"><p>Allez dans le répertoire PATCHES :</p><pre class="screen">
# cd PATCHES
</pre></li><li class="listitem"><p>Lancez <span class="quote">« <span class="quote">make</span> »</span> :</p><pre class="screen">
# make
</pre><p>
                
                Vous devriez maintenant avoir un correctif appelé
                <code class="filename">lvm-1.0.8-$KERNELVERSION.patch</code> dans
                le répertoire PATCHES. C'est le correctif du noyau pour
                LVM qui sera utilisé dans la suite de ce guide pratique.
                
              </p></li><li class="listitem"><p>Patchez le noyau :</p><pre class="screen">
# cd /usr/src/linux ; patch -pX &lt; /répertoire/lvm-1.0.8-$KERNELVERSION.patch
</pre></li></ol></div><p>
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="buildlvm1-2.2"/>2.2. Construire le module LVM pour Linux 2.2.17+</h3></div></div></div><p>
        
          Un noyau de la série 2.2 doit être mis à jour avant de
          commencer la compilation. Allez voir ailleurs les instructions
          pour apprendre à appliquer des correctifs au noyau.
        
        </p><p>
          Correctifs :
        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              <span class="strong"><strong>Correctif rawio</strong></span>
            </p><p>
            
              Le correctif raw_io de Stephen Tweedie est disponible à
              <a class="ulink" href="http://www.kernel.org/pub/linux/kernel/people/sct/raw-io" target="_top">http://www.kernel.org/pub/linux/kernel/people/sct/raw-io</a>
            
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>Correctif lvm</strong></span>
            </p><p>
            
              Ce correctif doit être construit à partir du
              sous-répertoire PATCHES de la distribution de LVM 1.
              Vous trouverez plus d'informations dans la <a class="xref" href="#buildlvmpatch" title="2.1. Fabriquer un correctif pour votre noyau">Section 2.1, « Fabriquer un correctif pour votre noyau »</a>.
            
            </p></li></ol></div><p>
        
          Une fois que les correctifs ont été correctement appliqués, il
          faut vous assurer que le module soit bien compilé. Les pilotes
          LVM 1 se trouvent dans la section <span class="quote">« <span class="quote">devices</span> »</span>
          de la configuration du noyau. Vous devriez aussi compiler les
          informations de /proc pour LVM.
        
        </p><p>
          Compilez les modules noyau comme d'habitude.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="buildlvm1-2.4"/>2.3. Compiler les modules LVM pour Linux 2.4</h3></div></div></div><p>
        
          Le noyau 2.4 contient déjà LVM, mais vous devriez vérifier la
          présence de mises à jour sur le site web de LVM (c'est-à-dire
          que les noyaux 2.4.9 et inférieurs doivent utiliser le <a class="link" href="#buildlvmpatch" title="2.1. Fabriquer un correctif pour votre noyau">plus récent correctif
          LVM 1</a>). En configurant le noyau, cherchez
          LVM 1 dans <span class="strong"><strong>Multi-device support
          (RAID and LVM)</strong></span>. LVM 1 peut être compilé dans
          le noyau ou en tant que module. Compilez votre noyau et les
          modules et installez-les de la manière habituelle. Si vous
          décidez de compiler LVM en tant que module, il s'appellera
          <code class="filename">lvm-mod.o</code>.
        
        </p><p>
          Si vous voulez faire des instantanés avec ReiserFS,
          faites attention à appliquer le correctif
          <code class="filename">linux-2.4.x-VFS-lock</code>
          (il y en a une copie dans le répertoire
          <code class="filename">LVM/1.0.8/PATCHES</code>).
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="checkproc"/>2.4. Vérifier le système de fichiers proc</h3></div></div></div><p>
          Si le noyau est compilé avec le système de fichiers /proc
          (probablement),
          vous pouvez vérifier la présence de LVM par l'existence
          du répertoire /proc/lvm. S'il n'existe pas, il se peut que
          vous ayez à charger le module par la commande :
        </p><pre class="screen">
# modprobe lvm-mod
</pre><p>
          Si <code class="filename">/proc/lvm</code> n'existe toujours pas,
          vérifiez soigneusement votre configuration noyau.
        </p><p>
          Quand LVM est actif, il existe des entrées dans
          <code class="filename">/proc/lvm</code> pour tous les volumes physiques,
          groupes de volumes et volumes logiques. De plus, le
          <span class="quote">« <span class="quote">fichier</span> »</span> appelé
          <code class="filename">/proc/lvm/global</code> donne le statut de LVM
          et montre la version du noyau LVM en cours d'utilisation.
        </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="boot_scripts"/>Chapitre 7. Scripts de démarrage pour LVM 1</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#initscriptcaldera">1. Caldera</a></span></dt><dt><span class="sect1"><a href="#initscriptdebian">2. Debian</a></span></dt><dt><span class="sect1"><a href="#initscriptmandrake">3. Mandrake</a></span></dt><dt><span class="sect1"><a href="#initscriptredhat">4. Redhat</a></span></dt><dt><span class="sect1"><a href="#initscriptslackware">5. Slackware</a></span></dt><dt><span class="sect1"><a href="#initscriptsuse">6. SuSE</a></span></dt></dl></div><p>
      Les scripts de démarrage ne sont pas fournis par la distribution de LVM,
      bien qu'ils soient simples à faire soi-même.
    </p><p>
      Le démarrage de LVM demande juste ces deux commandes :
    </p><pre class="screen">
# vgscan
# vgchange -ay
</pre><p>
      Et l'arrêt une seule :
    </p><pre class="screen">
# vgchange -an
</pre><p>
      Suivez les instructions ci-dessous suivant la distribution de
      Linux que vous utilisez.
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptcaldera"/>1. Caldera</h2></div></div></div><p>
        Il est nécessaire d'ouvrir le fichier
        <code class="filename">/etc/rc.d/rc.boot</code>. Insérez les lignes de commandes
        vgscan et vgchange juste avant les lignes qui disent
        <span class="quote">« <span class="quote">Mounting local filesystems</span> »</span>.
      </p><p>
        Vous pouvez aussi modifier le fichier
        <code class="filename">/etc/rc.d/init.d/halt</code> pour désactiver
        les groupes de volume à l'arrêt de la machine. Insérer la commande
      </p><pre class="screen">
vgchange -an
</pre><p>
        près de la fin du fichier, juste après le démontage des
        systèmes de fichiers ou leur montage en lecture seule
        et avant le commentaire disant
        <span class="quote">« <span class="quote">Now halt or reboot</span> »</span>.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptdebian"/>2. Debian</h2></div></div></div><p>
        Si vous téléchargez le paquet Debian lvm-common (pour LVM 1) ou lvm2,
        un script d'initialisation devrait être installé pour vous.
      </p><p>
        Si vous installez LVM à partir des sources,
        vous devez créer votre propre fichier d'initialisation :
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
             Créez le script de démarrage <code class="filename">/etc/init.d/lvm</code>
             contenant les lignes suivantes :
        </p><pre class="screen">
#!/bin/sh

case "$1" in
  start)
    /sbin/vgscan
    /sbin/vgchange -ay
    ;;
  stop)
    /sbin/vgchange -an
    ;;
  restart|force-reload)
    ;;
esac

exit 0
</pre></li><li class="listitem"><p>
        Ensuite, exécutez les commandes :
      </p><pre class="screen">
# chmod 0755 /etc/init.d/lvm
# update-rc.d lvm start 26 S . stop 82 1 .
</pre><p>
        Remarquez les points dans la dernière commande.
      </p></li></ul></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptmandrake"/>3. Mandrake</h2></div></div></div><p>
        Aucune modification des scripts d'initialisation ne devrait
        être nécessaire pour les versions actuelles de Mandrake.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptredhat"/>4. Redhat</h2></div></div></div><p>
        Pour la Redhat 7.0 et supérieure, vous ne devriez pas avoir
        besoin de modifier de script d'initialisation pour démarrer
        LVM s'il est inclus dans le noyau.
        Si LVM est compilé en tant que module, il peut être nécessaire
        de modifier <code class="filename">/etc/rc.d/rc.sysinit</code>
        pour charger le module en y ajoutant la ligne
        <span class="quote">« <span class="quote">modprobe lvm-mod</span> »</span> avant la partie disant :

</p><pre class="screen">
# LVM initialization, take 2 (it could be on top of RAID)
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
   action $"Setting up Logical Volume Management:" /sbin/vgscan &amp;&amp;
   /sbin/vgchange -a y
fi
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
            Cette portion de script est pour la RedHat 7.3.
            Les autres versions peuvent apparaître légèrement différentes.
          </p></td></tr></table></div><p>
        Pour les versions de RedHat antérieures à la 7.0, il est nécessaire
        de modifier le fichier <code class="filename">/etc/rc.d/rc.sysinit</code>.
        Regardez la ligne qui dit <span class="quote">« <span class="quote">Mount all other filesystems</span> »</span>
        et insérez les commandes vgscan et vgchange juste avant celle-ci.
        Assurez-vous que votre système de fichiers racine est monté
        en lecture/écriture avant d'utiliser les commandes LVM.
      </p><p>
        Vous voudrez peut-être aussi modifier le fichier
        <code class="filename">/etc/rc.d/init.d/halt</code> pour désactiver
        les groupes de volumes à l'arrêt de la machine.
        Insérez la commande :
      </p><pre class="screen">
vgchange -an
</pre><p>
        vers la fin du fichier, juste après le remontage des systèmes
        de fichiers en lecture seule et avant le commentaire qui dit
        <span class="quote">« <span class="quote">Now halt or reboot</span> »</span>.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptslackware"/>5. Slackware</h2></div></div></div><p>
        La Slackware 8.1 ne demande aucune mise à jour des scripts
        de démarrage pour faire fonctionner LVM.
      </p><p>
      
        Pour les versions précédentes de Slackware 8.1, vous devrez
        appliquer le correctif suivant à
        <code class="filename">/etc/rc.d/rc.S</code>.
      
      </p><pre class="screen">
cd /etc/rc.d
cp -a rc.S rc.S.old
patch -p0 &lt; rc.S.diff
</pre><p>
        (Le cp sert à faire une sauvegarde au cas où).
      </p><pre class="screen">
----- snip snip file: rc.S.diff---------------
--- rc.S.or        Tue Jul 17 18:11:20 2001
+++ rc.S        Tue Jul 17 17:57:36 2001
@@ -4,6 +4,7 @@
#
# Mostly written by:  Patrick J. Volkerding, &lt;volkerdi@slackware.com&gt;
#
+# Added LVM support &lt;tgs@iafrica.com&gt;

PATH=/sbin:/usr/sbin:/bin:/usr/bin

@@ -28,19 +29,21 @@
READWRITE=yes
fi

+
# Check the integrity of all filesystems
if [ ! READWRITE = yes ]; then
-  /sbin/fsck -A -a
+  /sbin/fsck -a /
+  # Check only the root fs first, but no others
# If there was a failure, drop into single-user mode.
if [ ? -gt 1 ] ; then
echo
echo
-    echo "*******************************************************"
-    echo "*** An error occurred during the file system check. ***"
-    echo "*** You will now be given a chance to log into the  ***"
-    echo "*** system in single-user mode to fix the problem.  ***"
-    echo "*** Running 'e2fsck -v -y &lt;partition&gt;' might help.  ***"
-    echo "*******************************************************"
+    echo "************************************************************"
+    echo "*** An error occurred during the root file system check. ***"
+    echo "*** You will now be given a chance to log into the       ***"
+    echo "*** system in single-user mode to fix the problem.       ***"
+    echo "*** Running 'e2fsck -v -y &lt;partition&gt;' might help.       ***"
+    echo "************************************************************"
echo
echo "Once you exit the single-user shell, the system will reboot."
echo
@@ -82,6 +85,44 @@
echo -n "get into your machine and start looking for the problem. "
read junk;
fi
+  # okay / fs is clean, and mounted as rw
+  # This was an addition, limits vgscan to /proc thus
+  # speeding up the scan immensely.
+  /sbin/mount /proc
+
+  # Initialize Logical Volume Manager
+  /sbin/vgscan
+  /sbin/vgchange -ay
+
+  /sbin/fsck -A -a -R
+  #Check all the other filesystem, including the LVM's, excluding /
+
+  # If there was a failure, drop into single-user mode.
+  if [ ? -gt 1 ] ; then
+    echo
+    echo
+    echo "*******************************************************"
+    echo "*** An error occurred during the file system check. ***"
+    echo "*** You will now be given a chance to log into the  ***"
+    echo "*** system in single-user mode to fix the problem.  ***"
+    echo "*** Running 'e2fsck -v -y &lt;partition&gt;' might help.  ***"
+    echo "*** The root filesystem is ok and mounted readwrite ***"
+    echo "*******************************************************"
+    echo
+    echo "Once you exit the single-user shell, the system will reboot."
+    echo
+
+    PS1="(Repair filesystem) #"; export PS1
+    sulogin
+
+    echo "Unmounting file systems."
+    umount -a -r
+    mount -n -o remount,ro /
+    echo "Rebooting system."
+    sleep 2
+    reboot
+  fi
+
else
echo "Testing filesystem status: read-write filesystem"
if cat /etc/fstab | grep ' / ' | grep umsdos 1&gt; /dev/null 2&gt; /dev/null ;
then
@@ -111,14 +152,16 @@
echo -n "Press ENTER to continue. "
read junk;
fi
+
fi

+
# remove /etc/mtab* so that mount will create it with a root entry
/bin/rm -f /etc/mtab* /etc/nologin /etc/shutdownpid

# mount file systems in fstab (and create an entry for /)
# but not NFS or SMB because TCP/IP is not yet configured
-/sbin/mount -a -v -t nonfs,nosmbfs
+/sbin/mount -a -v -t nonfs,nosmbfs,proc

# Clean up temporary files on the /var volume:
/bin/rm -f /var/run/utmp /var/run/*.pid /var/log/setup/tmp/*
--snip snip snip end of file---------------
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initscriptsuse"/>6. SuSE</h2></div></div></div><p>
        Aucun changement ne devrait être nécessaire à partir de la 6.4 puisque
        LVM y est inclus.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="lvm2_boot"/>Chapitre 8. Scripts de démarrage pour LVM 2</h1></div></div></div><p>
      Pour utiliser <span class="strong"><strong>initrd</strong></span>, vous avez besoin d'avoir les lignes :
      </p><pre class="screen">
        dmsetup mknodes
        vgscan --ignorelockingfailure
        vgchange -ay --ignorelockingfailure
      </pre><p>
      
      dans <code class="filename">linuxrc</code> pour pouvoir activer le LV racine avant d'accéder au volume racine.
      
      La plupart des distributions semblent maintenant posséder cette configuration dans leur
      script <span class="command"><strong>mkinitrd</strong></span> et tendent aussi à l'avoir dans les scripts d'initialisation 
      du système (<code class="filename">rc.sysinit</code> ou équivalent), ce qui active tous les volumes au démarrage.
    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="buildlvm"/>Chapitre 9. Compiler LVM à partir des sources</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#makelvm1user">1. Compiler la bibliothèque et les utilitaires LVM </a></span></dt><dt><span class="sect1"><a href="#installlvm1user">2. Installer la bibliothèque LVM et les utilitaires</a></span></dt><dt><span class="sect1"><a href="#removelvm1user">3. Supprimer la bibliothèque LVM et les utilitaires</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="makelvm1user"/>1. Compiler la bibliothèque et les utilitaires LVM </h2></div></div></div><p>
        Allez dans le répertoire de LVM et faites un
        <span class="command"><strong>./configure</strong></span> suivi d'un <span class="command"><strong>make</strong></span>.
        Cela créera toutes les bibliothèques et programmes.
      </p><p>
        Si vous en avez besoin, vous pouvez modifier des options
        avec la commande de configuration. Faites un
        <span class="command"><strong>./configure --help</strong></span> pour voir les options
        disponibles. La plupart du temps, ceci sera inutile.
      </p><p>
        Il ne devrait pas y avoir d'erreur dans le processus de compilation.
        S'il y en a, reportez-vous au chapitre
        <a class="link" href="#ReportBug" title="Annexe B. Signaler des erreurs ou des bogues">Signaler des erreurs et des bogues</a>
        pour les signaler.
      </p><p>
      
        Vous êtes aussi les bienvenus si vous les corrigez et que vous
        nous envoyez les correctifs. Les correctifs sont habituellement
        à envoyer à la liste <a class="link" href="#Maillists" title="1. Listes de diffusion">linux-lvm</a>.
      
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="installlvm1user"/>2. Installer la bibliothèque LVM et les utilitaires</h2></div></div></div><p>
        Une fois que les sources compilent correctement, faites simplement
        un <span class="command"><strong>make install</strong></span> pour installer la bibliothèque
        LVM et les utilitaires sur votre système.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="removelvm1user"/>3. Supprimer la bibliothèque LVM et les utilitaires</h2></div></div></div><p>
        Pour enlever la bibliothèque et les utilitaires que vous venez
        d'installer, faites <span class="command"><strong>make remove</strong></span>.
        Vous devez avoir les sources originelles utilisées pour l'installation
        de LVM pour que cela fonctionne.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="trans1"/>Chapitre 10. Migrer d'une version précédente de LVM vers LVM 1.0.8</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#upgradelvm1">1. Migrer vers LVM 1.0.8 avec une partition racine non LVM</a></span></dt><dt><span class="sect1"><a href="#upgradetolvmroot">2. Migrer vers LVM 1.0.8 avec une partition racine en LVM et
      initrd</a></span></dt></dl></div><p>
      Migrer d'une version précédente de LVM vers LVM 1.0.8 devrait être
      très simple. Nous avons trouvé une méthode pour lire les méta-données des
      PV version 1 (LVM 0.9.1 Beta7 et précédents) aussi bien que les
      méta-données des PV version 2 (LVM 0.9.1 Beta8 et LVM 1.0).
    </p><p>
      <span class="emphasis"><em>Attention :</em></span> Les nouveaux PV initialisés avec
      LVM 1.0.8 utilisent la structure de disque des PV version 1.
      Cela signifie que LVM 0.9.1 Beta8 et LVM 1.0 ne peuvent pas
      lire ou utiliser les PV créés avec la version 1.0.8.
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="upgradelvm1"/>1. Migrer vers LVM 1.0.8 avec une partition racine non LVM</h2></div></div></div><p>
        Les étapes de la migration sont très simples,
        mais il est néanmoins recommandé de faire une sauvegarde des
        données avant. Vous êtes prévenus.
        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              <span class="strong"><strong>Compiler le noyau LVM et les
              modules</strong></span>
            </p><p>
              Suivez les étapes expliquées dans les <a class="xref" href="#getlvm" title="Chapitre 5. Obtenir LVM">Chapitre 5, <em>Obtenir LVM</em></a> et
              <a class="xref" href="#buildlvmmod" title="2. Construire le module du noyau pour LVM 1">Section 2, « Construire le module du noyau pour LVM 1 »</a> pour connaître les
              instructions pour obtenir et compiler les éléments
              nécessaires de LVM pour le noyau Linux.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>Compiler les utilitaires LVM</strong></span>
            </p><p>
              Suivez les étapes du <a class="xref" href="#buildlvm" title="Chapitre 9. Compiler LVM à partir des sources">Chapitre 9, <em>Compiler LVM à partir des sources</em></a> pour compiler et
              installer les utilitaires de LVM.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>Configurer les scripts de
              démarrage</strong></span>
            </p><p>
              Assurez-vous d'avoir une configuration correcte des scripts
              de démarrage comme dans le <a class="xref" href="#boot_scripts" title="Chapitre 7. Scripts de démarrage pour LVM 1">Chapitre 7, <em>Scripts de démarrage pour LVM 1</em></a>.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>Démarrer avec le nouveau noyau</strong></span>
            </p><p>
              Assurez-vous que le chargeur d'amorçage est configuré pour
              charger le nouveau noyau avec LVM et, si vous utilisez
              des modules, que la commande <span class="command"><strong>insmod lvm-mod</strong></span>
              soit dans le script de démarrage ou que les lignes suivantes
              soient ajoutées dans <code class="filename">/etc/modules.conf</code>
              (anciennement appelé <code class="filename">/etc/conf.modules</code>)
              pour permettre à modprobe de charger le module LVM
              (n'oubliez pas d'activer kmod) :
            </p><pre class="screen">
alias block-major-58      lvm-mod
alias char-major-109      lvm-mod
</pre><p>
              Redémarrez la machine et appréciez.
            </p></li></ol></div><p>
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="upgradetolvmroot"/>2. Migrer vers LVM 1.0.8 avec une partition racine en LVM et
      initrd</h2></div></div></div><p>
        La procédure est relativement simple si elle est suivie avec
        attention. Il est recommandé de faire une bonne sauvegarde
        avec une disquette de démarrage de secours, juste au cas où.
      </p><p>
        L'utilisation <span class="quote">« <span class="quote">normale</span> »</span> de LVM sur le système de
        fichiers racine est d'avoir une seule partition non LVM
        appelée <code class="filename">/boot</code> qui contient
        le noyau et une image disque RAM d'initialisation, nécessaire pour
        démarrer le système. Le système que j'ai mis à jour était comme
        suit :
      </p><pre class="screen">
# df
Sys. de fich.         Blocs-1k    Occupé    Dispo. Cap% Monté sur
/dev/rootvg/root        253871     93384    147380  39% /
/dev/hda1                17534     12944      3685  78% /boot
/dev/rootvg/home       4128448      4568   3914168   0% /home
/dev/rootvg/usr        1032088    332716    646944  34% /usr
/dev/rootvg/var         253871     31760    209004  13% /var
</pre><p>
        <code class="filename">/boot</code>
        contient l'ancien noyau et l'image disque RAM d'initialisation ainsi
        que les fichiers d'amorçage de Lilo et les lignes suivantes dans
        <code class="filename">/etc/lilo.conf</code> :
      </p><pre class="screen">
# ls /boot
System.map                 lost+found              vmlinux-2.2.16lvm
map                        module-info             boot.0300
boot.b                     os2_d.b                 chain.b
initrd.gz
# tail /etc/lilo.conf
image=/boot/vmlinux-2.2.16lvm
        label=lvm08
        read-only
        root=/dev/rootvg/root
        initrd=/boot/initrd.gz
        append="ramdisk_size=8192"
</pre><p>

        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              <span class="strong"><strong>
                Compiler le noyau LVM et les modules
              </strong></span>
            </p><p>
              Suivez les instructions détaillées dans les
              <a class="xref" href="#getlvm" title="Chapitre 5. Obtenir LVM">Chapitre 5, <em>Obtenir LVM</em></a> et <a class="xref" href="#buildlvmmod" title="2. Construire le module du noyau pour LVM 1">Section 2, « Construire le module du noyau pour LVM 1 »</a>
              pour obtenir et compiler les composants noyau
              nécessaires pour LVM.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>
                Compiler les utilitaires LVM
              </strong></span>
            </p><p>
              Suivez les instructions détaillées dans le
              <a class="xref" href="#buildlvmmod" title="2. Construire le module du noyau pour LVM 1">Section 2, « Construire le module du noyau pour LVM 1 »</a> pour compiler et installer
              les utilitaires nécessaires pour LVM.
            </p><p>
              Installer les nouveaux utilitaires. Une fois cela effectué,
              vous ne pourrez plus faire de manipulations sur LVM car les
              utilitaires ne sont pas compatibles avec le noyau démarré
              actuellement.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>
                Renommer le fichier initrd.gz existant
              </strong></span>
            </p><p>
              Cela permet qu'il ne soit pas écrasé par le nouveau fichier.
            </p><pre class="screen">
# mv /boot/initrd.gz /boot/initrd08.gz
</pre></li><li class="listitem"><p>
              <span class="strong"><strong>
                Modifier <code class="filename">/etc/lilo.conf</code>
              </strong></span>
            </p><p>
              Faites pointer l'entrée de démarrage existante vers le
              fichier renommé. Vous devrez redémarrer en utilisant
              cela si quelque chose se passe mal.
              L'entrée modifiée devrait ressembler à cela :
            </p><pre class="screen">
image=/boot/vmlinux-2.2.16lvm
        label=lvm08
        read-only
        root=/dev/rootvg/root
        initrd=/boot/initrd08.gz
        append="ramdisk_size=8192"
</pre></li><li class="listitem"><p>
              <span class="strong"><strong>
                Lancer lvmcreate_initrd pour créer une nouvelle image disque RAM
                d'initialisation
              </strong></span>
            </p><pre class="screen">
# lvmcreate_initrd 2.4.9
</pre><p>
              N'oubliez pas de spécifier la nouvelle version du
              noyau afin qu'il prenne les bons modules.
            </p></li><li class="listitem"><p>
              <span class="strong"><strong>
                Ajouter une nouvelle entrée dans /etc/lilo.conf
              </strong></span>
            </p><p>
              Cette nouvelle entrée sert à démarrer avec le nouveau
              noyau et le nouvel initrd.
            </p><pre class="screen">
image=/boot/vmlinux-2.4.9lvm
label=lvm10
read-only
root=/dev/rootvg/root
initrd=/boot/initrd.gz
append="ramdisk_size=8192"
</pre></li><li class="listitem"><p>
              <span class="strong"><strong>
                Relancer lilo
              </strong></span>
            </p><p>
              Cela installe le nouveau bloc d'amorçage
            </p><pre class="screen">
# /sbin/lilo
</pre></li><li class="listitem"><p>
              <span class="strong"><strong>
                Redémarrer la machine
              </strong></span>
            </p><p>
              Lorsque vous avez l'écran de sélection de Lilo,
              choisissez la nouvelle entrée (lvm10 dans cet exemple)
              et le système devrait démarrer avec un Linux utilisant
              la nouvelle version de LVM.
            </p><p>
              Si le nouveau noyau ne démarre pas, alors démarrez
              avec l'ancien et essayez de corriger le problème.
              Cela peut provenir du noyau qui n'aurait pas tous
              les pilotes de périphériques correctement compilés
              ou bien qu'ils ne sont pas disponibles dans initrd.
              Souvenez-vous que tous les pilotes (excepté pour LVM)
              qui sont nécessaires pour accéder au périphérique
              racine doivent être compilés en dur dans le noyau et
              non en tant que modules.
            </p><p>
              Si vous avez besoin d'effectuer des manipulations avec
              LVM lorsque vous avez redémarré sur l'ancienne
              version, il vous faut juste recompiler les anciens
              utilitaires et les installer avec :
            </p><pre class="screen">
# make install
</pre><p>
              Si vous faites cela, n'oubliez pas de réinstaller
              la nouvelle version lorsque vous redémarrerez avec
              le nouveau LVM.
            </p></li></ol></div><p>

        Une fois satisfait de la nouvelle installation, pensez à
        modifier l'entrée <span class="quote">« <span class="quote">default=</span> »</span> dans le fichier lilo.conf
        pour mettre par défaut le nouveau noyau.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="commontask"/>Chapitre 11. Tâches courantes</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#initdisks">1. Initialiser des disques ou des partitions de disques</a></span></dt><dt><span class="sect1"><a href="#createvgs">2. Créer un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#activatevgs">3. Activer un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#removevgs">4. Enlever un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#addpvstovg">5. Ajouter un volume physique à un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#removepvsfromvg">6. Supprimer un volume physique d'un groupe de volumes</a></span></dt><dt><span class="sect1"><a href="#createlv">7. Créer un volume logique</a></span></dt><dt><span class="sect1"><a href="#removelv">8. Supprimer un volume logique</a></span></dt><dt><span class="sect1"><a href="#extendlv">9. Étendre un volume logique</a></span></dt><dt><span class="sect1"><a href="#reducelv">10. Réduire un volume logique</a></span></dt><dt><span class="sect1"><a href="#migrateoffpv">11. Migrer des données hors d'un volume physique</a></span></dt></dl></div><p>
      Ce chapitre détaille quelques opérations courantes sur un système LVM.
      <span class="emphasis"><em>Cela ne remplace pas la lecture des pages de man.</em></span>
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="initdisks"/>1. Initialiser des disques ou des partitions de disques</h2></div></div></div><p>
        Avant de pouvoir utiliser un disque ou une partition comme volume
        physique, il faut l'initialiser :
      </p><p>
        Pour un disque entier :
        </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              Lancez pvcreate sur le disque :
            </p><pre class="screen">
# pvcreate /dev/hdb
</pre><p>
              Cela crée un descripteur de groupe de volumes au
              début du disque.
            </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Déconseillé"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Déconseillé</th></tr><tr><td align="left" valign="top"><p>
                L'utilisation d'un disque entier en tant que PV (par rapport à une 
                partition utilisant tout le disque) est déconseillée en raison des 
                problèmes de gestion que cela peut créer. Tout autre système d'exploitation
                ne détectera pas les méta-données LVM, affichera un disque vide et 
                écrasera probablement son contenu. Sinon LVM fonctionne parfaitement avec
                des PVs occupant tout le disque.
              </p></td></tr></table></div></li><li class="listitem"><p>
              Si vous obtenez une erreur indiquant que LVM ne peut pas
              initialiser un disque qui possède déjà une table de
              partition, vérifiez tout d'abord que vous êtes en train
              d'utiliser le bon disque. Si vous en êtes vraiment sûr,
              effectuez les commandes suivantes :
              </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: DANGEREUX"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">DANGEREUX</th></tr><tr><td align="left" valign="top"><p>
                  Les commandes suivantes vont détruire la table des
                  partitions sur le disque où elles sont lancées.
                  Soyez vraiment sûr que c'est le bon disque.
                </p></td></tr></table></div><p>
            </p><pre class="screen">
# dd if=/dev/zero of=/dev/nomdudisque bs=1k count=1
# blockdev --rereadpt /dev/nomdudisque
</pre></li></ul></div><p>

        Pour les partitions :
        </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              Quand vous utilisez LVM 1 sur des PC avec des partitions
              DOS, mettez le type de la partition à 0x8e avec fdisk
              ou un programme similaire. Ceci n'est pas nécessaire avec
              un système PPC ou avec LVM 2.
            </p></li><li class="listitem"><p>
              Lancez pvcreate sur la partition :
</p><pre class="screen">
# pvcreate /dev/hdb1
</pre><p>
              Cela crée un descripteur de groupe de volumes au début
              de la partition /dev/hdb1.
            </p></li></ul></div><p>
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="createvgs"/>2. Créer un groupe de volumes</h2></div></div></div><p>
        Utilisez le programme <span class="command"><strong>vgcreate</strong></span> :
      </p><pre class="screen">
# vgcreate mon_groupe_de_volumes /dev/hda1 /dev/hdb1
</pre><p>
        <span class="emphasis"><em>Remarque :</em></span> Si vous utilisez devfs,
        il est primordial d'utiliser le nom complet du périphérique
        devfs plutôt que le lien symbolique dans
        <code class="filename">/dev</code>.
        Par conséquent la commande précédente devient :
    </p><pre class="screen">
# vgcreate mon_groupe_de_volumes \\
    /dev/ide/host0/bus0/target0/lun0/part1 \\
    /dev/ide/host0/bus0/target1/lun0/part1
</pre><p>
        LVM 2 n'a pas cette restriction.
      </p><p>
        Vous pouvez aussi préciser la taille des extents avec l'option
        <span class="quote">« <span class="quote">-s</span> »</span> de cette commande si la valeur par défaut de 32 Mo
        ne vous convient pas. De plus, vous pouvez mettre des limites
        sur le nombre de volumes physiques et logiques que le
        volume peut contenir.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="activatevgs"/>3. Activer un groupe de volumes</h2></div></div></div><p>
        Après un redémarrage ou la commande
        <span class="command"><strong>vgchange -an</strong></span>, les VG et LV ne sont
        plus accessibles. Pour réactiver le groupe de volumes, exécutez :
      </p><pre class="screen">
# vgchange -a y mon_groupe_de_volumes
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="removevgs"/>4. Enlever un groupe de volumes</h2></div></div></div><p>
        Assurez-vous qu'aucun volume logique n'est présent dans le groupe
        de volumes, voir les sections suivantes pour savoir comment faire.
      </p><p>
        Désactivez le groupe de volumes :
      </p><pre class="screen">
# vgchange -a n mon_groupe_de_volumes
</pre><p>
        Maintenant, vous pouvez supprimer le groupe de volumes :
      </p><pre class="screen">
# vgremove mon_groupe_de_volumes
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="addpvstovg"/>5. Ajouter un volume physique à un groupe de volumes</h2></div></div></div><p>
        Utilisez <span class="quote">« <span class="quote">vgextend</span> »</span> pour ajouter un volume physique déjà
        initialisé à un groupe de volumes existant.
      </p><pre class="screen">
# vgextend mon_groupe_de_volumes /dev/hdc1
                                 ^^^^^^^^^
                                 nouveau volume physique
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="removepvsfromvg"/>6. Supprimer un volume physique d'un groupe de volumes</h2></div></div></div><p>
        La commande <span class="quote">« <span class="quote">pvdisplay</span> »</span> permet de s'assurer que le volume
        physique n'est utilisé par aucun volume logique :
      </p><pre class="screen">
# pvdisplay /dev/hda1
--- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
PV Size               1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV#                   1
PV Status             available
Allocatable           yes (but full)
Cur LV                1
PE Size (KByte)       4096
Total PE              499
Free PE               0
Allocated PE          499
PV UUID               Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
</pre><p>
        Si le volume physique est encore utilisé, il faut migrer les
        données vers un autre volume physique.
      </p><p>
        Utilisez ensuite <span class="quote">« <span class="quote">vgreduce</span> »</span> pour enlever le volume
        physique :
      </p><pre class="screen">
# vgreduce mon_groupe_de_volumes /dev/hda1
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="createlv"/>7. Créer un volume logique</h2></div></div></div><p>
        Pour créer un LV <span class="quote">« <span class="quote">testlv</span> »</span> linéaire de 1 500 Mo et
        son périphérique spécial <span class="quote">« <span class="quote">/dev/testvg/testlv</span> »</span> :
      </p><pre class="screen">
# lvcreate -L1500 -ntestlv testvg
</pre><p>
        Pour créer un volume logique de 100 LE avec 2 blocs répartis
        et une taille de bloc de 4 Ko :
      </p><pre class="screen">
# lvcreate -i2 -I4 -l100 -nunautretestlv testvg
</pre><p>
        Pour créer un LV qui utilise tout le VG, utilisez vgdisplay
        pour trouver la valeur de <span class="quote">« <span class="quote">Total PE</span> »</span>, puis utilisez-la
        avec lvcreate.
      </p><pre class="screen">
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n monlv
</pre><p>

        Cela créera un LV appelé <span class="strong"><strong>monlv</strong></span> qui remplira la totalité du VG
        <span class="strong"><strong>testvg</strong></span>.

      </p><p>

        Si vous désirez allouer le volume logique sur un volume physique
        précis, il faut spécifier le nom du ou des PV à la fin de la
        commande lvcreate.

      </p><pre class="screen">
# lvcreate -L 1500 -ntestlv testvg /dev/sdg
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="removelv"/>8. Supprimer un volume logique</h2></div></div></div><p>
        Un volume logique doit être démonté avant d'être supprimé :
      </p><pre class="screen">
# umount /dev/monvg/homevol
# lvremove /dev/monvg/homevol
lvremove -- do you really want to remove "/dev/monvg/homevol"? [y/n]: <em class="replaceable"><code>y</code></em>
lvremove -- doing automatic backup of volume group "monvg"
lvremove -- logical volume "/dev/monvg/homevol" successfully removed
</pre></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="extendlv"/>9. Étendre un volume logique</h2></div></div></div><p>
        Pour étendre un volume logique, il suffit de dire à lvextend
        de combien vous voulez augmenter la taille. Vous pouvez spécifier
        la quantité d'espace à ajouter ou bien la taille finale du volume
        logique :
      </p><pre class="screen">
# lvextend -L12G /dev/monvg/homevol
lvextend -- extending logical volume "/dev/monvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "monvg"
lvextend -- logical volume "/dev/monvg/homevol" successfully extended
</pre><p>
        étend <code class="filename">/dev/monvg/homevol</code> jusqu'à 12 Go.
      </p><pre class="screen">
# lvextend -L+1G /dev/monvg/homevol
lvextend -- extending logical volume "/dev/monvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "monvg"
lvextend -- logical volume "/dev/monvg/homevol" successfully extended
</pre><p>
        ajoute 1 Go à <code class="filename">/dev/monvg/homevol</code>.
      </p><p>
        Une fois le volume logique étendu, il est nécessaire d'augmenter
        la taille du système de fichiers à la taille correspondante.
        La procédure à suivre dépend du type de système de fichiers utilisé.
      </p><p>
        Par défaut, la plupart des utilitaires de redimensionnement
        de systèmes de fichiers vont augmenter leur taille suivant la
        taille du volume logique correspondant. Vous n'avez donc pas
        à vous occuper de spécifier la même taille pour les deux commandes.
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
            <span class="strong"><strong>ext2/ext3</strong></span>
          </p><p>
          
            À moins que vous n'ayez un noyau avec le correctif
            ext2online, il est nécessaire de démonter le système de
            fichiers avant le redimensionnement. (Il semble que le patch
            de redimensionnement à chaud soit dangereux, donc à utiliser
            à vos risques et périls.)
         
         </p><pre class="screen">
# umount /dev/monvg/homevol
# ext2resize /dev/monvg/homevol
# mount /dev/monvg/homevol /home
</pre><p>
            Si vous n'avez pas e2fsprogs 1.19 ou supérieur,
            la commande ext2resize est disponible sur
            <a class="ulink" href="http://ext2resize.sourceforge.net" target="_top">ext2resize.sourceforge.net</a>.
            Utilisez-la ensuite :
          </p><pre class="screen">
# umount /dev/monvg/homevol
# resize2fs /dev/monvg/homevol
# mount /dev/monvg/homevol /home
</pre><p>
            Pour ext2, il y a une solution plus simple : LVM 1 fournit
            un utilitaire appelé e2fsadm qui effectue le lvextend
            et le resize2fs pour vous (et peut aussi faire la réduction,
            voir le chapitre suivant).

            </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Inconvénient de LVM 2"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Inconvénient de LVM 2</th></tr><tr><td align="left" valign="top"><p>
                Il n'y a pas actuellement d'équivalent à e2fsadm pour LVM 2
                et la version de e2fsadm de LVM 1 ne fonctionne pas avec LVM 2.
              </p></td></tr></table></div><p>

            La commande unique devient :

          </p><pre class="screen">
# e2fsadm -L+1G /dev/monvg/homevol
</pre><p>
            qui est équivalente à :
          </p><pre class="screen">
# lvextend -L+1G /dev/monvg/homevol
# resize2fs /dev/monvg/homevol
</pre><p>
            </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Remarque"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Remarque</th></tr><tr><td align="left" valign="top"><p>
                Il est toujours nécessaire de démonter le système
                de fichiers avant d'utiliser e2fsadm.
              </p></td></tr></table></div><p>
          </p></li><li class="listitem"><p>
            <span class="strong"><strong>reiserfs</strong></span>
          </p><p>
            Le système de fichiers Reiserfs peut être redimensionné
            monté ou démonté, comme vous le préférez :
            </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
                  en fonctionnement :
                </p><pre class="screen">
# resize_reiserfs -f /dev/monvg/homevol
</pre></li><li class="listitem"><p>
                  hors fonctionnement :
                </p><pre class="screen">
# umount /dev/monvg/homevol
# resize_reiserfs /dev/monvg/homevol
# mount -treiserfs /dev/monvg/homevol /home
</pre></li></ul></div><p>
          </p></li><li class="listitem"><p>
            <span class="strong"><strong>xfs</strong></span>
          </p><p>
            Les systèmes de fichiers XFS doivent être montés pour
            être redimensionnés et le point de montage doit être
            donné à la place du nom de périphérique.
          </p><pre class="screen">
# xfs_growfs /home
</pre></li><li class="listitem"><p>
            <span class="strong"><strong>jfs</strong></span>
          </p><p>
            Comme XFS, le système de fichiers JFS doit être monté pour
            être redimensionné et le point de montage doit être spécifié
            plutôt que le nom du périphérique. Il vous faut au minimum la
            version 1.0.21 de jfs-utils pour cela.
          </p><pre class="screen">
# mount -o remount,resize /home
</pre><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Bogue connu du noyau"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Bogue connu du noyau</th></tr><tr><td align="left" valign="top"><p>
              Certaines versions du noyau ont des problèmes avec cette
              syntaxe (2.6.0 en fait partie). Dans ce cas, vous devez
              explicitement spécifier la nouvelle taille du système de
              fichiers en blocs. Attention aux erreurs car
              vous <span class="emphasis"><em>devez</em></span> connaître la taille de blocs
              de votre système de fichiers et vous en servir pour calculer
              la nouvelle taille.
            </p><p>
              Exemple : Si vous devez redimensionner un système de
              fichiers JFS à 4 Go, écrivez :
            </p><pre class="screen">
# mount -o remount,resize=1048576 /home
</pre></td></tr></table></div></li></ol></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="reducelv"/>10. Réduire un volume logique</h2></div></div></div><p>
        Les volumes logiques peuvent être réduits de la même façon
        qu'ils peuvent être agrandis.
        Cependant, il est <span class="emphasis"><em>très</em></span> important de se
        souvenir qu'il faut réduire la taille du système de fichiers
        ou de toute autre chose résidant sur le volume avant de le
        réduire lui-même. Autrement, vous risquez de perdre des données.
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
            <span class="strong"><strong>ext2</strong></span>
          </p><p>
            Si vous utilisez LVM 1 avec le système de fichiers ext2,
            vous pouvez utiliser e2fsadm comme mentionné précédemment
            pour effectuer les deux commandes de réduction du système
            de fichiers et de réduction du volume :
          </p><pre class="screen">
# umount /home
# e2fsadm -L-1G /dev/monvg/homevol
# mount /home
</pre><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Inconvénient de LVM 2"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Inconvénient de LVM 2</th></tr><tr><td align="left" valign="top"><p>
              Actuellement, il n'y a pas d'équivalent à e2fsadm pour LVM 2
              et la version de e2fsadm de LVM 1 ne fonctionne pas avec LVM 2.
            </p></td></tr></table></div><p>
            Si vous préférez faire cela manuellement, vous devez connaître
            la nouvelle taille du volume en blocs et utiliser les
            commandes suivantes :
          </p><pre class="screen">
# umount /home
# resize2fs /dev/monvg/homevol 524288
# lvreduce -L-1G /dev/monvg/homevol
# mount /home
</pre></li><li class="listitem"><p>
            <span class="strong"><strong>reiserfs</strong></span>
          </p><p>
            Il semble que Reiserfs préfère être démonté avant d'être
            réduit :
          </p><pre class="screen">
# umount /home
# resize_reiserfs -s-1G /dev/monvg/homevol
# lvreduce -L-1G /dev/monvg/homevol
# mount -treiserfs /dev/monvg/homevol /home
</pre></li><li class="listitem"><p>
            <span class="strong"><strong>xfs</strong></span>
          </p><p>
            Il n'y a pas moyen de réduire un système de fichiers XFS.
          </p></li><li class="listitem"><p>
            <span class="strong"><strong>jfs</strong></span>
          </p><p>
            Il n'y a pas moyen de réduire un système de fichiers JFS.
          </p></li></ol></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="migrateoffpv"/>11. Migrer des données hors d'un volume physique</h2></div></div></div><p>
        Pour mettre un disque hors service, il faut au préalable déplacer
        tous ses extents physiques sur d'autres disques du groupe de volumes.
        Il doit y avoir assez d'extents physiques libres sur les PV qui
        restent pour accueillir les extents provenant du disque à enlever.
        Pour plus de détails, voir la <a class="xref" href="#RemoveADisk" title="5. Enlever un disque">Section 5, « Enlever un disque »</a>.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="diskpart"/>Chapitre 12. Partitionnement de disques</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#multpartitions">1. Plusieurs partitions sur le même disque</a></span></dt><dt><span class="sect1"><a href="#sundisklabels">2. Étiquettes de disque Sun (Sun disk labels)</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="multpartitions"/>1. Plusieurs partitions sur le même disque</h2></div></div></div><p>
        Le LVM permet de créer des PV (volumes physiques) sur presque
        tous les périphériques par blocs. Par exemple, les commandes
        suivantes sont valides et vont très bien fonctionner
        dans un environnement LVM :
     </p><pre class="screen">
# pvcreate /dev/sda1
# pvcreate /dev/sdf
# pvcreate /dev/hda8
# pvcreate /dev/hda6
# pvcreate /dev/md1
</pre><p>
        Dans un environnement de production <span class="quote">« <span class="quote">normal</span> »</span>,
        il est recommandé de n'avoir qu'un seul PV par disque réel
        pour les raisons suivantes :
        </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              Facilité d'administration.
            </p><p>
              Il est plus simple de gérer le matériel du système si
              chaque disque réel n'apparaît qu'en un seul endroit.
              C'est particulièrement vrai en cas de problème sur le disque.
            </p></li><li class="listitem"><p>
              Éviter les problèmes de performances avec la répartition.
            </p><p>
              LVM ne sait pas dire si deux PV sont sur le même disque
              physique. Donc si vous créez des LV répartis, les blocs
              peuvent très bien être sur différentes partitions du
              même disque, ce qui entraîne une
              <span class="strong"><strong>diminution</strong></span> des
              performances, plutôt qu'une augmentation.
            </p></li></ul></div><p>

        Cependant, il peut être souhaitable de le faire pour certaines
        raisons :
        </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              La migration d'un système existant vers LVM.
            </p><p>
              Sur un système avec peu de disques, il peut être
              nécessaire de déplacer des données entre les partitions
              pour effectuer la conversion (cf. la
              <a class="xref" href="#UpgradeRootToLVM" title="8. Convertir le système de fichiers racine en LVM 1">Section 8, « Convertir le système de fichiers racine en LVM 1 »</a>).
            </p></li><li class="listitem"><p>
              Séparer un gros disque dans plusieurs groupes de volumes.
            </p><p>
              Si vous avez un très gros disque et que vous voulez plus
              d'un groupe de volumes pour des raisons d'administration,
              alors il est nécessaire de faire plusieurs partitions
              sur le disque.
            </p></li></ul></div><p>
      </p><p>
        Si vous avez un disque avec plus d'une partition et que ces
        partitions sont dans le même groupe de volumes, faites attention
        à bien spécifier les partitions qui doivent être incluses
        dans le volume logique lorsque vous créez des volumes répartis.
      </p><p>
        Il est recommandé d'utiliser une seule partition qui couvre
        l'ensemble du disque physique. Cela évite des accidents avec
        les nœuds des périphériques du disque et évite les messages
        d'alerte du noyau au démarrage à propos de types de partitions
        inconnus.
      </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="sundisklabels"/>2. Étiquettes de disque Sun (Sun disk labels)</h2></div></div></div><p>
        Il faut porter une attention particulière aux systèmes SPARC
        car les disques contiennent des étiquettes de disque Sun.
      </p><p>
      
        L'organisation normale des disques munis d'étiquettes de disque
        Sun est de faire commencer la première partition à partir du
        bloc zéro du disque. Cela implique que l'étiquette du disque se
        trouve en fait sur sa première partition. Cela fonctionne
        parfaitement avec les systèmes de fichiers ext2 (et c'est
        essentiel pour amorcer un système avec avec SILO) mais ces
        partitions ne doivent pas être utilisées avec LVM car celui-ci
        commence à écrire au tout début du périphérique et écrase alors
        l'étiquette de disque.
        
      </p><p>
        Si vous voulez utiliser un disque avec des étiquettes de disque
        Sun, assurez-vous de faire commencer votre partition à partir
        du cylindre 1 ou supérieur.
      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="recipes"/>Chapitre 13. Recettes</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#recipethreescsi">1. Mettre en place LVM avec trois disques SCSI</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2292">1.1. Préparation des disques</a></span></dt><dt><span class="sect2"><a href="#d0e2311">1.2. Configuration du groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2330">1.3. Création du volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2339">1.4. Création du système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2346">1.5. Test du système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipethreescsistripe">2. Mise en place de LVM sur trois disques SCSI avec
      répartition (striping)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2371">2.1. Préparation des partitions de disque</a></span></dt><dt><span class="sect2"><a href="#d0e2390">2.2. Configuration du groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2409">2.3. Création du volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2426">2.4. Création du système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2433">2.5. Test du système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipeadddisk">3. Ajouter un nouveau disque dans un système avec plusieurs disques
      SCSI</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2450">3.1. Situation actuelle</a></span></dt><dt><span class="sect2"><a href="#d0e2468">3.2. Préparation du partitionnement du disque</a></span></dt><dt><span class="sect2"><a href="#d0e2479">3.3. Ajout des nouvelles partitions au groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2486">3.4. Extension des systèmes de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2499">3.5. Remontage des volumes étendus</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Snapshots_Backup">4. Faire une sauvegarde avec un instantané (snapshot)</a></span></dt><dd><dl><dt><span class="sect2"><a href="#snapbackcreate">4.1. Créer le volume d'instantané</a></span></dt><dt><span class="sect2"><a href="#d0e2536">4.2. Monter le volume d'instantané</a></span></dt><dt><span class="sect2"><a href="#d0e2550">4.3. Faire la sauvegarde</a></span></dt><dt><span class="sect2"><a href="#d0e2557">4.4. Supprimer l'instantané</a></span></dt></dl></dd><dt><span class="sect1"><a href="#RemoveADisk">5. Enlever un disque</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2574">5.1. Distribuer les anciens extents vers des disques existants du
        groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2603">5.2. Distribuer les anciens extents sur un nouveau disque de
        remplacement</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipemovevgtonewsys">6. Déplacer un groupe de volumes vers un autre système</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2646">6.1. Démonter le système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2653">6.2. Marquer le groupe de volumes comme inactif</a></span></dt><dt><span class="sect2"><a href="#d0e2660">6.3. Exporter le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2672">6.4. Importer le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2683">6.5. Activer le groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2690">6.6. Monter le système de fichiers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recipesplitvg">7. Diviser un groupe de volumes</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2705">7.1. Déterminer l'espace libre</a></span></dt><dt><span class="sect2"><a href="#d0e2715">7.2. Déplacer les données des disques à réutiliser</a></span></dt><dt><span class="sect2"><a href="#d0e2724">7.3. Créer un nouveau groupe de volumes</a></span></dt><dt><span class="sect2"><a href="#d0e2734">7.4. Enlever le volume restant</a></span></dt><dt><span class="sect2"><a href="#d0e2741">7.5. Créer le nouveau volume logique</a></span></dt><dt><span class="sect2"><a href="#d0e2748">7.6. Créez un système de fichiers sur le volume</a></span></dt><dt><span class="sect2"><a href="#d0e2753">7.7. Montez le nouveau volume</a></span></dt></dl></dd><dt><span class="sect1"><a href="#UpgradeRootToLVM">8. Convertir le système de fichiers racine en LVM 1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e2795">8.1. Démarrer en mode mono-utilisateur</a></span></dt><dt><span class="sect2"><a href="#d0e2803">8.2. Utiliser Parted</a></span></dt><dt><span class="sect2"><a href="#d0e2826">8.3. Redémarrer</a></span></dt><dt><span class="sect2"><a href="#d0e2831">8.4. Vérifier les options de configuration du noyau</a></span></dt><dt><span class="sect2"><a href="#d0e2836">8.5. Ajuster le type de partition</a></span></dt><dt><span class="sect2"><a href="#d0e2843">8.6. Configurer LVM 1 pour la nouvelle configuration</a></span></dt><dt><span class="sect2"><a href="#d0e2867">8.7. Créer le système de fichiers</a></span></dt><dt><span class="sect2"><a href="#d0e2874">8.8. Mise à jour de /etc/fstab</a></span></dt><dt><span class="sect2"><a href="#d0e2885">8.9. Créez une image disque RAM d'initialisation pour LVM 1</a></span></dt><dt><span class="sect2"><a href="#d0e2892">8.10. Mise à jour de /etc/lilo.conf</a></span></dt><dt><span class="sect2"><a href="#d0e2909">8.11. Lancez lilo pour écrire le nouveau secteur de boot</a></span></dt><dt><span class="sect2"><a href="#d0e2914">8.12. Redémarrer avec LVM</a></span></dt><dt><span class="sect2"><a href="#d0e2928">8.13. Ajoutez le reste du disque dans LVM</a></span></dt></dl></dd><dt><span class="sect1"><a href="#recovermetadata">9. Restaurer les méta-données d'un volume physique</a></span></dt></dl></div><p>
      Ce chapitre détaille plusieurs <span class="quote">« <span class="quote">recettes</span> »</span> différentes
      pour mettre en place LVM. L'objectif est que le lecteur
      puisse adapter ces recettes pour son système et ses propres besoins.
    </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recipethreescsi"/>1. Mettre en place LVM avec trois disques SCSI</h2></div></div></div><p>
        Pour cette recette, on dispose de trois disques SCSI qui vont être
        mis dans un volume logique utilisant LVM.
        Les disques sont /dev/sda, /dev/sdb et /dev/sdc.
      </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2292"/>1.1. Préparation des disques</h3></div></div></div><p>
          Il faut préparer le disque avant de pouvoir l'utiliser
          dans un groupe de volumes :
        </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Attention !"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Attention !</th></tr><tr><td align="left" valign="top"><p>
            <span class="strong"><strong>
              Les commandes suivantes vont détruire toutes les
              données présentes sur /dev/sda, /dev/sdb et /dev/sdc.
            </strong></span>
          </p></td></tr></table></div><p>
          Lancez pvcreate sur les disques :
        </p><pre class="screen">
# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
</pre><p>
          Cela crée une zone avec les descripteurs de groupes de volumes
          (volume group descriptor area, VGDA) au début des disques.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2311"/>1.2. Configuration du groupe de volumes</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              Créez un groupe de volumes
            </p><pre class="screen">
# vgcreate mon_groupe_de_volumes /dev/sda /dev/sdb /dev/sdc
</pre></li><li class="listitem"><p>
              Utilisez vgdisplay pour vérifier le groupe de volume
            </p><pre class="screen">
# vgdisplay
--- Volume Group ---
VG Name               mon_groupe_de_volumes
VG Access             read/write
VG Status             available/resizable
VG #                  1
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           255.99 GB
Max PV                256
Cur PV                3
Act PV                3
VG Size               1.45 GB
PE Size               4 MB
Total PE              372
Alloc PE / Size       0 / 0
Free  PE / Size       372/ 1.45 GB
VG UUID               nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
</pre><p>
              Le plus important est de vérifier les trois premiers
              éléments et que la taille indiquée par <span class="quote">« <span class="quote">VG Size</span> »</span> est
              bien la taille de vos trois disques réunis.
            </p></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2330"/>1.3. Création du volume logique</h3></div></div></div><p>
          Si le groupe de volumes semble correct, il est alors temps
          de créer un volume logique dessus.
        </p><p>
          Vous pouvez choisir la taille que vous voulez pour le volume
          logique (de la même manière que vous le feriez dans un
          environnement non LVM).
          Pour cet exemple, nous allons juste créer un volume logique
          d'1 Go dans le groupe de volumes. Nous n'utiliserons pas
          la répartition car il n'est pas actuellement possible de
          rajouter un disque une fois le volume logique créé.
       </p><pre class="screen">
# lvcreate -L1G -nmon_volume_logique mon_groupe_de_volumes
lvcreate -- doing automatic backup of "mon_groupe_de_volumes"
lvcreate -- logical volume "/dev/mon_groupe_de_volumes/mon_volume_logique" successfully created
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2339"/>1.4. Création du système de fichiers</h3></div></div></div><p>
          Créez un système de fichiers ext2 dans le volume logique :
       </p><pre class="screen">
# mke2fs /dev/mon_groupe_de_volumes/mon_volume_logique
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
9 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2346"/>1.5. Test du système de fichiers</h3></div></div></div><p>
          Montez le volume logique et vérifiez que tout semble correct.
        </p><pre class="screen">
# mount /dev/mon_groupe_de_volumes/mon_volume_logique /mnt
# df

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              1311552    628824    616104  51% /
/dev/mon_groupe_de_volumes/mon_volume_logique
                       1040132        20    987276   0% /mnt
</pre><p>
          Si tout s'est passé correctement, vous avez désormais un
          volume logique avec un système de fichiers ext2 monté dans
          <code class="filename">/mnt</code>.
        </p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recipethreescsistripe"/>2. Mise en place de LVM sur trois disques SCSI avec
      répartition (striping)</h2></div></div></div><p>
        Pour cette recette, on dispose de trois disques SCSI qui vont
        être mis dans un volume logique en utilisant LVM.
        Les disques sont /dev/sda, /dev/sdb et /dev/sdc.
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Remarque"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Remarque</th></tr><tr><td align="left" valign="top"><p>
          <span class="strong"><strong>
            Il n'est pas actuellement possible d'ajouter un disque
            dans un volume logique réparti avec LVM 1. Utilisez LVM 2 avec
            le format de méta-données lvm 2 si vous voulez effectuer cela.
          </strong></span>
        </p></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2371"/>2.1. Préparation des partitions de disque</h3></div></div></div><p>
          Il faut préparer le disque avant de pouvoir l'utiliser
          dans un groupe de volumes :
        </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Attention !"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Attention !</th></tr><tr><td align="left" valign="top"><p>
            <span class="strong"><strong>
              Les commandes suivantes vont détruire toutes
              les données présentes sur /dev/sda, /dev/sdb et /dev/sdc.
            </strong></span>
          </p></td></tr></table></div><p>
          Lancez pvcreate sur les disques :
        </p><pre class="screen">
# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
</pre><p>
          Cela crée une zone de descripteurs de groupes de volumes
          (volume group descriptor area, VGDA) au début des disques.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2390"/>2.2. Configuration du groupe de volumes</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              Créez un groupe de volumes
            </p><pre class="screen">
# vgcreate mon_groupe_de_volumes /dev/sda /dev/sdb /dev/sdc
</pre></li><li class="listitem"><p>
              Utilisez vgdisplay pour vérifier le groupe de volume
            </p><pre class="screen">
# vgdisplay
--- Volume Group ---
VG Name                      mon_groupe_de_volumes
VG Access             read/write
VG Status             available/resizable
VG #                  1
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           255.99 GB
Max PV                256
Cur PV                3
Act PV                3
VG Size               1.45 GB
PE Size               4 MB
Total PE              372
Alloc PE / Size       0 / 0
Free  PE / Size       372/ 1.45 GB
VG UUID               nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
</pre><p>
              Le plus important est de vérifier les trois premiers
              éléments et que la taille indiquée par <span class="quote">« <span class="quote">VG Size</span> »</span> est
              bien la taille de vos trois disques réunis.
            </p></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2409"/>2.3. Création du volume logique</h3></div></div></div><p>
          Si le groupe de volumes semble correct, il est alors temps
          de créer un volume logique dessus.
        </p><p>
          Vous pouvez choisir la taille que vous voulez pour le
          volume logique (de la même manière que vous le feriez sur
          un environnement non LVM).
          Pour cet exemple, nous allons juste créer un volume logique
          d'1 Go sur le groupe de volumes.
          Le volume logique sera réparti en utilisant une taille de
          bloc de 4 Ko. Cela devrait améliorer ses performances.
       </p><pre class="screen">
# lvcreate -i3 -I4 -L1G -nmon_volume_logique mon_groupe_de_volumes
lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE
lvcreate -- doing automatic backup of "mon_groupe_de_volumes"
lvcreate -- logical volume "/dev/mon_groupe_de_volumes/mon_volume_logique" successfully created
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Remarque"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Remarque</th></tr><tr><td align="left" valign="top"><p>
            Si vous créez le volume logique avec l'option <span class="quote">« <span class="quote">-i2</span> »</span>,
            vous n'utiliserez que deux disques de votre groupe de volumes.
            Ceci est utile si vous voulez créer deux volumes logiques
            à partir du même volume physique, mais ce point n'est pas
            abordé dans cette recette.
          </p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2426"/>2.4. Création du système de fichiers</h3></div></div></div><p>
          Créez un système de fichiers ext2 dans le volume logique :
        </p><pre class="screen">
# mke2fs /dev/mon_groupe_de_volumes/mon_volume_logique
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
132192 inodes, 264192 blocks
13209 blocks (5.00%) reserved for the super user
First data block=0
9 block groups
32768 blocks per group, 32768 fragments per group
14688 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2433"/>2.5. Test du système de fichiers</h3></div></div></div><p>
          Montez le volume logique et vérifiez que tout semble correct.
        </p><pre class="screen">
# mount /dev/mon_groupe_de_volumes/mon_volume_logique /mnt
</pre><pre class="screen">
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              1311552    628824    616104  51% /
/dev/mon_groupe_de_volumes/mon_volume_logique
                       1040132        20    987276   0% /mnt
</pre><p>
          Si tout s'est passé correctement, vous avez désormais un
          volume logique avec un système de fichiers ext2 monté dans
          <code class="filename">/mnt</code>.
        </p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recipeadddisk"/>3. Ajouter un nouveau disque dans un système avec plusieurs disques
      SCSI</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2450"/>3.1. Situation actuelle</h3></div></div></div><p>
          Un serveur de données possède six disques organisés de la
          façon suivante :
        </p><pre class="screen">
# pvscan
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
pvscan -- total: 8 [11.72 GB] / in use: 8 [11.72 GB] / in no VG: 0 [0]

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
/dev/dev/users         2064208   2060036      4172 100% /mnt/dev/users
/dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
/dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
/dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
/dev/ops/batch         1032088    897122    134966  86% /mnt/ops/batch
</pre><p>
          Comme vous pouvez le voir, les groupes <span class="quote">« <span class="quote">dev</span> »</span> et
          <span class="quote">« <span class="quote">ops</span> »</span> sont presque pleins.
          Un nouveau disque est acheté et ajouté au système.
          Il devient <code class="filename">/dev/sdg</code>.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2468"/>3.2. Préparation du partitionnement du disque</h3></div></div></div><p>
          Le nouveau disque doit être partagé entre ops et dev. Il est donc
          partitionné en deux volumes physiques /dev/sdg1 et /dev/sdg2 :
        </p><pre class="screen">
# fdisk /dev/sdg

Device contains neither a valid DOS partition table, nor Sun or SGI
disklabel Building a new DOS disklabel. Changes will remain in memory
only, until you decide to write them. After that, of course, the
previous content won't be recoverable.

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)

p
Partition number (1-4): 1
First cylinder (1-1000, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1000, default 1000): 500

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)

p
Partition number (1-4): 2
First cylinder (501-1000, default 501):
Using default value 501
Last cylinder or +size or +sizeM or +sizeK (501-1000, default 1000):
Using default value 1000

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Unknown)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Unknown)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x partitions,
please see the fdisk manual page for additional information.
</pre><p>
          Ensuite, les volumes physiques sont créés sur cette partition :
        </p><pre class="screen">
# pvcreate /dev/sdg1
pvcreate -- physical volume "/dev/sdg1" successfully created

# pvcreate /dev/sdg2
pvcreate -- physical volume "/dev/sdg2" successfully created
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2479"/>3.3. Ajout des nouvelles partitions au groupe de volumes</h3></div></div></div><p>
          Les volumes sont ensuite ajoutés aux groupes de volumes
          dev et ops :
        </p><pre class="screen">
# vgextend ops /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "ops"
vgextend -- volume group "ops" successfully extended

# vgextend dev /dev/sdg2
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "dev"
vgextend -- volume group "dev" successfully extended

# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   [996 MB / 996 MB free]
pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   [996 MB / 996 MB free]
pvscan -- total: 10 [13.67 GB] / in use: 10 [13.67 GB] / in no VG: 0 [0]
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2486"/>3.4. Extension des systèmes de fichiers</h3></div></div></div><p>
          L'action suivante est d'étendre les systèmes de fichiers pour
          que de l'espace disque supplémentaire soit disponible aux
          utilisateurs.
        </p><p>
          Il existe des outils qui permettent le redimensionnement à chaud
          des systèmes de fichiers ext2, mais nous utilisons ici la
          méthode la plus sûre et démontons les deux systèmes de fichiers
          avant le redimensionnement :
        </p><pre class="screen">
# umount /mnt/ops/batch
# umount /mnt/dev/users
</pre><p>
          Nous utilisons ensuite la commande e2fsadm pour redimensionner
          le volume logique et le système de fichiers ext2 en une seule
          opération. Nous utilisons ext2resize à la place de resize2fs
          (qui est la commande par défaut de e2fsadm).
          Pour cela, nous définissons la variable d'environnement
          E2FSADM_RESIZE_CMD pour dire à e2fsadm d'utiliser cette commande.
        </p><pre class="screen">
# export E2FSADM_RESIZE_CMD=ext2resize
# e2fsadm /dev/ops/batch -L+500M
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/ops/batch: 11/131072 files (0.0&lt;!--  non-contiguous), 4127/262144 blocks
lvextend -- extending logical volume "/dev/ops/batch" to 1.49 GB
lvextend -- doing automatic backup of volume group "ops"
lvextend -- logical volume "/dev/ops/batch" successfully extended

ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
e2fsadm -- ext2fs in logical volume "/dev/ops/batch" successfully extended to 1.49 GB

# e2fsadm /dev/dev/users -L+900M
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/dev/users: 12/262144 files (0.0% non-contiguous), 275245/524288 blocks
lvextend -- extending logical volume "/dev/dev/users" to 2.88 GB
lvextend -- doing automatic backup of volume group "dev"
lvextend -- logical volume "/dev/dev/users" successfully extended

ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
e2fsadm -- ext2fs in logical volume "/dev/dev/users" successfully extended to 2.88 GB
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2499"/>3.5. Remontage des volumes étendus</h3></div></div></div><p>
          Nous pouvons désormais remonter les systèmes de fichiers et
          vérifier qu'il y a maintenant plus d'espace libre.
        </p><pre class="screen">
# mount /dev/ops/batch
# mount /dev/dev/users
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
/dev/dev/users         2969360   2060036    909324  69% /mnt/dev/users
/dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
/dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
/dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
/dev/ops/batch         1535856    897122    638734  58% /mnt/ops/batch
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="Snapshots_Backup"/>4. Faire une sauvegarde avec un instantané (snapshot)</h2></div></div></div><p>
        À la suite de l'exemple précédent, nous désirons maintenant utiliser
        l'espace supplémentaire dans le groupe de volumes <span class="quote">« <span class="quote">ops</span> »</span> pour
        faire une sauvegarde de la base de données tous les soirs. Pour
        nous assurer de la cohérence des données sur la bande, nous utilisons
        la fonctionnalité d'instantané de LVM.
      </p><p>
        Un volume instantané est un type de volume spécial qui présente toutes 
        les données du volume telles qu'elles étaient au moment où l'instantané 
        a été créé.
        Pour une description plus détaillée, voir <a class="xref" href="#snapshotintro" title="8. Les instantanés (snapshots)">Section 8, « Les instantanés (snapshots) »</a>.
        Cela signifie que nous pouvons faire une sauvegarde du volume sans
        se préoccuper des modifications de données pendant la sauvegarde et
        par conséquent il n'y a pas besoin de garder la base de données
        éteinte pendant la sauvegarde.
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
          Avec LVM 1, ce type de volume était en lecture seule, alors 
          qu'il est en lecture/écriture par défaut avec LVM 2.
        </p></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="snapbackcreate"/>4.1. Créer le volume d'instantané</h3></div></div></div><p>
          Il reste un peu plus de 500 Mo d'espace libre dans le groupe de
          volume <span class="quote">« <span class="quote">ops</span> »</span>. Nous allons l'utiliser entièrement pour le
          volume logique d'instantané.
          Un volume logique d'instantané peut être aussi grand ou petit
          que vous le souhaitez, mais il doit être assez grand pour contenir
          toutes les modifications qui peuvent apparaître sur le volume
          originel pendant la durée de vie de l'instantané. Ici, permettre
          500 Mo de modifications dans la base de données devrait être
          très large.
        </p><pre class="screen">
# lvcreate -L592M -s -n dbbackup /dev/ops/databases 
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/ops/dbbackup"
lvcreate -- doing automatic backup of "ops"
lvcreate -- logical volume "/dev/ops/dbbackup" successfully created
</pre><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Les instantanés pleins sont automatiquement désactivés"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Les instantanés pleins sont automatiquement désactivés</th></tr><tr><td align="left" valign="top"><p>
            Lorsque le volume logique d'un instantané est plein, il est désactivé 
            (état inutilisable). Il est donc primordial de lui allouer un espace suffisant.
            Il n'y a pas de recette magique pour déterminer l'espace requis, qui dépend 
            uniquement de l'utilisation de l'instantané. Cependant, un instantané de taille 
            identique à sa source ne sera jamais saturé.
          </p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2536"/>4.2. Monter le volume d'instantané</h3></div></div></div><p>
          Nous pouvons désormais créer un point de montage et monter le volume.
        </p><pre class="screen">
# mkdir /mnt/ops/dbbackup
# mount /dev/ops/dbbackup /mnt/ops/dbbackup

mount: block device /dev/ops/dbbackup is write-protected, mounting read-only
</pre><p>
          Si vous utilisez le système de fichiers XFS, il faut ajouter l'option
          <code class="option">nouuid</code> à la commande mount :
        </p><pre class="screen">
# mount /dev/ops/dbbackup /mnt/ops/dbbackup -onouuid,ro
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2550"/>4.3. Faire la sauvegarde</h3></div></div></div><p>
          Je suppose que vous avez des stratégies de sauvegarde un peu plus
          sophistiquées que ça !
        </p><pre class="screen">
# tar -cf /dev/rmt0 /mnt/ops/dbbackup
tar: Removing leading `/' from member names
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2557"/>4.4. Supprimer l'instantané</h3></div></div></div><p>
          Une fois la sauvegarde effectuée, vous pouvez démonter le volume
          et le supprimer du système. Vous devriez enlever les volumes
          d'instantanés dès que vous avez fini de les utiliser car il font une
          copie de toutes les données écrites sur le volume originel et
          cela peut impacter les performances.
        </p><pre class="screen">
# umount /mnt/ops/dbbackup
# lvremove /dev/ops/dbbackup

lvremove -- do you really want to remove "/dev/ops/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "ops"
lvremove -- logical volume "/dev/ops/dbbackup" successfully removed
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="RemoveADisk"/>5. Enlever un disque</h2></div></div></div><p>
        Admettons que vous ayez un vieux disque IDE sur /dev/hdb. Vous
        voulez le retirer mais de nombreux fichiers sont encore dessus.
      </p><div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Caution: Sauvegarder votre système"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Attention]" src="images/caution.png"/></td><th align="left">Sauvegarder votre système</th></tr><tr><td align="left" valign="top"><p>
          Vous devriez toujours effectuer une sauvegarde de votre
          système avant de faire une opération avec pvremove.
        </p></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2574"/>5.1. Distribuer les anciens extents vers des disques existants du
        groupe de volumes</h3></div></div></div><p>
          Si vous avez assez d'extents libres sur les autres disques du
          groupe de volumes, c'est très simple. Il suffit d'exécuter
          la commande :
        </p><pre class="screen">
# pvmove /dev/hdb
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y

pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
</pre><p>
          Cela va déplacer les extents physiques alloués sur /dev/hdb
          vers les autres disques du groupe de volumes.
        </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: &#xA;            pvmove est lent&#xA;          "><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">
            <span class="command"><strong>pvmove</strong></span> est lent
          </th></tr><tr><td align="left" valign="top"><p>
            Attention, pvmove est très lent car il doit copier le contenu
            d'un disque vers un ou plusieurs autres, bloc par bloc. Si
            vous souhaitez plus d'informations sur l'avancement de
            l'opération, utilisez l'option <code class="option">-v</code> avec pvmove.
          </p></td></tr></table></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e2594"/>5.1.1. Enlever l'ancien disque</h4></div></div></div><p>
            Nous pouvons désormais supprimer l'ancien disque du groupe
            de volumes.
          </p><pre class="screen">
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "dev"
vgreduce -- volume group "dev" successfully reduced by physical volume:
vgreduce -- /dev/hdb
</pre><p>
            Le disque peut désormais être enlevé physiquement au
            prochain arrêt de la machine ou bien être réalloué
            à d'autres utilisateurs.
          </p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2603"/>5.2. Distribuer les anciens extents sur un nouveau disque de
        remplacement</h3></div></div></div><p>
          Si vous n'avez pas assez d'extents physiques libres pour les
          anciens extents, il va falloir rajouter un disque dans le
          groupe de volumes et y déplacer les extents.
        </p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e2608"/>5.2.1. Préparer le disque</h4></div></div></div><p>
            D'abord, il faut utiliser pvcreate sur le nouveau disque
            pour le rendre disponible dans LVM. Dans cette recette,
            nous montrons qu'il n'est pas nécessaire de partitionner
            un disque pour pouvoir l'utiliser.
        </p><pre class="screen">
# pvcreate /dev/sdf
pvcreate -- physical volume "/dev/sdf" successfully created
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e2615"/>5.2.2. Ajouter le disque au groupe de volumes</h4></div></div></div><p>
            Comme les développeurs utilisent beaucoup d'espace disque,
            leur volume est un bon candidat pour l'ajout.
          </p><pre class="screen">
# vgextend dev /dev/sdf
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "dev"
vgextend -- volume group "dev" successfully extended

</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e2622"/>5.2.3. Déplacer les données</h4></div></div></div><p>
            Ensuite, nous déplaçons les données de l'ancien disque vers
            le nouveau. Remarquez qu'il n'est pas nécessaire de démonter
            le système de fichiers avant de le faire.
            Cependant, il est *vivement* recommandé de faire une
            sauvegarde complète avant de faire cette opération au cas
            où elle soit interrompue par une coupure électrique ou
            tout autre problème.
            La commande pvmove peut prendre un temps considérable et
            réduire les performances des deux volumes. Il est donc
            conseillé d'attendre qu'ils ne soient pas trop occupés.
          </p><pre class="screen">
# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e2629"/>5.2.4. Enlever l'ancien disque</h4></div></div></div><p>
            Nous pouvons désormais supprimer l'ancien disque du
            groupe de volumes.
          </p><pre class="screen">
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "dev"
vgreduce -- volume group "dev" successfully reduced by physical volume:
vgreduce -- /dev/hdb
</pre><p>
            Le disque peut être enlevé physiquement au prochain arrêt de la
            machine ou bien être réalloué à d'autres utilisateurs.
          </p></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recipemovevgtonewsys"/>6. Déplacer un groupe de volumes vers un autre système</h2></div></div></div><p>
        Il est très simple de déplacer un groupe de volumes entier vers
        un autre système. Par exemple, si on acquiert un nouveau serveur
        pour le département.
        Pour cela, on utilise les commandes vgexport et vgimport.
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>
          vgexport et vgimport ne sont pas nécessaires pour déplacer des
          disques. Ce sont des outils d'administration permettant
          d'empêcher les accès aux volumes le temps de les déplacer.
        </p></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2646"/>6.1. Démonter le système de fichiers</h3></div></div></div><p>
          Il faut nous assurer qu'aucun utilisateur n'accède aux fichiers
          sur le volume et ensuite il faut le démonter :
       </p><pre class="screen">
# unmount /mnt/design/users
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2653"/>6.2. Marquer le groupe de volumes comme inactif</h3></div></div></div><p>
          Rendre le groupe de volumes inactif l'enlève du noyau et
          empêche toute activité sur celui-ci.
        </p><pre class="screen">
# vgchange -an design
vgchange -- volume group "design" successfully deactivated
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2660"/>6.3. Exporter le groupe de volumes</h3></div></div></div><p>
          Il est ensuite nécessaire d'exporter le groupe de volumes.
          Cela empêche qu'on y accède sur <span class="quote">« <span class="quote">l'ancienne</span> »</span> machine et
          le prépare à être retiré.
        </p><pre class="screen">
# vgexport design
vgexport -- volume group "design" sucessfully exported
</pre><p>
          Au prochain arrêt de la machine, le disque peut être enlevé
          et placé sur sa nouvelle machine.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2672"/>6.4. Importer le groupe de volumes</h3></div></div></div><p>
          Une fois connecté au nouveau système, un pvscan initial
          montre qu'il est devenu /dev/sdb :
        </p><pre class="screen">
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1"  is in EXPORTED VG "design" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2"  is in EXPORTED VG "design" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
</pre><p>
          Nous pouvons désormais importer le groupe de volumes (ce qui l'active
          au passage) et monter le système de fichiers.
        </p><pre class="screen">
# vgimport design /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "design"
vgimport -- volume group "design" successfully imported and activated
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2683"/>6.5. Activer le groupe de volumes</h3></div></div></div><p>
          Vous devez activer le groupe de volumes avant de pouvoir y accéder.
        </p><pre class="screen">
# vgchange -ay design
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2690"/>6.6. Monter le système de fichiers</h3></div></div></div><pre class="screen">
# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users
</pre><p>
          Le système de fichiers est désormais prêt à être utilisé.
        </p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recipesplitvg"/>7. Diviser un groupe de volumes</h2></div></div></div><p>
        Supposons que nous devons rajouter le nouveau groupe d'utilisateurs
        <span class="quote">« <span class="quote">design</span> »</span> au système. Un moyen de le gérer est d'ajouter un
        groupe de volumes au système pour y mettre leurs données. Ici, nous
        n'avons pas de nouveau disque mais beaucoup d'espace libre sur les
        disques existants qui peut être réalloué.
      </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2705"/>7.1. Déterminer l'espace libre</h3></div></div></div><pre class="screen">
# pvscan 
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 1.27 GB free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 564 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde"  of VG "ops"   [1.95 GB / 1.9 GB free]
pvscan -- ACTIVE   PV "/dev/sdf"  of VG "dev"   [1.95 GB / 1.33 GB free]
pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   [996 MB / 432 MB free]
pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   [996 MB / 632 MB free]
pvscan -- total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 0 [0]
</pre><p>
          Nous décidons de réallouer /dev/sdg1 et /dev/sdg2 à
          <span class="quote">« <span class="quote">design</span> »</span>.
          Il faut commencer par déplacer tous les extents physiques
          dans des espaces libres d'autres volumes (dans notre cas
          /dev/sdf pour le VG dev et /dev/sde pour ops).
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2715"/>7.2. Déplacer les données des disques à réutiliser</h3></div></div></div><p>
          De l'espace est toujours utilisé sur les volumes choisis,
          il faut donc déplacer les données autre part.
        </p><p>
          Déplacez tous les extents physiques utilisés de /dev/sdg1
          vers /dev/sde et de /dev/sdg2 vers /dev/sdf.
        </p><pre class="screen">
# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved

# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2724"/>7.3. Créer un nouveau groupe de volumes</h3></div></div></div><p>
          Maintenant, séparez /dev/sdg2 de dev et ajoutez-le à un
          nouveau groupe appelé <span class="quote">« <span class="quote">design</span> »</span>.
          Il est possible de faire cela avec vgreduce et vgcreate,
          mais vgsplit combine les deux commandes.
        </p><pre class="screen">
# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2734"/>7.4. Enlever le volume restant</h3></div></div></div><p>
          Ensuite, enlevez /dev/sdg1 de ops et ajoutez-le dans design.
        </p><pre class="screen">
# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1

# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2741"/>7.5. Créer le nouveau volume logique</h3></div></div></div><p>
          Maintenant, créez un volume logique. Au lieu d'allouer tout
          l'espace disponible, gardez un peu d'espace de réserve au cas
          où vous en auriez besoin ailleurs.
        </p><pre class="screen">
# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2748"/>7.6. Créez un système de fichiers sur le volume</h3></div></div></div><pre class="screen">
# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00&lt;!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2753"/>7.7. Montez le nouveau volume</h3></div></div></div><pre class="screen">
# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users/
</pre><p>
          C'est aussi une bonne d'idée d'ajouter une entrée dans
          /etc/fstab pour ce système de fichiers :
        </p><pre class="screen">
/dev/design/user /mnt/design/users   ext2    defaults        1 2
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="UpgradeRootToLVM"/>8. Convertir le système de fichiers racine en LVM 1</h2></div></div></div><div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Caution: Sauvegardez votre système"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Attention]" src="images/caution.png"/></td><th align="left">Sauvegardez votre système</th></tr><tr><td align="left" valign="top"><p>
          Il est fortement recommandé de faire une sauvegarde complète de
          votre système avant d'essayer de convertir votre racine en LVM 1.
        </p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Complications des mises à jour"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Complications des mises à jour</th></tr><tr><td align="left" valign="top"><p>
          Avoir son système de fichiers racine en LVM 1 peut compliquer
          significativement les procédures de mise à jour (suivant
          les distributions) donc la décision ne doit pas être prise
          à la légère.
          Plus précisément, vous devez vous assurer que le module
          LVM 1 (s'il n'est pas compilé directement dans le noyau)
          ainsi que les utilitaires vgscan et vgchange sont disponibles avant,
          pendant et après la mise à jour.
        </p></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Complications des récupérations"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Complications des récupérations</th></tr><tr><td align="left" valign="top"><p>
          Avoir son système racine sous LVM 1 peut compliquer
          significativement la récupération de systèmes de fichiers
          endommagés. Si vous perdez votre initrd, il sera très difficile
          de démarrer le système. Il faudra alors un disque de
          récupération contenant le noyau, le module et les utilitaires
          LVM 1 et tous les outils nécessaires pour récupérer un système
          de fichiers endommagé.
          Soyez sûr de faire des sauvegardes régulières et de garder
          une méthode de démarrage alternative qui permet la récupération
          de LVM.
          
        </p></td></tr></table></div><p>
        Dans cet exemple, tout le système était installé sur une seule
        partition racine excepté /boot. Le système avait 2 Go de disque
        partitionnés de la façon suivante :
      </p><pre class="screen">
/dev/hda1  /boot
/dev/hda2  swap
/dev/hda3  /
</pre><p>

        La partition / remplissait tout le disque hormis la partition
        /boot et le swap. Un des pré-requis important pour cette
        procédure est que moins de la moitié de la partition racine soit
        remplie (pour pouvoir en faire une copie dans le volume
        logique). Si ce n'est pas le cas, un second disque devra être
        utilisé. La procédure est alors similaire, sauf qu'il n'est pas
        nécessaire de réduire la partition racine existante et /dev/hda4
        doit être remplacé, par exemple, par /dev/hdb1 dans notre cas.

      </p><p>
        Le plus simple pour faire cela est d'utiliser GNU parted.
        Ce logiciel permet de réduire ou d'agrandir des partitions avec
        des systèmes de fichiers. Il est possible d'utiliser resize2fs
        et fdisk, mais GNU parted est moins sensible aux erreurs. S'il
        n'est pas inclus dans votre distribution, vous pouvez le
        télécharger à l'adresse : <a class="ulink" href="ftp://ftp.gnu.org/pub/gnu/parted" target="_top">ftp://ftp.gnu.org/pub/gnu/parted</a>.
      </p><p>
        Une fois que vous avez installé parted et QUE VOUS AVEZ SAUVEGARDÉ VOTRE
        SYSTÈME :
      </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2795"/>8.1. Démarrer en mode mono-utilisateur</h3></div></div></div><p>
          Démarrez en mode mono-utilisateur
          (tapez <span class="command"><strong>linux S</strong></span> à l'invite de Lilo).
          Ceci est important car cela assure que le système de fichiers
          racine sera monté en lecture seule et qu'aucun programme
          n'accédera au disque.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2803"/>8.2. Utiliser Parted</h3></div></div></div><p>
          Utilisez parted pour réduire la partition racine. Cela doit
          permettre d'avoir assez de place sur le disque pour une copie
          complète de celui-ci dans un volume logique.
          Dans cet exemple, la partition de 1,8 Go est réduite à 1 Go.
          Cela montre les tailles et noms des partitions sur le disque.
      </p><pre class="screen">
# parted /dev/hda
(parted) p
.
.
.
</pre><p>
          Maintenant, retaillez la partition :
        </p><pre class="screen">
(parted) resize 3 145 999
</pre><p>
          Le premier nombre est le numéro de la partition (hda3).
          Le second est le numéro de début de partition de hda3 (en Mo depuis le
          début du disque), ne le changez pas. Le dernier numéro (en Mo depuis
          le début du disque) indique la fin de la partition et devrait la
          réduire d'à peu près à la moitié de sa taille actuelle.
        </p><p>
          Créez une nouvelle partition :
        </p><pre class="screen">
(parted) mkpart primary ext2 1000 1999
</pre><p>
          Cela crée une nouvelle partition pour contenir les données
          initiales de LVM 1.
          Elle devrait commencer juste à la suite de la partition réduite hda3
          et terminer à la fin du disque.
        </p><p>
          Quittez parted :
        </p><pre class="screen">
(parted) q
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2826"/>8.3. Redémarrer</h3></div></div></div><p>
          Redémarrez le système.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2831"/>8.4. Vérifier les options de configuration du noyau</h3></div></div></div><p>
          Assurez-vous que le noyau qui tourne actuellement fonctionne
          avec LVM 1 et est configuré avec les paramètres
          CONFIG_BLK_DEV_RAM et CONFIG_BLK_DEV_INITRD.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2836"/>8.5. Ajuster le type de partition</h3></div></div></div><p>
          Changez le type de la nouvelle partition de Linux à LVM (8e).
          Parted ne connaît pas les partitions LVM 1, donc il
          faut le faire avec fdisk.
       </p><pre class="screen">
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2843"/>8.6. Configurer LVM 1 pour la nouvelle configuration</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
              Initialisez LVM 1 (vgscan) :
            </p><pre class="screen">
# vgscan
</pre></li><li class="listitem"><p>
              Insérez la nouvelle partition dans un PV :
            </p><pre class="screen">
# pvcreate /dev/hda4
</pre></li><li class="listitem"><p>
              Créez un nouveau groupe de volumes :
            </p><pre class="screen">
# vgcreate vg /dev/hda4
</pre></li><li class="listitem"><p>
              Créez un volume logique pour contenir la nouvelle racine :
            </p><pre class="screen">
# lvcreate -L250M -n root vg
</pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2867"/>8.7. Créer le système de fichiers</h3></div></div></div><p>
          Créez un système de fichiers dans le volume logique et
          copiez-y les fichiers racines.
       </p><pre class="screen">
# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2874"/>8.8. Mise à jour de /etc/fstab</h3></div></div></div><p>
          Ouvrez /mnt/etc/fstab de la nouvelle racine pour
          monter / sur /dev/vg/root. Par exemple :
        </p><pre class="screen">
/dev/hda3       /    ext2       defaults 1 1
</pre><p>
          devient :
        </p><pre class="screen">
/dev/vg/root    /    ext2       defaults 1 1
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2885"/>8.9. Créez une image disque RAM d'initialisation pour LVM 1</h3></div></div></div><pre class="screen">
# lvmcreate_initrd
</pre><p>
          Retenez le nom du fichier créé par lvmcreate_initrd.
          Il doit être dans /boot.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2892"/>8.10. Mise à jour de /etc/lilo.conf</h3></div></div></div><p>
          Ajoutez une entrée dans /etc/lilo.conf pour LVM 1.
          Cela devrait ressembler à ceci :
        </p><pre class="screen">
image   = /boot/KERNEL_IMAGE_NAME
label   = lvm
root    = /dev/vg/root
initrd  = /boot/INITRD_IMAGE_NAME
ramdisk = 8192
</pre><p>
          où KERNEL_IMAGE_NAME est le nom de votre noyau avec LVM 1 et
          INITRD_IMAGE_NAME est le nom de l'image initrd créée par
          lvmcreate_initrd.
          Il se peut que la valeur pour ramdisk doive être augmentée
          si vous avez une grosse configuration LVM 1, mais 8192 devrait
          suffire pour la plupart des utilisateurs.
          La valeur par défaut de ramdisk est 4096. Dans le doute,
          vérifiez dans la sortie de la commande lvmcreate_initrd la
          ligne qui dit :
        </p><pre class="screen">
lvmcreate_initrd -- making loopback file (6189 kB)
</pre><p>
          et créez un ramdisk de la taille entre parenthèses.
        </p><p>
          Vous devez recopier ce nouveau lilo.conf dans le nouveau
          système de fichiers racine.
        </p><pre class="screen">
# cp /etc/lilo.conf /mnt/etc/
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2909"/>8.11. Lancez lilo pour écrire le nouveau secteur de boot</h3></div></div></div><pre class="screen">
# lilo
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2914"/>8.12. Redémarrer avec LVM</h3></div></div></div><p>
          Redémarrez et tapez <span class="quote">« <span class="quote">lvm</span> »</span> à l'invite de Lilo.
          Le système devrait démarrer sous Linux en utilisant le
          nouveau volume logique.
        </p><p>
          Si cela a fonctionné, vous devriez mettre lvm comme démarrage
          par défaut en ajoutant la ligne suivante dans la première
          section de /etc/lilo.conf :
        </p><pre class="screen">
default=lvm
</pre><p>
          Si cela n'a pas fonctionné, redémarrez normalement et
          penchez-vous sur le problème. Cela peut provenir d'une erreur de
          syntaxe dans lilo.conf ou de LVM 1 qui n'est pas disponible
          dans l'image disque RAM ou le noyau. Examinez soigneusement le
          message affiché au démarrage.
        </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e2928"/>8.13. Ajoutez le reste du disque dans LVM</h3></div></div></div><p>
          Une fois que vous êtes satisfait de la configuration,
          vous pouvez ajoutez le reste du disque dans LVM 1, y compris
          l'ancienne partition racine.
        </p><p>
          D'abord, il faut mettre le type de partition à 8e (LVM) :
        </p><pre class="screen">
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w
</pre><p>
          Convertissez-la en PV et ajoutez-la au groupe de volumes :
        </p><pre class="screen">
# pvcreate /dev/hda3
# vgextend vg /dev/hda3
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="recovermetadata"/>9. Restaurer les méta-données d'un volume physique</h2></div></div></div><p>
        Si vous avez l'avertissement "Somme de contrôle de l'en-tête des méta-données incorrecte" 
        ("incorrect metadata area header checksum") ou un message indiquant qu'il est
        impossible de trouver le PV avec l'UUID "toto", vous avez probablement corrompu les 
        données de description du groupe de volume et LVM ne peut pas démarrer.
      </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: A utiliser uniquement avec des VG qui ne marchent pas"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">A utiliser uniquement avec des VG qui ne marchent pas</th></tr><tr><td align="left" valign="top"><p>
          Ne pas exécuter sur un LVM qui fonctionne correctement.
          Vous devez donner le bon volume physique à <span class="command"><strong>pvcreate</strong></span>
          ou vous risquez de perdre vos données.
        </p></td></tr></table></div><p>
        Récupérez l'UUID correcte du PV à partir du fichier 
        <code class="filename">/etc/lvm/archive/VolumeGroupName_XXXXX.vg</code>
        (où XXXXX est le numéro de la dernière archive correcte des méta-données LVM).
      </p><p>
        Utilisez <span class="command"><strong>pvcreate</strong></span> pour restaurer les méta-données :
        <span class="command"><strong>pvcreate --uuid "&lt;une_longue_chaîne_de_caractères&gt;" --restorefile /etc/lvm/archive/NomGroupeVolume_XXXXX.vg &lt;VolumePhysique&gt;</strong></span>
      </p><p>
        Si vous êtes chanceux, les méta-données sur le disque prenaient plus de place
        que ce qui a été écrasé et tout a pu être récupéré. 
        On a déjà constaté que cette commande a permis de récupérer des 
        données écrasées par <span class="command"><strong>mkswap</strong></span>. 
        Si ce qui a écrasé les méta-données a aussi écrit hors de cet espace 
        de données, les LVs peuvent avoir été affectés.
        Dans ce cas, <span class="command"><strong>fsck</strong></span> pourrait permettre de corriger le système de fichiers du LV, ou alors
        des mesures plus radicales seront nécessaires pour récupérer les données. Adressez-vous alors
        à votre expert local des systèmes de fichiers.
      </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p><span class="command"><strong>pvcreate</strong></span> permet juste d'écraser les méta-données LVM 
          sur le disque et ne touche pas aux données en elles-même (les volumes logiques).
        </p></td></tr></table></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="dangerousops"/>Annexe A. Opérations dangereuses</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#uuidfixer">1. Restaurer les UUID de VG avec uuid_fixer</a></span></dt><dt><span class="sect1"><a href="#sharinglvm1">2. Partager des volumes LVM</a></span></dt></dl></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Attention"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">Attention</th></tr><tr><td align="left" valign="top"><p>
        Ne faites pas ceci si vous n'êtes pas sûr de ce que vous faites.
        Vous y perdrez probablement toutes vos données.
      </p></td></tr></table></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="uuidfixer"/>1. Restaurer les UUID de VG avec uuid_fixer</h2></div></div></div><p>
        Si vous avez mis à jour LVM d'une version précédente aux premières
        versions 0.9 ou 0.9.1 et que <span class="command"><strong>vgscan</strong></span> indique
        vgscan -- no volume groups found,
        voici un moyen de corriger le problème :
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
            Téléchargez le programme de réparation des UUID à partir
            du répertoire des contributions chez Sistina.
          </p><p>
            Il se trouve à :
            <a class="ulink" href="ftp://ftp.sistina.com/pub/LVM/contrib/uuid_fixer-0.3-IOP10.tar.gz" target="_top">ftp://ftp.sistina.com/pub/LVM/contrib/uuid_fixer-0.3-IOP10.tar.gz</a>.
          </p></li><li class="listitem"><p>
            Extrayez <code class="filename">uuid_fixer-0.3-IOP10.tar.gz</code> :
          </p><pre class="screen">
# tar zxf uuid_fixer-0.3-IOP10.tar.gz
</pre></li><li class="listitem"><p>
            Allez dans uuid_fixer :
          </p><pre class="screen">
# cd uuid_fixer
</pre><p>
            Il y a deux possibilités à ce niveau :
          </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
                Utiliser le binaire déjà compilé
                (pour une architecture i386 uniquement)
              </p><p>
                Assurez-vous de lister tous les PV dans le VG que
                vous restaurez et suivez les indications :
              </p><pre class="screen">
# ./uuid_fixer <em class="replaceable"><code>&lt;LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS&gt;</code></em>
</pre></li><li class="listitem"><p>
                Construire le programme uuid_fixer à partir des sources
              </p><p>
                Ouvrez le Makefile avec votre éditeur favori et
                vérifiez que LVMDIR pointe sur vos sources de LVM.
              </p><p>
                Ensuite, lancez make.
              </p><pre class="screen">
# make
</pre><p>
                Lancez maintenant uuid_fixer. Assurez-vous de lister
                tous les PV dans le VG que vous restaurez et suivez
                les indications :
              </p><pre class="screen">
# ./uuid_fixer <em class="replaceable"><code>&lt;LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS&gt;</code></em>
</pre></li></ol></div></li><li class="listitem"><p>
            Désactivez les groupes de volumes
            (<span class="emphasis"><em>optionnel</em></span>) :
          </p><pre class="screen">
# vgchange -an
</pre></li><li class="listitem"><p>
            Lancez vgscan :
          </p><pre class="screen">
# vgscan
</pre></li><li class="listitem"><p>
            Réactivez des groupes de volumes :
          </p><pre class="screen">
# vgchange -ay
</pre></li></ul></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="sharinglvm1"/>2. Partager des volumes LVM</h2></div></div></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: LVM n'est pas conscient des clusters"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Avertissement]" src="images/warning.png"/></td><th align="left">LVM n'est pas conscient des clusters</th></tr><tr><td align="left" valign="top"><p>
          Faites très attention en faisant cela car LVM n'est pas
          conscient des clusters et il est très facile de perdre
          toutes ses données.
        </p></td></tr></table></div><p>
        Si vous avez un environnement avec du fiber-channel ou du SCSI
        partagé où plusieurs machines peuvent avoir un accès physique
        à un lot de disques, vous pouvez utiliser LVM pour diviser ces
        disques en volumes logiques. Si vous voulez partager des données,
        vous devriez vraiment regarder
        <a class="ulink" href="http://www.redhat.com/software/rha/gfs" target="_top">GFS</a>
        ou un autre système de fichiers pour cluster.
      </p><p>
        Le point clé à se souvenir lorsqu'on partage des volumes est
        que toute l'administration de LVM doit être effectuée sur l'un des
        nœuds et que LVM doit être arrêté sur tous les autres nœuds
        avant de faire une quelconque modification sur le nœud
        d'administration.
        Une fois les changements effectués, il est nécessaire de lancer
        vgscan sur les autres nœuds avant de réutiliser les groupes
        de volumes.
        Aussi, à moins que vous n'utilisiez un système de fichiers ou une
        application prenant en compte les clusters (comme GFS),
        un seul nœud à la fois peut monter un système de fichiers.
        C'est à l'administrateur de gérer cela ; LVM ne vous empêchera pas
        de corrompre vos données.
      </p><p>
        La séquence de démarrage de chaque nœud est la même que pour une
        configuration à un seul nœud avec l'utilisation de :
      </p><pre class="screen">
vgscan
vgchange -ay
</pre><p>
        dans les scripts de démarrage.
      </p><p>
        Si vous avez besoin d'apporter une
        <span class="strong"><strong>quelconque</strong></span> modification aux
        méta-données de LVM (indépendamment que cela affecte ou pas les
        volumes montés sur d'autres nœuds), il faut utiliser la
        procédure suivante. Dans les points suivants, le
        <span class="quote">« <span class="quote">nœud d'administration</span> »</span> est un nœud choisi
        arbitrairement dans le cluster.
      </p><pre class="screen">
Nœud d'administration        Autres nœuds
---------------------        ------------------
                             Fermer tous les volumes logiques (umount)
                             vgchange -an
&lt;faire les modifications,
par ex. lvextend&gt;
                             vgscan
                             vgchange -ay
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Les VG doivent être actifs sur le nœud&#xA;        d'administration"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Les VG doivent être actifs sur le nœud
        d'administration</th></tr><tr><td align="left" valign="top"><p>
          Vous n'avez pas besoin et ne devez pas défaire les VG du
          nœud d'administration. Par conséquent, cela doit être le
          nœud avec les pré-requis d'uptime les plus grands.
        </p></td></tr></table></div><p>
        Je me répète encore : <span class="strong"><strong>Soyez très
        prudent en faisant cela.</strong></span>
      </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="ReportBug"/>Annexe B. Signaler des erreurs ou des bogues</h1></div></div></div><p>
      <span class="emphasis"><em>ATTENTION, toute communication avec les listes de diffusion
      de LVM doit se faire exclusivement en anglais.</em></span>
    </p><p>
      Juste nous dire que LVM ne fonctionne pas ne nous donne pas assez
      d'informations pour vous aider.
      Nous devons connaître les différents composants de votre
      configuration. La première chose à faire est de regarder les
      <a class="ulink" href="http://www.redhat.com/archives/linux-lvm/" target="_top">archives
      de la liste de diffusion linux-lvm</a>
      pour vérifier si quelqu'un n'a pas déjà signalé le même problème.
      Si vous ne trouvez pas de rapport de bogue pour un problème similaire
      au vôtre, vous devriez essayer de récupérer autant d'information que
      possible. La liste est organisée avec trois catégories d'erreurs :
    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
          Pour les erreurs de compilation :
        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
          
              Détaillez la version spécifique de LVM que vous utilisez.
              Si elle provient d'un paquet, donnez le nom du fichier tar
              et des différents correctifs que vous auriez pu appliquer.
              Si elle provient du serveur CVS public, donner la date et
              l'heure où vous l'avez récupérée.
              
            </p></li><li class="listitem"><p>
              Donnez le message d'erreur exact. Fournissez aussi les
              quelques lignes qui précèdent le message d'erreur et les
              quelques lignes suivantes. Elles donnent parfois des
              indices sur la raison du problème.
            </p></li><li class="listitem"><p>
              Listez les étapes, dans l'ordre, qui ont amené à l'erreur.
              Indiquez si l'erreur est reproductible. Si vous repartez
              de l'état initial, les mêmes étapes permettent-elles de
              reproduire l'erreur ?
            </p></li></ol></div></li><li class="listitem"><p>
          Pour les erreurs LVM :
        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              Incluez toutes les informations demandées dans le
              paragraphe compilation.
            </p></li><li class="listitem"><p>
              Ajoutez une brève description de votre matériel : type
              de machine et de disques, interface des disques
              (SCSI, FC, NBD) et toute autre information matérielle
              que vous trouvez importante.
            </p></li><li class="listitem"><p>
              Donnez les lignes de commandes de LVM qui ont amené l'erreur.
            </p></li><li class="listitem"><p>
              Un fichier de trace produit par les commandes fautives.
              Pour cela, vérifiez la présence des lignes suivantes dans
              <code class="filename">/etc/lvm/lvm.conf</code> :
           </p><pre class="screen">
log {
        file="/tmp/lvm2.log"
        level=7
        activation=1
}
</pre></li></ol></div></li><li class="listitem"><p>
          Quand LVM panique :
        </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
              Incluez toutes les informations demandées dans les deux
              paragraphes précédents.
            </p></li><li class="listitem"><p>
              Fournissez les informations de debug de la machine.
              Le mieux est de récupérer ces informations d'une console
              sur le port série de la machine, étant donné qu'il est
              difficile de faire un copier/coller d'une machine en
              panique et qu'il est très facile de faire une erreur en
              recopiant les informations à la main.
            </p></li></ol></div></li></ul></div><p>
      Cela peut faire beaucoup d'informations. Si vous avez plusieurs
      fichiers, faites une archive tar et gzip en un seul fichier.
      Envoyez un lien vers l'archive sur la liste de diffusion appropriée
      (voir la <a class="xref" href="#Maillists" title="1. Listes de diffusion">Section 1, « Listes de diffusion »</a>) avec une brève description de
      l'erreur. Si vous n'avez pas de site web ou ftp pour mettre votre
      archive à disposition, vous pouvez essayer d'envoyer le fichier à la
      liste.
    </p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="contactsandlinks"/>Annexe C. Contacts et liens</h1></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#Maillists">1. Listes de diffusion</a></span></dt><dt><span class="sect1"><a href="#Links">2. Liens</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="Maillists"/>1. Listes de diffusion</h2></div></div></div><p>
        <span class="emphasis"><em>ATTENTION, toute communication avec les listes de diffusion
        de LVM doit se faire exclusivement en anglais.</em></span>
      </p><p>
        Avant de poster sur une de nos listes, veuillez lire tout le
        document et vérifier les archives pour voir si votre question
        n'a pas déjà eu une réponse. S'il vous plaît, ne postez que du
        format texte sur nos listes. Les messages enjolivés sont presque
        impossibles à lire s'ils ne sont pas lus sur un client de
        messagerie qui les comprend.
        L'étiquette standard des listes de diffusion s'applique.
        Les questions ou données de configuration incomplètes rendent
        les réponses très difficiles à faire.
      </p><div class="variablelist"><p class="title"><strong>Listes de diffusion de LVM</strong></p><dl class="variablelist"><dt><span class="term">linux-lvm</span></dt><dd><p>
              Cette liste est destinée aux questions et commentaires
              des utilisateurs. Vous pouvez obtenir vos réponses
              d'autres utilisateurs qui ont eu les mêmes problèmes.
              Les discussions ouvertes sont encouragées.
              Les rapports de bogues doivent être envoyés à cette liste.
            </p><p>
              L'inscription se fait par <a class="ulink" href="http://www.redhat.com/mailman/listinfo/linux-lvm" target="_top">une
              interface web</a>.
            </p><p>
              Les anciens messages sont consultables dans les <a class="ulink" href="http://www.redhat.com/archives/linux-lvm/" target="_top">
              archives</a>.
            </p></dd><dt><span class="term">dm-devel</span></dt><dd><p>
              Cette liste n'est pas spécifique à LVM mais elle est mentionnée
              ici du fait de l'utilisation du mappeur de périphériques par
              LVM 2.
            </p><p>
              L'inscription se fait par <a class="ulink" href="http://www.redhat.com/mailman/listinfo/dm-devel" target="_top">
              l'interface web</a>.
            </p><p>
              Les anciens messages sont consultables dans les <a class="ulink" href="http://www.redhat.com/archives/dm-devel/" target="_top">archives</a>.
            </p></dd></dl></div><div class="variablelist"><p class="title"><strong>Listes LVM relatives au commit</strong></p><dl class="variablelist"><dt><span class="term">lvm2-commit</span></dt><dd><p>
              Cette liste reçoit des messages automatiquement
              quand quelqu'un fait un commit dans le CVS de LVM 2.
              Son but est de permettre de suivre l'évolution de
              l'arborescence CVS.
            </p><p>
              Les anciens messages sont consultables dans les <a class="ulink" href="http://sources.redhat.com/ml/lvm2-cvs/" target="_top">archives</a>.
            </p></dd><dt><span class="term">lvm-commit</span></dt><dd><p>
              Cette liste reçoit des messages automatiquement
              quand quelqu'un fait un commit dans le CVS de LVM.
              Son but est de permettre de suivre l'évolution de
              l'arborescence CVS.
            </p><p>
              Les anciens messages sont consultables dans les <a class="ulink" href="http://sources.redhat.com/ml/lvm-cvs/" target="_top">archives</a>.
            </p></dd><dt><span class="term">dm-commit</span></dt><dd><p>
              Cette liste reçoit des messages automatiquement
              quand quelqu'un fait un commit dans le CVS de dm.
              Son but est de permettre de suivre l'évolution de
              l'arborescence CVS.
            </p><p>
              Les anciens messages sont consultables dans les <a class="ulink" href="http://sources.redhat.com/ml/dm-cvs/" target="_top">archives</a>.
            </p></dd></dl></div><div class="variablelist"><p class="title"><strong>Anciennes listes</strong></p><dl class="variablelist"><dt><span class="term">lvm-devel</span></dt><dd><p>
              Cette liste n'est plus en activité, veuillez utiliser
              linux-lvm pour les discussions sur le développement de LVM.
            </p></dd><dt><span class="term">lvm-bugs</span></dt><dd><p>
              Cette liste n'est plus en activité. Les rapports d'anomalie
              doivent être envoyés à la liste linux-lvm.
            </p></dd></dl></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="Links"/>2. Liens</h2></div></div></div><p>
        Liens sur LVM :
      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
            Page principale de <a class="ulink" href="http://sources.redhat.com/lvm2/" target="_top">Logical Volume
            Manager</a>.
          </p></li><li class="listitem"><p>
            Page principale de <a class="ulink" href="http://sources.redhat.com/lvm/" target="_top">LVM 1</a>.
          </p></li><li class="listitem"><p>
            Page principale de <a class="ulink" href="http://sources.redhat.com/dm/" target="_top">Device-Mapper</a>.
          </p></li><li class="listitem"><p>
            Site <a class="ulink" href="ftp://sources.redhat.com/pub/lvm2/" target="_top">FTP de
            LVM 2</a>.
          </p></li><li class="listitem"><p>
            Site <a class="ulink" href="ftp://sources.redhat.com/pub/lvm/" target="_top">FTP de
            LVM 1</a>.
          </p></li><li class="listitem"><p>
            Site <a class="ulink" href="ftp://sources.redhat.com/pub/dm/" target="_top">FTP de
            Device-Mapper</a>.
          </p></li></ul></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="gfdl"/>Annexe D. GNU Free Documentation License</h1></div><div><h3 class="subtitle"><em>Version 1.2, November 2002</em></h3></div></div></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="section"><a href="#gfdl-0">1. PREAMBLE</a></span></dt><dt><span class="section"><a href="#gfdl-1">2. APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="#gfdl-2">3. VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="#gfdl-3">4. COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="#gfdl-4">5. MODIFICATIONS</a></span></dt><dt><span class="section"><a href="#gfdl-5">6. COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="#gfdl-6">7. COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="#gfdl-7">8. AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="#gfdl-8">9. TRANSLATION</a></span></dt><dt><span class="section"><a href="#gfdl-9">10. TERMINATION</a></span></dt><dt><span class="section"><a href="#gfdl-10">11. FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="#gfdl-addendum">12. ADDENDUM: How to use this License for
        your documents
      </a></span></dt></dl></div><div class="blockquote"><a id="fsf-copyright"/><blockquote class="blockquote"><p>Copyright (C) 2000,2001,2002 Free Software Foundation,
        Inc.  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
        Everyone is permitted to copy and distribute verbatim copies
        of this license document, but changing it is not
        allowed.
      </p></blockquote></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-0"/>1. PREAMBLE</h2></div></div></div><p>The purpose of this License is to make a manual, textbook,
        or other functional and useful document "free" in the sense of
        freedom: to assure everyone the effective freedom to copy and
        redistribute it, with or without modifying it, either
        commercially or noncommercially.  Secondarily, this License
        preserves for the author and publisher a way to get credit for
        their work, while not being considered responsible for
        modifications made by others.
      </p><p>This License is a kind of "copyleft", which means that
        derivative works of the document must themselves be free in
        the same sense.  It complements the GNU General Public
        License, which is a copyleft license designed for free
        software.
      </p><p>We have designed this License in order to use it for
        manuals for free software, because free software needs free
        documentation: a free program should come with manuals
        providing the same freedoms that the software does.  But this
        License is not limited to software manuals; it can be used for
        any textual work, regardless of subject matter or whether it
        is published as a printed book.  We recommend this License
        principally for works whose purpose is instruction or
        reference.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-1"/>2. APPLICABILITY AND DEFINITIONS</h2></div></div></div><p><a id="gfdl-doc"/>This License applies to any manual or other
        work, in any medium, that contains a notice placed by the
        copyright holder saying it can be distributed under the terms
        of this License.  Such a notice grants a world-wide,
        royalty-free license, unlimited in duration, to use that work
        under the conditions stated herein.  The "Document", below,
        refers to any such manual or work.  Any member of the public
        is a licensee, and is addressed as "you".  You accept the
        license if you copy, modify or distribute the work in a way
        requiring permission under copyright law.
      </p><p><a id="gfdl-mod-ver"/>A "Modified Version" of the Document
        means any work containing the Document or a portion of it,
        either copied verbatim, or with modifications and/or
        translated into another language.
      </p><p><a id="gfdl-secnd-sect"/>A "Secondary Section" is a named
        appendix or a front-matter section of the Document that deals
        exclusively with the relationship of the publishers or authors
        of the Document to the Document's overall subject (or to
        related matters) and contains nothing that could fall directly
        within that overall subject.  (Thus, if the Document is in
        part a textbook of mathematics, a Secondary Section may not
        explain any mathematics.)  The relationship could be a matter
        of historical connection with the subject or with related
        matters, or of legal, commercial, philosophical, ethical or
        political position regarding them.
      </p><p><a id="gfdl-inv-sect"/>The "Invariant Sections" are certain
        Secondary Sections whose titles are designated, as being those
        of Invariant Sections, in the notice that says that the
        Document is released under this License.  If a section does
        not fit the above definition of Secondary then it is not
        allowed to be designated as Invariant.  The Document may
        contain zero Invariant Sections.  If the Document does not
        identify any Invariant Sections then there are none.
      </p><p><a id="gfdl-cov-text"/>The "Cover Texts" are certain short
        passages of text that are listed, as Front-Cover Texts or
        Back-Cover Texts, in the notice that says that the Document is
        released under this License.  A Front-Cover Text may be at
        most 5 words, and a Back-Cover Text may be at most 25
        words.
      </p><p><a id="gfdl-transparent"/>A "Transparent" copy of the Document
        means a machine-readable copy, represented in a format whose
        specification is available to the general public, that is
        suitable for revising the document straightforwardly with
        generic text editors or (for images composed of pixels)
        generic paint programs or (for drawings) some widely available
        drawing editor, and that is suitable for input to text
        formatters or for automatic translation to a variety of
        formats suitable for input to text formatters.  A copy made in
        an otherwise Transparent file format whose markup, or absence
        of markup, has been arranged to thwart or discourage
        subsequent modification by readers is not Transparent.  An
        image format is not Transparent if used for any substantial
        amount of text.  A copy that is not "Transparent" is called
        "Opaque".
      </p><p>Examples of suitable formats for Transparent copies
        include plain ASCII without markup, Texinfo input format,
        LaTeX input format, SGML or XML using a publicly available
        DTD, and standard-conforming simple HTML, PostScript or PDF
        designed for human modification.  Examples of transparent
        image formats include PNG, XCF and JPG.  Opaque formats
        include proprietary formats that can be read and edited only
        by proprietary word processors, SGML or XML for which the DTD
        and/or processing tools are not generally available, and the
        machine-generated HTML, PostScript or PDF produced by some
        word processors for output purposes only.
      </p><p><a id="gfdl-title-page"/>The "Title Page" means, for a printed
        book, the title page itself, plus such following pages as are
        needed to hold, legibly, the material this License requires to
        appear in the title page.  For works in formats which do not
        have any title page as such, "Title Page" means the text near
        the most prominent appearance of the work's title, preceding
        the beginning of the body of the text.
      </p><p><a id="gfdl-entitled"/>A section "Entitled XYZ" means a named
        subunit of the Document whose title either is precisely XYZ or
        contains XYZ in parentheses following text that translates XYZ
        in another language.  (Here XYZ stands for a specific section
        name mentioned below, such as "Acknowledgements",
        "Dedications", "Endorsements", or "History".)  To "Preserve
        the Title" of such a section when you modify the Document
        means that it remains a section "Entitled XYZ" according to
        this definition.
      </p><p>The Document may include Warranty Disclaimers next to the
        notice which states that this License applies to the Document.
        These Warranty Disclaimers are considered to be included by
        reference in this License, but only as regards disclaiming
        warranties: any other implication that these Warranty
        Disclaimers may have is void and has no effect on the meaning
        of this License.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-2"/>3. VERBATIM COPYING</h2></div></div></div><p>You may copy and distribute the Document in any medium,
        either commercially or noncommercially, provided that this
        License, the copyright notices, and the license notice saying
        this License applies to the Document are reproduced in all
        copies, and that you add no other conditions whatsoever to
        those of this License.  You may not use technical measures to
        obstruct or control the reading or further copying of the
        copies you make or distribute.  However, you may accept
        compensation in exchange for copies.  If you distribute a
        large enough number of copies you must also follow the
        conditions in section 3.
      </p><p>You may also lend copies, under the same conditions stated
        above, and you may publicly display copies.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-3"/>4. COPYING IN QUANTITY</h2></div></div></div><p>If you publish printed copies (or copies in media that
        commonly have printed covers) of the Document, numbering more
        than 100, and the Document's license notice requires Cover
        Texts, you must enclose the copies in covers that carry,
        clearly and legibly, all these Cover Texts: Front-Cover Texts
        on the front cover, and Back-Cover Texts on the back cover.
        Both covers must also clearly and legibly identify you as the
        publisher of these copies.  The front cover must present the
        full title with all words of the title equally prominent and
        visible.  You may add other material on the covers in
        addition.  Copying with changes limited to the covers, as long
        as they preserve the title of the Document and satisfy these
        conditions, can be treated as verbatim copying in other
        respects.
      </p><p>If the required texts for either cover are too voluminous
        to fit legibly, you should put the first ones listed (as many
        as fit reasonably) on the actual cover, and continue the rest
        onto adjacent pages.
      </p><p>If you publish or distribute Opaque copies of the Document
        numbering more than 100, you must either include a
        machine-readable Transparent copy along with each Opaque copy,
        or state in or with each Opaque copy a computer-network
        location from which the general network-using public has
        access to download using public-standard network protocols a
        complete Transparent copy of the Document, free of added
        material.  If you use the latter option, you must take
        reasonably prudent steps, when you begin distribution of
        Opaque copies in quantity, to ensure that this Transparent
        copy will remain thus accessible at the stated location until
        at least one year after the last time you distribute an Opaque
        copy (directly or through your agents or retailers) of that
        edition to the public.
      </p><p>It is requested, but not required, that you contact the
        authors of the Document well before redistributing any large
        number of copies, to give them a chance to provide you with an
        updated version of the Document.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-4"/>5. MODIFICATIONS</h2></div></div></div><p>You may copy and distribute a Modified Version of the
        Document under the conditions of sections 2 and 3 above,
        provided that you release the Modified Version under precisely
        this License, with the Modified Version filling the role of
        the Document, thus licensing distribution and modification of
        the Modified Version to whoever possesses a copy of it.  In
        addition, you must do these things in the Modified
        Version:
      </p><div class="orderedlist"><a id="gfdl-modif-cond"/><ol class="orderedlist" type="A"><li class="listitem">Use in the Title Page (and on the covers,
            if any) a title distinct from that of the Document, and
            from those of previous versions (which should, if there
            were any, be listed in the History section of the
            Document).  You may use the same title as a previous
            version if the original publisher of that version gives
            permission.
          </li><li class="listitem">List on the Title Page, as authors, one or
            more persons or entities responsible for authorship of the
            modifications in the Modified Version, together with at
            least five of the principal authors of the Document (all
            of its principal authors, if it has fewer than five),
            unless they release you from this requirement.
          </li><li class="listitem">State on the Title page the name of the
            publisher of the Modified Version, as the
            publisher.
          </li><li class="listitem">Preserve all the copyright notices of the
            Document.
          </li><li class="listitem"> Add an appropriate copyright notice for
            your modifications adjacent to the other copyright
            notices.
          </li><li class="listitem">Include, immediately after the copyright notices, a
            license notice giving the public permission to use the Modified
            Version under the terms of this License, in the form shown in the
            <a class="link" href="#gfdl-addendum" title="12. ADDENDUM: How to use this License for your documents">Addendum</a> below.
          </li><li class="listitem">Preserve in that license notice the full lists of
            Invariant Sections and required Cover Texts given in the Document's
            license notice.
          </li><li class="listitem">Include an unaltered copy of this License.
          </li><li class="listitem">Preserve the section Entitled "History",
            Preserve its Title, and add to it an item stating at least
            the title, year, new authors, and publisher of the
            Modified Version as given on the Title Page.  If there is
            no section Entitled "History" in the Document, create one
            stating the title, year, authors, and publisher of the
            Document as given on its Title Page, then add an item
            describing the Modified Version as stated in the previous
            sentence.
          </li><li class="listitem">Preserve the network location, if any,
            given in the Document for public access to a Transparent
            copy of the Document, and likewise the network locations
            given in the Document for previous versions it was based
            on.  These may be placed in the "History" section.  You
            may omit a network location for a work that was published
            at least four years before the Document itself, or if the
            original publisher of the version it refers to gives
            permission.
          </li><li class="listitem">For any section Entitled "Acknowledgements"
            or "Dedications", Preserve the Title of the section, and
            preserve in the section all the substance and tone of each
            of the contributor acknowledgements and/or dedications
            given therein.
          </li><li class="listitem">Preserve all the Invariant Sections of the
            Document, unaltered in their text and in their titles.
            Section numbers or the equivalent are not considered part
            of the section titles.
          </li><li class="listitem">Delete any section Entitled "Endorsements".
            Such a section may not be included in the Modified
            Version.
          </li><li class="listitem">Do not retitle any existing section to be
            Entitled "Endorsements" or to conflict in title with any
            Invariant Section.
          </li><li class="listitem">Preserve any Warranty Disclaimers.
          </li></ol></div><p>If the Modified Version includes new front-matter sections
        or appendices that qualify as Secondary Sections and contain
        no material copied from the Document, you may at your option
        designate some or all of these sections as invariant.  To do
        this, add their titles to the list of Invariant Sections in
        the Modified Version's license notice.  These titles must be
        distinct from any other section titles.
      </p><p>You may add a section Entitled "Endorsements", provided it
        contains nothing but endorsements of your Modified Version by
        various parties--for example, statements of peer review or
        that the text has been approved by an organization as the
        authoritative definition of a standard.
      </p><p>You may add a passage of up to five words as a Front-Cover
        Text, and a passage of up to 25 words as a Back-Cover Text, to
        the end of the list of Cover Texts in the Modified Version.
        Only one passage of Front-Cover Text and one of Back-Cover
        Text may be added by (or through arrangements made by) any one
        entity.  If the Document already includes a cover text for the
        same cover, previously added by you or by arrangement made by
        the same entity you are acting on behalf of, you may not add
        another; but you may replace the old one, on explicit
        permission from the previous publisher that added the old
        one.
      </p><p>The author(s) and publisher(s) of the Document do not by
        this License give permission to use their names for publicity
        for or to assert or imply endorsement of any Modified
        Version.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-5"/>6. COMBINING DOCUMENTS</h2></div></div></div><p>You may combine the Document with other documents released
        under this License, under the terms defined in <a class="link" href="#gfdl-4" title="5. MODIFICATIONS">section 4</a> above for modified versions,
        provided that you include in the combination all of the
        Invariant Sections of all of the original documents,
        unmodified, and list them all as Invariant Sections of your
        combined work in its license notice, and that you preserve all
        their Warranty Disclaimers.
      </p><p>The combined work need only contain one copy of this
        License, and multiple identical Invariant Sections may be
        replaced with a single copy.  If there are multiple Invariant
        Sections with the same name but different contents, make the
        title of each such section unique by adding at the end of it,
        in parentheses, the name of the original author or publisher
        of that section if known, or else a unique number.  Make the
        same adjustment to the section titles in the list of Invariant
        Sections in the license notice of the combined work.
      </p><p>In the combination, you must combine any sections Entitled
        "History" in the various original documents, forming one
        section Entitled "History"; likewise combine any sections
        Entitled "Acknowledgements", and any sections Entitled
        "Dedications".  You must delete all sections Entitled
        "Endorsements".
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-6"/>7. COLLECTIONS OF DOCUMENTS</h2></div></div></div><p>You may make a collection consisting of the Document and
        other documents released under this License, and replace the
        individual copies of this License in the various documents
        with a single copy that is included in the collection,
        provided that you follow the rules of this License for
        verbatim copying of each of the documents in all other
        respects.
      </p><p>You may extract a single document from such a collection,
        and distribute it individually under this License, provided
        you insert a copy of this License into the extracted document,
        and follow this License in all other respects regarding
        verbatim copying of that document.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-7"/>8. AGGREGATION WITH INDEPENDENT WORKS</h2></div></div></div><p>A compilation of the Document or its derivatives with
        other separate and independent documents or works, in or on a
        volume of a storage or distribution medium, is called an
        "aggregate" if the copyright resulting from the compilation is
        not used to limit the legal rights of the compilation's users
        beyond what the individual works permit.  When the Document is
        included in an aggregate, this License does not apply to the
        other works in the aggregate which are not themselves
        derivative works of the Document.
      </p><p>If the Cover Text requirement of section 3 is applicable
        to these copies of the Document, then if the Document is less
        than one half of the entire aggregate, the Document's Cover
        Texts may be placed on covers that bracket the Document within
        the aggregate, or the electronic equivalent of covers if the
        Document is in electronic form.  Otherwise they must appear on
        printed covers that bracket the whole aggregate.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-8"/>9. TRANSLATION</h2></div></div></div><p>Translation is considered a kind of modification, so you
        may distribute translations of the Document under the terms of
        section 4.  Replacing Invariant Sections with translations
        requires special permission from their copyright holders, but
        you may include translations of some or all Invariant Sections
        in addition to the original versions of these Invariant
        Sections.  You may include a translation of this License, and
        all the license notices in the Document, and any Warranty
        Disclaimers, provided that you also include the original
        English version of this License and the original versions of
        those notices and disclaimers.  In case of a disagreement
        between the translation and the original version of this
        License or a notice or disclaimer, the original version will
        prevail.
      </p><p>If a section in the Document is Entitled
        "Acknowledgements", "Dedications", or "History", the
        requirement (section 4) to Preserve its Title (section 1) will
        typically require changing the actual title.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-9"/>10. TERMINATION</h2></div></div></div><p>You may not copy, modify, sublicense, or distribute the
        Document except as expressly provided for under this License.
        Any other attempt to copy, modify, sublicense or distribute
        the Document is void, and will automatically terminate your
        rights under this License.  However, parties who have received
        copies, or rights, from you under this License will not have
        their licenses terminated so long as such parties remain in
        full compliance.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-10"/>11. FUTURE REVISIONS OF THIS LICENSE</h2></div></div></div><p>The Free Software Foundation may publish new, revised
        versions of the GNU Free Documentation License from time to
        time.  Such new versions will be similar in spirit to the
        present version, but may differ in detail to address new
        problems or concerns.  See
        http://www.gnu.org/copyleft/.
      </p><p>Each version of the License is given a distinguishing
        version number.  If the Document specifies that a particular
        numbered version of this License "or any later version"
        applies to it, you have the option of following the terms and
        conditions either of that specified version or of any later
        version that has been published (not as a draft) by the Free
        Software Foundation.  If the Document does not specify a
        version number of this License, you may choose any version
        ever published (not as a draft) by the Free Software
        Foundation.
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl-addendum"/>12. ADDENDUM: How to use this License for
        your documents
      </h2></div></div></div><p>To use this License in a document you have written,
        include a copy of the License in the document and put the
        following copyright and license notices just after the title
        page:
      </p><div class="blockquote"><a id="copyright-sample"/><blockquote class="blockquote"><p> Copyright (c) YEAR YOUR
          NAME.  Permission is granted to copy, distribute and/or
          modify this document under the terms of the GNU Free
          Documentation License, Version 1.2 or any later version
          published by the Free Software Foundation; with no Invariant
          Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
          copy of the license is included in the section entitled "GNU
          Free Documentation License".
        </p></blockquote></div><p>If you have Invariant Sections, Front-Cover Texts and Back-Cover
        Texts, replace the "with...Texts." line with this:
      </p><div class="blockquote"><a id="inv-cover-sample"/><blockquote class="blockquote"><p> with the Invariant
          Sections being LIST THEIR TITLES, with the Front-Cover Texts
          being LIST, and with the Back-Cover Texts being LIST.
        </p></blockquote></div><p>If you have Invariant Sections without Cover Texts, or
        some other combination of the three, merge those two
        alternatives to suit the situation.
      </p><p>If your document contains nontrivial examples of program
        code, we recommend releasing these examples in parallel under
        your choice of free software license, such as the GNU General
        Public License, to permit their use in free software.
      </p></div></div></div></body></html>