Pourquoi Linux utilise-t-il une partition swap plutôt qu'un fichier?


32

Il me semble qu'un fichier d'échange est plus flexible.


1
Vous pouvez utiliser un fichier d'échange sous Linux. Je le fais en ce moment sur plusieurs machines. Je n'utilise rien de spécial cependant, juste ext4 ou ext4 sur LVM. Pas de cryptage ou quelque chose de compliqué. Suspendre et hiberner ont très bien fonctionné pour moi, même sur ma machine NVMe.
Cory T

Réponses:


32

Un fichier d'échange est plus souple mais également plus faillible qu'une partition d'échange. Une erreur du système de fichiers pourrait endommager le fichier d'échange. Un fichier d'échange peut être pénible pour l'administrateur, car il ne peut être ni déplacé ni supprimé. Un fichier d'échange ne peut pas être utilisé pour l'hibernation. Un fichier d'échange était un peu plus lent dans le passé, bien que la différence soit négligeable de nos jours.

L'avantage d'un fichier d'échange est de ne pas avoir à décider de la taille à l'avance. Cependant, sous Linux, vous ne pouvez toujours pas redimensionner un fichier d'échange en ligne: vous devez le désenregistrer, le redimensionner, puis le réenregistrer (ou créer un autre fichier et supprimer l'ancien). Un fichier d'échange sous Linux ne présente donc pas beaucoup d'avantages par rapport à une partition d'échange. C'est surtout utile lorsque vous avez temporairement besoin de plus de mémoire virtuelle, plutôt que comme une installation permanente.


4
dans le passé, il y avait aussi un avantage de performance. Mais je pense que cela a pris fin lorsque la version 2.6 est sortie.
xenoterracide

Il semble que cela ne réponde pas vraiment à la question. Ou est-ce que je manque quelque chose? La réponse ne parle que de fichiers d'échange, sans parler des partitions. @ Gilles était-ce intentionnel, ou avez-vous juste fait une faute de frappe?
Gabe.

1
@ gabe: Je discutais des fichiers d'échange par rapport aux partitions. Espérons que cela soit plus clair maintenant.
Gilles 'SO- arrête d'être méchant'

1
Je signale ici mes commentaires dans la réponse de Penz. La perte de performance induite par le fs sur les fichiers d'échange est sans objet.
Ata

2
Selon le wiki d'aide de la communauté Ubuntu help.ubuntu.com/community/SwapFaq Une partition de swap est nécessaire pour l'hibernation. Citation: "Il ne peut pas utiliser un fichier d'échange sur un système de fichiers actif.". Et en ce qui concerne les performances, il semble qu’il n’y ait aucune différence à moins que le fichier ne soit rare. serverfault.com/questions/25653/…
Erik Sjölund le

28

Une partition de swap peut être préférée car elle évite une dépendance du système de fichiers lorsque tout ce dont vous avez besoin est un pool de mémoire adressable.

Mais rien ne vous empêche d'utiliser un fichier d'échange au lieu d'une partition d'échange ou en plus d'une partition d'échange.

  • Créez le fichier:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Initialiser le contenu du fichier:

    mkswap /extraswap
    
  • Utilise le:

    swapon /extraswap
    
  • Voir si cela a fonctionné:

    free -m
    

Afin de commencer à utiliser le fichier d'échange toujours au démarrage, éditez / etc / fstab et ajoutez

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html


5
Alias ​​utile que j'utilise depuis toujours pour me permettre de saisir moreswapun terminal si j'ai soudainement besoin d'espace supplémentaire d'échange:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Michael Mrozek

c'est une bonne information, mais cela ne répond pas à la question.
Lesmana

6
En outre, le bit sur la surcharge du système de fichiers est incorrect. Contrairement à la croyance populaire, l’utilisation de fichiers swap n’impose aucune surcharge. Andrew Morton donne l'explication simple ici . C'est l'une des raisons pour lesquelles utiliser un gestionnaire de swap basé sur un fichier d'échange dynamique, tel que le démon swap, est une bonne solution s'il est bien configuré.
Ata

Ajoutons que l'approche de fichier d'échange peut être votre seule option lorsque vous exécutez dans le cloud.
sorin

1

La raison principale est peut-être que le noyau principal suspendre sur disque ne fonctionne pas avec les fichiers d'échange. Par exemple, les instructions du wiki Debian doivent être installées uswsuspsi vous en avez besoin.

Plus récemment, les fichiers d'échange ne fonctionnent pas si le système de fichiers l'est btrfs, il est donc plus simple pour les distributions de toujours créer un échange en tant que partition.

Il est vaguement mentionné que l'utilisation d'un fichier d'échange avait des performances potentiellement inférieures à celles d'une partition, avant la version 2.6 du noyau. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

Pour compléter, je vais ajouter ma propre réponse:

Comme l'a dit @Gilles, un fichier d'échange ne peut pas être utilisé pour l'hibernation. Lors de l'utilisation d'un fichier d'échange, le système doit localiser l'en-tête du fichier d'échange, mais pour ce faire, le système de fichiers contenant le fichier d'échange doit être monté, ainsi qu'un système de fichiers journalisé - par exemple, ext3, ext4 et pratiquement tous les systèmes de fichiers modernes utilisés par Linux. - ne peut pas être monté pendant la reprise à partir du disque. (En réalité, il existe des moyens de le faire, mais assez lourd.)

Source: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

Je pense que c'est principalement parce que le temps d'accès aux données situées sur une partition est plus court. Le fichier d'échange sert surtout à aider l'administrateur du système lorsqu'il ne dispose plus de mémoire vive et qu'il doit effectuer d'importantes opérations pouvant provoquer le blocage de son système. Dans ce cas, il créera sporadiquement des fichiers d'échange en cas de besoin.

Mais de toute façon, vous pouvez avoir les deux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.