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