Ich möchte eine Linux-Ramdisk mit fester Größe erstellen, die niemals auf die Festplatte wechselt. Beachten Sie, dass meine Frage nicht "warum" ist, was ich tun möchte (sagen wir zum Beispiel, dass es zu Bildungszwecken oder für Forschungszwecke ist): Die Frage ist, wie es geht.
Soweit ich ramfs
weiß , kann die Größe nicht begrenzt werden, daher entspricht es nicht meiner Anforderung, eine Ramdisk mit fester Größe zu haben.
Es scheint auch , dass tmpfs
kann auf der Festplatte ausgelagert werden. Es entspricht also nicht meiner Anforderung, niemals auf die Festplatte zu wechseln.
Wie können Sie eine Linux-Ramdisk mit fester Größe erstellen, die niemals auf die Festplatte wechselt?
Ist es zum Beispiel möglich, tmpfs
innerhalb eines zu erstellen ramfs
(würde eine solche Lösung sowohl meinen Anforderungen entsprechen) als auch wie?
Beachten Sie, dass die Leistung kein Problem darstellt und die Ramdisk, die voll wird und "Festplatten voll" -Fehler auslöst, ebenfalls kein Problem darstellt.
quelle
ram
Geräte vorhanden sinddev
. Wenn nicht, versuchen Sie esmodprobe rd
.Antworten:
Dies ist nur ein Gedanke und hat mehr als einen Nachteil, aber es könnte trotzdem brauchbar genug sein.
Wie wäre es, wenn Sie eine Image-Datei und ein darin enthaltenes Dateisystem über Ramfs erstellen und das Image dann als Loop-Gerät bereitstellen? Auf diese Weise können Sie die Größe der Ramdisk begrenzen, indem Sie einfach die Größe der Bilddatei begrenzen. Zum Beispiel:
Im obigen (etwas zu langen) Beispiel wird die Bilddatei mit 2 Megabyte erstellt. Wenn Sie versuchen, mehr als 2 Megabyte darauf zu schreiben, schlägt das Schreiben einfach fehl, da das Dateisystem voll ist.
Eine offensichtliche Verkleinerung für all dies ist natürlich, dass es viel mehr Komplexität gibt, aber zumindest für akademische Zwecke sollte dies ausreichen.
quelle
Das (datierte!) Buch "Linux Device Drivers" von Corbet, Rubini und Kroah-Hartman enthält einen Beispieltreiber, der lediglich einen festen Speicherbereich zum Herumalbern zuweist. Kein Dateisystem, aber ...
quelle
Nicht machbar. Der gesamte Arbeitsspeicher wird sowohl vom CPU-Hardware-Design als auch vom Linux-Mikrokernel-Design ausgelagert. Es gibt KEINE legitimen Gründe, das Gedächtnis anders zu behandeln. ALLE Softwarealgorithmen können angepasst werden, um das Dateicaching-Schema und den ausgelagerten Speicher zu verwenden. Virtual ist IMMER besser und effizienter.
RAM-Disks mit begrenzter Größe widersprechen den Grundprinzipien der virtuellen Welt. Sie müssen davon ausgehen, dass nur nützliche Dateianforderungen an das Host-Dateisystem gesendet werden und dass alle diese Anforderungen in der virtuellen Welt (dem einzigen Modell, das zählt) die gleiche Bedeutung und Priorität haben.
Es wurde mathematisch bewiesen, dass sogar Echtzeitprozesse dieser Regel entsprechen. Wenn Sie ein Geschwindigkeitsproblem haben, das NIEMALS durch Verwendung von RAM als Speicher gelöst werden kann == Das gesamte Hostsystem muss schneller von der CPU über den E / A-Bus bis zum permanenten Speichergerät arbeiten. Alle außer künstlichen degenerierten Computerproblemen haben ausreichende Verzweigungs- und Datei-E / A-Anforderungen, sodass die durchschnittliche Geschwindigkeitssteigerung beim RAM-Caching das Beste ist, was Sie tun können.
quelle
mlock()
mlock2()
mlockall()