original in en Mark Nielsen
en to nl Tom Uijldert
Nedit
en ispell
.
Wat is een Ramdisk? Een Ramdisk is een deel van het primaire geheugen, wat je gebruikt als een partitie (deel van een schijf). Met andere woorden: neem een deel van het geheugen, doe alsof het een disk is en schrijf er bestanden naar toe. Waarom een RAM disk? Welnu, als je weet dat er bestanden zijn die je véél gebruikt, dan zal het plaatsen van die bestanden in RAM (Random Access Memory of intern geheugen) een gunstige invloed hebben op de prestaties van het systeem, omdat geheugentoegang veel sneller is dan disktoegang. Dingen als webservers met veel data kunnen op die manier worden versneld. Of, als je een tik van de molen hebt en een PII 550 MHz met 1 Gb geheugen en ouwe 500 Mb harde schijf, dan kun je het geheugen gebruiken om alleen de capaciteit van je schijf te vergroten. Hoewel, als je een machine zonder al teveel schijfcapaciteit wilt gebruiken, dan is het misschien zo gek nog niet.
Hier wat aanwijzingen om je daarbij te helpen:
mount
). Om te
ontdekken welke Ramdisks er zijn, moet je $ ls –al /dev/ram* uitvoeren. Dit
laat je de beschikbare schijven zien, waaruit je kunt kiezen. Een dergelijke schijf gebruikt geen
ruimte totdat je hem aanspreekt (zoals bij het formatteren). Hier een eenvoudig voorbeeld hoe de
Ramdisk te gebruiken.
# maak een directory aan voor de schijf: mkdir /tmp/ramdisk0 # maak het bestandssysteem aan: mke2fs /dev/ram0 # maak de Ramdisk beschikbaar: mount /dev/ram0 /tmp/ramdisk0Deze drie commando's maken een directory aan voor de Ramdisk, formatteren de schijf (een bestandssysteem er op aanmaken) en maken hem beschikbaar onder de directory /tmp/ramdisk0. Je kunt nu de directory gebruiken als zijnde een partitie! Probeer maar en gebruik het als elke andere directory of partitie.
CONFIG_BLK_DEV_RAM
.
De standaard grootte van de Ramdisk is 4 Mb=4096 blokken. De grootte van de schijf heb je
kunnen zien tijdens het uitvoeren van mke2fs
. Het commando $
mke2fs /dev/ram0 zou het volgende op moeten leveren:
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 groupUitvoeren van het commando $ df –k /dev/ram0 geeft je de hoeveelheid die je daarvan werkelijk kan gebruiken (het bestandssysteem neemt ook wat ruimte in beslag):
>df -k /dev/ram0 Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0Zitten er ook nadelen aan? Nou, als de computer herstart, ben je alles kwijt. Geen data neerzetten dus die ook niet ergens anders al staat. Als je veranderingen maakt in de directory die je wilt behouden dan moet je één of andere back-up zien te maken.
CONFIG_BLK_DEV_RAM
. Gecompileerd als loadable module
heeft het voordeel dat je tijdens het laden kunt kiezen welke grootte de schijf moet hebben.
Ok, eerst via de moeilijke weg. Voeg de volgende regel toe aan het bestand
lilo.conf
:
Ramdisk_size=10000 (of Ramdisk=10000 voor oudere
kernel versies)
Linux zal een 10 Mb Ramdisk aanmaken nadat je het lilo
commando hebt gegeven en de machine vervolgens herstart. Hier een voorbeeld van mijn
/etc/lilo.conf
bestand.
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=10000In de praktijk heb ik 9 Mb ter beschikking, het bestandssysteem neemt ook wat ruimte.
Met Ramdisk ondersteuning gecompileerd als loadable module kan je tijdens het
laden beslissen wat de grootte wordt. Dit kan door een regel op te geven in het bestand
/etc/conf.modules
:
options rd rd_size=10000of als parameter van het commando
insmod
.
$ insmod rd rd_size=10000Hier is een voorbeeld hoe de module te gebruiken:
umount
van de Ramdisk die je in de vorige paragraaf beschikbaar
hebt gemaakt; $ umount /tmp/ramdisk0
mv /home/httpd/ /home/httpd_real mkdir /home/httpd mkdir /home/httpd/cgi-bin mkdir /home/httpd/html mkdir /home/httpd/iconsVoeg dan de volgende commando's toe aan de startprocedure in
/etc/rc.d/init.d/httpd.init
(of dáár waar jouw
httpd
wordt gestart):
### Maak de Ramdisk parities aan /sbin/mkfs -t ext2 /dev/ram0 /sbin/mkfs -t ext2 /dev/ram1 /sbin/mkfs -t ext2 /dev/ram2 ### Maak ze beschikbaar op de juiste plaatsen mount /dev/ram0 /home/httpd/cgi-bin mount /dev/ram1 /home/httpd/icons mount /dev/ram2 /home/httpd/html ### Kopieer de originele directory naar de Ramdisk(data ### op Ramdisk verdwijnt na een herstart) tar -C /home/httpd_real -c . | tar -C /home/httpd -x ### Nu kun je de webserver starten.
/tmp
". Wanneer je veel processen hebt die gebruik maken van
/tmp
dan kan dit de computer aardig versnellen. Tevens is alles weg uit
/tmp
als de computer herstart, wat een voordeel kan zijn.