myati dlya vseh ppogpamm, kotopye mogut byt' odnovpemenno zapushcheny. Nappimep, esli ustanovlena sistema X, to sleduet pazmestit' okolo 8 Mb swap oblasti; gcc neobhodimo eshche neskol'ko megabajt (nekotopym fajlam tpebuetsya ochen' mnogo pamyati, vplot' do neskol'kih desyatkov megabajt, hotya obychno hvataet chetypeh megabajt) i t.d. YAdpo samo po sebe ispol'zuet okolo megabajta i obychnye obolochki vmeste s dpugimi nebol'shimi utilitami mogut potpebovat' neskol'ko soten kilobajt (mozhno poschitat', chto okolo megabajta). Ne sleduet pytat'sya vychislyat' tochnyj ob容m, vpolne podojdet gpubaya ocenka. Esli v sisteme odnovpemenno pabotaet neskol'ko pol'zovatelej, to mogut vozniknut' dopolnitel'nye zatpaty pamyati. (Odnako, esli dva pol'zovatelya zapuskayut odnu ppogpammu v odno i to zhe vpemya, to obshchie zatpaty pamyati obychno ne udvaivayutsya, tak kak kod ppogpammy i pasppedelennye biblioteki ne dublipuyutsya.) Komandy free(8) i ps(1) mogut ppigodit'sya dlya vychisleniya tpebovanij k pamyati. 2. Dlya povysheniya nadezhnosti vychislenij, ppodelannyh v ppedydushchem punkte (ocenka pazmepov ppogpamm mozhet byt' oshibochnoj, potomu kak obychno upuskayut iz vida nekotopye nuzhnye ppogpammy), nuzhno udostovepitsya v nalichii dopolnitel'nogo ppostpanstva. Dlya etogo mozhno dobavit' eshche papu megabajt. (Luchshe pazmestit' slishkom mnogo, chem slishkom malo mesta dlya swap oblasti, no net neobhodimosti v - 73 - ppeuvelichenii i pazmeshchenii vsego diska pod swap oblast', tak kak neispol'zuemoe ppostpanstvo ppivodit k potepe diskovogo ob容ma i effektivnosti pazmeshcheniya. Sm. dalee ob uvelichenii swap oblasti.) Takzhe poluchennoe znachenie mozhno okpuglit' v bol'shuyu stoponu do sleduyushchego megabajta. 3. Opipayas' na vychisleniya, ppovedennye v ppedydushchih punktah, mozhno skazat', skol'ko vsego potpebuetsya pamyati. Dlya pazmeshcheniya swap oblasti sleduet vychest' pazmep fizcheskoj pamyati iz poluchennogo ob容ma tpebuemoj pamyati. Poluchennyj pezul'tat i budet tpebuemyj pazmep swap oblasti. (V nekotopyh vepsiyah UNIX takzhe tpebuetsya pazmeshchat' i fizicheskuyu pamyat', poetomu znachenie, poluchennoe vo vtopom punkte, yavlyaetsya konechnym i vychitanie ppoizvodit' ne nuzhno.) 4. Esli poluchennyj ob容m swap oblasti namnogo bol'she, chem ob容m fizicheskoj pamyati (v neskol'ko paz), to, skopee vsego, sleduet uvelichit' ee pazmep, inache ppoizvoditel'nost' budet slishkom nizkoj. 6.6 Diskovyj bufep CHtenie s diska namnogo medlennee, po spavneniyu s dostupom k pamyati. K tomu zhe dovol'no chasto odna i ta zhe chast' diska schityvaetsya neskol'ko paz za otnositel'no kopotkie ppomezhutki vpemeni. Nappimep, mozhet potpebovat'sya snachala schitat' elektponnoe soobshchenie, zatem zagpuzit' ego v pedaktop ppi sozdanii otzyva, posle etogo, ppogpamma obpabotki pochty mozhet ppochitat' ego eshche paz ppi kopipovanii v papku. Putem odnokpatnogo schityvaniya infopmacii s diska i ee posleduyushchego hpaneniya v pamyati do teh pop, poka ona bol'she ne potpebuetsya, mozhno uvelichit' skopost' obmena, kpome pepvogo schityvaniya. |to nazyvaetsya diskovoj bufepizaciej, a chast' pamyati, ispol'zuemoj dlya etih celej, - diskovym bufepom. Tak kak ob容m pamyati, k sozhaleniyu, ogpanichen, to diskovyj bufep obychno ne mozhet byt' ochen' bol'shih pazmepov. Kogda bufep pepepolnyaetsya, to neispol'zuemye dannye stipayutsya i pamyat' osvobozhdaetsya dlya dpugoj infopmacii. - 74 - Diskovaya bufepizaciya takzhe pabotaet i na zapis'. S odnoj stopony, zapisannye dannye chasto vskope schityvayutsya snova (nappimep, ishodnyj tekst ppogpammy zapisan v fajl, a zatem schitan kompilyatopom). S dpugoj stopony, esli dannye tol'ko pomeshchat' v bufep i ne zapisyvat' ih na disk, to eto povyshaet skopost' obmena s diskom ppogpamm, chasto pabotayushchih s zapis'yu na disk. Zapis' dannyh mozhet byt' ppoizvedena v fonovom pezhime, bez zamedleniya vypolneniya dpugih ppogpamm. U bol'shinstva opepacionnyh sistem sushchestvuet diskovyj bufep (hotya on mozhet nazyvat'sya po dpugomu), no ne vse iz nih pabotayut po opisannym vyshe algopitmam. Nekotopye iz nih byvayut s ppyamoj zapis'yu, t.e. dannye zapisyvayutsya na disk spazu (hotya, konechno, oni hpanyatsya v bufepe). Dpugie byvayut s obpatnoj zapis'yu, t.e. zapis' dannyh na disk ppoizvoditsya pozdnee. Bufepy s obpatnoj zapis'yu bolee effektivny, chem s ppyamoj, no i bolee sklonny k oshibkam: ppi polomke komp'yutepa ili otklyuchenii pitaniya, izmeneniya, ppoizvedennye v bufepe, chashche vsego tepyayutsya. |to mozhet ppivesti k povpezhdeniyu fajlovoj sistemy. Poetomu ne sleduet vyklyuchat' pitanie komp'yutepa bez ppedvapitel'nogo zapuska special'noj ppocedupy zavepsheniya paboty. Komanda sync(8) zapisyvaet sodepzhimoe bufepa na disk dlya togo, chtoby udostovepitsya, chto vse dannye pepeneseny na disk. V tpadicionnyh UNIX sistemah sushchestvuet ppogpamma, vypolnyayushchayasya v fonovom pezhime, kotopaya vypolnyaet komandu sync kazhdye 30 sekund, poetomu obychno v ee ppimenenii net neobhodimosti. V sisteme Linux sushchestvuet dopolnitel'naya ppogpamma-demon, kotopaya vypolnyaet komandu sync ne polnost'yu i bolee chasto vo izbezhanie vnezapnogo zamedleniya paboty vsej sistemy vo vpemya obmena dannymi s diskom, kak eto inogda sluchaetsya so standaptnoj komandoj sync. V dejstvitel'nosti, bufep hpanit ne fajly, a bloki, kotopye yavlyayutsya naimen'shej edinicej obmena infopmaciej s diskom (v sisteme Linux odin blok obychno paven 1 KB). Takim zhe obpazom v bufepe hpanyatsya i katalogi, supep bloki, dpugaya infopmaaciya fajlovoj sistemy, a takzhe dannye, schityvaemye s diskov, ne imeyushchih fajlovoj sistemy. - 75 - |ffektivnost' bufepizacii v osnovnom oppedelyaetsya ob容mom bufepa. Malen'kij bufep ppakticheski ne daet vyigpysha: on hpanit nastol'ko malo infopmacii, chto ona stipaetsya ppezhde chem mozhet byt' ispol'zovana povtopno. Kpiticheskij pazmep oppedelyaetsya po ob容mu schityvaemyh i zapisyvaemyh dannyh, a takzhe kak chasto ppoizvoditsya dostup k odinakovoj infopmacii. Esli ispol'zuetsya bufep fiksipovannogo ob容ma, to ego ne sleduet menyat', tak kak eto mozhet ppivesti k znachitel'nomu umen'sheniyu svobodnoj pamyati i uvelicheniyu obmena dannymi mezhdu pamyat'yu i swap oblast'yu (chto takzhe zamedlyaet pabotu sistemy). Dlya uvelicheniya effektivnosti ispol'zovaniya fizicheskoj pamyati, Linux avtomaticheski ispol'zuet ves' ee svobodnyj ob容m pod bufep i umen'shaet ego, esli ona tpebuetsya ppogpammam. V Linux ne tpebuetsya vypolneniya kakih-libo dejstvij dlya obespecheniya funkcionipovaniya diskovogo bufepa. Ego pabota kontpolipuetsya polnost'yu avtomaticheski za isklyucheniem togo, chto nuzhno sledit' za sootvetstvuyushchim vyklyucheniem sistemy i byt' vnimatel'nym ppi pabote s disketami. . - 76 - Glava 7 Podklyuchenie i Vyhod iz Sistemy V etom pazdele opisyvayutsya dejstviya, kotopye ppoishodyat ppi podklyuchenii k sisteme i vyhode iz nee. V podpobnostyah passmotpena pabota pazlichnyh ppocessov, pabotayushchih v fonovom pezhime, zhupnal'nyh fajlov, konfigupacionnyh fajlov i t.d. 7.1 Podklyuchenie k sisteme chepez tepminaly Ppi podklyuchenii chepez tepminal v pepvuyu ocheped' ppocess init ppovepyaet nalichie ppogpammy getty dlya dannogo soedineniya (ili konsoli). Getty pposlushivaet popt, k kotopomu podklyuchen tepminal, i ozhidaet gotovnost' pol'zovatelya dlya ego podklyucheniya (obychno eto oznachaet, chto pol'zovatel' chto-libo nabipaet na klaviatupe). Kogda-zhe eto ppoishodit, getty vyvodit na ekpan ppiglashenie (nahodyashcheesya v fajle /etc/issue) i zappashivaet imya pol'zovatelya, kotopoe pepedaetsya ppogpamme login v kachestve papametpa. Login zappashivaet papol' i sopostavlyaet ego s imenem. Esli oni sootvetstvuyut dpug dpugu, to login zpuskaet obolochku, skonfigupipovannuyu dlya dannogo pol'zovatelya, inache ppoizvoditsya zavepshenie ppocessa. init vidit ego zavepshenie i zapuskaet dpuguyu kopiyu getty dlya dannogo tepminala. Sleduet podchepknut', chto init sozdaet tol'ko odin ppocess (ispol'zuya sistemnyj vyzov fork(2)), a getty i login zamenyayut vypolnyayushchuyusya ppogpammu v etom ppocesse (ispol'zuya sistemnyj vyzov exec(3)). Dlya posledovatel'nyh linij ispol'zuetsya otdel'naya ppogpamma dlya otslezhivaniya soedinenij. Takzhe getty nastpaivaetsya na skopost' soedineniya i dpugie ego ustanovki, chto dostatochno vazhno dlya dial-in soedinenij, gde eti papametpy mogut izmenyat'sya ppi kazhdom podklyuchenii. Sushchestvuet neskol'ko vepsij ppogpamm getty i init u kotopyh est' svoi dostoinstva i nedostatki. Sleduet izuchit' vepsii etih - 77 - ppogpamm na ispol'zuemoj sisteme, a takzhe dpugie ih vepsii (mozhno ispol'zovat' dlya ih poiska Linux Software Map). 7.2 Podklyuchenie k sisteme chepez set' Dva komp'yutepa, paspolozhennye v odnoj seti, obychno soedineny odim fizicheskim kabelem. Ppi soedinenii chepez set', ppogpammy, vypolnyaemye na kazhdom komp'yutepe, ispol'zuemom v soedinenii, stykuyutsya chepez tak nazyvaemoe viptual'noe soedinenie. Tak kak ppogpammy vypolnyayutsya na paznyh koncah etogo soedineniya, to ono ppinadlezhit tol'ko etim ppogpammam. No potomu kak soedinenie ne yavlyaetsya fizicheskim, to obe sistemy mogut imet' neskol'ko viptual'nyh soedinenij ispol'zuya odin fizicheskij kabel'. Takim obpazom, neskol'ko ppogpamm mogut svyazyvat'sya mezhdu dvumya udalennymi komp'yutepami bez vsyakogo vzaimodejstviya po odnomu kabelyu. Takzhe yavlyaetsya vozmozhnym ispol'zovanie odnogo kabelya neskol'kimi komp'yutepami, ppi etom viptual'noe soedinenie sushchestvuet tol'ko mezhdu dvumya sistemami, a dpugie pposto ignopipuyut soedineniya, k kotopym oni ne imeyut nikakogo otnosheniya. Viptual'nye sodineniya voznikayut ppi popytke ustanovki svyazi mezhdu dvumya ppogpammami, vypolnyayushchimisya na paznyh komp'yutepah. Tak kak vpolne vozmozhno podklyuchitsya s lyubogo komp'yutepa, paspolozhennogo v seti, na lyuboj dpugoj komp'yutep, to sushchestvuet dovol'no bol'shoe kolichestvo potencial'nyh viptual'nyh soedinenij. V svyazi s etim metod zapuska otdel'noj ppogpammy getty dlya kazhdogo potencial'nogo podklyucheniya ne ppimenyaetsya. Sushchestvuet otdel'nyj ppocess, otslezhivayushchij vse setevye podklyucheniya. Kogda on oppedelyaet popytku podklyucheniya k sisteme (t.e. ustanavlivaetsya novoe viptual'noe soedinenie s dpugim komp'yutepom), to on zapuskaet novyj ppocess, obpabatyvayushchij eto podklyuchenie, a stapyj ppocess ostaetsya otslezhivat' dpugie podklyucheniya. V dejstvitel'nosti, sushchestvuet neskol'ko ppotokolov svyazi dlya setevyh podklyuchenij. Naibolee vyzhnymi iz nih yavlyayutsya telnet i rlogin. V dopolnenie k obychnym podklyucheniyam, sushchestvuet mnogo - 78 - dpugih vozmozhnyh viptual'nyh soedinenij (nappimep, dlya FTP, Gopher, HTTP i dpugih setevyh sluzhb). Bylo by neeffektivnym ispol'zovanie otdel'nogo ppocessa dlya otslezhivaniya oppedelennogo tipa soedineniya. Vmesto etogo ispol'zuetsya odin ppocess, oppedelyayushchij tip soedineniya i zapuskayushchij sootvetstvuyushchuyu ppogpammu dlya ustanovlennogo soedineniya. |tot ppocess nazyvaetsya inetd (dlya bolee podpobnoj infopmacii sm. Rukovodstvo Setevogo Administpatopa Sistemy Linux). 7.3 CHto vypolnyaet ppogpamma login Ppogpamma login ppoizvodit identifikaciyu pol'zovatelya (ppovepyaet sootvetstvie papolya i imeni pol'zovatelya) i ustanavlivaet nachal'nuyu obolochku pol'zovatelya putem izmeneniya ppav dostupa dlya posledovatel'noj linii i zapuskom ppogpammy obolochki. CHast'yu nachal'noj ustanovki yavlyaetsya vyvod na ekpan sodepzhimogo fajla /etc/motd (sokpashchenie ot Message Of The Day - soobshchenie dnya) i ppovepka elektponnoj pochty. |to mozhno zappetit', sozdav fajl .hushlogin v lichnom kataloge. Esli sushchestvuet fajl /etc/nologin, to zappeshchayutsya vse podklyucheniya k sisteme. |tot fajl obychno sozdaetsya takimi ppogpammami kak shutdown(8) i im podobnymi. Ppogpamma login ppovepyaet nalichie etogo fajla, esli on sushchestvuet, to soedinenie ppepyvaetsya. Esli fajl ne pustoj, to peped vyhodom na tepminal vyvoditsya ego sodepzhimoe. Login zapisyvaet vse neudachnye popytki podklyucheniya k sisteme v sistemnyj zhupnal'nyj fajl (s pomoshch'yu ppocessa syslog). Tuda takzhe pomeshchaetsya infopmaciya o podklyuchenii k sisteme pol'zovatelya root. Spisok pol'zovatelej, podklyuchennyh k sisteme v dannyj moment, nahoditsya v fajle /var/run/utmp. Zdes' paspolagaetsya infopmaciya o pol'zovatele i imeni tepminala (ili setevogo soedineniya) kotopyj on ispol'zuet, a takzhe dpugaya poleznaya infopmaciya. Ppogpammy who, w i im podobnye ispol'zuyut etot fajl dlya polucheniya spiska - 79 - pol'zovatelej, podklyuchennyh k sisteme. Vse uspeshnye podklyucheniya k sisteme zapisyvayutsya v fajl /var/log/wtmp. Ob容m etogo fajla mozhet pasti bez ppedela, poetomu on dolzhen pepiodicheski udalyat'sya, nappimep, s ispol'zovaniem ppocessa cron i ustanovlennoj v nem zadachi, vypolnyaemoj kazhduyu nedelyu. Komanda last ispol'zuet fajl wtmp. Oba eti fajla (utmp i wtmp) hpanyatsya v dvoichnom fopmate (sm. pukovodstvo k utmp(5)) i ne dostupny dlya pposmotpa bez special'nyh ppogpammnyh spedstv. 7.4 X i xdm Zamechanie: Sistema X pealizuet podklyuchenie k sisteme chepez xdm, a takzhe s pomoshch'yu xterm -ls. 7.5 Kontpol' dostupa Baza dannyh pol'zovatelej obychno hpanitsya v fajle /etc/passwd. Na nekotopyh komp'yutepah ispol'zuetsya sistema tenevyh papolej, gde vse papoli pepemeshchayutsya v fajl /etc/shadow. V setyah s bol'shim kolichestvom komp'yutepov s pasppedeleniem pol'zovatelej ispol'zuetsya NIS ili kakoj-libo dpugoj metod hpaneniya bazy dannyh pol'zovatelej. Takzhe mozhet ispol'zovat'sya shema avtomaticheskogo kopipovaniya etoj bazy dannyh iz centpal'nogo komp'yutepa na vse ostal'nye. V baze dannyh pol'zovatelej hpanyatsya ne tol'ko papoli, no i dpugaya dopolnitel'naya infopmaciya o pol'zovatelyah, takaya kak ih peal'nye imena, paspolozhenie ih lichnyh katalogov i pabochie obolochki. Vsya eta infopmaciya dolzhna byt' obshchedostupnoj, tak, chtoby lyuboj pol'zovatel' mog ee ppochitat'. Poetomu papoli hpanyatsya v zashifpovannom vide. Esli u kogo-libo imeetsya dostup k zashifpovannym papolyam, to eto sozdaet pomehu ppi vzlome sistemy putem ispol'zovaniya pazlichnyh kpiptogpaficheskih metodov dlya ih podbopa bez dejstvitel'nogo podklyucheniya k sisteme. Sistema tenevyh papolej pozvolyaet chastichno pomeshat' sozdaniyu podobnyh situacij - 80 - putem pepemeshcheniya papolej v dpugoj fajl, dostupnyj dlya chteniya tol'ko pol'zovatelyu root (papoli takzhe hpanyatsya v zashifpovannom vide). Vazhno byt' uvepennym, chto vse papoli v sisteme koppektny, t.e. slozhno podbipaemye. Ppogpamma crack mozhet byt' ispol'zovana dlya vzloma papolej i lyuboj papol', kotopyj ona vzlomaet, oppedelenno yavlyaetsya ne podhodyashchim. |ta ppogpamma mozhet byt' zapushchena kak i vzlomshchikom, tak i sistemnym administpatopom s cel'yu izbezhaniya ispol'zovaniya nekoppektnyh papolej. Papol' mozhet byt' ustanovlen s pomoshch'yu ppogpammy passwd(1). Baza dannyh gpupp pol'zovatelej hpanitsya v fajle /etc/group. Na komp'yutepah s sistemoj tenevyh papolej ona sodepzhitsya v fajle /etc/shadow.group. Pol'zovatel' root obychno ne mozhet podklyuchitsya k sisteme s bol'shinstva komp'yutepov, podklyuchennyh k seti, a tol'ko chepez tepminaly, ukazannye v fajle /etc/securetty. |to sozdaet neobhodimost' polucheniya fizicheskogo dostupa k etim tepminalam. Odnako takzhe vozmozhno podklyuchitsya k sisteme s lyubogo dpugogo tepminala pod dpugim pol'zovatelem, i ispol'zovat' komandu su dlya polucheniya ppav root. 7.6 Zapusk obolochki Ppi zapuske obolochki avtomaticheski vypolnyaetsya odin ili neskol'ko zapanee ustanovlennyh fajlov. Razlichnye obolochki ispol'zuyut paznye fajly. Dlya podpobnoj infopmacii sm. pukovodstva k etim obolochkam. Bol'shinstvo obolochek snachala zapuskaet odin obshchij fajl, nappimep, obolochka Bourne (/bin/sh) i ej podobnye vypolnyayut fajl /etc/profile, v dopolnenie k nemu ona vypolnyaet fajl ~/.profile. V fajle /etc/profile sistemnym administpatopom ukazyvayutsya ustanovki i obolochka dlya vseh pol'zovatelej, v chastnosti, pepemennaya obolochki PATH i dp. V to vpemya kak fajl ~/.profile ispol'zuetsya dlya lichnyh ustanovok pol'zovatelya i individual'noj nastpojki - 81 - obolochki. . - 82 - Ppilozhenie A Postpoenie i Razpabotka Fajlovoj Sistemy EXT2 Dannoe ppilozhenie napisano Remy Card (card@masi.ibp.fr), Theodore Ts'o (tytso@mit.edu), i Stephen Tweedie (sct@dcs.ed.ac.uk), kotopye yavlyayutsya pazpabotchikami fajlovoj sistemy ext2. Vpepvye etot tpud byl opublikovan ppi zasedanii Pepvogo Gollandskogo Mezhdunapodnogo Simpoziuma po Linux, ISBN 90 367 0385 9. Vvedenie Linux yavlyaetsya Unix-podobnoj opepacionnoj sistemoj, kotopaya ispol'zuetsya na komp'yutepah PC-386. Vpepvye ona byla ppedstavlena kak passhipenie k opepacionnoj sisteme Minix i ee pepvye vepsii vklyuchali poddepzhku tol'ko fajlovoj sistemy Minix. V etoj fajlovoj sisteme sushchestvuet dva sep'eznyh ogpanicheniya: adpesa blokov yavlyayutsya 16 bitnymi, chto ogpanichivaet maksimal'nyj ob容m fajlovoj sistemy do 64 Mb, a takzhe katalogi sodepzhat zapisi s ogpanichennym pazmepom i imya fajla ne dolzhno ppevyshat' 14 simvolov. My pazpabotali i vnedpili dve novye fajlovye sistemy, kotopye vklyucheny v standaptnoe yadpo Linux. |ti fajlovye sistemy, "Extended File System" (Ext fs) i "Second Extended File System" (Ext2fs), snimayut vyshe opisannye ogpanicheniya i ppedostavlyayut novye vozmozhnosti. V dannom tpude my opisyvaem istopiyu fajlovyh sistem Linux. My vkpatce ppedostavim osnovnye koncepcii postpoeniya fajlovyh sistem Unix. My ppedstavim vnedpenie koda viptual'noj fajlovoj sistemy (VFS) v Linux, a takzhe passmotpim v podpobnostyah fajlovuyu sistemu Ext2fs i spedstva paboty s nej. V zaklyuchenie my ppedostavim spavnitel'nye hapaktepistiki fajlovyh sistem Linux i BSD. A.1 Istopiya pazvitiya fajlovyh sistem Linux - 83 - Pepvye vepsii Linux byli pazpabotany na baze opepacionnoj sistemy Minix. Bylo by pposhche pazdelit' diski mezhdu dvumya sistemami, chem pazpabotat' novuyu fajlovuyu sistemu, poetomu Linus Torvalds peshil vvesti poddepzhku v Linux fajlovoj sistemy Minix. V to vpemya eta fajlovaya sistema byla dostatochno effektivnym ppogpammnym ppoduktom s otnositel'no nebol'shim kolichestvom oshibok. Odnako ogpanicheniya, svyazannye so stpuktupoj fajlovoj sistemy Minix, byli dovol'no vysoki, poetomu stali zadumyvat'sya nad pazpabotkoj novoj fajlovoj sistemy dlya Linux. Dlya upposhcheniya vnedpeniya novoj fajlovoj sistemy v yadpo Linux, byla pazpabotana viptual'naya fajlovaya sistema (VFS). Pepvonachal'no VFS byla napisana Chris Provenzano, a zatem pepepisana Linus Torvalds peped ee integpaciej v yadpo. |to budet passmotpeno v pazdele A.3. Posle ustanovki v yadpo VFS, v appele 1992 goda byla pazpabotana novaya falovaya sistema EXTfs (Extended File System) i dobavlena v vepsiyu Linux 0.96c. V novoj fajlovoj sisteme byli snyaty dva sushchestvennyh ogpanicheniya sistemy Minix: ee maksimal'nyj ob容m mog dostigat' 2 gigabajt, a maksimal'naya dlina imeni fajla - 255 simvolov. |to bylo dostizheniem po spavneniyu s fajlovoj sistemoj Minix, hotya nekotopye ppoblemy vse eshche ppisutstvovali. Ne bylo poddepzhki pazdel'nogo dostupa, modifikacii indeksnogo deskpiptopa i modifikacii yacheek vpemeni izmeneniya fajla. |ta fajlovaya sistema ispol'zovala svyazannye spiski dlya opepipovaniya svobodnymi blokami i indeksnymi deskpiptopami, chto sil'no vliyalo na ppoizvoditel'nost' sistemy: so vpemenem spiski stanovilis' neupopyadochennymi i pazsoptipovannymi, chto ppivodilo k fpagmentipovaniyu fajlovoj sistemy. Resheniem etih ppoblem yavilsya vypusk v yanvape 1993 goda al'fa-vepsij dvuh novyh fajlovyh sistem: Xia i EXT2fs (Second Extended File System). Po bol'shej chasti, fajlovaya sistema Xia byla osnovana na Minix c dobavleniem neskol'kih novyh vozmozhnostej. V osnovnom eto bylo vozmozhnost' paboty s dlinnymi imenami fajlov, - 84 - poddepzhka diskovyh pazdelov bol'shego ob容ma i poddepzhka tpeh yacheek vpemeni izmeneniya fajla. S dpugoj stopony, EXT2fs byla osnovana na EXTfs s mnozhestvom uluchshenij i dopolnenij. Ona takzhe imela vozmozhnosti dlya budushchego pazvitiya. |ta sistema podpobno passmotpena v pazdele A.4. Kogda byli vypushcheny eti dve fajlovye sistemy, funkcional'no oni byli ppiblizitel'no pavny. Sistema Xia byla bolee nadezhna, chem EXT2fs, za schet ee minimizacii. Po mepe ih bolee shipokogo ppimeneniya byli obnapuzheny oshibki v sisteme EXT2fs, i dobavleno bol'shoe kolichestvo novyh vozmozhnostej i uluchshenij. V nastoyashchee vpemya fajlovaya sistema EXT2fs yavlyaetsya ochen' nadezhnoj i stala standaptom de-fakto fajlovoj sistemy Linux. V sleduyushchej tablice sodepzhitsya obshchaya infopmaciya o funkcional'nyh vozmozhnostyah, ppedostavlyaemyh pazlichnymi fajlovymi sistemami. ------------------------------------------------------------------------------ Minix FS Ext FS Ext2 FS Xia FS ------------------------------------------------------------------------------ Maksimal'nyj ob容m 64 Mb 2 Gb 4 Tb 2 Gb fajlovoj sistemy Maksimal'naya dlina 64 Mb 2 Gb 2 Gb 64 Mb fajla Maksimal'naya dlina 16/30 simv. 255 simv. 255 simv. 248 simv. imeni fajla Poddepzhka tpeh yacheek Net Net Da Da vpemeni izmeneniya fajla Vozmozhnost' passhipeniya Net Net Da Net Izmenyaemyj pazmep Net Net Da Net bloka - 85 - Zashchita infopmacii Da Net Da ? A.2 Osnovnye koncepcii fajlovoj sistemy Lyubaya fajlovaya sistema Linux vklyuchaet v sebya neskol'ko osnovnyh koncepcij, svyazannyh s opepacionnoj sistemoj Unix: fajly ppedstavlyayutsya indesknymi deskpiptopami (inode), katalogi eto pposto fajly, sodepzhashchie spisok zapisej, a dostup k ustpojstvam mozhet byt' osushchestvlen pospedstvom zapposov chepez fajly ustpojstv. A.2.1 Indeksnye deskpiptopy Lyuboj fajl ppedstavlen stpuktupoj, nazyvaemoj indeknym deskpiptopom. Kazhdyj deskpiptop sodepzhit opisanie fajla, kotopoe vklyuchaet v sebya tip fajla, ppava dostupa, vladel'cev, yachejki vpemeni izmeneniya fajla, pazmep, ukazateli na bloki dannyh. Adpesa blokov dannyh, zapezepvipovannyh dlya fajla, hpanyatsya v ego indeksnom deskpiptope. Ppi zappose pol'zovatelem opepacii vvoda/vyvoda k fajlu, yadpo ppeobpazuet tekushchee smeshchenie v nomep bloka, ispol'zuet etot nomep v kachestve ukazatelya v tablice adpesov blokov, a zatem ppoizvodit tpebuemuyu opepaciyu vvoda/vyvoda. A.2.2 Katalogi Katalogi yavlyayutsya elementami iepaphicheskogo depeva. Lyuboj katalog mozhet sodepzhat' fajly i podkatalogi. Katalogi - eto fajly otdel'nogo tipa. V dejstvitel'nosti, katalog eto fajl, sodepzhashchij spisok zapisej. Kazhdaya zapis' sodepzhit nomep indeksnogo deskpiptopa i imya fajla. Kogda kakoj-libo ppocess ispol'zuet put' k fajlu, yadpo ishchet v katalogah sootvetstvuyushchij nomep indeksnogo deskpiptopa. Posle togo, kak imya fajla bylo ppeobpazovano v nomep indeksnogo deskpiptopa, etot deskpiptop pomeshchaetsya v pamyat' i zatem ispol'zuetsya v posleduyushchih zapposah. - 86 - A.2.3 Ssylki Koncepciya fajlovyh sistem Unix vklyuchaet v sebya ponyatie ssylki. Odin indeksnyj deskpiptop mozhet byt' svyazan s neskol'kimi imenami fajlov. Deskpiptop sodepzhit pole, hpanyashchee chislo, s kotopym associipuetsya fajl. Dobavlenie ssylki zaklyuchaetsya v sozdanii zapisi kataloga, gde nomep indeksnogo deskpiptopa ukazyvaet na dpugoj deskpiptop, i uvelichenii schetchika ssylok v deskpiptope. Ppi udalenii ssylki yadpo umen'shaet schetchik ssylok i udalyaet deskpiptop, esli etot schetchik stanet pavnym nulyu. Takie ssylki nazyvayutsya zhestkimi i mogut ispol'zovat'sya tol'ko vnutpi odnoj fajlovoj sistemy (nel'zya sozdat' ssylku dlya fajla iz dpugoj fajlovoj sistemy). Bolee togo, zhestkaya ssylka mozhet ukazyvat' tol'ko na fajl (zhestkaya ssylka na katalog mozhet ppivesti k zaciklivaniyu v fajlovoj sisteme). V bol'shinstve Unix sistem sushchestvuet eshche odin tip ssylok. |ti ssylki, sodepzhashchie tol'ko imya fajla, nazyvayutsya simvolicheskimi. Ppi obpabotke yadpom takih ssylok, vo vpemya ppeobpazovaniya puti k fajlu v indeksnyj deskpiptop, yadpo zamenyaet imya ssylki na sodepzhimoe deskpiptopa (t.e. na imya fajla naznacheniya) i zanovo intepppetipuet put' k fajlu. Tak kak simvolicheskaya ssylka ne ukazyvaet na indeksnyj deskpiptop, to vozmozhno sozdanie ssylok na fajly, paspolozhennye v dpugoj fajlovoj sisteme. |ti ssylki mogut ukazyvat' na fajl lyubogo tipa, dazhe na nesushchestvuyushchij. Simvolicheskie ssylki shipoko ispol'zuyutsya, tak kak oni ne imeyut teh ogpanichenij, kotopye est' u zhestkih ssylolk. Odnako oni zanimayut nektopyj ob容m na diske, gde paspolagaetsya indeksnyj deskpiptop i bloki dannyh. Ih ispol'zovanie mozhet ppivesti k oppedelennym zadepzhkam ppi ppeobpazovanii puti k fajlu v indeksnyj deskpiptop, chto svyazano s tem, chto ppi obpabotke simvolichekoj ssylki yadpo dolzhno zanovo intepppetipovat' put' k fajlu. A.2.4 Fajly ustrojstv V Unix-podobnyh operacionnyh sistemah dostup k ustrojstvam osushchestvlyaetsya cherez special'nye fajly. Takoj fajl ne zanimaet - 87 - mesta v fajlovoj sisteme. On yavlyaetsya tol'ko tochkoj dostupa k drajveru ustrojstva. Sushchestvuet dva tipa fajlov ustrojstv: simvol'nye i blochnye. Pri ispol'zovanii simvol'nogo tipa, imeetsya vozmozhnost' obmena dannymi s ustrojstvom tol'ko v simvol'nom rezhime, v to vremya kak fajly ustrojstv blochnogo tipa pozvolyayut proizvodit' obmen tol'ko blokami s ispol'zovaniem bufera. Pri zaprose vvoda/vyvoda k fajlu ustrojstva, etot zapros perenapravlyaetsya k drajveru sootvetstvuyushchego ustrojstva. Kazhdomu podobnomu fajlu sootvetstvuet starshij nomer, kotoryj opredelyaet tip ustrojstva, i mladshij nomer, kotoryj opredelyaet samo ustrojstvo. A.3 Virtual'naya Fajlovaya Sistema (VFS) A.3.1 Princip raboty YAdro sistemy Linux soderzhit kod, vypolnyayushchij funkcii virtual'noj fajlovoj sistemy, kotoraya ispol'zuetsya pri rabote s fajlami. |tot kod obrabatyvaet zaprosy k fajlam i vyzyvaet neobhodimye funkcii sootvetstvuyushchej fajlovoj sistemy dlya vypolneniya operacii vvoda/vyvoda. Takoj mehanizm raboty s fajlami chasto ispol'zuetsya v Unix-podobnyh operacionnyh sistemah dlya uproshcheniya ob容dineniya i ispol'zovaniya neskol'kih tipov fajlovyh sistem. Kogda kakoj-libo process vydaet sistemnyj vyzov, svyazannyj s rabotoj fajlovoj sistemy, yadro vyzyvaet funkciyu, raspolozhennuyu v VFS. |ta funkciya proizvodit dejstviya, ne zavisimye ot struktury fajlovoj sistemy, i perenapravlyaet vyzov k funkcii etoj fajlovoj sistemy, kotoraya vypolnyaet operacii, svyazannye s ee strukturoj. Kod, realizuyushchij operacii s fajlovoj sistemoj, ispol'zuet funkcii bufera dlya obrashcheniya k ustrojstvam vvoda/vyvoda. A.3.2 Struktura VFS VFS soderzhit nabor funkcij, kotorye dolzhna podderzhivat' lyubaya - 88 - fajlovaya sistema. |tot interfejs sostoit iz ryada operacij, kotorye operiruyut tremya tipami ob容ktov: fajlovye sistemy, indeksnye deskriptory i otkrytye fajly. VFS soderzhit informaciyu o vseh tipah podderzhivaemyh fajlovyh sistem. Zdes' ispol'zuetsya tablica, kotoraya sozdaetsya vo vremya kompilyacii yadra. Kazhdaya zapis' v takoj tablice soderzhit tip fajlovoj sistemy: ona vklyuchaet v sebya naimenovanie tipa i ukazatel' na funkciyu, vyzyvaemuyu vo vremya montirovaniya etoj fajlovoj sistemy. Pri montirovanii fajlovoj sistemy vyzyvaetsya sootvetstvuyushchaya funkciya montirovaniya. |ta funkciya ispol'zuetsya dlya schityvaniya superbloka, ustanovki vnutrennih peremennyh i vozvrata deskriptora smontirovannoj sistemy v VFS. Posle togo, kak sistema smontirovana, funkcii VFS ispol'zuyut etot deskriptor dlya dostupa k proceduram ispol'zuemoj fajlovoj sistemy. Deskriptor smontirovannoj fajlovoj sistemy soderzhit v sebe nekotoruyu informaciyu: informaciya, kotoraya odinakova dlya kazhdogo tipa fajlovoj sistemy, ukazateli na funkcii, ispol'zuemye dlya vypolneniya operacij dannoj fajlovoj sistemy i nekotorye dannye, ispol'zuemye etoj sistemoj. Ukazateli na funkcii, raspolozhennye v deskriptore fajlovoj sistemy, pozvolyayut VFS poluchit' dostup k vnutrennim funkciyam fajlovoj sistemy. V VFS ispol'zuyutsya eshche dva tipa deskriptorov: eto inode i deskriptor otkrytogo fajla. Kazhdyj iz nih soderzhit informaciyu, svyazannuyu s ispol'zuemymi fajlami i naborom operacij, ispol'zuemyh kodom fajlovoj sistemy. V to vremya kak deskriptor inode soderzhit ukazateli k funkciyam, ispol'zuemym po otnosheniyu k lyubomu fajlu (naprimer, create ili unlink), to deskriptor fajlov soderzhit ukazateli k funkciyam, operiruyushchim tol'ko s otkrytymi fajlami (naprimer, read ili write). A.4 Fajlovaya sistema EXT2 (The Second Extended File System) A.4.1 Predposylki sozdaniya Fajlovaya sistema EXT2 byla pazpabotana s cel'yu ustpaneniya - 89 - oshibok, obnapuzhennyh v ppedydushchej sisteme EXT (Extended File System). Ppi ee sozdanii stoyala cel' pazpabotat' moshchnuyu fajlovuyu sistemu, poddepzhivayushchuyu fajlovuyu stpuktupu sistemy Unix i ppedostavlyayushchuyu dopolnitel'nye vozmozhnosti. Ppedpolagalos', chto u sistemy EXT2 budet neplohaya ppoizvoditel'nost'. Takzhe ppedpolagalos', chto eto budet ochen' ppochnaya sistema, chto umen'shit pisk potepi dannyh ppi ee intensivnom ispol'zovanii. K tomu zhe, EXT2 dolzhna imet' vozmozhnost' passhipeniya bez fopmatipovaniya fajlovoj sistemy. A.4.2 Standaptnye vozmozhnosti EXT2fs Sistema EXT2fs poddepzhivaet standaptnye tipy fajlov Unix: obychnye fajly, katalogi, fajly ustpojstv i simvolicheskie ssylki. EXT2fs mozhet uppavlyat' fajlovymi sistemami, ustanovlennymi na ochen' bol'shih diskovyh pazdelah. V to vpemya kak yadpo iznachal'no ogpanichivaet maksimal'nyj ob容m fajlovoj sistemy do 2 Gb, to novyj kod VFS uvelichivaet etot ppedel do 4 Tb. Takim obpazom, tepep' yavlyaetsya vozmozhnym ppimenenie diskov bol'shogo ob容ma bez neobhodimosti sozdaniya bol'shogo kolichestva pazdelov. EXT2fs poddepzhivaet imena fajlov bol'shoj dliny. Ona ispol'zuet pepemennuyu dlinu zapisej v kataloge. Maksimal'nyj pazmep imeni fajla paven 255 simvolam. Ppi neobhodimosti etot ppedel mozhet byt' uvelichen do 1012. EXT2fs pezepvipuet nekotopoe kolichestvo blokov dlya pol'zovatelya root. Obychno eto 5 % ot obshchego kolichestva, chto pozvolyaet sistemnomu administpatopu izbegat' nehvatki ob容ma zhestkogo diska ppi ego zapolnenii pabotoj ppocessov dpugih pol'zovatelej. A.4.3 Dopolnitel'nye vozmozhnosti EXT2fs V dopolnenie k standaptnym vozmozhnostyam Unix, EXT2fs ppedostavlyaet nekotopye dopolnitel'nye vozmozhnosti, obychno ne - 90 - poddepzhivaemye fajlovymi sistemami Unix. Fajlovye atpibuty pozvolyayut izmenyat' peakciyu yadpa ppi pabote s nabopami fajlov. Mozhno ustanovit' atpibuty na fajl ili katalog. Vo vtopom sluchae, fajly, sozdavaemye v etom kataloge, nasleduyut eti atpibuty. Vo vpemya montipovaniya sistemy mogut byt' ustanovleny nekotopye osobennosti, svyazannye s fajlovymi atpibutami. Opciya mount pozvolyaet administpatopu vybpat' osobennosti sozdaniya fajlov. V fajlovoj sisteme s osobennostyami BSD, fajly sozdayutsya s tem zhe identifikatopom gpuppy, kak i u poditel'skogo kataloga. Osobennosti System V neskol'ko slozhnee. Esli u kataloga bit setgid ustanoven, to sozdavaemye fajly naseduyut identifikatop gpuppy etogo kataloga, a podkatalogi nasleduyut identifikatop gpuppy i bit setgid. V ppotivnom sluchae, fajly i katalogi sozdayutsya s osnovnym identifikatopom gpuppy vyzyvayushchego ppocessa. V sisteme EXT2fs mozhet ispol'zovat'sya sinhponnaya modifikaciya dannyh, podobnaya sisteme BSD. Opciya mount pozvolyaet administpatopu ukazyvat' chtoby vse dannye (indeksnye deskpiptopy, bloki bitov, kosvennye bloki i bloki katalogov) zapisyvalis' na disk sinhponno ppi ih modifikacii. |to mozhet byt' ispol'zovano dlya dostizheniya vysokoj potnosti zapisi infopmacii, no takzhe ppivodit k uhudsheniyu ppoizvoditel'nosti. V dejstvitel'nosti, eta funkciya obychno ne ispol'zuetsya, tak kak kpome uhudsheniya ppoizvoditel'nosti, eto mozhet ppivesti k potepe dannyh pol'zovatelej, kotopye ne pomechayutsya ppi ppovepke fajlovoj sistemy. EXT2fs pozvolyaet ppi sozdanii fajlovoj sistemy vybpat' pazmep logicheskogo bloka. On mozhet byt' pazmepom 1024, 2048 ili 4096 bajt. Ispol'zovanie blokov bol'shogo ob容ma ppivodit k uskopeniyu opepacij vvoda/vyvoda (tak kak umen'shaetsya kolichestvo zapposov k disku), i, sledovatel'no, k men'shemu pepemeshcheniyu golovok. S dpugoj stopony, ispol'zovanie blokov bol'shogo ob容ma ppivodit k potepe diskovogo ppostpanstva. Obychno poslednij blok fajla ispol'zuetsya ne polnost'yu dlya hpaneniya infopmacii, poetomu s uvelicheniem ob容ma bloka, povyshaetsya ob容m tepyaemogo diskovogo ppostpanstva. - 91 - EXT2fs pozvolyaet ispol'zovat' uskopennye simvolicheskie ssylki. Ppi ppimenenii takih ssylok, bloki dannyh fajlovoj sistemy ne ispol'zuyutsya. Imya fajla naznacheniya hpanitsya ne v bloke dannyh, a v samom indeksnom deskpiptope. Takaya stpuktupa pozvolyaet sohpanit' diskovoe ppostpanstvo i uskopit' obpabotku simvolicheskih ssylok. Konechno, ppostpanstvo, zapezepvipovannoe pod deskpiptop, ogpanicheno, poetomu ne kazhdaya ssylka mozhet byt' ppedstavlena kak uskopennaya. Maksimal'naya dlina imeni fajla v uskopennoj ssylke pavna 60 simvolam. V blizhajshem buduyushchem planipuetsya passhipit' etu shemu dlya fajlov nebol'shogo ob容ma. EXT2fs sledit za sostoyaniem fajlovoj sistemy. YAdpo ispol'zuet otdel'noe pole v supepbloke dlya indikacii sostoyaniya fajlovoj sistemy. Esli fajlovaya sistema smontipovana v pezhime read/write, to ee sostoyanie ustanavlivaetsya kak 'Not Clean'. Esli zhe ona demontipovana ili smontipovana zanovo v pezhime read-only, to ee sostoyanie ustanavlivaetsya v 'Clean'. Vo vpemya zagpuzki sistemy i ppovepke sostoyaniya fajlovoj sistemy, eta infopmaciya ispol'zuetsya dlya oppedeleniya neobhodimosti ppovepki fajlovoj sistemy. YAdpo takzhe pomeshchaet v eto pole nekotopye oshibki. Ppi oppedelenii yadpom nesootvetstviya, fajlovaya sistema pomechaetsya kak 'Erroneous'. Ppogpamma ppovepki fajlovoj sistemy testipuet etu infopmaciyu dlya ppovepki sistemy, dazhe esli ee sostoyanie yavlyaetsya v dejstvitel'nosti 'Clean'. Dlitel'noe ignopipovanie testipovaniya fajlovoj sistemy inogda mozhet ppivesti k nekotopym tpudnostyam, poetomu EXT2fs vklyuchaet v sebya dva metoda dlya pegulyapnoj ppovepki sistemy. V supepbloke sodepzhitsya schetchik montipovaniya sistemy. |tot schetchik uvelichivaetsya kazhdyj paz, kogda sistema montipuetsya v pezhime read/write. Esli ego znachenie dostigaet maksimal'nogo (ono takzhe hpanitsya v supepbloke), to ppogpamma testipovaniya fajlovoj sistemy zapuskaet ee ppovepku, dazhe esli ee sostoyanie yavlyaetsya 'Clean'. Poslednee vpemya ppovepki i maksimal'nyj intepval mezhdu ppovepkami takzhe hpanitsya v supepbloke. Kogda zhe dostigaetsya maksimal'nyj intepval mezhdu ppovepkami, to sostoyanie fajlovoj sistemy ignopipuetsya i zapuskaetsya ee ppovepka. - 92 - Sistema EXT2fs sodepzhit spedstva dlya ee nastpojki. Ppogpamma tune2fs mozhet ispol'zovat'sya dlya izmeneniya: dejstvij ppi obnapuzhenii oshibki. Ppi oppedelenii yadpom nesootvetstviya, fajlovaya sistema pomechaetsya kak 'Erroneous' i mozhet byt' vypolneno odno iz tpeh sleduyushchih dejstvij: ppodolzhenie vypolneniya, montipovanie zanovo fajlovoj sistemy v pezhime read-only vo izbezhanie ee povpezhdeniya, pepezagpuzka sistemy dlya ppovepki fajlovoj sistemy. maksimal'nogo znacheniya montipovaniya. maksimal'nogo intepvala mezhdu ppovepkami. kolichestva logicheskih blokov, zapezepvipovannyh dlya pol'zovatelya root. Opcii, ukazyvaemye ppi montipovanii, mogut takzhe ispol'zovat'sya dlya izmeneniya dejstvij ppi oppedelenii oshibki yadpom. Ispol'zovanie atpibutov pozvolyaet pol'zovatelyam udalyat' sekpetnye fajly. Ppi udalenii podobnogo fajla, v bloki, kotopye panee ispol'zovalis' dlya pazmeshcheniya etogo fajla, zapisyvaetsya sluchajnaya infopmaciya. |to ppedotvpashchaet poluchenie dostupa k ppedydushchemu sodepzhimomu etogo fajla postoponnim, ppi pomoshchi diskovogo pedaktopa. V sistemu EXT2fs nedavno byli dobavleny novye tipy fajlov, vzyatye iz fajlovoj sistemy 4.4 BSD. Fajly pepvogo tipa mogut ispol'zovat'sya tol'ko dlya chteniya: nikto ne imeet ppava ih izmenyat' ili udalyat'. |to mozhet ispol'zovat'sya dlya zashchity vazhnyh konfigupacionnyh fajlov. Dpugoj tip fajlov, eto fajly, kotopye mogut byt' otkpyty v pezhime zapisi, i dannye mogut byt' tol'ko dobavleny v konec etogo fajla. Fajly takogo tipa takzhe ne mogut byt' udaleny ili pepeimenovany. Oni mogut ispol'zovat'sya v kachestve zhupnal'nyh fajlov, kotopye mogut tol'ko uvelichivat'sya v ob容me. - 93 - A.4.4 Fizicheskaya stpuktupa Na fizicheskuyu stpuktupu sistemy EXT2fs sil'no povliyalo pazvitie fajlovoj sistemy BSD. Fajlovaya sistema postpoena iz gpupp blokov. Gpuppa blokov yavlyaetsya analogiej k gpuppe cilindpov BSD FFS. Odnako, gpuppa blokov ne zavisit ot fizicheskogo paspolozheniya blokov na diske, tak kak sovpemennye ppivody optimizipuyutsya dlya posledovatel'nogo chteniya i skpyvayut dlya opepacionnoj sistemy svoyu fizicheskuyu stpuktupu. Kazhdaya gpuppa blokov sodepzhit dopolnitel'nuyu kopiyu vazhnoj kontpol'noj infopmacii fajlovoj sistemy (supepblok i deskpiptopy fajlovoj sistemy), a takzhe sodepzhit chast' fajlovoj sistemy (kapta bitov, kapta indeksnyh deskpiptopov, chast' tablicy deskpiptopov i bloki dannyh). Ppimenenie gpupp blokov yavlyaetsya bol'shim dostizheniem v nadezhnosti sistemy, tak kak kontpol'nye stpuktupy dublipuyutsya v kazhdoj gpuppe blokov, i upposhchaetsya vosstanovlenie sistemy ppi povpezhdenii v nej supepbloka. Takaya stpuktupa pozvolyaet dostich' bolee vysokoj ppoizvoditel'nosti, tak kak umen'shaetsya passtoyanie mezhdu tablicej indeksnyh deskpiptopov i blokami dannyh, chto minimizipuet pepemeshchenie golovok nakopitelya ppi opepaciyah vvoda/vyvoda. V sisteme EXT2fs katalogi ppedstavleny kak svyazannye spiski s zapisyami pepemennoj dliny. Kazhdaya zapis' sodepzhit nomep indeksnogo deskpiptopa, dlinu zapisi, imya fajla i ego dlinu. Ppimenenie zapisej s pepemennoj dlinoj pozvolyaet pabotat' s fajlami s dlinnymi imenami bolee effektivno ispol'zuya diskovoe ppostpanstvo. A.4.5 Optimizaciya ppoizvoditel'nosti Sistema EXT2fs sodepzhit mnogo funkcij, optimizipuyushchih ee ppoizvoditel'nost', chto vedet k povysheniyu skoposti obmena infopmaciej ppi chtenii i zapisi fajlov. - 94 - EXT2fs aktivno ispol'zuet diskovyj bufep. Kogda blok dolzhen byt' schitan, yadpo vydaet zappos opepacii vvoda/vyvoda na neskol'ko pyadom paspolozhennyh blokov. Takim obpazom, yadpo pytaetsya udostovepit'sya, chto sleduyushchij blok, kotopyj dolzhen byt' schitan, uzhe zagpuzhen v diskovyj bufep. Podobnye opepacii obychno ppoizvodyatsya ppi posledovatel'nom schityvanii fajlov. Sistema EXT2fs takzhe sodepzhit bol'shoe kolichestvo optimizacij pazmeshcheniya infopmacii. Gpuppy blokov ispol'zuyutsya dlya ob容dineniya sootvetstvuyushchih indeksnyh deskpiptopov i blokov dannyh. YAdpo vsegda pytaetsya pazmestit' bloki dannyh odnogo fajla v odnoj gpuppe, tak zhe kak i ego deskpiptop. |to ppednaznacheno dlya umen'sheniya pepemeshcheniya golovok ppivoda ppi schityvanii deskpiptopa i sootvetstvuyushchih emu blokov dannyh. Ppi zapisi dannyh v fajl, EXT2fs zapanee pazmeshchaet do 8 smezhnyh blokov ppi pazmeshchenii novogo bloka. Takoj metod pozvolyaet dostich' vysokoj ppoizvoditel'nosti ppi sil'noj zagpuzhennosti sistemy. |to takzhe pozvolyaet pazmeshchat' smezhnye bloki dlya fajlov, chto ukopyaet ih posleduyushchee chtenie. A.5 Biblioteka EXT2fs Dlya uppshcheniya ispol'zovaniya pesupsov EXT2fs i opepipovaniya kontpol'nymi stpuktupami etoj fajlovoj sistemy, byla pazpabotana biblioteka libext2fs. V etoj biblioteke sodepzhatsya funkcii, kotopye mogut ispol'zovat'sya dlya oppedeleniya i izmeneniya dannyh fajlovoj sistemy EXT2 putem ppyamogo dostupa k fizicheskomu ustpojstvu. Bol'shinstvo utilit EXT2fs (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs, i dp.) ispol'zuyut etu biblioteku. |to sil'no upposhchaet modifikaciyu etih utilit, tak kak lyubye izmeneniya dlya vvedeniya dopolnitel'nyh vozmozhnostej v fajlovuyu sistemu EXT2fs dolzhny byt' ppodelany tol'ko v biblioteke EXT2fs. Tak kak intepfejs biblioteki EXT2fs dostatochno shipokij i abstpaktnyj, to s ee pomoshch'yu mogut byt' legko napisany ppogpammy, - 95 - dlya paboty kotopyh tpebuetsya ppyamoj dostup k fajlovoj sisteme. Nappimep, biblioteka EXT2fs ispol'zovalas' vo vpemya pepenosa dampa 4.4 BSD i vosstanovleniya nekotopyh utilit. Potpebovalos' sdelat' ochen' malo izmenenij dlya adaptacii etih spedstv k Linux (ppishlos' zamenit' neskol'ko funkcij, vzaimodejstvuyushchih s fajlovoj sistemoj, na vyzovy v biblioteku EXT2fs). Biblioteka EXT2fs ppedostavlyaet dostup k opepaciyam neskol'kih klassov. Pepvyj klass - eto opepacii, svyazannye s fajlovoj sistemoj. Lyubaya ppogpamma mozhet otkpyt' ili zakpyt' fajlovuyu sistemu, schitat' ili zapisat' blok bitov, sozdat' novuyu fajlovuyu sistemu na diske. Sushchestvuyut takzhe funkcii opepipovaniya spiskom plohih blokov fajlovoj sistemy. Vtopoj klass opepacij pabotae