original in en Mark Nielsen
en to de Christian Leber
Der Autor (Hier ist seine Homepage) arbeitet für The Computer Underground, Inc. als Linux-Profi, freut sich über alberne Dinge und denkt sich sinnlose Projekte aus. Warum? Weil Computer Spaß machen sollen. Mark arbeitet außerdem für ZING, www.genericbooks.com as freiwilliger Mitarbeiter um freie software und freie Literatur zu unterstützen.
Was ist eine RamDisk? Eine RamDisk ist ein Speicherabschnitt den man so zuweist, dass er wie eine Festplattenpartition verwendet werden kann. Oder in anderen Worten, man nimmt Speicher und täuscht vor, dass es eine Festplatte sei und speichert seine Dateien drauf. Warum sollte man eine RamDisk benutzen wollen? Gut, also es gibt einige Dateien die ständig benutzt werden, wenn man diese Dateien in den Speicher steckt, dann steigt die Performance des Computers, da der Speicher schneller als die Festplatte ist. Dinge wie Web-Server mit vielen Daten koennen auf diese Weise beschleunigt werden. Man kann auch, wenn man des Wahnsinns ist, und einen PIII 550 Mhz Computer mit 1 GB Speicher so wie einer alten 500 MB Festplatte hat, den Festplattenplatz ganz einfach auf diese Weise vergroeßern. Wenn man eine komplett festplattenlose Machine hat, scheint diese Idee nicht mehr ganz so verrückt.
Hier sind eine paar zusätzliche Resourcen die hilfreich sein könnten:
# Einen Verzeichnis zum mounten der RamDisk erstellen: mkdir /tmp/ramdisk0 # Ein Dateisystem erstellen: mke2fs /dev/ram0 # Die RamDisk mounten: mount /dev/ram0 /tmp/ramdisk0Diese drei Kommandos erstellen ein Verzeichnis für die RamDisk, formatieren die RamDisk (ein Dateisystem erstellen) und mounten die Ramdisk in das Verzeichnis "/tmp/ramdisk0". Jetzt kann man das Verzeichnis so benutzen als sei es auf einer normalen Partition!
CONFIG_BLK_DEV_RAM
.
Die voreingestellte Grösse der RamDisk liegt bei 4 MB, also 4096 Blöcke.
Man sah welche RamDisk-Grösse man erhält, während man mke2fs laufen lies.
mke2fs /dev/ram0
sollte eine Meldung erzeugt haben, die ungefähr so aussieht:
mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Linux ext2 filesystem format Filesystem label= 1024 inodes, 4096 blocks 204 blocks (4.98%) reserved for the super user First data block=1 Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group 8192 blocks per group, 8192 fragments per group 1024 inodes per group
df -k /dev/ram0
sagt einem wieviel
Speicher man davon wirklich benutzen kann:
(das Dateisystem braucht schließlich auch Platz)
>df -k /dev/ram0 Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0
Also wo ist der Harken bei der Sache? Wenn der Computer neu gestartet wird, dann ist die RamDisk natürlich leer. Also sollte man dort keine Daten lagern, die man nicht woanders hat. Wenn man Änderungen an dem Verzeichnis macht und die Änderungen behalten muss, dan muss man eine Möglichkeit finden um ein Backup von ihnen zu machen.
CONFIG_BLK_DEV_RAM
.
Den RamDisk Support als Modul zu compiliern hat den Vorteil, dass man zu
Laufzeit entscheiden kann wie gross die RamDisk sein soll.
Also zunächst der komplizierte Weg.
Man fügt diese Zeile der lilo.conf hinzu:
ramdisk_size=10000 (or ramdisk=10000 for old kernels)
Damit wird, nachdem man "lilo" eingegeben hat und neu gestartet
hat, eine Standardramdisk mit einer Grösse von 10 MB erstellt.
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz label=linux root=/dev/hda2 read-only ramdisk_size=10000Letztendlich, bekommt man etwas über 9 MB benutzbarer Speicherplatz, da das Dateisystem auch etwas Platz in Anspruch nimmt.
Wenn man den Ramdisk Support als Modul kompiliert, dann kann man zur Laufzeit entscheiden wie groß die Ramdisk sein soll. Dies macht man entweder mit einer Zeile in der /etc/conf.modules:
options rd rd_size=10000oder einem Parameter für insmod:
insmod rd rd_size=10000Das folgende Beispiel zeigt wie man das Modul benutzt:
umount /tmp/ramdisk0
.
rmmod rd
insmod rd rd_size=20000
mke2fs /dev/ram0
mount /dev/ram0 /tmp/ramdisk0
mv /home/httpd/ /home/httpd_real mkdir /home/httpd mkdir /home/httpd/cgi-bin mkdir /home/httpd/html mkdir /home/httpd/iconsDann sollte man die Folgenden Kommandos zu dem Skript der den httpd startet hinzufügen (also zB: /etc/rc.d/init.d/httpd.init) :
### Erstelle der Dateisysteme auf den Ramdisks /sbin/mkfs -t ext2 /dev/ram0 /sbin/mkfs -t ext2 /dev/ram1 /sbin/mkfs -t ext2 /dev/ram2 ### Die Ramdisks an einem geeigneten Platz in den ### Verzeichnisbaum einhängen mount /dev/ram0 /home/httpd/cgi-bin mount /dev/ram1 /home/httpd/icons mount /dev/ram2 /home/httpd/html ### Die "richtigen" Verzeichnisse (die Ramdisks verlieren ihre Daten ### schliesslich bei einem Reboot) auf die Ramdisks kopieren tar -C /home/httpd_real -c . | tar -C /home/httpd -x ### Danach kann man den web-server neu starten.