/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"><<a class="email" href="mailto:alewis CHEZ rackable POINT com">alewis CHEZ rackable POINT com</a>></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: 
 Seuls les utilisateurs avancés peuvent envisager de passer leur
 partition racine en LVM
 "><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] -> PV1[1],
2me morceau de LE[1] -> PV2[1],
3me morceau de LE[1] -> PV3[1],
4me morceau de LE[1] -> 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 > 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">
<<<<<<< pvcreate.c
j++;
=======
j--;
>>>>>>> 1.6
</pre><p>
N'oubliez pas de supprimer les lignes avec les symboles
<span class="quote">« <span class="quote"><</span> »</span>, <span class="quote">« <span class="quote">=</span> »</span> et <span class="quote">« <span class="quote">></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 < /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 &&
/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 < 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, <volkerdi@slackware.com>
#
+# Added LVM support <tgs@iafrica.com>
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 <partition>' 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 <partition>' 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 <partition>' 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> /dev/null 2> /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<!-- 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: 
 pvmove est lent
 "><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<!-- ) 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 "<une_longue_chaîne_de_caractères>" --restorefile /etc/lvm/archive/NomGroupeVolume_XXXXX.vg <VolumePhysique></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><LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS></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><LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS></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
<faire les modifications,
par ex. lvextend>
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
 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>
|