mkswap

Autres langues

Langue: fr

Autres versions - même langue

Version: 25 mars 1999 (fedora - 25/11/07)

Section: 8 (Commandes administrateur)

NOM

mkswap - crée une zone d'échange (swap) linux

RÉSUMÉ

mkswap [-c] [-vN] [-f] [-p TAILLE_PAGE] périphérique [taille]

DESCRIPTION

mkswap crée une zone de swap linux sur un périphérique ou dans un fichier.

(Après avoir créé la zone de swap, vous aurez besoin de la commande swapon pour l'utiliser. Habituellement les zones de swap sont listées dans le fichier /etc/fstab afin qu'elles puissent être utilisées au moment du boot par la commande swapon -a intégrée dans un script.)

L'argument périphérique sera normalement une partition du disque dur (quelque chose comme /dev/hda4 ou /dev/sdb7) mais peut aussi être un fichier. Le noyau linux ne regarde pas le type de partition, mais beaucoup de scripts d'installation supposeront que les partitions de type 82 en hexadécimal (LINUX_SWAP) sont, par défaut, des partitions de swap. (Attention : Solaris utilise aussi le type 82. Prenez garde de ne pas supprimer vos partitions Solaris.)

Le paramètre taille est superflu, mais il est conservé pour des raisons de compatibilité descendante. (Il spécifie la taille désirée de la zone de swap par blocs de 1024 octets. mkswap utilisera la totalité de la partition ou du fichier si la taille est omise. La spécifier est imprudent - une coquille pourrait détruire votre disque.)

Le paramètre TAILLE_PAGE spécifie la taille de la page à utiliser. Il n'est presque jamais nécessaire (voire imprudent) de la spécifier, mais certaines anciennes versions de libc ne déterminent pas correctement la taille de la page. Il est alors possible que mkswap en prenne une mauvaise. Si tel est le cas, un swapon ultérieur échouera parce qu'il n'aura pas trouvé la signature de la swap. Les valeurs caractéristiques de TAILLE_PAGE sont 4096 ou 8192.

Linux connaît deux sortes de zones de swap : les anciennes et les nouvelles. Le 10 derniers octets de la première page de la zone de swap les distinguent les unes des autres : les anciennes ont « SWAP_SPACE », alors que les nouvelles ont « SWAPSPACE2 » comme signature.

Dans l'ancien style, le reste de cette première page contient une carte de bits, avec 1 bit pour chaque page utilisable de la zone de swap. Comme la première page contient la carte des bits, le premier bit est 0. De la même façon, les 10 derniers octets contiennent la signature. Donc, si la taille de la page est T, une ancienne zone de swap peut décrire au plus 8*(T-10)-1 pages pour swapper. Avec T=4096 (comme sur un i386), la zone utilisable est au maximum de 133890048 octets (environ 128 Mo), et le reste sera inutilisable. Sur alpha et sparc64, avec T=8192, la zone utilisable est au maximum de 535560992 bytes (environ 512 MiB).

L'ancienne installation gaspille une grande partie de cette page. En effet, les bits à zéro signifient aussi bien des blocs défectueux que des blocs situés après la fin de l'espace de swap, alors que la taille de l'espace de swap pourrait être indiquée par un entier et les blocs défectueux, s'il y en a, simplement listés. Il est clair, que personne ne souhaite utiliser un espace de swap avec des centaines de mauvais blocs. (D'ailleurs, je ne voudrais même pas utiliser un espace de swap avec 1 seul bloc défectueux.) Avec les zones de swap de style nouveau c'est précisément ce qui est fait. La taille maximale utilisable de la zone de swap dépend de l'architecture. C'est approximativement 2 Go sur i386, PPC, m68k, ARM, 1GiB sur sparc, 512 Mo sur mips, 128 Go sur alpha et 3 To sur sparc64.

Notez qu'avant la version 2.1.117, le noyau allouait un octet pour chaque page, alors que, maintenant, il en alloue deux. Ainsi une zone de swap de 2 Go en cours d'utilisation pourra nécessiter 2 Mo de mémoire du noyau.

Actuellement, Linux autorise 32 zones de swap (elles étaient 8 avant le noyau Linux 2.4.10). Les zones en cours d'utilisation peuvent être vues dans le fichier /proc/swaps (depuis 2.1.25).

mkswap refuse les zones de taille inférieure à 10 pages.

Si vous ne connaissez pas la taille des pages que votre machine utilise, vous pouvez la voir avec "cat /proc/cpuinfo" (le contenu de ce fichier dépendant de l'architecture et de la version du noyau, il est possible que vous n'ayez pas accès à cette information).

Pour installer un fichier de swap, il est nécessaire de créer ce fichier avant de l'initialiser avec mkswap , par exemple en utilisant une commande comme

 
# dd if=/dev/zero of=fichier_swap bs=1024 count=65536

 

Notez qu'un fichier de swap ne doit contenir aucun trou (par conséquent, utiliser cp(1) pour créer le fichier n'est pas acceptable).

OPTIONS

-c
Teste le périphérique (si c'est un périphérique bloc) pour découvrir les blocs défectueux avant de créer une zone de swap. S'il en trouve, leur nombre est affiché.
-f
Force - exécute la commande, même si elle est stupide. Ceci autorise la création d'une zone de swap plus grosse que le fichier ou la partition sur laquelle elle réside. Sur SPARC, cette commande force la création de la zone de swap. Sans cette option mkswap refusera de créer une zone de swap de type v0 sur un périphérique avec un superbloc SPARC valide, considérant que l'on est probablement en train d'effacer la table des partitions.
-p TAILLE_PAGE
Spécifie la taille de la page à utiliser.
-v0
Crée une zone de swap ancien style.
-v1
Crée une zone de swap nouveau style.

Si l'option -v n'est pas passée, mkswap utilisera par défaut le nouveau style, mais utilisera l'ancien style si le noyau courant est antérieur à la version 2.1.117 (et également si PAGE_SIZE est inférieur à 2048). L'en-tête du nouveau style ne touche pas au premier bloc, et doit donc être préféré, dans le cas où vous avez un chargeur de démarrage ou un label de disque à cet endroit. Si vous avez besoin d'utiliser les noyaux 2.0 et 2.2, utilisez l'option -v0 lorsque vous créerez votre espace de swap.

VOIR AUSSI

fdisk(8), swapon(8)

TRADUCTION

Jérôme Perzyna (septembre 2004)

AVERTISSEMENT SUR LA TRADUCTION

Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous reporter au document original en langue anglaise fourni avec le programme.