MKSWAP(8)

NOM
mkswap - Créer 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 d'échange Linux sur un périphérique ou dans un fichier. (Après avoir créé la zone d'échange, vous aurez besoin de la commande swapon pour l'utiliser. Habituellement les zones d'échange sont indiquées dans le fichier /etc/fstab afin qu'elles puissent être utilisées au moment du démarrage par la commande swapon -a intégrée dans un script.) L'argument périphérique est 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 d'échange. (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 d'échange 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 typographique 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 zone d'échange. Les valeurs caractéristiques de TAILLE_PAGE sont 4096 ou 8192. Linux connaît deux sortes de zones d'échange : les anciennes et les nouvelles. Les 10 derniers octets de la première page de la zone d'échange 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 d'échange. 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 d'échange 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 d'échange, alors que la taille de l'espace d'échange 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 d'échange avec des centaines de blocs défectueux. (D'ailleurs, je ne voudrais même pas utiliser un espace d'échange avec 1 seul bloc défectueux.) Avec les zones d'échange de style nouveau, c'est précisément ce qui est fait. La taille maximale utilisable de la zone d'échange dépend de l'architecture et de la version du noyau. C'est approximativement 2 Gio sur i386, PPC, m68k, ARM, 1Gio sur sparc, 512 Mio sur mips, 128 Gio sur alpha et 3 Tio sur sparc64. Pour les noyaux suivant le 2.3.3, cette limitation n'existe plus. 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 d'échange de 2 Go en cours d'utilisation pourra nécessiter 2 Mo de mémoire du noyau. Actuellement, Linux autorise 32 zones d'échange (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 d'échange, 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 d'échange ne doit contenir aucun trou (par conséquent, utiliser cp(1) pour créer le fichier n'est pas acceptable).

OPTIONS

-c  Tester 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 d'échange. S'il en trouve, leur nombre est affiché.

-f  Forcer - exécuter la commande, même si elle est stupide. Ceci autorise la création d'une zone d'échange plus grosse que le fichier ou la partition sur laquelle elle réside. Sur SPARC, cette commande force la création de la zone d'échange. Sans cette option, mkswap refusera de créer une zone d'échange 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écifier la taille de la page à utiliser.

-v0 Créer une zone d'échange ancien style.

-v1 Créer une zone d'échange nouveau style.

Si l'option -v n'est pas fournie, 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 d'échange. La version 0 (-v0) du format d'espace d'échange n'est plus prise en charge depuis le noyau 2.5.

DISPONIBILITÉ
La commande mkswap fait partie du paquetage util-linux-ng et est disponible à l'adresse ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.

VOIR AUSSI
fdisk(8), swapon(8)

TRADUCTION
Ce document est une traduction réalisée par Jérôme Perzyna <jperzyna AT yahoo DOT fr> en septembre 2004 et révisée le 26 mai 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 1 arch ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.