Hlavní navigace

Ramdisk v jádrech 2.4.x

Martin Froněk 25. 9. 2001

Někteří z vás se již možná s větším či menším úspěchem pokoušeli koketovat s ramdiskem v linuxových jádrech 2.4.x Tento článek vám pomůže ramdisk vytvořit, úspěšně používat, a upozorní vás na případná úskalí této technologie.

Většině z vás není jistě třeba ramdisk představovat, ale pokud by snad někdo nevěděl, o čem je řeč, krátce tuto techniku popíšu. Ramdisk je vyhrazená oblast paměti, která funguje jako velmi rychlý disk. V minulosti to nebylo nijak zajímavé, protože paměti RAM byly velmi drahé, a tak nebylo používání ramdisků příliš běžné. Dnes je vše jinak, 256 MB paměti můžete pořídit okolo 1300,– Kč bez DPH. Proto také vznikl tento článek, který má za cíl naučit vás efektivně ramdisk používat.

Ramdisk je podporován mimo jiné i přímo v jádře dodávaném s RH 7.1 (všechny informace se týkají jádra 2.4.x z distribuce Red Hat Linux 7.1, čímž nechci hodnotit ostatní distribuce) a ve výchozím nastavení má velikost 4MB. To může postačovat pro testování funkčnosti ramdisku, my si ale ukážeme, jak lze nastavit velikost podle našich potřeb. Výchozí nastavení změníte zápisem řádky:

ramdisk=X

do souboru /etc/lilo.conf, přičemž X je velikost ramdisku v Kb, tedy například 32000 znamená velikost ramdisku 32MB. Optimální velikost ramdisku je asi 1/3 fyzické paměti, máte-li 128MB a víc RAM. Nezapomeňte po úpravě souboru /etc/lilo.conf spustit příkaz lilo, aby byly provedené změny platné. Existuje i jiný způsob nastavení velikosti ramdisku, ale při jeho použití jsem měl problémy (rozsypala se mi znaková sada), a proto jej zde raději neuvádím.

Tímto postupem nastavíme velikost ramdisku, ale stále jej ještě není možné používat. Nejprve je vhodné paměť přidělenou pro ramdisk vyčistit. Nejlépe to provedete kopírováním ze zařízení /dev/null příkazem:

dd if=/dev/null bs=1024 of=/dev/ramdisk count=X

kde X je velikost ramdisku v Kb. Doporučuji stejnou hodnotu jako v parametru ramdisk v souboru /etc/lilo.conf. Nastavením menší hodnoty nebude vynulována celá oblast paměti, vyšší hodnota způsobí chybové hlášení. V některých distribucích nemusí být v adresáři /dev přítomen symlink ramdisk, v takovém případě použijte zařízení  /dev/ram0.

Dále je nutné vytvořit v ramdisku souborový systém. To zajistí příkaz

mkfs.ext2 /dev/ramdisk

Někdo může namítnout, že by byl vhodnější jiný souborový systém – nic tomu nebrání, ramdisk může být provozován s jakýmkoliv souborovým systémem. Dále je nutné připojit tento svazek do adresářového stromu, což lze provést zcela běžným příkazem

mount /dev/ramdisk /data/ramdisk

kde prvním parametrem je připojovaný svazek, druhým parametrem je místo ve stromu adresářů, odkud bude ramdisk přístupný. Výše uvedený příklad předpokládá, že je vytvořen adresář /data/ramdisk.

Takto vytvořený ramdisk můžeme používat, ale při ukončení běhu systému jsou zde uložená data ztracena. V některých případech to nevadí, ale většinou budeme chtít data někam uložit a při dalším startu systému opět zpřístupnit. Toho lze dosáhnou následujícím způsobem.

Data z ramdisku zkopírujeme do souboru /data/ramdisk.img příkazem:

dd if=/dev/ramdisk bs=1024 of=/data/ramdisk.img

Takto zkopírujeme celou paměťovou oblast ramdisku, bez ohledu na použitý souborový systém a strukturu adresářů. Jedná se o nejrychlejší možný způsob uchování informací z ramdisku. Pokud provedeme předchozí příkaz, bude v souboru /data/ramdisk.img uložen obsah ramdisku, který lze do paměťové oblasti ramdisku opět umístit pomocí příkazů:

umount /dev/ramdisk
dd if=/data/ramdisk.img bs=1024 of=/dev/ramdisk
mount /dev/ramdisk /data/ramdisk

Celý postup lze shrnout do jednoduchého skriptu, na něj poté udělat symbolické linky v adresářích /etc/rcx.d  – a nemusíme se již o nic starat, systém to udělá při ukončení respektive startu za nás.

