Neben tmpfs
und ramfs
ist eine weitere Option das /dev/ram0
Blockiergerät. In neueren Ubuntu-Versionen ist dieses Gerät nicht standardmäßig vorhanden, kann jedoch über erstellt werden modprobe brd
.
Dieser Ansatz ist vorhersehbarer, da er ein reales ext4
Dateisystem erstellt und den von Ihnen angegebenen Grenzwert nie überschreitet. Das Einrichten erfordert jedoch mehr Schritte und die Verwendung des Arbeitsspeichers ist weniger effizient.
Verwenden des brd-Kernelmoduls (/ dev / ram0)
So erstellen und initialisieren Sie eine 4-GB-RAM-Disk:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
Der rd_nr
Parameter gibt an, wie viele RAM-Festplatten erstellt werden sollen (standardmäßig werden 16, dh /dev/ram0
bis, erstellt /dev/ram15
). Der rd_size
Parameter ist die Größe in Kilobyte . Mit der $(( ... ))
Syntax können Sie in der Shell arithmetisch arbeiten.
Um die Zuordnung der RAM-Festplatte aufzuheben, heben Sie die Bereitstellung auf und entfernen Sie das brd
Kernelmodul:
umount /ramdisk
modprobe -r brd
Erstellen eines Blockgeräts im Inneren ramfs
Alternativ können Sie ein Blockgerät erstellen in ramfs
:
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
Der truncate
Befehl erstellt eine leere Datei einer bestimmten Größe, sodass sie bei Bedarf initialisiert wird (dh Speicherplatz verbraucht).
Um die Zuordnung der RAM-Festplatte aufzuheben, müssen Sie die Bereitstellung aufheben und das Festplatten-Image löschen:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Vergleich mit tmpfs
undramfs
Obwohl tmpfs
und ramfs
effizienter als die Verwendung eines Blockgeräts, sind im Folgenden einige ihrer Nachteile aufgeführt.
tmpfs
kann auf die Festplatte tauschen. Dies ist effizienter, aber es kann vorkommen, dass Sie eine reine RAM-Festplatte benötigen:
- Die Dateien, mit denen Sie arbeiten, sind vertraulich (z. B. Dateien von einer verschlüsselten Partition).
- Sie führen Leistungstests durch und möchten nicht, dass die Festplatten-E / A ein Faktor ist (die SSD-Schreibzeiten können sehr unterschiedlich sein).
- Sie entpacken eine große Datei und möchten Ihre SSD nicht verschleißen.
ramfs
Es ist einfach einzurichten, beansprucht Speicherplatz, sobald Sie Dateien löschen, und nutzt den Arbeitsspeicher effizienter (das System puffert die Dateien nicht, da es weiß, dass sie sich im Arbeitsspeicher befinden). Aber es hat seine eigenen Nachteile und Überraschungen:
Das df
Dienstprogramm gibt keinen Speicherplatzverbrauch an:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Es gibt keinen Größenbegrenzungsparameter. Wenn Sie zu viel in die Ramdisk stecken, bleibt Ihr System hängen.
Spärliche Dateien können unsparend werden, wenn Sie es am wenigsten erwarten. Heute Morgen habe ich ein VM-Image (150 G, aber 49 G auf der Festplatte) nach ramfs
(ich habe 128 G RAM) kopiert. Das hat funktioniert. Aber wenn ich kopierte von der ramfs
an das Ziel, mein System reagiert nicht mehr. Das cp
Dienstprogramm füllte anscheinend die Lücken beim Lesen , aber nicht beim Schreiben.
Beide tmpfs
und ramfs
verhalten sich möglicherweise anders als ein echtes ext4
Dateisystem. Das Erstellen eines Blockgeräts im RAM und das Initialisieren mit ext4
diesem verhindert dies.
Für einen tieferen Vergleich: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs