ot Nick Angelow(21-09-2004)

reiting (27)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

SUZDAVANE NA FAILOVI SISTEMI
http://unix.ginras.ru/linux/base007.html

Aleksei Fedorchuk


Suzdavaneto na failovi sistemi vurhu diskovite dialove (ili kazano s terminite na DOS/Windows, formatiraneto na dialovete) e vtoriiat etap ot podgotovkata na diska za instalatsiia na Linux. Samo po sebe si tova deistvie ne e ot nai-slozhnite, no osuznatoto mu izpulnenie iziskva niakakva podgotovka.


SUDURZHANIE
UVOD

Terminut “failova sistema” e edin ot nai-mnogoznachnite v kompyuturnata terminologiia vuobshte i v literaturata, svurzana s operatsionnata sistema Unix i neinite klonove (a Linux se otnasia imenno kum tiah) v chastnost. Goliamo znachenie ima po-tochno dumata “sistema”. Neshtata sa se razvili istoricheski po tozi nachin i zatova se nalaga da se opredelia znachenieto na termina spored konteksta. Na men sa mi izvestni pone pet znacheniia, kato ne sum siguren, che tova sa vsichki vuzmozhni znacheniia.

Purvo, failova sistema ili poniakoga podsistema narichat chastta ot iadroto, koiato upravliava organizatsiiata na failovete i operatsiite nad tiah. V tozi aspekt, zaedno s failovata sistema rolia igrae i sistemata za upravlenie na protsesite i sistemata za vhod/izhod. Mezhdu drugoto, imenno tova znachenie nie zasega niama da razglezhdame.

Vtoro, spetsifichno za Unix i Unix-podobnite operatsionni sistemi, failovata sistema e universalen interfeis za dostup do vsichki resursi kakto na lokalnata mashina, taka i na mashini, obedineni v mrezha po proizvolen nachin – ot modemna vruzka do sputnikov kanal. Imenno izpolzvaneto na takuv interfeis v niakoia operatsionna sistema e edna prichinite za prichisliavaneto i kum semeistvoto na Unix-podobnite.

Treto, failovata sistema e metod za opisanie na niakakvo fizichesko ustroistvo (obiknoveno diskov dial). Imenno tova znachenie se izpolzva v termina “identifikator na tipa failova sistema”, za koito se govoreshe v statiiata za diskovite dialove. Obiknoveno toi e spetsifichen za konkretnata operatsionna sistema i zatova tuk sa umestni terminite “DOS-dial”, razshiren (extended) dial na DOS, dial Linux native i taka natatuk. Makar che povecheto istinski operatsionni sistemi mogat po edin ili drug nachin da poznaiat “nestandartnite” za tiah identifikatori i da se obrushtat kum tiah za danni. A v Linux kato “vgradeni” (native) se razglezhdat diskovite dialove, identifitsirashti tsial red failovi sistemi v tretoto znachenie na termina – ot naistina vgradenata Linux native do extended DOS, vklyuchitelno i logicheskite (LVM) dialove, za koito shte stane v suotvetnite statii.

Tuk triabva da otbelezhim, che pokrai fizicheskite failovi sistemi (tezi, koito nadstroivat realnite diskovi ustroistva, zashtoto v tozi kontekst neriadko figurira izraza disk based file system), sushtestvuvat i virtualni failovi sistemi ot razlichen tip. Kum tiah spadat failovata sistema na ustroistvata devfs, vremennata failova sistema v operativnata pamet tmpfs i procfs – sistemata, predstaviashta protsesite vuv vid na failova sistema (suzhaliavam za tavtologiiata). Poniakoga se izpolzvat i failovi sistemi ot mezhdinen tip, naprimer virtualni diskove (RAM diskove). Podobno na tmpfs, te sushtestvuvat samo v operativnata pamet, no vuv vsichko ostanalo imat povedenieto na fizicheskite (disk based) failovi sistemi.

CHetvurto, pod failovi sistemi se razbira vutreshnata upravliavashta struktura, pozvoliavashta da suhraniavame, identifitsirame i namirame danni, kakto i da gi manipulirame. Takiva strukturi, ot edna strana, sa spetsifichni za operatsionnite sistemi, kato FAT16 (s vsichkite neini variatsii VFAT ili FAT32) za DOS, UFS za FreeBSD ili ext2fs za Linux. Ot druga strana, strukturite za upravlenie na failovete v reditsa operatsionni sistemi se postroiavat po blizki printsipi, kato nai-iarki primeri za tova sa failovite sistemi na Unix i Unix-podobnite operatsionni sistemi. I poradi koeto, te mogat da budat obedineni v edno semeistvo, protivopostaviashto se, naprimer, na FAT semeistvoto.

Osven tova, Linux v momenta mozhe da raboti s upravliavashti strukturi ot razlichen tip – ot ext3fs, predstavliavashta nadstroika na traditsionnata ext2fs, do XFS i JFS, purvonachalno razraboteni za Unix suotvetno ot SGI i IBM, kakto i ReiserFS. Niama zabrana i za razpolaganeto na Linux na failova sistema FAT (makar sushto taka da niama i prichini za tova).

SHTe dobavia, che v spisuka, izbroen v gorniia paragraf sa vklyucheni samo failovi sistemi, sposobni da nosiat osnovnite komponenti na Linux, otgovorni za neinoto startirane i minimalna funktsionalnost. Kolkoto do obmena na danni – toi e vuzmozhen ot Linux prakticheski s vsichki izvestni failovi sistemi, makar che s niakoi ot tiah (primerno NTFS ili HPFS) obmenut na danni e vuzmozhen samo v rezhim na chetene.

