Neben tmpfsund ramfsist eine weitere Option das /dev/ram0Blockiergerä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 ext4Dateisystem 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_nrParameter gibt an, wie viele RAM-Festplatten erstellt werden sollen (standardmäßig werden 16, dh /dev/ram0bis, erstellt /dev/ram15). Der rd_sizeParameter 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 brdKernelmodul:
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 truncateBefehl 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 tmpfsundramfs
Obwohl tmpfsund ramfseffizienter als die Verwendung eines Blockgeräts, sind im Folgenden einige ihrer Nachteile aufgeführt.
tmpfskann 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.
ramfsEs 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 dfDienstprogramm 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 ramfsan das Ziel, mein System reagiert nicht mehr. Das cpDienstprogramm füllte anscheinend die Lücken beim Lesen , aber nicht beim Schreiben.
Beide tmpfsund ramfsverhalten sich möglicherweise anders als ein echtes ext4Dateisystem. Das Erstellen eines Blockgeräts im RAM und das Initialisieren mit ext4diesem 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