Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


12.5 Espace d’échange

Un espace d’échange est un espace disque spécifiquement dédié à la pagination mémoire : le processus en charge de la gestion de la mémoire (le noyau Linux ou le gestionnaire par défaut du Hurd) peut décider que certaines pages mémoire stockées en RAM qui appartiennent à un processus en cours d’exécution mais qui sont inutilisées devraient plutôt être stockées sur disque. Il les décharge de la RAM pour libérer la précieuse mémoire rapide, et les écrit sur l’espace d’échange. Si le programme essaye d’accéder à la page, le processus de gestion de la mémoire la charge à nouveau dans la mémoire pour que le programme puisse l’utiliser.

Une idée fausse répandue sur l’espace d’échange est qu’il n’est utile que lorsque seule une petite quantité de RAM est disponible sur le système. En réalité, vous devriez savoir que les noyaux utilisent souvent toute la RAM disponible pour le cache des accès disques pour rendre les opérations d’entrée-sortie plus rapides. En conséquence, déplacer des pages mémoire inutilisées augmentera la quantité de RAM disponible pour ce cache.

Pour une description plus complète de la gestion de la mémoire du point de vue d’un noyau monolithique, Voir Memory Concepts dans le manuel de référence de la bibliothèque C de GNU.

Le noyau Linux prend en charge les partitions d’échanges et les fichiers d’échange : le premier utilise une partition disque complète pour la pagination, alors que le second utilise un fichier sur un système de fichiers pour cela (le pilote du système de fichiers doit le prendre en charge). Pour une configuration comparable, les deux ont les mêmes performances, donc vous devriez considérer la facilité d’utilisation pour vous décider entre les deux. Les partitions sont « plus simples » et n’ont pas besoin de la prise en charge dans le système de fichiers, mais ont besoin d’être allouées au formatage du disque (en oubliant les volumes logiques), alors que les fichiers peuvent être alloués et désalloués à n’importe quel moment.

Remarquez que l’espace d’échange n’est pas remis à zéro à l’extinction donc les données sensibles (comme les mots de passe) peuvent y rester si elles y ont été déplacées. De fait, vous devriez faire résider votre espace d’échange sur un périphérique chiffré (voir Périphériques mappés).

Type de données :swap-space

Les objets de ce type représentent des espaces d’échange. Ils contiennent les membres suivants :

target

Le périphérique ou le fichier à utiliser, soit un UUID, soit un file-system-label, soit une chaine, comme dans la définition d’un file-system (voir Systèmes de fichiers).

dependencies (par défaut : '())

Une liste de d’objets file-system ou mapped-device, dont dépend la disponibilité de l’espace. Remarquez que, tout comme pour les objets file-system, les dépendances qui sont requises au démarrage et montées au plus tôt en espace utilisateur ne sont pas gérées par le Shepherd, et sont donc automatiquement retirées pour vous.

priority (par défaut : #f)

Seulement pris en charge par le noyau Linux. Soit #f pour désactive la priorité de l’espace d’échange, soit un entier entre 0 et 32767. Le noyau utilisera d’abord les espaces d’échange avec la plus grande priorité, et utilisera les espaces d’échange de même priorité à tour de rôle. Le noyau utilisera les espaces d’échange sans priorité après les espaces prioritaires, et dans l’ordre dans lequel ils sont apparus (donc pas à tour de rôle).

discard? (par défaut : #f)

Uniquement pris en charge par le noyau Linux. Lorsque la valeur est vraie, le noyau notifiera le contrôleur de disque des pages supprimées, par exemple avec l’opération TRIM sur les disques SSD.

Voici quelques exemples :

(swap-space (target (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))

Utilise la partition de swap avec l’UUID donné. Vous pouvez voir l’UUID d’une partition de swap Linux en lançant swaplabel device, où device est le nom de fichier /dev de cette partition.

(swap-space
  (target (file-system-label "swap"))
  (dependencies mapped-device))

Utilise la partition avec l’étiquette swap, qui peut être trouvée après que tous les périphériques mappés mapped-devices ont été ouverts. De nouveau, la commande swaplabel vous permet de voir et de changer l’étiquette d’une partition swap de Linux.

Voici un exemple plus complet de la partie file-systems d’une déclaration operating-system.

(file-systems
  (list (file-system
          (device (file-system-label "root"))
          (mount-point "/")
          (type "ext4"))
        (file-system
          (device (file-system-label "btrfs"))
          (mount-point "/btrfs")
          (type "btrfs"))))

(swap-devices
  (list
    (swap-space
      (target "/btrfs/swapfile")
      (dependencies (filter (file-system-mount-point-predicate "/btrfs")
                            file-systems)))))

utilise le fichier /btrfs/swapfile comme espace d’échange, ce qui dépend du système de fichiers monté sur /btrfs. Remarquez comment nous utilisons la fonction filter de Guile pour élégamment sélectionner le système de fichiers !


Suivant: Comptes utilisateurs, Précédent: Périphériques mappés, Monter: Configuration du système   [Table des matières][Index]