Příklad skriptu je zde:

#!/bin/sh
#
# description: Starts and stops RAMDISK

# Source function library.
. /etc/rc.d/init.d/functions

# Check that ramdrive.conf exists.
[ -f /etc/sysconfig/ramdisk ] || exit 0
if [ -f /etc/sysconfig/ramdisk ] ; then
   . /etc/sysconfig/ramdisk
fi

# See how we were called.
case "$1" in
  start)
        action $"Starting RAMDISK: ${IMAGE}" \
        dd if=${IMAGE} bs=1024 of=/dev/ramdisk
        fsck /dev/ramdisk
        mount /dev/ramdisk ${MOUNTPOINT}
        touch /var/lock/subsys/ramdisk
        ;;
  stop)
        action $"Shutting down RAMDISK: ${IMAGE}" \
        dd if=/dev/ramdisk bs=1024 of=${IMAGE} 2>/dev/null
        umount /dev/ramdisk
        echo
        rm -f /var/lock/subsys/ramdisk
        ;;
  restart)
        echo -n "Restarting RAMDISK: "
$0 stop
        $0 start
        echo "done."
;;
  *)
        echo "Usage: ramdisk {start|stop|restart}"
exit 1
esac

V tomto skriptu je ještě použit konfigurační soubor /etc/sysconfig/ramdisk, ve kterém je v proměnných prostředí ${IMAGE}, ${MOUNTPOINT} uvedeno, kde se nachází soubor ramdisk.img a kam se má ramdisk připojit ve stromu adresářů. Není nutné tento soubor použít, ale sníží se tím riziko chyby a tím i ztráty dat.

Ještě zbývá umístit patřičné symlinky do adresářů /etc/rc.d/rc3.d, /etc/rc.d/rc0.d a /etc/rc.d/rc6.d (na RH, jiné distribuce mohou používat poněkud odlišnou strukturu startovacích skriptů).

Do adresáře /etc/rc.d/rc3.d umístíme symlink nazvaný například  S82ramdisk.

Do adresáře /etc/rc.d/rc0.d umístíme symlink nazvaný například  K02ramdisk.

Do adresáře /etc/rc.d/rc6.d umístíme symlink nazvaný například  K02ramdisk.

Tyto názvy jsou v distribuci RH7.1 nepoužité.

Dobře si prohlédněte ukázkový skript. Především si všimněte, že při ukončení činnosti ramdisku je nejprve jeho obsah uložen do souboru, a teprve potom je ramdisk uvolněn příkazem umount. (pro tento časový úsek je pochopitelně záhodno zajistit, aby s obsahem ramdisku nikdo nepracoval – pozn. redakce)

Ramdisk je vhodné používat pro ukládání velmi rychle se měnících dat, která musí být také rychle k dispozici – lze do něj např. ukládat databázové soubory či podobná data. Osobně používám ramdisk ke sdílení souborů databázového charakteru prostřednictvím Samby mezi uživateli platformy Windows. Oproti klasickému disku došlo k více než stonásobnému zrychlení vyhledávání. Doufám, že vám tento článek bude nápomocný při tvorbě vašeho vlastního ramdisku.

Našli jste v článku chybu?

15. 6. 2004 23:38

dejvyd (neregistrovaný)

Co tahle? Microstar 865PE NEO2-PFS
Popis: Chipset Intel 865PE, CPU P4 do 3,6GHz/800MHz socket 478 připraveno pro Prescott, FSB 800/533/400(pouze Northwood) MHz , IDE ATA 66/100, 2x SATA /150 raid 0 nebo 1, Dual channel DDR266/333/400/433/466/500/533 MHz max 4GB, 5xPCI, 1xAGP 8x/4x. Bratru za 2700 bez DPH...


6. 9. 2002 14:32

Petr (neregistrovaný)

MAN TMPFS

tmpfs puts everything into the kernel internal caches and grows and
shrinks to accommodate the files it contains and is able to swap
unneeded pages out to swap space. It has maximum size limits which can
be adjusted on the fly via 'mount -o remount ...'

If you compare it to ramfs (which was the template to create tmpfs)
you gain swapping and limit checking. Another similar thing is the RAM
disk (/dev/ram*), which simulates a fixed size hard disk in physical
RAM, where you h…









Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Drahé i levné. Tyhle potraviny nosili na charitu

Drahé i levné. Tyhle potraviny nosili na charitu

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: EET v e-shopech? Zdražení a horší komfort

EET v e-shopech? Zdražení a horší komfort

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

Měšec.cz: Golfové pojištění: kde si jej můžete sjednat?

Golfové pojištění: kde si jej můžete sjednat?

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?