Categories
Internet, Unix en security

Geheugen filesystem onder Linux

Onder Solaris zijn geheugen gebaseerde filesystemen al jaren gemeengoed en zo zijn bijvoorbeeld /var/run en /tmp de meest bekende filesystemen die in geheugen worden gehouden. Linux heeft ook al flink wat jaren ondersteuning voor geheugen gebaseerde filesystemen, maar lijkt niet echt voorstanders te vinden binnen de gemeenschap. Dit terwijl er voordelen zijn omdat geheugen sneller toegankelijk is dan disk en de prijs van geheugen zorgt ervoor dat je eigenlijk niet meer op geheugen hoeft te beknibbelen.

Het eerste voorbeeld versnelt veel Linux-machines bij onder andere het stoppen en starten van het systeem, maar geeft ook minder disk IO. Veel processen schrijven een PID-file weg in de directory /var/run voor eigen gebruik of door andere applicaties. Dit is zinloze ruimte eigenlijk, want deze files zijn alleen van toepassing voor de machine in de huidige staat en hoeven dus ook geen reboot te overleven.

We voegen de onderstaande regel toe aan /etc/fstab en reboot hierna om alles files in /var/run correct op de nieuwe locatie te krijgen. Maar wat doet deze regel nu echt. Het zorgt ervoor dat er een geheugen gebaseerd filesysteem van maximaal 4MB wordt gemount op /var/run met de correcte permissies en de noexec flag. Deze laatste is niet nodig maar zorgt ervoor dat niemand daar een bestand kan plaatsen en dan kan executen.

/dev/shm   /var/run   tmpfs noexec,size=4m,mode=0755,uid=0,gid=0 0 0

Een andere plek waar veel te winnen is /tmp en zoals FHS aangeeft hoeven bestanden op deze locatie een reboot niet te overleven. Er is alleen wel een uitdaging met /tmp dat de juiste grote wordt gekozen om problemen met ruimte te kort te voorkomen. In dit voorbeeld zijn de beperkingen op wat mag met dit filesysteem wat scherper gezet en behoeft bij oa Debian wat aanpassingen aan APT. Ook is er een limiet gezet van maximaal 256MB, maar deze kan online met een remount worden vergroot en verkleint.

/dev/shm   /tmp   tmpfs noexec,nosuid,nodev,size=256m,mode=7777,uid=0,gid=0 0 0

Wat levert het op? Minder disk IO en iets snellere applicatie, want een gemiddelde disk haalt z’n 20MB per seconde en hedendaags geheugen als minimaal 1800MB per seconde. Dit is dan ook iets wat voor applicaties met veel tijdelijke bestanden zoals bij amavisd-new een grote performance impact kan hebben. Ook levert dit inzichten op om te kijken of Linux zonder disken kan werken of met een minimale disktoegang mogelijk is. Iets wat nu bij Flashdrives al een voordeel heeft om de levensduur te verlengen van een Flashdrive door het aantal writes te beperken.

Het levert ook besparing qua energie en warmte op doordat disken meer in idle-state kunnen verkeren en zometeen als Linux 2.6.25 a 2.6.26 beschikbaar komen ook de SATA-link op een lager vermogen kunnen laten draaien. Dit laatste is nog vrij experimenteel, maar de technologie is er en komt beschikbaar. Ik gebruik de technologie van geheugen gebaseerde filesystem nu al een tijdje en de machines zijn stiller geworden omdat er minder vaak naar disk wordt geschreven.

By Hans Spaans

Unix & security consultant with a passion for Linux, Solaris, PostgreSQL, Perl and network services, but also a strong believer in open and free source, standards and content.

One reply on “Geheugen filesystem onder Linux”

In het voorbeeld van /tmp staat een grote van 256MB, maar 512MB is mischien beter als je langere films kijkt op Google Video.

Comments are closed.