I peto, posledno, failovata sistema v Unix e i logicheska struktura na direktorii i failove, koiato obediniava i fizicheski i virtualni failovi sistemi ot nai-razlichen tip (naprimer diskovi dialove s ext2fs i FAT16, virtualnite procfs, devfs i tmpfs), pri tova ne samo ot lokalnata mashina, no i na vsiaka otdalechena mashina. Strukturata e ierarhichna (durvovidna), zapochvashta s korenna direktoriia (/), koiato se iaviava roditel na vsichko ostanalo, ot koiato se razkloniavat otdelni failove i dushterni direktorii, koito na svoi red mogat da budat roditelski po otnoshenie na poddirektorii ot po-dulboki niva na vlagane.

Polozhenieto na neshtata v momenta e takova, che v Linux, strukturata na failovata sistema obiknoveno e spetsifichna za konkretnata distributsiia ili grupa distributsii, svurzani s obsht proizhod. Zatova chesto se sreshtat izrazi kato failovata sistema na Red Hat ili Debian. Imenno tezi istoricheski suzdali se razlichiia v ierarhiiata na direktoriite se iaviavat ediniiat ot kriteriite, po koito se obosobiavat razlichnite linii distributsii na Linux, kakto i potentsialna prichina za tiahnata nesuvmestimost. No mozhe da se nadiavame, che usiliiata na standartizirashtite organizatsii, kato Linux Standard Base i Filesystem Hierarchy Standard, (ruskiiat prevod [1] na standarta e na saita na Viktor Kostromin), shte se uvenchaiat s uspeh i shte mozhe da govorim za edinna logicheska failova sistema na Linux, podobna na tazi, koiato e v operatsionnite sistemi ot semeistvoto na BSD.

V konteksta na nastoiashtata statiia, nas ni interesuva samo chetvurtiia aspekt na failovite sistemi – suzdavaneto na upravliavashti failovete strukturi, bazirani na diskove (po-tochno na tehnite dialove).


USTROISTVO NA FAILOVITE SISTEMI OT SEMEISTVOTO NA UNIX

V tozi razdel shte govorim za neshta, obshti za vsichki Unix operatsionni sistemi. Vsichki failove v Unix fizicheski se sustoiat ot dve chasti, realno razpolozheni v razlichni blokove na diska, no zadulzhitelno namirashti se na edin i susht diskov dial, bil toi purvichen ili logicheski.

Purvata chast na faila, negovite taka narecheni metadanni, koito sudurzhat failoviia deskriptor (niakakvo unikalno chislo), svedeniia za negovite atributi (prinadlezhnost, prava za dostup, vreme na modifikatsiia i t. n.), a sushto i informatsiia za tova, v koi blokove na diskoviia dial (koito taka i se narichat – blokovi danni) fizicheski se namira sudurzhanieto na faila – posledovatelnostite ot baitove, koito obrazuvat dostupen za potrebitelia ASCII tekst ili izpulnim modul na programa.

Metadannite za vseki fail sa zapisani v spetsialna oblast na diska, narechena superblok, kudeto obrazuvat taka narechenite inodes (ot information nodes – informatsionni vuzli). Na vseki sushtestvuvasht fail otgovaria sobstven inode i imenno toi ednoznachno se identifitsira s failoviia deskriptor. Sam po sebe si, spisukut s tezi informatsionni vuzli, otgovariashti kakto na sushtestvuvashti failove, taka i na svobodni blokove ot diskoviiat dial, opredelia granitsite na failovata sistema, toest kolko faila mogat da budat suzdadeni v neia.

Po tozi nachin, sushtnostta na protsesa na suzdavane na failova sistema na edin diskov dial (ili kazano s terminologiiata na DOS/Windows – negovoto formatirane) e suzdavaneto na tozi superblok (v niakoi failovi sistemi – na niakolko negovi kopiia), spisuka s informatsionnite vuzli (inodes) i otdelianeto na diskovo prostranstvo za blokovete s danni (a sushto i za blok za zarezhdane, za koito shte bude spomenato po-dolu), a ustroistvoto na tezi diskovi oblasti se opredelia ot razlichiiata mezhdu failovite sistemi ot razlichen tip. V rezultat na tova, na noviia dial se suzdava edin edinstven fail – korennata direktoriia (za dadenata failova sistema) na diala (v niakoi sluchai se suzdava oshte edna direktoriia, /lost+found, prednaznachena za suhraniavane na povredeni ili zagubeni failove).

Vuznikva vuprosa, zashto takuv neotmenim atribut na faila, kato negovoto ime, ne se namira nito v negovite metadanni, nito dazhe v negovite danni? Otgovorut e prost – v Unix imeto na faila se iaviava samo po sebe si ne atribut na faila, a na failovata sistema (v petoto, logichesko razbirane na termina). I za suhranenie na imenata na failovete sa prednaznacheni failove ot osoben tip – direktoriite (v Unix ima i drugi tipove failove, naprimer spomenatite predi failove na ustroistva). Te predstavliavat prosto spisuk na failovite deskriptori na identifikatorite i otgovariashtite im imena na failove. Zatova, idvashtata ot MacOS i aktivno izpolzvana vuv Windows metafora direktoriia kato papka s dokumenti, v Unix samo zamugliava sushtnostta na neshtata – tuk po-skoro tova e katalozhno chekmedzhe v biblioteka.

