GNU/Linux >> Tutoriels Linux >  >> Linux

Swap sur tmpfs (Évidemment une mauvaise idée, mais est-ce possible ?)

Cela ne devrait pas être possible. swapon l'appel système nécessite readpage et bmap appels (indirectement) mis en œuvre par le système de fichiers :

http://lxr.free-electrons.com/source/mm/swapfile.c?v=4.0#L2412

if (!mapping->a_ops->readpage) {
    error = -EINVAL;
    goto bad_swap;
}   

Mais aucun d'entre eux n'est implémenté par tmpfs , une telle entrée est manquante dans le address_space_operations correspondant :http://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104

Pour la même raison, tmpfs ne peut pas contenir de montages en boucle, et ramfs ne fonctionnera pas non plus (il n'a pas bmap appel)


À partir de ce Q&A https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem (le site référencé d'origine ne répond pas):

Donc "Argument non valide" doit être lu comme "Votre système de fichiers ne prend pas en charge le fichier d'échange"

La raison d'incompatibilité que je soupçonne est une "dépendance circulaire". Extrait de cet article :http://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk :

Ces deux différences entre ramfs et tmpfs rendent tmpfs beaucoup plus facile à gérer, mais c'est un inconvénient majeur ; tmpfs peut utiliser SWAPspace. Si votre système manque de RAM physique, les fichiers de vos partitions tmpfs peuvent être écrits sur des partitions SWAP basées sur disque et devront être lus à partir du disque lors du prochain accès au fichier.

Ce qui serait quasiment impossible dans votre scénario.

Il pourrait travailler avec ramfs , mais - qui n'a pas ce problème.


Linux
  1. Est-il toujours mauvais d'utiliser Swap sur un SSD moderne ?

  2. Échangez de l'espace sur des serveurs cloud

  3. Possible d'interrompre l'arrêt sous Linux ?

  4. Est-il possible d'utiliser / dans un nom de fichier ?

  5. Est-ce une mauvaise idée de faire apt-get upgrade dans le conteneur OpenVZ ?

Commande Df sous Linux

Utilisation de mod_cluster dans Apache

Ubuntu dit 13.04 mais Lsb_release dit 12.10 ?

Busybox ping IP fonctionne, mais le nom d'hôte nslookup échoue avec une mauvaise adresse

Les téléchargements HTTP s'arrêtent après un certain temps, la reprise n'est pas possible

Linux :comment déséchanger explicitement tout ce qui est possible ?