GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Auf tmpfs tauschen (Offensichtlich eine schlechte Idee, aber ist es möglich?)

Es sollte nicht möglich sein. swapon Systemaufruf erfordert readpage und bmap (indirekt) Aufrufe, die vom Dateisystem implementiert werden:

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

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

Aber keiner von ihnen wird von tmpfs implementiert , fehlt ein solcher Eintrag im entsprechenden address_space_operations :http://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104

Aus dem gleichen Grund kann tmpfs keine Loop Mounts halten und ramfs wird auch nicht funktionieren (es hat kein bmap anrufen)


Aus diesem Q&A https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem (die ursprünglich referenzierte Seite antwortet nicht):

"Ungültiges Argument" sollte also gelesen werden als "Ihr Dateisystem unterstützt keine Auslagerungsdatei"

Der Inkompatibilitätsgrund, den ich vermute, ist eine "zirkuläre Abhängigkeit". Aus diesem Artikel:http://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk:

Diese beiden Unterschiede zwischen ramfs und tmpfs machen tmpfs viel handlicher, aber das ist ein großer Nachteil; tmpfs kann SWAPspace verwenden. Wenn Ihr System keinen physischen Arbeitsspeicher mehr hat, können Dateien in Ihren tmpfpartitions auf plattenbasierte SWAP-Partitionen geschrieben werden und müssen beim nächsten Zugriff auf die Datei von der Platte gelesen werden.

Was in Ihrem Szenario so gut wie unmöglich wäre.

Es vielleicht mit ramfs arbeiten , tho - die dieses Problem nicht hat.


Linux
  1. Linux – Ist es möglich, Oom-Killer bei erzwungenem Austausch auszulösen?

  2. Ist Swap ein Anachronismus?

  3. Erstellen Sie eine Linux-Auslagerungsdatei

  4. Möglich, das Herunterfahren unter Linux abzubrechen?

  5. Ist es möglich, eine Adresse:Port zu pingen?

Df-Befehl unter Linux

Verwenden von mod_cluster in Apache

Umleitung von HTTP zu HTTPS in NginX

Ubuntu sagt 13.04, aber Lsb_release sagt 12.10?

Ist es möglich, / in einem Dateinamen zu verwenden?

Linux:Wie kann man alles Mögliche explizit auslagern?