Nezavisimo ot prostoto ustroistvo, roliata na direktoriite vuv failovata sistema na Unix e trudno da se otseni – imenata na failovete, chrez koito te se vklyuchvat vuv failovata sistema (i chrez koito potrebitelia poluchava dostup do tiahnoto sudurzhanie), figurirat samo v sustava na direktoriiata, kum koiato faila e opisan i nikude poveche v sistemata. Po tozi nachin otstraniavaneto na imeto na faila (ili poddirektoriiata) ot spisuka, predstavliavasht dannite na negovata roditelska direktoriia (koiato, razbira se, ima sobstven informatsionen vuzel inode i failov deskriptor, svurzani kum direktoriiata, razpolozhena edno nivo nagore v ierarhiiata na failovata sistema i taka natatuk) e ravnosilno na tova, metadannite na faila da stanat nedostupni, a svurzanite kum negoviia informatsionen vuzel blokove s danni da se markirat kato svobodni. Imenno po tozi nachin se osushtestviava otstraniavaneto na failovete ot komandata rm ili ot failov menidzhur ot tipa na Midnight Commander [2].

Samo che nas sega ni interesuva tochno obratnoto – kak da napravim dostupna failovata sistema. Ot kazanoto dosega stava iasno, che za tazi tsel tia sus tsialoto si sudurzhanie (superbloka, spisuka s informatsionnite vuzli, blokovete danni) triabva da bude vklyuchena v sustava na niakoia ot sushtestvuvashtite direktorii, narechena tochka na montirane. Imenno tova e sushtnostta na protsesa na montirane. Rezultatut za montiruemite failovi sistemi e, che korennata direktoriia, koiato dosega e bila bez ime poluchava imeto na direktoriiata – tochka na montirane (mount point), sudurzhanieto na koiato predstavliava spisuk ot imenata na neinite failove i poddirektorii.


FAILOVITE SISTEMI NA LINUX


Ext2fs

Do neotdavna spisukut na poddurzhanite (native) failovi sistemi za Linux beshe ogranichen do edna edinstvena – ext2fs (viarno e, che Linux mozhe da se zaredi i raboti s FAT dial, no zatova dazhe ne mi se govori). Nazvanieto na tazi failova sistema se razshifrova kato “vtora razshirena failova sistema” – “razshirena” v sravnenie s failovata sistema na operatsionnata sistema Minix, posluzhila za prototip na Linux, “vtora” – zashtoto rannite versii na Linux izpolzvaha extfs s po-ogranicheni vuzmozhnosti.

Za failovata sistema ext2fs e pisano nemalko (gledaite dopulnitelnite iztochnitsi). Zatova shte otbelezha samo, che po nachina na organizirane na suhranenieto na dannite, tia e tipichen predstavitel na failovite sistemi ot semeistvoto na Unix. Neina otlichitelna osobenost e nalichieto na niakolko kopiia na superbloka, koeto uvelichava nadezhdnostta na suhranenie na dannite. Osven tova, tia ima harakteren, mnogo efektiven mehanizum za keshirane na diskovite operatsii, koeto osiguriava zabelezhitelnoto im burzodeistvie – tia e edna ot nai-burzite mezhdu izvestnite mi failovi sistemi. Obratnata strana na tova burzodeistvie e otnositelno niskata ustoichivost pri avariino zavurshvane na rabotata (vsledstvie na blokirane na kompyutura ili spirane na zahranvaneto), tui kato otlozheniiat zapis na izmenenieto na failovete uvelichava veroiatnostta za narushavane na vruzkata mezhdu tehnite informatsionni vuzli i blokovete s danni.

Razbira se, vremenata, kogato nekorektnoto spirane na mashini s Linux mozheshe da dovede do pulno razrushavane na failovata sistema, ostanaha v dalechnoto minalo. No vuv vseki sluchai, spiraneto na sistemata bez standartno demontirane na failovite sistemi vodi do tova, che v tiah ne se ustanoviava taka narecheniia “bit za chisto demontirane”. A bez nego, programite za obsluzhvane na diska (takiva, kato programata za proverka fsck) pri prezarezhdaneto na sistemata niama da gi vuzpriemat kato tseli i shte zapochne proverka, koiato pri suvremennite obemi na diskovete mozhe da otneme dosta vreme.


Za zhurnalnite failovi sistemi

Problemut s narushavaneto tsialostta na failovata sistema pri nekorektno zavurshvane na rabotata v po-goliama ili po-malka stepen e harakteren za vsichki operatsionni sistemi ot semeistvoto na Unix. I zatova ot mnogo vreme v tiah se razrabotvat taka narechenite zhurnalni failovi sistemi. Dnevnikut [3] e neshto podobno na log-fail na diskovite operatsii, v koito se otbeliazvat ne izvurshenite, a predstoiashtite deistviia s failovete, vsledstvie na koeto e vuzmozhno samovuzstanoviavaneto na tsialostta na failovata sistema sled sriv.

Za izbiagvane na nedorazumeniia, triabva da podchertaia, che protokoliraneto e nasocheno kum osiguriavane tsialostta na failovata sistema, no v nikakuv sluchai ne garantira suhraniavaneto na potrebitelskite danni kato takiva. Taka, che ne triabva da ochakvate, che protokoliraneto po vulsheben nachin shte vuzstanovi nezapazenite predi sriva promeni v dokumenta, zareden v tekstoviia redaktor.

