PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ramdisks unter Linux



SeeksTheMoon
25.02.04, 11:36
Ich wollte mir unter Linux eine Ramdisk anlegen um mir dort temporär ein paar Daten zur schnelleren Verarbeitung abzulegen.
Zuerst habe ich im Irrglauben gehandelt, der Kernel müsse dafür die Option für Ramdisk-Support aktiviert haben und habe mich deshalb erstmal auf diese Lösung konzentriert.
Dann habe ich erst gesehen, dass diese Ramdisk ziemlich ätzend ist, weil sie z.B. ihre Größe nicht dynamisch ändern kann, ich mir zum Erzeugen die benötigte Größe in Blöcken ausrechnen muss und jedesmal ein (ext2) Dateisystem in der Ramdisk erstellen muss, das auch für sich nochmal Platz beansprucht.

Beim googeln bin ich dann auf den guten Tipp gestoßen, tmpfs zu benutzen.
Das ist ein Pseudo-Dateisystem, das im Kernel unter der Option "Virtual memory file system support (former shm fs)" zu finden ist.

Wenn man dieses Teil im Kernel hat, dann wird das Handling der Ramdisk plötzlich viel leichter:
Man kann mit folgendem Befehl einfach das Dateisystem mounten und ist dann schon fertig mit allem:


mount /dev/shm/ -t tmpfs /mnt/ramdisk

Alles was in /mnt/ramdisk liegt, liegt nun direkt im Arbeitsspeicher.

Wer also ausreichend RAM hat, kann sich dort seinen Webserver/Fileserver ablegen (besonders bei Gigabit-LAN). Ein Gameserver, die Datenbank oder sonstige Sachen gehen selbstverständlich auch.

=> Natürlich ist beim Ausschalten alles in diesem Verzeichnis verloren, aber man kann sich fürs Booten und Anhalten des Systems ja init-Scripts schreiben, die die Daten sichern.

Für einen Stromausfall hat man besser noch eine USV parat.
Was man noch tunlichst unterlassen sollte: Man darf das Verzeichnis nicht immer voller schreiben, schließlich hat man nicht endlos RAM zur Verfügung.

Wer sehr wenig Arbeitsspeicher hat, sollte sich eh 2x überlegen, ob sich eine Ramdisk lohnt, denn wenn der Rechner auf die Platte swappen muss, weil der Speicher voll ist, dann hat das nicht viel gebracht.
Aber bei 512MB aufwärts kann das schon sehr lohnend sein und bei 4GB oder mehr ist man eh alle Sorgen los :D

nobody0
11.04.04, 22:23
Also das interessiert mich schon, aber weil ich nur 1,5 GB (in einem Rechner nur 1 GB) habe, aber 1,8 GB in Form von häufig auszuwertenden CSV-Daten habe (komprimiert 400 MB), brauche ich eine komprimierende Ramdisk.
Deshalb warte ich erstmal auf reiser4 oder ext4, die das haben.
Bisher ist es nämlich schwierig unter Linux mit komprimierenden Dateisystemen: Zu ext2 gibt's nur ein experimentelles addon, jfs hatt zwar Kompression, aber die wird vom Linux-Treiber nicht untersützt usw.. Mit jffs2 könnte man es zwar hinbekommen, bracht dafür aber erstmal ein mtd-device und anderes wie die Kernel-Ramdisk oder cloop haben zwar Ramdisk+Kompression aber nur lesbar :(
Theoretisch ginge es mit ntfs in einer Ramdisk, aber da warte ich lieber auf Reiser4 oder ext4.

Jasper
11.04.04, 23:26
Alles was in /mnt/ramdisk liegt, liegt nun direkt im Arbeitsspeicher.


nicht genau. tmpfs liegt nur im pagecache und im swap, also im sogenannten virtuellen arbeitspeicher.



Was man noch tunlichst unterlassen sollte: Man darf das Verzeichnis nicht immer voller schreiben, schließlich hat man nicht endlos RAM zur Verfügung.


siehe oben, nicht RAM sondern virtual memory.
besser ist die verwendung der mount-optionen "size" oder "nr_block/nr_inodes" um die groesse zu begrenzen.
default für size ist ram/2. wenn man size zu gross wählt kann man in böse schwierigkeiten (kernel-OOM) kommen weil der tmpfs-space (pagecache + swap) nicht ausgelagert werden kann.

ein nachteil von tmpfs ist, dass man keine files in tmpfs-volumes per loopdevice mounten kann.


-j