/usr/share/doc/HOWTO/fr-html/Partition.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 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Linux Partition Mini-HOWTO</title>
</head>
<body>
<h1>Linux Partition Mini-HOWTO</h1>
<h2>Kristan Koehntopp, kris@koehntopp.de<br>
Adaptation française : Raphaël Gurlie, raphael@ibpc.fr
et Guillaume Bertucat, guillaume@ibpc.fr.</h2>
Partition mini-HOWTO v 2.4, le 03 mars 1998
<hr>
<em>Ce Mini-HOWTO de Linux décrit comment prévoir et
organiser l'espace disque de votre système Linux. Il traite
des aspects matériels des disques, des partitions, de la
taille et du positionnement des zones de swap, des systèmes
de fichiers, des types de systèmes de fichiers ainsi que de
thèmes apparentés. L'objectif est de donner quelques
notions fondamentales, pas les modes opératoires.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<h2><a name="ss1.1">1.1 De quoi s'agit-il?</a></h2>
<p>Ceci est un Mini-HOWTO de Linux. Un Mini HOWTO est un court
texte qui fait le point sur des questions relatives à
l'installation et à la maintenance de Linux. C'est Mini,
parce que tant le texte que le thème traité sont trop
"petits" pour justifier un vrai HOWTO ou un livre. Un HOWTO ne
constitue pas une référence : les pages "man" sont
là pour ça.</p>
<h2><a name="ss1.2">1.2 De quoi ne s'agit-il pas (et HOWTO
apparentés) ?</a></h2>
<p>Ce Mini-HOWTO de Linux explique comment prévoir et
organiser l'espace disque de votre système Linux. Il traite
des aspects matériels des disques, des partitions, de la
taille et du positionnement des zones de swap, des systèmes
de fichiers, des types de systèmes de fichiers ainsi que de
thèmes apparentés. L'objectif est de donner quelques
notions fondamentales, aussi nous parlerons essentiellement de
principes et non pas d'outils dans ce texte.</p>
<p>Dans des circonstances idéales, ce document devrait
être lu avant votre première installation, mais c'est
sans doute peu réaliste dans la plupart des cas. Les
débutants ont généralement d'autres
problèmes que d'optimiser l'organisation de leur disque. Par
conséquent, vous êtes probablement quelqu'un qui vient
juste de finir l'installation de Linux, et qui maintenant se
demande comment optimiser cette installation, ou comment
éviter quelques déplaisantes erreurs de calculs pour
la prochaine fois. Bien sûr, j'espère que lorsqu'ils
en auront fini avec ce document, certains voudront laisser tomber
leur ancienne configuration pour une nouvelle installation. :-)</p>
<p>Ce document se limite pour l'essentiel à la
prévision et l'organisation de l'espace disque. Il ne
décrit pas l'utilisation de <code>fdisk</code>,
<code>LILO</code>, <code>mke2fs</code> ou des programmes de
sauvegarde. Il y a d'autres HOWTO qui traitent de ces
problèmes. Reportez-vous à la Liste-des-HOWTO de
Linux pour obtenir les informations relatives aux différents
HOWTOs de Linux. La liste contient également les
informations nécessaires pour obtenir les documents
eux-mêmes.</p>
<p>Pour apprendre à estimer les besoins en taille et en
vitesse pour les différentes parties du système de
fichiers, reportez-vous au "Linux Multiple Disks Layout
mini-HOWTO", de Gjoen Stein <gjoen@nyx.net>.</p>
<p>Pour obtenir des informations et des instructions concernant les
disques de plus de 1024 cylindres, reportez-vous au "Linux Large
Disk Mini-HOWTO", de Andries Brouwer <aeb@cwi.nl>.</p>
<p>Pour obtenir des instructions sur la manière de limiter
l'espace disque alloué à chaque utilisateur,
reportez-vous au "Linux Quota Mini-HOWTO", de Albert M.C. Tam
<bertie@scn.org></p>
<p>Actuellement il n'y a pas de documentation
générale sur la sauvegarde des disques, mais il
existe un certain nombre de documents qui font le point sur des
solutions spécifiques de sauvegarde. Reportez-vous au "Linux
ADSM Backup Mini-HOWTO" de Thomas Koenig
<Thomas.Koenig@ciw.uni-karlsruhe.de> pour obtenir des
renseignements sur la manière d'intégrer Linux dans
un environnement de sauvegarde IBM ADSM. Reportez-vous au "Linux
Backup with MSDOS Mini-HOWTO" de Christopher Neufeld
<neufeld@physics.utoronto.ca> pour obtenir des informations
sur les sauvegardes Linux pilotés par MSDOS.</p>
<p>Pour obtenir des instructions sur la manière
d'écrire et de soumettre un HOWTO, reportez-vous à la
"Liste-des-HOWTO" de Linux de Éric Dumas
<dumas@Linux.EU.Org>.</p>
<p>Butiner dans /usr/src/linux/Documentation peut aussi se
révéler très instructif. Les fichiers ide.txt
et scsi.txt fournissent quelques informations fondamentales sur les
propriétés de vos pilotes disque, et jeter un coup
d'oeil à l'arborescence de votre système de fichiers
ne peut pas faire de mal.</p>
<h2><a name="s2">2. Qu'est-ce qu'une partition ?</a></h2>
<p>Lorsque les disques durs pour PC ont été mis au
point, on a rapidement cherché à avoir la
possibilité d'installer plusieurs systèmes
d'exploitation, même si on ne disposait que d'un seul disque.
Par conséquent, il fallait un procédé
permettant de diviser un seul disque physique en plusieurs disques
logiques. Une partition, c'est justement cela : une section
contiguë de blocs sur le disque dur, considérée
comme un disque totalement indépendant par la plupart des
systèmes d'exploitation.</p>
<p>Il est bien évident que les différentes partitions
ne doivent pas se recouvrir : un système d'exploitation
n'appréciera certainement pas qu'un autre OS installé
sur la même machine écrase des données
importantes à cause d'un tel recouvrement. D'autre part, il
ne devrait pas non plus y avoir de "trou" entre deux partitions
adjacentes. Bien que ce ne soit pas nuisible en soi, vous
gâcheriez une place précieuse en laissant vides de
tels espaces.</p>
<p>Il n'est pas indispensable que le disque soit entièrement
partitionné. Vous pouvez décider de laisser de la
place à la fin du disque qui ne soit attribuée
à aucun de vos systèmes d'exploitation. Par la suite,
lorsque vous saurez quel système vous utilisez le plus
souvent, vous pourrez partitionner l'espace restant, et
créer dessus un système de fichier
approprié.</p>
<p>Les partitions ne peuvent être ni déplacées,
ni redimensionnées sans détruire le système de
fichiers qui s'y trouve. C'est pourquoi modifier la table de
partition implique généralement de sauvegarder puis
de restaurer tous les systèmes de fichiers touchés
par cette opération. En fait il est assez facile de faire
des dégâts irréparables en repartitionnant, et
vous devriez faire une sauvegarde intégrale de tous les
disques de la machine en question avant même de penser
à utiliser un utilitaire comme <code>fdisk</code>.</p>
<p>Bon, à vrai dire, certaines partitions contenant certains
types de système de fichiers <em>peuvent</em> être
coupées en deux sans perte de données (si vous avez
de la chance). Par exemple, il y a un utilitaire appelé
<code>fips</code> pour couper en deux les partitions MS-DOS, ce qui
permet de créer un espace pour installer Linux sans avoir
à réinstaller MS-DOS. Mais vous n'avez pas vraiment
l'intention de jouer avec ça sans sauvegarder soigneusement
tout ce qui ce trouve sur votre machine ?</p>
<h2><a name="ss2.1">2.1 Les sauvegardes sont importantes</a></h2>
<p>Pour les sauvegardes, les lecteurs de bandes sont vos amis. Ils
sont rapides fiables et faciles à utiliser, ce qui permet de
faire de fréquentes sauvegardes, de préférence
automatiquement, et sans s'embêter.</p>
<p>Je tiens particulièrement à insister sur les
points suivants : je parle de vrais lecteurs de bandes, pas de
cette daube de ftape pilotée par le contrôleur du
disque. Envisagez d'investir dans le SCSI : Linux supporte le SCSI
de façon native. Vous n'aurez pas besoin de
télécharger des pilotes ASPI. Vous ne perdrez pas non
plus de précieuses HMA sous Linux dès que vous aurez
installé votre contrôleur SCSI, vous n'aurez plus
qu'à y ajouter vos disques durs, lecteur de bandes et
lecteurs CDROM. Pas d'autres adresses I/O, plus besoin de jongler
avec les IRQ, ni de s'inquiéter des compatibilités
maître/esclave ou des niveaux PIO. En outre, un
contrôleur SCSI approprié vous donne de hautes
performances I/O sans augmenter notablement la charge du CPU.
Même en cas de grande activité du disque, vous pourrez
constater de bons temps de réponse. Si vous envisagez
d'utiliser un système Linux comme un centre de distribution
de news, ou si vous vous apprêtez à vous lancer dans
le domaine des services d'accès à Internet, ne pensez
même pas à un système sans SCSI.</p>
<h2><a name="ss2.2">2.2 Noms et numéros des
périphériques</a></h2>
<p>Le nombre de partitions sur un système à base
d'Intel à été limité depuis le
commencement : la table de partitions originale faisait partie
intégrante du secteur d'amorçage, et la place
prévue nous limitait à quatre partitions. Ces
partitions sont maintenant appelées partitions primaires.
Lorsqu'il est devenu évident que beaucoup avaient besoin de
plus de quatre partitions sur leurs systèmes, les partitions
logiques ont été créées. Le nombre de
partitions logiques n'est pas limité : chaque partition
logique contient un pointeur sur la suivante, et par
conséquent, vous disposez potentiellement d'une liste non
limitée de partitions.</p>
<p>Pour des raisons de compatibilité, l'espace occupé
par les partitions logiques doit être comptabilisé. Si
vous utilisez les partitions logiques, une des partitions primaires
est donc notée "partition étendue" ; son bloc initial
et son bloc final délimitent l'espace occupé par les
partitions logiques. Ceci signifie que l'espace attribué
pour toutes les partitions logiques doit être contigu. Il ne
peut y avoir qu'une seule partition étendue : aucun
<code>fdisk</code> n'acceptera de créer plus d'une partition
étendue.</p>
<p>Linux ne peut prendre en charge qu'un nombre limité de
partitions par disque. Ainsi avec Linux, vous disposez de 4
partitions primaires (dont 3 utilisables si vous utilisez les
partitions logiques) et au mieux 15 partitions en tout sur un
disque SCSI (63 en tout sur un disque IDE).</p>
<p>Sous Linux, les partitions sont identifiées par des
fichiers périphériques. Un fichier
périphérique est un fichier de type c (pour
périphérique "caractère", les
périphériques qui ne font pas usage de la cache
tampon) ou b (pour périphérique "bloc", qui font
usage de la cache tampon). Sous Linux, tous les disques sont
représentés sous la forme de
périphériques blocs uniquement. Contrairement
à d'autres Unix, Linux ne propose pas de version strictement
caractère des disques et de leurs partitions.</p>
<p>Les seules choses importantes à retenir d'un fichier
périphérique sont ses numéros de
périphérique, majeur et mineur, affichés
à la place de la taille du fichier :</p>
<blockquote>
<hr>
<pre>
<code>$ ls -l /dev/hda
brw-rw---- 1 root disk 3, 0 Jul 18 1994 /dev/hda
^ ^
| numéro périphérique mineur
numéro périphérique majeur
</code>
</pre>
<hr></blockquote>
<p>Lorsqu'on accède au fichier périphérique,
le numéro majeur détermine quel pilote
périphérique va être appelé pour
réaliser l'opération d'entrée/sortie. Cet
appel est fait en prenant comme paramètre le numéro
mineur, et c'est l'affaire du pilote d'interpréter
correctement ce numéro mineur. La documentation du pilote
décrit généralement la manière dont il
interprète ces numéros mineurs. Pour les disques IDE,
cette documentation se trouve dans
<code>/usr/src/linux/Documentation/ide.txt</code>. Pour les disques
SCSI, on s'attendrait à trouver la documentation dans
<code>/usr/src/linux/Documentation/scsi.txt</code>, mais elle ne
s'y trouve pas. Il peut être nécessaire de consulter
la source du pilote pour être sûr
(<code>/usr/src/linux/driver/scsi/sd.c:184-196</code>).
Heureusement, il y a la liste des noms et numéros de
périphériques de Peter Anvin dans
<code>/usr/src/linux/Documentation/devices.txt</code>; reportez
vous dans cette liste à <code>block devices</code>,
<code>major 3</code>, <code>22</code>, <code>33</code>,
<code>34</code> pour les disques IDE, et <code>major 8</code> pour
les disques SCSI. Les numéros majeurs et mineurs sont
codés chacuns sur un bit, ce qui explique pourquoi le nombre
de partition par disque est limité.</p>
<p>Par convention, les fichiers périphériques ont un
nom défini, et la plupart des utilitaires système
sont compilés en ayant connaissance de ces noms. Ils
s'attendent à ce que vos disques IDE s'appellent
<code>/dev/hd*</code> et vos disques SCSI <code>/dev/sd*</code>.
Les disques sont numérotés a, b, c et ainsi de suite,
donc <code>/dev/hda</code> est votre premier disque IDE, et
<code>/dev/sda</code> votre premier disque SCSI. Chaque
périphérique représente un disque à
part entière démarrant au bloc un. Écrire sur
un de ces périphériques avec les mauvais utilitaires
détruira l'enregistrement principal d'initialisation (MBR)
et la table de partition, ce qui rendra toutes les données
de ce disque inutilisables, et le système ne pourra plus
démarrer sur ce disque. Donc soyez sûrs de ce que vous
faites, et encore une fois, sauvegardez avant de faire quoi que ce
soit.</p>
<p>Les partitions primaires sur le disques sont
numérotées 1, 2, 3 et 4. Par conséquent,
<code>/dev/hda1</code> est la première partition primaire du
premier disque IDE, et ainsi de suite. Les partitions logiques se
voient attribuer les numéros 5 et suivants;
<code>/dev/sdb5</code> est donc la première partition
logique du second disque SCSI.</p>
<p>Chaque partition se voit attribuer deux adresses pour les blocs
initial et final, ainsi qu'un type. Le type est un code
numérique (un bit) qui définit une partition pour un
système d'exploitation donné. Pour la plus grande
joie des experts, il n'existe pas vraiment de code unique
définissant les différents types de partition, aussi
il y a toujours une possibilité que deux systèmes
d'exploitation utilisent le même code pour des partitions de
type différent.</p>
<p>Linux réserve les codes 0x82 pour les partitions swap, et
0x83 pour les systèmes de fichier "natif" (c'est à
dire ext2 pour la plupart d'entre vous). Autrefois populaire et
maintenant périmé, le système de fichiers
Linux/Minix utilisait le code 0x81 pour ses partitions. OS/2 marque
ses partitions du type 0x07, tout comme les NTFS de Windows NT.
MS-DOS attribue plusieurs codes pour les différentes FAT de
ses systèmes de fichier : on connaît 0x01, 0x04 et
0x06. DR-DOS utilisait 0x81 pour indiquer une partition FAT
protégée, ce qui générait un conflit
avec les partitions Linux/Minix, mais ni l'une ni l'autre ne sont
très utilisées maintenant. La partition
étendue qui sert de container pour les partitions logiques
à le code 0x05.</p>
<p>Les partitions sont créées et supprimées
avec l'utilitaire <code>fdisk</code>. Tout système
d'exploitation qui se respecte possède un
<code>fdisk</code>, qui d'ailleurs est traditionnellement
appelé <code>fdisk</code> (ou <code>FDISK.EXE</code>) dans
quasiment tous les OS. Certains <code>fdisk</code>, dont celui du
DOS, sont quelque peu limités pour gérer les
partitions d'autres systèmes d'exploitation. Parmi ces
limites, l'impossibilité de prendre en compte tout ce qui
est identifié par un code de type étranger,
l'impossibilité de prendre en compte plus de 1024 cylindres,
et l'impossibilité de créer ou même de
reconnaître une partition dont la fin ne coïncide pas
avec la borne d'un cylindre. Par exemple, le <code>fdisk</code> de
MS-DOS ne peut pas supprimer les partitions NTFS, le
<code>fdisk</code> de OS/2 était réputé pour
"corriger" silencieusement les partition crées par le
<code>fdisk</code> de Linux dont la fin ne coïncidait pas avec
une borne de cylindre, et tant le <code>fdisk</code> de MS-DOS que
celui de OS/2 ont eu des problèmes avec les disques de plus
de 1024 cylindres (reportez-vous au "large-disk Mini-HOWTO" pour de
plus amples détails sur ces disques).</p>
<h2><a name="s3">3. De quelles partitions ai-je besoin ?</a></h2>
<h2><a name="ss3.1">3.1 De combien de partitions ai-je besoin
?</a></h2>
<p>Donc, de quelles partitions ai-je besoin ? Pour commencer,
certains systèmes d'exploitation ne croient pas au
démarrage à partir de partitions logiques pour des
raisons qui sont à la portée de tout esprit sain. De
ce fait, vous voudrez certainement réserver vos partitions
primaires comme partitions d'amorçage pour MS-DOS, OS/2 et
Linux ou pour quelque autre système que vous utilisiez.
Rappelez-vous toutefois qu'une partition primaire est
nécessaire pour créer la partition étendue qui
servira de container pour les partitions logiques qui occuperont le
reste de votre disque.</p>
<p>L'amorçage des systèmes d'exploitation se passe en
mode réel et implique toutes les limitations liées au
BIOS, et surtout celle des 1024 cylindres. Vous voudrez donc
probablement placer toutes vos partitions de démarrage dans
les 1024 premiers cylindres de votre disque dur, afin
d'éviter des complications. A nouveau, je vous invite
à lire le "large-disk Mini-HOWTO" pour les détails
saignants.</p>
<p>Pour installer Linux, vous aurez besoin d'au moins une
partition. Si le noyau est chargé depuis cette partition
(par exemple grâce à LILO), cette partition doit
être lisible du BIOS. Si vous chargez votre noyau par
d'autres moyens (par exemple depuis une disquette d'amorçage
ou avec LOADLIN.EXE, le lanceur de Linux depuis MS-DOS), cette
partition peut être n'importe où. Dans tous les cas,
le type de cette partition sera "Linux native", code 0x83.</p>
<p>Votre système aura besoin d'espace swap. A moins de
swaper sur des fichiers, il vous faudra une partition swap
dédiée. Du fait que ce type de partition n'est
accessible que par le noyau de Linux, et que ce noyau n'est pas
affecté par les déficiences du BIOS de votre PC, la
partition swap peut être installée n'importe
où. Je recommande d'utiliser pour cela une partition logique
(/dev/?d?5 ou une des suivantes). Les partitions swap
dédiées de Linux sont de type "Linux swap", code
0x82.</p>
<p>Ces exigences sont le minimum en terme de partitions. Il peut
toutefois se révéler utile de créer plus de
partitions pour Linux, comme la suite le montrera.</p>
<h2><a name="ss3.2">3.2 Quelle taille attribuer à ma zone
swap ?</a></h2>
<p>Si vous avez décidé d'utiliser une partition
dédiée à la zone swap, ce qui est une Bonne
Idée [tm], considérez les indications suivantes pour
estimer sa taille :</p>
<ul>
<li>Sous Linux, la taille de la RAM et celle de la zone swap
s'additionnent (ce qui n'est pas vrai pour tous les Unix). Par
exemple, si vous avez 8 Mo de RAM et 12 Mo de swap, vous disposez
d'un total d'environ 20 Mo de mémoire virtuelle.</li>
<li>En choisissant la taille de votre zone swap, gardez
présent à l'esprit que vous devriez disposer d'au
moins 16 Mo de mémoire virtuelle. Ainsi pour 4 Mo de RAM
envisagez un minimum de 12 Mo de swap ; pour 8 Mo de RAM, envisagez
un minimum de 8 Mo de swap.</li>
<li>Sous Linux, une partition swap ne peut pas excéder 128
Mo. En réalité, sa taille pourrait dépasser
128 Mo, mais l'espace en excès ne serait jamais
utilisé. Si vous voulez plus de 128 Mo de swap, vous devez
créer plusieurs partitions swap.</li>
<li>En choisissant la taille de votre zone swap, rappelez vous
qu'une zone swap trop grande ne sera pas vraiment utile. Tout
processus possède un "jeu d'instructions" qui correspond
à un ensemble de pages mémoire, et auquel le
processeur accédera à nouveau dans un temps
très court. Linux essaie de prévoir ces accès
mémoire (en partant du principe que les pages
récemment utilisées le seront à nouveau dans
un futur proche) et conserve ces pages dans la RAM si c'est
possible. Si le programme respecte strictement le principe de
localité, cette hypothèse sera
vérifiée, et l'algorithme de prédiction
fonctionnera. Conserver en mémoire une zone de travail n'a
de signification que s'il y a suffisamment de mémoire. Si
trop de processus s'exécutent en même temps sur une
même machine, le noyau est alors dans l'obligation de paginer
des données auxquelles il devra accéder de nouveau
très rapidement (il faudra donc paginer sur disque des
données provenant d'une autre zone de travail pour pouvoir
les appeler en mémoire). Ceci induit
généralement une augmentation critique de
l'activité de pagination, et donc une substantielle baisse
de performances. On dit d'une machine dans cette situation qu'elle
"rame". Sur une machine qui rame, les processus tournent
essentiellement sur disque, et non dans la RAM. On peut donc
s'attendre à une chute de performances de l'ordre de
grandeur du rapport entre le temps d'accès mémoire et
le temps d'accès disque. Mon petit doigt m'a parlé
d'une très vieille règle datant de l'époque du
PDP et du Vax, et qui est la suivante : la taille du jeu
d'instructions d'un programme est égale à environ 25
% de sa taille virtuelle. Ainsi, il est sans doute inutile de
prévoir plus de swap que trois fois la taille de votre RAM.
Mais rappelez-vous que c'est seulement mon petit doigt qui me l'a
dit. On peut facilement imaginer des cas ou les programmes ont un
très grand, ou au contraire un très petit jeu
d'instructions. Par exemple, un programme de simulation avec un
très grand jeu de données auxquelles il accède
de manière quasi aléatoire ne respectera pas vraiment
le principe de localité dans son segment de données,
et donc son jeu d'instructions sera relativement important. D'un
autre côté, <code>xv</code> avec de nombreux JPEGs
ouverts simultanément, mais tous iconifiés sauf un,
aura un très gros segment de données. Mais les
opérations ne sont faites que sur une seule image à
la fois, et donc la plus grande partie de la mémoire
utilisée par xv n'est jamais accédée. C'est
également vrai dans le cas d'un éditeur
multi-fenêtres où seule une page à la fois est
active. Ces programmes - s'ils sont conçus correctement -
respectent rigoureusement le principe de localité, et la
plus grande partie de la place qu'ils occupent peut rester dans la
swap sans qu'on observe de diminution substantielle des
performances. On peut suspecter que ce chiffre de 25 % datant de
l'époque de la ligne de commande n'est plus vrai pour les
logiciels modernes dotés d'une IHM graphique et capables
d'éditer simultanément plusieurs documents, mais je
n'ai connaissance d'aucune donnée récente permettant
d'actualiser ces chiffres.</li>
</ul>
<p>En résumé, si on dispose de 16 Mo de RAM, un
configuration minimale peut se passer de swap, et attribuer plus de
48 Mo à la swap est sans doute inutile. L'appoint exact de
mémoire requise dépend des applications qui tournent
sur la machine (qu'est-ce que vous vous étiez imaginé
?).</p>
<h2><a name="ss3.3">3.3 Où positionner ma zone swap
?</a></h2>
<ul>
<li>Les mouvements mécaniques sont lents, et les mouvements
électroniques rapides. Les disques récents on
plusieurs têtes de lecture. Permuter entre les têtes
qui se trouvent sur la même piste est rapide, puisque c'est
purement électronique. Par contre changer de piste est lent,
puisque ça implique un mouvement des têtes. Par
conséquent si vous avez un disque avec plusieurs têtes
de lecture et un autre qui en a moins, les autres paramètres
étant identiques, le disque qui a le plus de têtes de
lectures sera le plus rapide. Découper la zone swap en la
répartissant sur les disques accélérera aussi
la vitesse d'accès.</li>
<li>Les anciens disques ont le même nombre de secteurs sur
toutes les pistes. Avec ce type de disque, la vitesse maximum est
généralement obtenue en plaçant la zone swap
au milieu du disque, si on part du principe que la tête de
lecture devra se déplacer d'une piste quelconque vers
l'emplacement physique de la zone swap.</li>
<li>Les disques plus récents utilisent le ZBR (bit
d'enregistrement de zone). Les pistes externes contiennent un plus
grand nombre de secteurs. Pour une vitesse de rotation constante,
on obtient donc un bien meilleur rendement pour les pistes externes
que pour les pistes internes. Placer de préférence
votre zone swap sur les pistes les plus rapides.</li>
<li>Mais bien sûr, la tête de lecture n'est pas
animée de mouvement aléatoires. Si le milieu du
disque tombe entre une partition <code>/home</code> en accès
constant et une partition d'archivage presque jamais
utilisée, vous feriez mieux de placer votre zone swap au
milieu de la partition <code>/home</code>, pour limiter l'amplitude
de mouvement des têtes de lecture. Le mieux, dans ce cas,
serait même de placer votre zone swap sur un autre disque,
moins activement utilisé.</li>
</ul>
<p><b>En résumé :</b> Placez votre zone swap sur un
disque rapide équipé de plusieurs têtes de
lecture et qui n'est pas trop accaparé par d'autres
tâches. Si vous avez plusieurs disques, répartissez la
zone swap sur tous ces disques, même si leurs
contrôleurs sont différents.</p>
<p><b>Encore mieux :</b> Achetez plus de RAM.</p>
<h2><a name="ss3.4">3.4 Quelques bricoles au sujet des
systèmes de fichiers et de la fragmentation</a></h2>
<p>L'espace disque est administré par le système
d'exploitation en unités de blocs et fragments de blocs. En
ext2, fragments et blocs doivent être de la même
taille, aussi nous limiterons la discussion aux blocs.</p>
<p>Les fichiers ont des tailles très variables qui ne
coïncident pas nécessairement avec la fin d'un bloc.
Par conséquent, pour chaque fichier, un partie du dernier
bloc est gaspillée. Supposons que la taille des fichiers
soit aléatoire, il y a en moyenne un demi-bloc perdu pour
chaque fichier présent sur le disque. Dans son livre
"Operating systems", Tanenbaum appelle ça la "fragmentation
interne".</p>
<p>On peut déduire le nombre de fichiers présents sur
le disque à partir du nombre d'inodes alloués. Par
exemple sur mon disque :</p>
<blockquote>
<hr>
<pre>
<code># df -i
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda3 64256 12234 52022 19% /
/dev/hda5 96000 43058 52942 45% /var
</code>
</pre>
<hr></blockquote>
<p>Il y a donc environ 12000 fichiers sur <code>/</code> et
près de 44000 sur <code>/var</code>. Pour des blocs d'une
taille de 1 Ko, à peu près 6+22 = 28 Mo d'espace
disque sont perdus dans les derniers blocs des fichiers. Si j'avais
choisi des blocs d'une taille de 4 Ko, j'aurais perdu 4 fois plus
de place.</p>
<p>Les transferts de données sont plus rapides avec de
grands tronçons contigus de données. C'est pourquoi
l'ext2 s'efforce de pré-allouer l'espace en unités de
8 blocs contigus pour les fichiers en cours d'écriture.
L'espace pré-alloué non utilisé est
libéré lors de la fermeture du fichier, ainsi il n'y
a pas de gaspillage.</p>
<p>Un rangement non contigu des blocs dans un fichier est
préjudiciable pour les performances, du fait qu'on
accède généralement aux fichiers de
manière séquentielle. Cela oblige le système
d'exploitation à découper les accès disque et
le disque à déplacer la tête de lecture. On
appelle cela la "fragmentation externe", ou simplement la
"fragmentation", qui est un problème courant avec les
systèmes de fichiers de type DOS.</p>
<p>ext2 utilise plusieurs stratégies afin d'éviter la
fragmentation externe. Normalement la fragmentation n'est pas un
gros problème en ext2, même avec des partitions
très utilisées, comme une file d'attente news. Bien
qu'il existe un utilitaire de défragmentation des
systèmes de fichier ext2, personne ne l'utilise et il n'est
pas à jour avec la dernière version de ext2. Utilisez
le si vous y tenez, mais à vos risques et périls.</p>
<p>Le système de fichiers MS-DOS est réputé
pour sa gestion pathologique de l'espace disque. La conjugaison
d'un cache tampon abyssal et de la fragmentation a des
conséquences tout à fait dommageables sur les
performances. Les utilisateurs de DOS sont habitués à
défragmenter leurs disques toutes les quelques semaines et
certains ont même mis au point un rituel quasi religieux
concernant la défragmentation. Aucune de ces habitudes ne
devrait être transposée sous Linux et ext2. Le
système de fichiers natif de Linux n'a pas besoin de
défragmentation en utilisation normale, ce qui inclut
n'importe quelle condition du moment que 5 % de l'espace disque
reste libre.</p>
<p>Le système de fichiers MS-DOS est aussi
réputé pour perdre une grande quantité
d'espace disque en raison de la fragmentation interne. Pour des
partitions d'une taille supérieure à 256 Mo, la
taille des blocs DOS devient si importante qu'ils ne sont plus
d'aucune utilité (cela a été corrigé
jusqu'à un certain point avec la FAT32).</p>
<p>ext2 ne force pas l'utilisation de grands blocs dans le cas de
grand systèmes de fichiers, à l'exception des
très grands systèmes de fichier de l'ordre de 0.5 To
(1 Tera-octet = 1024 Go) et plus, pour lesquels les blocs de petite
taille deviennent inefficaces. Donc, contrairement au DOS, il n'est
pas nécessaire de découper les grands disques en
plusieurs partitions pour conserver des blocs de petite taille.
Dans la mesure du possible, utilisez la taille par défaut de
1 Ko. Vous voudrez peut être expérimenter des blocs de
2 Ko pour certaines partitions, mais attendez vous à
rencontrer quelques bugs peu courants : presque tout le monde
utilise la taille par défaut.</p>
<h2><a name="ss3.5">3.5 Durée de vie des fichiers et cycles
de sauvegarde sont des critères dans le choix des
partitions</a></h2>
<p>Sous ext2, les décisions concernant le choix des
partitions devraient être dirigées par des
considérations liées aux sauvegardes, et de
manière à éviter la fragmentation externe due
aux durées de vie des différents fichiers.</p>
<p>Les fichiers ont une durée de vie. Une fois
créé, un fichier restera un certain temps sur le
système avant d'être supprimé. La durée
de vie des fichiers varie considérablement au sein du
système, et dépend en partie du chemin d'accès
du fichier. Par exemple, les fichiers présents dans
<code>/bin</code>, <code>/sbin</code>, <code>/usr/sbin</code>,
<code>/usr/bin</code> ou quelqu'autre répertoire du
même type ont une durée de vie très longue : de
nombreux mois, voire plus. Les fichiers présents dans
<code>/home</code> ont une durée de vie intermédiaire
: à peu près quelques semaines. Les fichiers
présents dans <code>/var</code> ont
généralement une durée de vie courte :
quasiment aucun fichier dans <code>/var/spool/news</code> ne
restera plus de quelques jours, et dans <code>/var/spool/lpd</code>
le temps de vie se mesure en minutes voire moins.</p>
<p>Pour sauvegarder, il peut être utile de s'assurer que la
taille d'une sauvegarde journalière reste inférieure
à la taille du support de sauvegarde. Une sauvegarde
journalière peut être complète ou
différentielle.</p>
<p>Vous pouvez décider de conserver des tailles de
partitions suffisamment petites pour tenir complètement sur
un seul support de sauvegarde (auquel cas, faites des sauvegardes
journalières complètes). Dans tous les cas, la taille
d'une partition devrait être telle que son "delta" journalier
(tous les fichiers modifiés) puisse tenir sur un seul
support de sauvegarde (faites une sauvegarde différentielle,
et prévoyez de changer le support pour la sauvegarde
hebdomadaire/mensuelle complète).</p>
<p>Votre stratégie de sauvegarde repose sur ces
décisions.</p>
<p>Lorsque vous achetez et organisez de l'espace disque, pensez
à mettre de coté une somme suffisante pour les
sauvegardes afférentes ! Des données non
sauvegardées sont sans valeur ! Le coût de
reproduction des données est de loin plus
élevé que celui de la sauvegarde, pour qui que ce
soit !</p>
<p>Pour des raisons de performances, il est utile de conserver des
fichiers ayant des durées de vie différentes sur des
partitions différentes. De cette manière, les
fichiers éphémères de la partition
<code>.../news</code> peuvent être très lourdement
fragmentés. Cela n'aura aucune incidence sur les
performances des partitions <code>/</code> ou
<code>/home</code>.</p>
<h2><a name="s4">4. Un exemple</a></h2>
<h2><a name="ss4.1">4.1 Un modèle à suivre pour
débutant ambitieux</a></h2>
<p>Un modèle courant propose la création des
partitions <code>/</code>, <code>/home</code> et <code>/var</code>
pour des raisons abordées plus haut. Cela simplifie tant
l'installation que la maintenance, et la différenciation est
suffisante pour éviter les effets pervers des durées
de vie différentes. C'est aussi un bon modèle en ce
qui concerne la sauvegarde : personne ne se soucie de sauvegarder
les files d'attente "news" et seulement quelques fichiers de
<code>/var</code> peuvent être utilement sauvegardés
(comme <code>/var/spool/mail</code>). D'un autre coté,
<code>/</code> change très peu souvent et peut n'être
sauvegardé que ponctuellement (après un changement de
configuration), et sa taille relativement faible permet, pour la
plupart des supports modernes, de faire une sauvegarde
complète (prévoyez de 250 à 500 Mo en
fonctions des logiciels installés). <code>/home</code>
contient les précieuses données des utilisateurs et
devrait être sauvegardé chaque jour. Certaines
configurations présentent un <code>/home</code> très
important et doivent par conséquent faire appel au
sauvegardes différentielles.</p>
<p>Certains systèmes prévoient une partition
séparée pour <code>/tmp</code>, d'autres
créent un lien symbolique sur <code>/var/tmp</code> pour
obtenir un résultat similaire (notez que cela peut affecter
le mode "single user" pour lequel <code>/var</code> ne sera pas
disponible, à moins de le créer ou de le monter
manuellement) ; ou encore placez le sur disque RAM (comme c'est le
cas sous Solaris). Cela tient <code>/tmp</code>
séparé de <code>/</code>, ce qui es une bonne
idée.</p>
<p>Ce modèle est tout à fait adapté aux mises
à jour ou aux réinstallations : sauvez vos fichiers
de configuration (ou la totalité de <code>/etc</code>) dans
un répertoire de <code>/home</code>, débarrassez vous
de <code>/</code>, réinstallez et récupérez
votre ancienne configuration à partir du répertoire
de sauvegarde sur <code>/home</code>.</p>
<h2><a name="s5">5. Comment je m'y suis pris
personnellement</a></h2>
<p>Un vieux 386/40 sur bus ISA traînait sur mon
étagère depuis deux ans. J'avais l'intention de le
transformer en un petit serveur non-X pour mon réseau
local.</p>
<p>Voici comment je m'y suis pris : j'ai
récupéré ce 386 et l'ai doté de 16 Mo
de RAM. J'y ai ajouté le disque le moins cher et le plus
petit que j'ai pu trouver (800 MB), une carte Ethernet et une
vieille Hercules parce que j'avais toujours le moniteur. J'ai
installé Linux, ce qui m'a permis de disposer d'un serveur
NFS, SMB, HTTP, LPD/LPR et NNTP familial ainsi que d'un routeur
mail et d'un serveur POP3. Avec en plus une carte RNIS, cette
machine me sert maintenant en plus de routeur TCP/IP et de
pare-flamme.</p>
<p>L'essentiel de l'espace disque sur cette machine est
passé dans les répertoires de <code>/var</code>,
<code>/var/spool/mail</code>, <code>/var/spool/news</code> et
<code>/var/httpd/html</code>. J'ai placé <code>/var</code>
sur un partition séparée, que j'ai
créée suffisamment grande. Comme il n'y aura autant
dire pas d'utilisateurs sur cette machine, je n'ai pas
créé de partition home, et j'ai donc monté
<code>/home</code> depuis une autre station de travail via NFS.</p>
<p>Une partition <code>/</code> de 250 Mo est amplement suffisante
pour Linux sans X, doté de quelques utilitaires locaux
supplémentaires. Cette machine a 16 Mo de RAM, mais elle est
destinée à piloter de nombreux serveurs. 16 Mo de
swap serait correct, 32 Mo l'abondance. Comme l'espace disque le
permet, disons 32 Mo de swap. Conservons une partition MS-DOS de 20
Mo. Comme j'ai décidé d'importer <code>/home</code>
depuis une autre machine, les 500+ Mo constitueront
<code>/var</code>. C'est plus que suffisant pour un centre de
distribution de news familial.</p>
<p>Nous avons donc :</p>
<blockquote>
<hr>
<pre>
<code>Device Mounted on Size
/dev/hda1 /dos_c 25 MB
/dev/hda2 - (Swapspace) 32 MB
/dev/hda3 / 250 MB
/dev/hda4 - (Extended Container) 500 MB
/dev/hda5 /var 500 MB
homeserver:/home /home 1.6 GB
</code>
</pre>
<hr></blockquote>
<p>J'effectue les sauvegardes de cette machine via le réseau
en utilisant le lecteur de bande de <code>homeserveur</code>. Du
fait que l'installation a été faite à partir
d'un CDROM, je n'ai besoin de sauvegarder que quelques fichiers de
<code>/etc</code>, mes fichiers *.tgz personnalisés
installés localement sur <code>/root/Source/Installed</code>
et <code>/var/spool/mail</code> ainsi que
<code>/var/httpd/html</code>. Je copie chaque nuit ces fichiers
dans un répertoire dédié
<code>/home/backmeup</code> sur <code>homeserver</code>, où
la sauvegarde régulière de <code>homeserver</code>
les récupère.</p>
</body>
</html>
|