Neshto poveche, v povecheto zhurnalni sistemi se fiksirat budeshtite operatsii samo nad metadannite na promenianite failove. Obiknoveno tova e dostatuchno za suhraniavane na tsialostta na failovata sistema i vuv vseki sluchai predotvratiava dulgotraeshtite proverki, no ne predotvratiava zagubite na danni pri avariini situatsii. V niakoi ot failovite sistemi e vuzmozhno protokolirane na deistviiata i v oblastta za danni na faila. No, kakto vinagi, povishavaneto na nadezhdnostta e za smetka na namaliavane na burzodeistvieto.

Tekushtite versii na iadroto na Linux podurzhat chetiri vgradeni zhurnalni failovi sistemi – ReiserFS i ext3fs, spetsifichni za neia i XFS i JFS – kato rezultat ot portvaneto v Linux na failovite sistemi, purvonachalno razraboteni za rabotni stantsii pod upravlenieto suotvetno na operatsionnite sistemi Irix (SGI) i AIX (IBM). SHiroko priznanie poluchiha samo purvite tri sistemi, poradi koeto zasega niama da govoria za JFS.


ReiserFS

Failovata sistema ReiserFS e istoricheski purvata za Linux ot zhurnalnite – tia se poddurzha ot kanonichnite iadra (http://www.kernel.org/) oshte ot purvite versii na klona 2.4.h (v momenta veche sushtestvuvat krupki, pozvoliavashti izpolzvaneto na ReiserFS s iadra ot klona 2.2.h). I beshe edinstvenata, razrabotena ot nulata spetsialno za tazi operatsionna sistema ot Hans Raizer i negovata firma Namesys. Kakto i v povecheto razgledani failovi sistemi, i v ReiserFS se osushtestviava protokolirane samo na operatsiite nad metadannite na failovete. Pri opredeleno namaliavane na nadezhdnostta se osiguriava visoka proizvoditelnost – spored men, pri povecheto potrebitelski zadachi tia otstupva neznachitelno na ext2fs. A pri takava obiknovena operatsiia, kato kopiraneto na goliamo kolichestvo malki failove, znachitelno ia izprevarva.

Osven tova, ReiserFS pritezhava unikalnata (i po podrazbirane aktivna) vuzmozhnost za optimizirane na diskovoto prostranstvo, zaemano ot malki, po-malki ot edin blok, failove (a triabva da pomnim, che vuv vsiaka Unix sistema, takiva failove ima v izobilie) – te se suhraniavat iztsialo v svoite informatsionni vuzli (inodes), bez da se otdeliat diskovi blokove v oblastta za danni – zaedno s ikonomiiata na miasto, tova vodi i do uvelichavane na proizvoditelnostta, tui kato i metadannite, i dannite (v sveta na terminite na ReiserFS – stat-data) se suhraniavat v neposredstvena blizost i mozhe da se smiatat za edna vhodno-izhodna operatsiia.

Vtorata osobenost na failovata sistema ReiserFS e, che taka narechenite opashki na failovete, toest tehnite kraini chasti, koito sa po-malki po razmer ot edin blok, mogat da budat opakovani. Tozi rezhim (tailing) sushto se vklyuchva po podrazbirane pri suzdavaneto na failovata sistema i osiguriava okolo 5% ikonomiia na diskovo prostranstvo. Koeto doniakude namaliava burzodeistvieto na sistemata, poradi koeto rezhima na opakovane mozhe da bude otmenen pri montiraneto na failovata sistema. No pri prekompilirane na iadroto, tozi rezhim se vuzstanoviava avtomatichno, koeto, kakto shte bude spomenato malko po-nadolu, iziskva vnimatelno otnoshenie.

ReiserFS ne e suvmestima s ext2fs na nivo obsluzhvashti programi na failovata sistema. No suotvetniiat instrumentarium za tova, obedinen v paketa reiserfsprogs, otdavna e chast ot standartniiat komplekt na suvremennite distributsii (ili v kraen sluchai mozhe da bude izteglen ot saita Namesys).

Po-seriozniiat problem sus suvmestimostta e tozi, che razprostranenite programi za nachalno zarezhdane na Linux (i Lilo, i GRUB, makar i po razlichni prichini) chesto ne mogat da zarediat iadroto na Linux ot dial s ReiserFS failova sistema, optimizirana s rezhim na opakovane na opashkite na failovete. A poradi tova, che sled kato bude izklyuchen, tozi rezhim pritezhava svoistvoto da se samovuzstanoviava, potrebitelia mozhe da se sbluska s tova, che sled prekompilatsiia na iadroto sistemata prosto da otkazhe da zaredi. Imenno zaradi tova spomenah po-gore, che mozhe da se okazhe neobhodimo suzdavaneto na otdelen dial za direktoriiata /boot.


Ext3fs

Za razlika ot ReiserFS, ext3fs ne e nishto poveche ot protokolirashta nadstroika na klasicheskata ext2fs, razrabotena ot Stivun Tuidi v kompaniiata Red Hat i poddurzhana ot iadroto na Linux ot versiia 2.4.16. Kato rezultat ot tozi proizhod, tia zapazva pulna suvmestimost sus svoia praroditel, vklyuchitelno i na nivo obsluzhvashti programi (zapochvaiki ot versiia 1.21 na obediniavashtiia gi paket e2fsprogs). I prehoda ot ext2fs kum ext3fs mozhe da bude osushtestven s prosto dobaviane na zhurnalniia fail kum purviia dial, ne samo bez preformatirane na diala, no dazhe i bez restartirane na mashinata.

Ot tuk idva purvoto predimstvo na ext3fs, osobeno pri goliam broi kompyutri. Vtoroto predimstvo e edva li ne maksimalnata nadezhdnost na sistemata – ext3fs e edinstvenata failova sistema ot razgledanite, v koiato e vuzmozhno protokolirane na operatsiite ne samo s metadannite na failovete, no i sus samite danni.

V ext3fs sa predvideni tri rezhima na rabota – pulno protokolirane (full data journaling), protokolirane s obraten zapis (writeback), a sushto i aktiviranoto po podrazbirane posledovatelno protokolirane (ordered).

Rezhima na pulno protokolirane, kakto lesno mozhe da se dosetim ot imeto mu, se razprostira i vurhu metadannite, i vurhu dannite na failovete. Vsichkite tehni izmeneniia otnachalo se zapisvat v zhurnalniia fail i chak sled tova se fiksirat na diska. V sluchai na avariino spirane na rabotata, mozhe povtorno da prochetem zhurnala i da privedem dannite i metadannite v neprotivorechivo sustoianie. Tozi mehanizum prakticheski premahva zagubite na danni, no e nai-bavniiat ot trite rezhima na rabota.

V rezhima na otlozhen zapis, obratno – v zhurnalniiat fail se zapisvat samo izmeneniiata na metadannite na failovete, podobno na vsichki razgledni po-nadolu failovi sistemi. Toest toi ne dava nikakva garantsiia za zapazvane na dannite, no osiguriava nai-goliamoto (v ramkite na ext3fs) burzodeistvie.

Pri posledovatelniiat rezhim na rabota, fizicheski se protokolirat samo metadannite na failovete, no svurzanite s tiah blokove danni logicheski se grupirat v obsht modul, narechen tranzaktsiia (transaction). I tezi blokove se zapisvat predi zapisa vurhu diska na novi metadanni, koeto makar i da ne garantira zapazvane na dannite, tvurde mnogo spomaga za tova. Pri tova s po-malki dopulnitelni razhodi v sravnenie s pulnoto protokolirane, osiguriavaiki niakakvo mezhdinno nivo na burzodeistvie.

No po moi nablyudeniia, ext3fs nito v edin ot trite rezhima ne mozhe da se pohvali s visoka proizvoditelnost pri izpulnenie na potrebitelskite zadachi. A v rezhim na pulno protokolirane sa vuzmozhni situatsii, vodeshti za izvestno vreme do pulno paralizirane na mashinata.


XFS

Failovata sistema XFS, za razlika ot po-mladite ReiserFS i ext3fs se razviva ot firmata SGI v produlzhenie na pochti 10 godini – za purvi put tia se poiavi vuv versiiata 5.3 na operatsionnata sistema Iris, koiato izleze prez 1994 g. No tia beshe portnata za Linux sravnitelno neotdavna (neinata tekushta versiia [4] e 1.1, svobodno dostupna na stranitsata za XFS ot saita na SGI – http://oss.sgi.com/projects/xfs) i dosega ne se poddurzhashe ot ofitsialnite iadra [5].

XFS e edinstvenata 64 razriadna failova sistema ot razgledanite. No neinata unikalnost ne e samo v tova. Osobenostite na failovata sistema XFS sa:

  • izpolzvane na mehanizma allocation group – razdeliane na obshtiiat diskov dial na niakolko ravni oblasti, imashti sobstveni spisutsi na informatsionnite vuzli i svobodni blokove, za ednovremenno izpulnenie na diskovite operatsii;

  • logichesko protokolirane samo na promenenite metadanni, no s chest zapis vurhu diska za minimizirane na vuzmozhnite zagubi pri eventualni srivove;

  • izpolzvane na mehanizma delayed allocation – prisuediniavane na diskovoto prostranstvo pri zapis na faila ne po vreme na protokoliraneto, a pri fakticheskoto mu prehvurliane vurhu diska, koeto zaedno s povishavane na proizvoditelnostta, predotvratiava i fragmentatsiiata na diskoviiat dial;

  • nalichie na spisutsi za kontrol na dostupa (ACL – Access Control List) i razshireni atributi na failovete (extended attributes), razglezhdaneto na koito nadhvurlia ramkite na tazi statiia.

Kato rezultat ot vsichko tova, XFS predstavliava mnogo balansirana failova sistema, koiato e nadezhdna pochti kolkoto ext3fs i ne otstupva s mnogo na ReiserFS v burzodeistvieto na povecheto failovi operatsii. A pri operatsii s (mnogo) golemi failove, tia e prosto bez konkurentsiia – kakto mozhe da se dosetite ot imeto na kompaniiata, koiato ia e suzdala, tia e prednaznachena za rabota s multimediini prilozheniia s tehnite ogromni pototsi ot danni. Ne sa otbeliazani i problemi sus suvmestimostta i s drugite failovi sistemi.

Vsichko kazano dosega, pozvoliava da se napravi izvoda, che XFS e optimalnata failova sistema za Linux, no triabva da se ima predvid, che za razlika ot ReiserFS i ext3fs, poddruzhkata na koito e standartno vklyuchena v iadroto na Linux, XFS i dosega (tekushta versiia na iadroto 2.4.19) ne se poddurzha ot kanonichnoto iadro na Linus Torvalds (tova, koeto mozhe da izteglite ot http://www.kernel.org). Makar, che s neotdavnashnoto vklyuchvane na takava poddruzhka v klon 2.5.H na iadroto, ni pozvoliava da se nadiavame, che skoro tazi funktsiia shte stane standartna.

Vuzmozhnost za rabota s XFS osiguriava spetsialna krupka (xfs-2.4.1X-all-i386.bz2), koiato mozhe da se iztegli ot saita na SGI, zaedno sus suotvetnite prilozhni programi za neinata poddruzhka – traditsionnite sredstva e2fsprogs ne sa prilozhimi kum XFS. Programite za poddruzhka na XFS sa obedineni v niakolko paketa, ot koito absolyutno neobhodim e xfsprogs. Za vsichko tova triabva da se pomni pri predvaritelnoto razdeliane na diska.


Kriterii za izbor

Po tozi nachin, vsiaka ot chetirite razgledani failovi sistemi ima svoia unikalna polozhitelna osobenost (dazhe i ext2fs – kakto i da go razglezhdame, tia ostava lider po obshto burzodeistvie) i pone edin nedostatuk (koito ne prechi na neinoto izpolzvane). Taka, che izborut na failova sistema triabva da se opredelia ot zadachite na potrebitelia i haraktera na preobladavashtite mu danni.

Osven tova, ako, kakto se razkazva v statiiata za LVM, raztovarim maksimalno korennata failova sistema, otdeliaiki v logicheski dialove otdelnite i klonove, e vuzmozhno i kombinirano izpolzvane na failovite sistemi. Toest za vseki diskov dial izbirame nai-podhodiashtata za negovoto sudurzhanie upravliavashta struktura.

Kakto neednokratno se spomenavashe, ext2fs e nai-podhodiashtiiat izbor za zarezhdashtiia dial (a pri izpolzvane na GRUB kato programa za nachalno zarezhdane, tova e pochti zadulzhitelno). Osven tova, ext2fs e napulno podhodiashta za /tmp ili /var klonovete ot glavnata direktoriia (/). Za purvata ot tiah, po definitsiia ustoichivostta kum srivove na sistemata ne e kritichna. Za vtorata, osnovnoto iziskvane e burzodeistvieto (naprimer v source based distributsii ot tipa na Gentoo /var se izpolzva za suhranenie na vremennite produkti ot kompilatsiiata i burzodeistvieto na failovite operatsii v neia doniakude uskoriava kompilatsiiata na paketite). Nakraia, na nastolna mashina, ext2fs mozhe da se prilozhi i za korena na failovata sistema (/) – nali pri razbivaneto na diska na poveche dialove, v korena ostavat nai-riadko promenianite komponenti na sistemata.

Ot druga strana, korenut na failovata sistema e nai-kritichniiat po otnoshenie na ustoichivostta element ot failovata sistema. I zatova, nai-optimalna za nego e failovata sistema ext3fs, kato nai-ustoichiva. Osven tova, v ekstremni situatsii tia mozhe da bude montirana bez problemi kato ext2fs. Za dialovete ot tipa /usr i /usr/local ext3fs sushto izglezhda napulno podhodiasht variant.

Nai-vazhnata chast na failovata sistema na edna nastolna mashina ot gledna tochka na potrebitelia sa negovite, potrebitelski danni, koito obiknoveno sa razpolozheni v direktoriiata /home (ponezhe sistemata mozhe da se preinstalira, a zagubata na danni mozhe da se okazhe nevuzstanovima). No tezi danni sa nai-chesto promenianata chast ot failovata sistema, koeto postavia visoki iziskvaniia kum burzodeistvieto na failovite operatsii. I zatova ext3fs ne e nai-dobroto (imho [6]) reshenie za direktoriiata /home. Po-tselesuobrazno e za neia da izpolzvame niakoia ot burzodeistvashtite zhurnalni failovi sistemi, ReiserFS ili XFS. Izborut mezhdu tiah se opredelia ot lichnite predpochitaniia i vida na dannite (shte se vuzpolzvam ot sluchaia i shte otbelezha, che ot burzodeistvieto na JFS, po moi nablyudeniia, pri tipichni potrebitelski deistviia, ima kakvo oshte da se zhelae).

Ochevidno, burzodeistvieto na XFS pri rabota s failove s (mnogo) goliam razmer ia pravi predpochitana, ako stava duma za obrabotka na izobrazheniia, multimediino sudurzhanie, kartografska informatsiia i t. n. V sushtoto vreme, preimushtestvata na ReiserFS se proiaviavat osnovno pri rabota s failove s (mnogo) malka golemina (po-malki ot edin blok na failovata sistema), kakvito mezhdu potrebitelskite danni obiknoveno sa malko [7]. I zatova moeto lichno mnenie e ednoznachno v polza na XFS. Osven tova, sobstveniiat mi opit v obshtuvaneto s ReiserFS beshe neblagopriiaten, osobeno v suchetanie s tehnologiiata LVM, dokato XFS spored moite vpechatleniia, idealno si harmonira s neia.

Veche e vreme da teglim chertata – optimalno za men izglezhda slednoto suchetanie na failovi sistemi:

  • ext3fs – za korena (/) na failovata sistema i direktoriiata /usr (i za /usr/local i /usr/X11R6, ako te sushto shte se otdeliat v otdelni dialove);

  • ext2fs – za direktoriiata za nachalno zarezhdane /boot i direktoriite /tmp i /var;

  • XFS – za diala s potrebitelskite direktorii (/home)

I pak shte povtoria, che tova e samo moe mnenie, osnovano na opita ot prilaganeto na Linux na nastolni mashini – za razlichnite vidove survuri, to ne e v sila.


PRAKTICHESKI POSLEDSTVIQ

Nadiavam se, che predishniiat razdel dade dostatuchno informatsiia za pravilen izbor na failova sistema, nai-podhodiashta za konkretnite usloviia. I zatova veche mozhe da razgledame nakratko posledovatelnostta ot deistviia, sled kato tozi izbor e napraven.

Obiknoveno pri instalatsiiata na Linux, suzdavaneto na failovite sistemi e ot kompetentsiiata na instalatora, koito go osushtestviava s niakolko vuzmozhnosti po podrazbirane. Ot konteksta na razgledanoto v predishniia razdel stava iasno, che tezi optsii ne vinagi sa nai-dobrite ot gledna tochka na potrebitelia. Da se promeniat harakteristikite, opredeleni za failovata sistema pri neinoto suzdavane e nevuzmozhno bez povtorno izpulnenie na tozi protses (i suotvetno, zaguba na danni). No vsichki source based distributsii dopuskat ruchna namesa v protsesa na suzdavane na failovata sistema, a naprimer v Gentoo tova e edinstveniiat nachin za neinoto izpulnenie.

Failovata sistema ext2fs mozhe da bude suzdadena s vsiaka edna ot slednite komandi – /sbin/mke2fs, /sbin/mkfs, /sbin/mkfs.ext2 s ukazan fail na ustroistvo v kachestvoto na argument, naprimer:

$ /sbin/mke2fs /dev/hd?#

Vsiaka ot tezi komandi (a /sbin/mkfs.ext2 e simvolna vruzka kum /sbin/mke2fs) ima reditsa vuzmozhnosti, kato:

    • -b za opredeliane razmera na bloka na failovata sistema (vuzmozhni znacheniia sa 1024, 2048 ili 4096 baita, po podrazbirane e prieta poslednata stoinost);

    • -s za proverka na povredeni uchastutsi ot diska;

    • -N i -i za zadavane na broia na informatsionnite vuzli i suotvetno kolichestvoto baitove na edin vuzel.

Podrobno mozhe da se zapoznaete s vuzmozhnostite na komandite ot suotvetnite man-stranitsi, naprimer man (8) mke2fs.

Za suzdavane na failovata sistema ext3fs mozhe da se izpolzva sushtata komanda mke2fs s optsiia -j, kato v tozi sluchai tia shte poluchi niakoi harakteristiki po podrazbirane. Ruchnoto im opredeliane mozhe da stane s pomoshtta na komandata:

$ /sbin/mke2fs -J optsiia_na_protokolirane /dev/hd?#

Vuzmozhnite stoinosti na optsiiata za protokolirane sa:

    • size=razmer – zadava razmera na zhurnalniia fail v megabaitove i

    • device=vunshen_dnevnik – vklyuchva nova failova sistema kum dnevnika, predvaritelno suzdadena na drug diskov dial.

Mozhe da izpolzvame i spetsialnata komanda /sbin/mkfs.ext3 – neinite vuzmozhnosti sa identichni na vuzmozhnostite na komandata /sbin/mke2fs (i niama kak da e drugoiache, tui kato tia e simvolna vruzka kum neia). No nai-interesnoto e vuzmozhnostta za preobrazuvane na sushtestvuvashtata failova sistema ext2fs kum ext3fs ne samo bez zaguba na danni, no i bez restartirane na sistemata (dazhe i bez demontirane na failovata sistema) chrez prosto dobaviane na dnevnik kum neia. Tova stava s komandata:

$ tune2fs -j /dev/hd?#

Tia prosto dobavia faila na dnevnika /.journal v glavnata direktoriia na modifitsiranata failova sistema (ako poslednata ne e bila demontirana) ili startira za nego skrit informatsionen vuzel (ako predi modifikatsiiata failovata sistema e bila demontirana). Triabva da dobavia, che obratnoto preobrazuvane e oshte po-lesno i se osushtestviava s komandata za montirane (koeto shte se obsuzhda v sledvashtata statiia).

Failovata sistema ReiserFS se suzdava sus spetsialno prednaznachena za tova komanda – /sbin/mkreiserfs ot paketa reiserfsprogs. Tazi komanda ima mnogo vuzmozhnosti (-s za suzdavane na goleminata na dnevnika, -f za prinuditelno preformatirane na failovi sistemi ot drug tip i t. n.). s koito mozhe da se zapoznaete s pomoshtta na komandata man (8) mkreiserfs. I za izbiagvane na neochakvani problemi, shte napomnia, che ako korenniiat dial se formatira kato ReiserFS, niama da e izlishno da predvidim edin maluk dial za direktoriiata /boot i da go formatirame s ext2fs.

Za suzdavane na failovata sistema XFS sushto sushtestvuva sobstvena komanda mkfs.xfs ot paketa xfsprogs. V neia sa predvideni niakolko optsii, vsiaka ot koito ima niakolko argumenta, priemashti chisleni znacheniia. Nai-vazhnite ot tiah sa:

  • -b, koiato s pomoshtta na argumenta size=## ni pozvoliava da zadadem razmera na bloka danni v baitove, koito triabva da bude kraten na razmera na stranitsata operativna pamet (za platformata i386 – 4 kbytes) i mozhe da varira v intervala ot 512 do 65536 bytes (po podrazbirane toi e 4096 bytes);

  • -d – opredelia parametrite na oblastta za danni na failovata sistema, takiva kato broi na samostoiatelnite oblasti v diala (Allocation groups, argument agcount) ili tehniiat razmer (argument agsize);

  • -l – opredelia parametrite na zhurnalniia fail, naprimer negovata golemina (size).

Pri izpolzvane na mkfs.xfs za postigane na maksimalna proizvoditelnost, se preporuchva v iaven vid da se zadade broia na allocation groups – v protiven sluchai to se opredelia avtomatichno, koeto vodi do neproizvoditelen prerazhod na resursi. Opredelianeto na tozi broi se osnovava na dopuskaneto, che edna allocation group zaema 4 GB diskovo prostranstvo. Sled tova mozhe da ustanovim i goleminata na dnevnika – tuk preporuchvanoto znachenie e 32 MB, toest za diskov dial s golemina 20 GB komandata shte ima sledniia vid:

$ mkfs.xfs -d agcount=5 -l size=32m /dev/hda1

Osven vsichki izbroeni optsii, komandata mkfs.xfs ima i optsiia -f za prinuditelno suzdavane na failovata sistema XFS vurhu veche sushtestvuvashta failova sistema. Za neia e dostatuchno tia da e bila ext2fs (i voden ot obshti suobrazheniia i ext3fs, makar, che ne sum go proveriaval). Ako suzdavame XFS vurhu ReiserFS, sa vuzmozhni greshki pri montiraneto na novata failova sistema. Tova se otnasia i za obratnata protsedura – pri zamiana na XFS s ReiserFS, a sushto i za sluchaite, kogato zameniame niakoia ot “naprednalite” failovi sistemi s ext2fs. Tezi problemi sa svurzani s fakta, che komandata za montirane mozhe da razpoznae novosuzdadenata XFS failova sistema kato povredena ReiserFS i obratno.

Za tiahnoto izbiagvane, predi podobno zamestvane se nalaga da pribegnem kum edin malko shamanski podhod – da nulirame nachalnite oblasti na diala (suhraniavasht metadannite na failovata sistema) s komandata:

$ dd if=/dev/zero of=/dev/hd?#

Ne e neobhodimo da chakame zapulvaneto s nuli na tsialoto ustroistvo – dostatuchno e da ostavim komandata da raboti 10-20 sec, sled koeto da prekusnem neinoto izpulnenie s Control-D i da zapochnem suzdavaneto na novite failovi sistemi.

I poslednoto, koeto triabva da se spomene – za swap diala, suzdaden po vreme na razdelianeto na diska. Makar, che toi ne sudurzha failova sistema v sebe si, toi ima nuzhda ot takava, koiato se suzdava s komandata

$ mkswap ime_na_ustroistvo

kum koiato triabva da se podhozhda s vnimanie – prilaganeto i vurhu obiknoven dial shte unishtozhi vsichki danni vurhu nego.


BIBLIOGRAFIQ

Mnogo slozhni vuprosi okolo ustroistvoto na failovite sistemi v tazi statiia biaha zasegnati samo nakratko. Za po-podrobna informatsiia za tiah triabva da se oburnete kum dopulnitelni iztochnitsi. Obshtata organizatsiia na failovata sistema na Unix se razglezhda v mnogo rukovodstva za neia, naprimer v S. D. Kuznetsov, Operatsionnaia sistema UNIX.

Ustroistvoto na failovata sistema ext2fs e podrobno opisano v statiiata na Viktor Himenko “Failove, failove, failove”, (Mir PK, 2000, chast 1 – No 2; chast 2 – No 3,).

Podrobno opisanie na suvremennite zhurnalni failovi sistemi, izpolzvani v Linux e dadeno v tsikula statii na Daniel Robins, ruskiiat prevod na koito, napraven ot Vladimir Holmanov, e dostupen na saita na Qroslavskata grupa na potrebitelite na Linux [8].



Prevod: Nikolai Angelov

[1] Ako niakoi znae da ima bulgarski prevod na Filesystem Hierarchy Standard, neka se obadi, za da go otrazia v prevoda.

[2] I koito nachin obiasniava zashto niama smisul da se pita po razlichnite forumi kak mozhe da se vuzstanoviat vednuzh veche iztriti failove v Unix-podobnite sistemi

[3] Reshih da izpolzvam dnevnik vmesto zhurnal, v imeto na chistotata na bulgarskiia ezik, vupreki razminavaneto mezhdu 'zhurnalni failovi sistemi' i 'dnevnik'

[4] Kum momenta na pisane na statiiata, taka che ne burzaite s kritichnite komentari kum neia

[5] Ima se predvid iadrata na Linux nai-veroiatno

[6] imho – in my humble opinion

[7] Po podrazbirane, goleminata na failoviia blok e 4 kb (hm, taka li beshe naistina?!)

[8] Koito sait mai veche go niama



<< Napulno avtonomno delegirane na in-addr.arpa | Instalirane na SuSE Linux 9.1 [CHast 3] >>