- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -

LinuxovΘ noviny 07/98

Pracovnφ soubory na ramdisku

Milan ⌐orm, 8. Φervence 1998

Donedßvna jsem byl zvykl² pracovat s Linuxem na slab╣φch strojφch s n∞kolika mßlo megabyty pam∞ti. V²konn∞j╣φ stroje byly v╛dycky p°isouzeny na podivnΘ operaΦnφ systΘmy a Linux byl degradovßn na operaΦnφ systΘm star²ch a slab²ch stroj∙.

Bohudφk se tento nßzor zaΦal vytrßcet, a tak jsem byl postaven p°ed stroj s 64 MB pam∞ti, kter² m∞l d∞lat WWW server, obsluhovat po╣tu a p°φle╛itostn∞ na n∞m m∞ly b∞╛et p°eklady. A prßv∞ ty m∞ podnφtily zab²vat se my╣lenkou, proΦ se nevrßtit do Θry MS-DOSu, kdy m∞l ka╛d² sv∙j mal² ramdisk a na n∞m p°eklßdal knihovny a svΘ programy. ╪ada v∞cφ se tφm urychlila.

Proto jsme se s kamarßdem pustili do realizace tohoto plßnu. Cht∞li jsme 32 MB ponechat beze zm∞ny, av╣ak ze zbyl²ch 32 MB ud∞lat ramdisk, na n∞j umφstit /tmp a v p°φpad∞ pot°eby do tohoto adresß°e nalinkovat je╣t∞ jinΘ adresß°e (nap°. se zdrojßky).

Nejprve bylo nutnΘ p°elo╛it jßdro s podporou ramdisku. To provede nastavenφ volby CONFIG_BLK_DEV_RAM=y v souboru .config. Jßdro se p°elo╛φ a zavede se b∞╛n²m zp∙sobem do lilo.conf. Navφc mu v╣ak p°ibude volba ramdisk=32768, kterß udßvß velikost internφho Φlen∞nφ ramdisk∙ v jßd°e. Po nabootovßnφ tohoto jßdra lze potom vyu╛φt a╛ 16 ramdisk∙ o tΘto velikosti (my pou╛ijeme jen jedin²). Tyto ramdisky jsou p°φstupnΘ p°es /dev/ram0 a╛ /dev/ram15.

My jsme cht∞li mφt ramdisk zaklßdan² b∞╛n²m init-skriptem znßm²m v RedHatu a tak jsme do /etc/rc.d/init.d ud∞lali skript nazvan² ramdisk, kter² reagoval na povely start zalo╛enφm ramdisku, namountovßnφm na /tmp a nakopφrovßnφm n∞jak²ch zßkladnφch dat z /usr/local/tmp. Na povel stop potom ramdisk odpojil. P°i tvorb∞ tohoto skriptu jsme vy╣li z podobn²ch skript∙ (nap°. pro sshd).

P°φslu╣nΘ povely pro vytvo°enφ ramdisku jsou mkfs.ext2 -b 1024 /dev/ram0 32748, kter² zalo╛φ ext2 filesystΘm na prvnφm internφm ramdisku. Tento filesystΘm bude mφt 32748 kilobytov²ch blok∙. Ne v╣echny budou vyu╛itelnΘ pro data, ale v∞t╣ina ano (Φßst zabere superblok, tabulky inod∙ apod.). P°ipojenφ filesystΘmu k /tmp provede mount -t ext2 /dev/ram0 /tmp a dßle je nutnΘ nastavit t-bit adresß°i /tmp, co╛ uΦinφ povel chmod 1777 /tmp. No a na zßv∞r u╛ staΦφ jen nakopφrovat n∞jakß implicitnφ data povelem cp -R /usr/local/tmp /.

Odpojenφ ramdisku v sekci stop zvlßdne jist∞ ka╛d² sßm. Stejn∞ tak zajistit spou╣t∞nφ tohoto skriptu v p°φslu╣n²ch b∞hov²ch ·rovnφch (3,5 apod.). A proΦ kopφrujeme implicitnφ data? Mßme n∞kterΘ ve°ejnΘ u╛ivatele, kte°φ majφ jako sv∙j domovsk² adresß° nastaveno prßv∞ /tmp a jako shell n∞jakou konkrΘtnφ informaΦnφ slu╛bu. A n∞kterΘ takovΘ slu╛by pot°ebujφ konfiguraΦnφ soubor, kter² tam nakopφrujeme tφmto zp∙sobem. Navφc mßme na /tmp napojenΘ i jinΘ adresß°e, ve kter²ch vznikajφ doΦasnß data prom∞nlivΘ velikosti.

Ramdisk lze u╛φt i jin²m zp∙sobem. Lze si nap°φklad vyrobit n∞kolik men╣φch ramdisk∙ a vytvo°it si skript, kter² u╛ivateli na po╛ßdßnφ p°ipojφ takov²to ramdisk do n∞kterΘho jeho podadresß°e v home. Takov²to u╛ivatel si na n∞m n∞co m∙╛e soukrom∞ p°eklßdat a potom zase zru╣it p°ipojenφ (p°φp. se o to m∙╛e nap°. veΦer postarat n∞jak² skript spou╣t∞n² z cronu). Fantazii se meze nekladou... *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -