Unter Linux habe ich beim Booten automatisch 16 16-MB-RAM-Disks. Ich möchte jedoch eine wirklich große RAM-Disk erstellen, um einige Software zu testen.
Ich fand heraus, dass ich die Größe der bereits auf dem System vorhandenen RAM-Disks mit dem Kernel-Boot-Parameter anpassen kann ramdisk_size
, dies macht jedoch alle 16 RAM-Disks (/ dev / ram0 - / dev / ram15) zu der angegebenen Größe. Wenn ich also eine RAM-Disk mit 1 GB erstellen möchte, benötige ich 16 GB Arbeitsspeicher.
Grundsätzlich möchte ich eine 10 GB RAM-Disk erstellen, die / dev / ram0 wäre. Wie würde ich das machen? Ich nehme an, es gibt einen Kernel-Boot-Parameter, aber ich habe ihn einfach nicht gefunden.
So erstellen Sie nach dem Booten eine große RAM-Festplatte, ohne mit den Kernel-Parametern herumzuspielen. Verwenden Sie tmpfs, erstellen Sie eine Datei, mounten Sie sie über eine Schleife und mounten Sie sie über ein Dateisystem:
Wahrscheinlich ein bisschen Leistungseinbußen durch mehrere verschiedene Ebenen ... aber zumindest funktioniert es.
quelle
Eine andere Option ist die Verwendung der Loop-Geräte (im Gegensatz zu der zuvor erwähnten Loobpack-Funktion von mount):
Jetzt ist / dev / loop ein legitimes Block-Gerät, auf das Ihre App wie auf ein physisches Gerät oder eine Ramdisk reagiert, mit der Ausnahme, dass es dateibasiert ist. Sie können es irgendwo einhängen oder Ihre App auf den Geräteknoten einwirken lassen, der die Standardblock-Ioctls implementiert. Speichert Ihren System-RAM und ist nützlich, um ihn für Testfälle usw. aufzubewahren.
(Sie können sogar myfs.img fdisk, Partitionen darauf erstellen und --offset und --sizelimit mit losetup verwenden, um jedes / dev / loopX auf bestimmte Partitionen im Image zu verweisen, sodass loop0, loop1 genau wie sdc1, sdc2 usw. Werden )
quelle
Sie könnten stattdessen eine Schleifendatei verwenden. Erstellen Sie einfach eine Schleifendatei in der gewünschten Größe (wenn Sie sie in eine tmpfs-Ramdisk einfügen möchten, in Ordnung), formatieren Sie die Schleifendatei und hängen Sie sie ein.
quelle
Das Ziel eines Ramdrive ist die Geschwindigkeit. Tmpfs ist kein Laufwerk. Loop-Geräte sind keine Laufwerke, aber Sie können ein Laufwerksabbild auf einem Loop-Gerät ablegen. RAM-Datenträger sind Laufwerke und sehr schnelle Laufwerke. Versuche es mit:
und dann:
Du wirst sehen, was ich meine! Aber hdparm zerstört manchmal den RAM-Antrieb. Also musst du es wieder schaffen.
Manchmal gibt es keine / dev / ram-Geräte. Um eins zu machen:
aber es wird keine Größe haben. Um es Größe zu geben:
und es stoppt, wenn das Laufwerk voll ist. Die maximale Größe wird durch die Kernel - Konfiguration Parm bestimmt:
CONFIG_BLK_DEV_RAM_SIZE
.Dann formatieren Sie es einfach, dh
Und montiere es:
Ein Favorit von mir ist das Debuggen von Code, der auf einem RAM-Laufwerk gespeichert ist. Bei den Kompilierungen wird mindestens die 10-fache Codegeschwindigkeit auf einer Festplatte gespeichert. Auf RAM-Laufwerk gespeicherte Datenbanktabellen fliegen ebenfalls, aber Sie müssen über ein Skript verfügen, das regelmäßig auf die Festplatte schreibt. Die meisten Administratoren haben nicht den Mut, Daten auf RAM-Festplatten zu speichern. Und einige Tische sind zu groß.
quelle
Auf Lighthouse 64 (Puupy Linux basierend auf Slackware) habe ich das gemacht;
Dort haben Sie eine Ramdisk als Verzeichnis gemountet,
/mnt/dvd
in das Sie kopieren und speichern können. Tun Sie alles, was Sie in einem HD-Verzeichnis tun würden, außer in RAM. Denken Sie daran, Ihre Dateien vor dem Herunterfahren auf HD zu speichern.quelle