Adatta´rola´s ´es fa´jlrendszerek (jegyzet) Tuza Zolt´an, Uhl´ar L´aszl´o, B´erci Norbert 2014. szeptember 29-30-i o´ra anyaga
Tartalomjegyz´ ek 1. Bevezet´ es
1
2. Adatt´ arol´ o perif´ eri´ ak 2.1. Merevlemez (Hard Disk Drive - HDD) . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Compact Disk (CD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Pendrive, Flashdrive, SSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 3 4
3. Part´ıci´ ok
5
4. F´ ajlrendszerek 4.1. Fragment´ aci´ o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. F´ ajlrendszer implement´ aci´ ok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 6 7
5. Ko arstrukt´ ura ´ es a f´ ajlrendszer adminisztr´ aci´ oj´ anak manipul´ aci´ oja ¨nyvt´ 5.1. Alapvet˝ o parancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Jogosults´ agok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Jogosults´ agok megv´ altoztat´ asa . . . . . . . . . . . . . . . . . . . . . . . . . 5.4. Alap´ertelmezett jogok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5. Tulajdonos megv´ altoztat´ asa . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6. F´ ajlrendszerrel kapcsolatos parancsok . . . . . . . . . . . . . . . . . . . . . 5.7. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
9 9 9 10 10 10 11 11
6. K¨ onyvt´ arszerkezet
11
7. Egy´ eb parancsok
13
8. Feladatok
13
1. Bevezet´ es Egy program fut´ asa sor´ an az elv´egzett sz´am´ıt´asokb´ol (r´esz)eredm´enyek keletkeznek, amit az ill´ekony1 mem´ oria [volatile memory] t´ arol. Ha ezeket az eredm´enyeket el akarjuk t´arolni a sz´am´ıt´ og´ep k´et bekapcsol´ asa k¨ oz¨ ott vagy egy program k´et futtat´asa k¨oz¨ott, akkor sz¨ uks´eges, hogy a t´ arol´ as elektromos ´ aram n´elk¨ ul is biztos´ıthat´o legyen. Erre kezdetben nyomtat´ot, illetve lyukk´arty´ akat haszn´ altak (ez ut´ obbi annyival volt szerencs´esebb, hogy egy lyukk´artya-olvas´oval k¨onnyen vissza lehet t¨ olteni az inform´ aci´ ot a mem´ori´aba). K´es˝obb megjelentek a szalagos t´arol´asi m´odszerek, melyek seg´ıts´eg´evel nagyobb mennyis´eg˝ u adatot tudtunk line´arisan elmenteni (eml´ekezz¨ unk a magn´ okazett´ akra, ahol ha egy sz´ amot ki szerett¨ unk volna hagyni, azt a szalag gyors teker´es´evel tudtuk csak megtenni). 0 Revision
: 51 (Date : 2013 − 10 − 0722 : 03 : 42 + 0200(M on, 07Oct2013)) megsz˝ un´ es´ evel a benne t´ arolt adat elveszik
1 t´ apfesz¨ ults´ eg
1
Az ´ att¨ or´est a cser´elhet˝ o lemezes olvas´o jelentette, ahol egy m´agnesezhet˝o korongot forgattunk egy mozgathat´ o m´ agneses olvas´ o/´ır´ o fej el˝ott, szemben a m´agneses szalaggal, ahol az a olvas´o fej fixen volt tartva. Ezzel a fejet k¨ ul¨onb¨oz˝o, a korong m´as ´es m´as r´esz´en l´ev˝o adats´avok f¨ol´e tudtuk helyezni. Ezt a m´ odszert - melyben a t´arol´on l´ev˝o adatok b´armelyik´et a t¨obbi adat ´erint´ese/´ atl´ep´ese n´elk¨ ul ´erhetj¨ uk el - h´ıvjuk v´eletlen hozz´af´er´esnek [random access]. Ezen a ponton k´et ir´ any indult el, az egyik ment´en a cser´elhet˝o lemezeket fejlesztett´ek, m´ıg a m´asik vonalon l´etrej¨ ottek fix- vagy merevlemezek. Mivel ezek az eszk¨ oz¨ ok nem k¨ ozvetlen¨ ul vannak a sz´am´ıt´og´ep alaplapj´ara ´ep´ıtve, hanem valamilyen csatlakoz´ on kereszt¨ ul kapcsol´odnak hozz´a, ´ıgy adatt´arol´o perif´eri´ak gy˝ ujt˝on´evvel hivatkozunk r´ ajuk. P´eld´ aul az egeret ´es a monitort is perif´eri´anak tekintj¨ uk, az egyiket adatbeviteli perif´eri´ anak, m´ıg a m´ asikat adatmegjelen´ıt˝o perif´eri´anak h´ıvjuk. Egy adatt´arol´o eszk¨oz legfontosabb h´ arom jellemz˝ oje a k¨ ovetkez˝ o: • (adat)hozz´ af´er´esi id˝ o [(data) latency]: Az adat megc´ımz´ese ´es az adat kiolvas´asa k¨oz¨ott eltelt id˝ o. Mai merevlemezekn´el ez n´eh´any ms. • adat´ atviteli sebess´eg [transfer rate]: Egy id˝oegys´eg alatt az eszk¨ozre ´ırt vagy onn´et kiolvasott adat mennyis´ege. • t´ arol´ okapacit´ as [capacity]: az eszk¨oz¨on t´arolhat´o bitek/b´ajtok mennyis´ege. Fontos tiszt´azni, hogy ez egy brutt´ o ´ert´ek: mivel nem a nyers” merevlemezt haszn´aljuk a nett´o ´ert´ek ett˝ol ” elt´er˝ o lehet hiszen a k¨ ul¨ onb¨ oz˝ o logikai f´ajlrendszerek m´as-m´as m´odon ´ep´ıtik fel a t´arol´asi adatszerkezeteket - l´ asd a f´ ajlrendszerek r´eszt. Tov´ abbi fontos jellemz˝ o az adatt´ arol´ as ´elettartalma, azaz meddig k´epes egy eszk¨oz a r´a´ırt inform´ aci´ ot meg˝ orizni. A m´ agneses elven m˝ uk¨od˝o eszk¨oz¨ok ´altal´aban el˝obb szenvednek mechanikai hib´ ab´ ol kifoly´ o adatveszt´est, mint hogy a m´agneses elven t´arolt adat elveszne. Tov´abbi, k¨ uls˝o t´enyez˝ ok miatt is s´er¨ ulhet az adatintegrit´as, p´eld´aul mechanikai behat´as vagy h˝ohat´as miatt2 ; a Compact Diskek (CD) eset´eben p´eld´aul a fel¨ ulet elgomb´asod´asa jelent vesz´elyt az inform´aci´ ora n´ezve. Az Inform´ aci´ o- ´es k´ odelm´elet c´ım˝ u t´argyban r´eszletesen t´argyal´asra ker¨ ulnek az inform´ aci´ o t¨ om¨ or´ıt´es´ehez illetve az adatveszt´essel szembeni r´eszleges rezisztenci´ahoz sz¨ uks´eges m´ odszerek.
2. Adatt´ arol´ o perif´ eri´ ak 2.1. Merevlemez (Hard Disk Drive - HDD) Ahogyan a cser´elhet˝ o lemezes adatt´ arol´ast, u ´gy a fix” vagy merevlemezes” adatt´arol´ast is az ” ” IBM m´ern¨ okei tal´ alt´ ak fel az 1950-es ´evekben3 . Maga az adatt´arol´as elve az elm´ ult ¨otven ´evben nem sokat v´ altozott, egyed¨ ul a megb´ızhat´os´ag ´es a t´arolhat´o adatmennyis´eg m´ert´eke n˝ott drasztikusan. A k¨ uls˝ o leveg˝ ot˝ ol elz´ art vagy porsz˝ ur˝ovel ell´atott nyitott h´az a k¨ovetkez˝o r´eszeket tartalmazza: • mindk´et oldal´ an m´ agnesezhet˝ o korongok • olvas´ o/´ır´ o fejek, amelyek a m´ agneses fel¨ ulet felett p´ar nanom´eterrel - l´egp´arn´an siklanak4 • vez´erl˝ o elektronika, amely pozicion´alja a fejeket, olvas´as eset´en elv´egzi az anal´og m´agneses m´er´es digitaliz´ al´ as´ at, illetve a csatol´o fel¨ uletnek megfelel˝o adat´atviteli protokollt megval´os´ıtja (IDE, SATA, stb.). • forgat´ omotor, jellemz˝ oen 5400 illetve 7200 forulat/perc sebess´eggel forgatja a lemezeket, teh´ at az olvas´ o fejek - a sug´ arir´ any´ u poz´ıci´ot´ol f¨ ugg˝oen - kb. 270 km/h-val sz´aguldanak a lemezek felett. 2 Minden m´ agneses anyagnak l´ etezik egy u ´gynevezett Curie-pontja, ezen h˝ om´ ers´ eklet felett az anyag elveszti m´ agneses tulajdons´ ag´ at 3 Az els˝ o merevlemezt IBM 350 RAMAC n´ even forgalmazt´ ak ´ es 5 megabyte t´ arol´ okapacit´ assal rendelkezett, ezt ¨ otven darab 24”-os lemezzel ´ ert´ ek el 4 ebb˝ ol k¨ ovetkezik, hogy nincs v´ akuum a merevlemez belsej´ eben
2
1. ´ abra. A merevlemez v´azlatos k´epe A lemezeket a k¨ ul¨ onb¨ oz˝ o ker¨ uletek ment´en s´avokra osztj´ak, a s´avokat pedig szektorokra, ez a legkisebb c´ımezhet˝ o egys´eg egy merevlemezen. Ezek m´erete r´egebben 512 byte volt, jelenleg el´erhet˝ o 4096 byte is. Mivel az olvas´ o fejek egy¨ utt mozognak, ez´ert a k¨ ul¨onb¨oz˝o lemezeken azonos s´ avon ´ allnak minden pillanatban, ezeket a s´avokat egy¨ uttesen cilindernek nevezz¨ uk. L´athat´o teh´ at, hogy az ¨ osszetartoz´ o adatokat szomsz´edos szektorokra ill. azonos cilinderekre ´erdemes ´ırni. Fontos fogalom m´eg a klaszter, ami az azonos s´avon egym´as ut´an elhelyezked˝o szektorok gy˝ ujt˝ oneve. L´ asd az 1. ´ abr´ an. A merevlemez hat´ekony feloszt´asa ´es az adatok t´arol´asa a merevlemezre telep´ıtett f´ ajlrendszer feladata, melyet r´eszletesebben t´argyalunk.
2.2. Compact Disk (CD) A cser´elhet˝ o lemezes fejl˝ od´esi vonalat az ut´obbi ´evtizedig a m´agneses t´arol´asi elven m˝ uk¨od˝o eszk¨ oz¨ ok hat´ arozt´ ak meg, de ezek t´ arol´ okapacit´asa nem n˝ott ´es/vagy hozz´af´er´esi ideje nem cs¨okkent olyan m´ert´ekben, mint a Compact Diskek´e, ez´ert a tov´abbiakban nem is foglalkozunk vel¨ uk. A CD-s adatt´ arol´ as egy - a merevlemezes t´arol´ast´ol elt´er˝oen - alapvet˝oen optikai elven m˝ uk¨ od˝ o t´ arol´ asi m´ odszer. Egy l´ezerdi´ oda ´altal kibocs´atott koherens f´enysug´ar tapogatja le a CD lemez fel¨ ulet´et, melyen apr´ o g¨ odr¨ ok ´es p´ upok v´altj´ak egym´ast, melyekr˝ol m´ask´ent ver˝odik vissza a l´ezersug´ ar - ezzel reprezent´ alva a bitek ´ert´ekeit. Gy´art´as sor´an a CD ROM lemezen - mint a merevlemezn´el - s´ avokat ´es szektorokat hoznak l´etre, amelyben a biteket a v´ajatok [pit] reprezent´ alj´ ak. Pl.: ha van m´elyed´es [pit] akkor az logikai egyes jelent, ha nincs [lane] akkor logikai null´ at. Amikor az olvas´ o fej mindig azonos sz¨ogb˝ol megvil´ag´ıtja a fel¨ uletet, akkor a v´ajatba bees˝ o l´ezer f´eny m´ ashova ver˝ odik vissza, mint az l´ezer f´eny, mint ami nem esett bele a v´ajatba. Mivel a lemez fixen s´ıkban forog ´es az olvas´ofej is meghat´arozott sz¨ogben vil´ag´ıtja meg a felsz´ınt, ´ ez´ert a v´ arhat´ o visszaver˝ od´esi helyekre f´eny´erz´ekeny szenzorokat helyeznek el. Ertelemszer˝ uen teh´ at a logikai egyes ´es null´ as ´ert´ekek m´as-m´as szenzorb´ol v´altanak ki jelet. Ebb˝ol a fel´ep´ıt´esb˝ol l´ athat´ o, hogy min´el f´ okusz´ altabb a l´ezersug´ar, illetve min´el kisebbek a v´ajatok a lemez fel¨ ulet´en, ann´ al nagyobb az el´erhet˝ o adats˝ ur˝ us´eg (term´eszetesen tov´abbi fontos param´eterek is vannak - anyagtechnikai jellemz˝ ok, a l´ezer hull´amhossza, valamint t¨obb adatt´arol´o r´eteggel rendelkez˝o lemezek is l´eteznek). A CD-ROM elnevez´esben a ROM (Read Only Memory/Media) r¨ovid´ıt´es arra utal, hogy ezeket az eszk¨ oz¨ oket csak egyszer lehet ´ırni, ut´ana m´ar csak olvashat´oak. Az´ota kifejlesztett´ek az u ´jra ´ırhat´ o CD lemezeket is, ahol az olvas´ast´ol elt´er˝o tulajdons´ag´ u l´ezersug´arral vissza´ all´ıtj´ ak az eredeti fel¨ uletet - term´eszetesen ebben az esetben nem v´ajatokkal dolgozunk, hanem a fel¨ uletnek v´ altoztatjuk meg a visszaver˝od´esi tulajdons´agait az ´ır´as sor´an. 3
2.3. Pendrive, Flashdrive, SSD Mivel ezen eszk¨ oz¨ ok m˝ uk¨ od´es´enek meg´ert´es´ehez komoly elektronikai h´att´er tud´asra van sz¨ uks´eg, ez´ert a technikai r´eszleteket nem t´ argyaljuk. A m˝ uk¨od´esi elvr˝ol elegend˝o annyit megjegyezn¨ unk, hogy ezek a t´ arol´ ok olyan k¨ ul¨ onleges ´aramk¨or¨ok, amelyekben l´ev˝o tranzisztorok t´apfesz¨ ults´eg jelenl´ete n´elk¨ ul is k´epesek megtartani azt az ´allapotot, amit t´apfesz¨ ults´eg jelenl´et´eben be´all´ıtottunk. Fontos m´eg megjegyezni, hogy ebb˝ol a technikai megval´os´ıt´asb´ol kifoly´olag az ilyen t´ıpus´ u eszk¨ oz¨ ok ´ır´ asi ´es olvas´ asi sebess´ege jelent˝osen elt´er egym´ast´ol. A flash mem´ ori´ ak k´et f˝ o t´ıpus´ at k¨ ul¨onb¨oztetj¨ uk meg: a NAND ´es a NOR mem´oriacell´ab´ol ´ ´es NOR all´ ´ okat, amik nev¨ uket onn´et kapt´ ak, hogy a megval´os´ıt´asuk a logikai NAND (neg´alt ES) (neg´ alt VAGY) kapuk´era hasonl´ıt. A legfontosabb k¨ ul¨onbs´eg k¨ozt¨ uk, hogy a NAND cell´ak gyorsabban t¨or¨ olhet˝ ok ´es ´ırhat´ ok, kevesebb szil´ıcium ter¨ uletet ig´enyelnek, azaz olcs´obbak is, tov´abb´a a t´ arolt adatokat csak blokkokban lehet el´erni (a NOR flash b´ajt szint˝ u el´er´est is lehet˝ov´e tesz). Mindebb˝ ol ad´ od´ oan napjaink flash mem´ori´ai majdnem kiz´ar´olag NAND alap´ uak, ´es els˝odleges feladatuk a h´ att´ert´ arak helyettes´ıt´ese (mivel azok szint´en blokkonk´ent c´ımzettek). A hardveres megval´ os´ıt´ as ir´ ant ´erdekl˝od˝ok a k¨ovetkez˝o kulcsszavak ment´en tudnak tov´abbi inform´ aci´ ohoz jutni: Flash memory, Floating gate, EEPROM. 2.3.1. Wear levelling A flash mem´ ori´ ak/t´ arol´ ok egyik legfontosabb tulajdons´aga a m´ar eml´ıtett blokkonk´ent t¨ort´en˝o t¨ orl´es, ami miatt egyetlen b´ ajt megv´ altoztat´asa is a teljes blokk t¨orl´es´et k¨oveteli meg. Nagyon fontos teh´ at, hogy flash t´ arol´ ok eset´en t¨obb, egym´ashoz k¨ozel l´ev˝o b´ajt ´ır´as´at egyetlen m˝ uveletben v´egezz¨ uk. Sajnos a blokk u ´jra´ır´asok sz´am´anak is van egy fels˝o hat´ara, ami napjainkban (2013) jellemz˝ oen sz´ azezres nagys´ agrend˝ u, ´ıgy a blokkokba szervezett ´ır´as sem elegend˝o, arra is sz¨ uks´eg van, hogy a blokkokat lehet˝os´eg szerint ugyanannyira haszn´aljuk el (ugyanannyiszor t¨ or¨ olj¨ uk), ´ıgy megn¨ ovelve az eszk¨ oz ´elettartam´at. (Ha ezt nem tenn´enk, akkor lenn´enek olyan blokkok az eszk¨ oz¨ on, amit olyan sokszor u ´jra´ırtunk/t¨or¨olt¨ unk, hogy azok meghib´asodnak, ´es ha ezek olyan helyen helyezkednek el, ami a f´ajlrendszer szempontj´ab´ol kritikus, akkor ak´ar a teljes t´ arol´ oeszk¨ ozt is haszn´ alhatatlann´a tenn´ek. A nem kritikus helyen l´ev˝o hib´as blokkok is bossz´ us´ agot okoznak, hiszen ezek azt jelentik, hogy az eszk¨oz¨on t´arolt f´ajl kiolvasott tartalma nem egyezik meg azzal, amit oda´ırtunk.) Ez a meghib´ asod´ as-elker¨ ul˝ o technika a wear levelling, ami (a mem´oriakezel´esn´el megismert virtu´ alis mem´ ori´ ahoz hasonl´ oan) egy k¨ozb¨ uls˝o r´eteget k´epez a flash mem´oria fizikai blokkjai ´es a fels˝ obb r´etegek (driver, oper´ aci´ os rendszer) ´altal megc´ımzett logikai blokkok k¨oz¨ott. ´Igy lehet˝ os´ege ny´ılik arra, hogy egy logikailag ugyanarra a blokkra ir´anyul´o ´ır´as/t¨orl´es m˝ uveletet m´as fizikai blokkra ir´ any´ıtson, azaz a fizikai blokkok ´ır´asainak/t¨orl´eseinek sz´am´at k¨ozel azonos szinten tartsa, ´ıgy a t´ arol´ oeszk¨ oz ´elettartam´ at nagys´agrendekkel meghosszabb´ıtsa (azaz az ´elettartam ne a legt¨ obbet ´ırt/t¨ or¨ olt logikai blokkt´ ol f¨ uggj¨on, hanem a teljes eszk¨oz blokkjai gyakorlatilag k¨ozel egy id˝ oben romoljanak el, az ´ır´ asi/t¨orl´esi m˝ uveletek sz´etter´ıt´es´enek, egyenletesebb´e t´etel´enek k¨ osz¨ onhet˝ oen). A wear levelling technik´ aban megk¨ ul¨onb¨oztet¨ unk dinamikus ´es statikus m´odszert: a dinamikus m´ odszer csak a t¨ orl´esek/´ır´ asok sor´an v´egzi el a logikai ´es a fizikai blokkok ¨osszerendel´es´enek megv´ altoztat´ as´ at az adott blokk t¨ orl´esi sz´am´anak figyelembe v´etel´evel, m´ıg a statikus m´odszer a nem ´ırt/t¨ or¨ olt blokkokra is kiterjeszti ezt. A k¨ ul¨onbs´eg teh´at, hogy am´ıg a dinamikus esetben azok a logikai blokkok, amelyeket nagyon ritk´an ´ırunk, a hely¨ uk¨on maradnak (´es j´o ´allapotban vannak, hiszen csak ritk´ an ´ırtuk fel¨ ul), addig a gyakran ´ırt blokkok gyakran cser´el˝odnek, de egyre rosszabb ´ allapot´ u blokkokon foglalnak helyet (b´ar ezen blokkok egyenletesen rosszak). A statikus esetben a nem ´ırt/t¨ or¨ olt blokkokat is fizikailag ´athelyezi a flash vez´erl˝o, ´ıgy az ¨osszes blokk k¨ ozel ugyanazon az elhaszn´ alts´ agi fokon van. Ha a teljes t´arat tekintj¨ uk, ez nagy ´elettartam n¨ oveked´eshez vezethet (nyilv´ an att´ol f¨ ugg˝oen, hogy fels˝obb szintr˝ol a t´ar mekkora r´esz´et ´ırjuk fel¨ ul/t¨ or¨ olj¨ uk: p´eld´ aul ha egy flash t´arol´ot u ´gy haszn´alunk, hogy a r´a m´asolt adatokat azok felhaszn´ al´ asa ut´ an t¨ or¨ olj¨ uk ´es u ´gy ´ırunk r´a u ´jabb adatot, akkor nincs sz´amottev˝o k¨ ul¨onbs´eg a statikus ´es a dinamikus wear levelling k¨oz¨ott, viszont ha nagy r´esz´en fixen ugyanaz az adat tal´alhat´ o, ´es csak kis r´esz´et ´ırjuk u ´jra-´es-´ ujra, akkor ´ori´asi a k¨ ul¨onbs´eg a statikus ´es a dinamikus wear levelling ´ altal el´ert ´elettartam hosszabbod´as k¨oz¨ott.) A statikus m´odszer egyben azt is jelenti,
4
hogy akkor is t¨ orl´est/´ır´ ast kell v´egezni, amikor azokat nem a fels˝obb r´etegek kezdem´enyezik, emiatt a teljes´ıtm´enye elvileg kevesebb, mint a dinamikus m´odszerrel m˝ uk¨od˝o h´att´ert´ar´e, ugyanakkor megfelel˝ ou ul¨ onbs´eg sz´amottev˝oen cs¨okkenthet˝o. Ugyanezen okok miatt a sta¨temez´essel ez a k¨ tikus wear levelling komplexebb algoritmust, ´ıgy komplexebb hardveres implement´aci´ot ig´enyel, azaz dr´ ag´ abb. Fontos kiemelni, hogy az ilyen t´ıpus´ u meghib´asod´asok oka kiz´ar´olag az ´ır´as/t¨orl´es m˝ uveletek sz´ ama, nem pedig az utols´ o ´ır´ as ´ ota eltelt id˝o, azaz egy csak olvas´asra haszn´alt flash t´arol´o ´elettartama nagys´ agrendekkel hosszabb, mint egy ´ır´asra is haszn´alt´e. A meghib´ asod´ asok elker¨ ul´ese ´erdek´eben v´egzett wear levelling mellett sz¨ uks´eges, hogy a m´ar meghib´ asodott blokkokat is nyilv´ an tartsuk, hogy az arra t¨ort´en˝o ´ır´ast elker¨ ulj¨ uk. Ekkor viszont arra is lehet˝ os´eg van, hogy a gy´ art´ as sor´an eleve hib´as blokkokat szint´en megjel¨olj¨ uk, ami hat´ekonyabb, kevesebb selejttel t¨ ort´en˝ o (azaz olcs´obb) gy´art´ast jelent, mivel a jelenlegi technol´ogia nem garant´ alja a 100%-os hibamentess´eget. A wear levellinget ´es a hib´ as blokkok nyilv´antart´as´at az USB (pen)drive-ok illetve az SSD-k hardveres megval´ os´ıt´ asban tartalmazz´ ak (flash vez´erl˝ o ), ezeket az eszk¨oz¨oket u ´gy kell haszn´alni, mintha hagyom´ anyos h´ att´ert´ arak lenn´enek, minden fentebb eml´ıtett feladatot elv´egez a hardver. K¨ olts´eg ´es funkcionalit´ as szempontj´ab´ol a pendriveok ´altal´aban dinamikus- m´ıg az SSD h´ att´ert´ arak statikus wear levellinget tartalmaznak.
3. Part´ıci´ ok Lehet˝ os´eg¨ unk van arra, hogy a h´ att´ert´aron l´ev˝o ter¨ uletet felosszuk ´es k¨ ul¨onb¨oz˝o m´eret˝ u, de osszetartoz´ o ter¨ uleteket hozzunk l´etre. Egy ilyen ter¨ uletet part´ıci´onak h´ıvunk. Minden part´ıci´o ¨ k¨ ul¨ on kezelhet˝ o a t¨ obbit˝ ol: t¨ or¨ olhet˝ o, form´azhat´o, m´asolhat´o, ´es saj´at f´ajlrendszerrel rendelkezik. Ez´ert fizikailag egy lemezen t´ arolhatunk k¨ ul¨onb¨oz˝o oper´aci´os rendszereket, an´elk¨ ul, hogy zavarn´ ak egym´ ast. A part´ıci´ ok MS Windows alatt bet˝ uvel c´ımk´ezve jelennek meg, pl. C:, D:. - fontos megjegyezni, hogy ha fizikailag m´ asik lemezen van egy part´ıci´o az a meghajt´o bet˝ u jel´eb˝ol nem der´ıthet˝o ki (pl. elk´epzelhet˝ o, hogy a C: meghajt´o egy part´ıci´o, amely a teljes merevlemezt elfoglalja, m´ıg a D: illetve E: meghajt´ ok fizikailag a C: -t˝ol k¨ ul¨onb¨oz˝o, de ugyanazon a lemezen helyezkednek el: valamilyen ar´ anyban megosztj´ ak a lemez ter¨ ulet´et). GNU/Linux alatt m´ ar tiszt´ abb a helyzet, a dev k¨onyvt´ar tartalmazza a sz´am´ıt´og´ephez csatolt perif´eri´ ak eszk¨ ozf´ ajljait, ´ıgy a merevlemezek´et is. Az IDE csatol´oval rendelkez˝o lemezeket hda, hdb, hdc, hdd, . . . n´evvel tal´ aljuk a k¨ onyvt´arban, m´ıg a SATA vagy SCSI csatol´oval rendelkez˝oek ´ sda, sdb, sdc stb n´evvel ´erhet˝ oek el. Altal´ aban k´et IDE csatlakoz´o van egy alaplapon, amelyre k´et-k´et eszk¨ ozt lehet csatlakoztatni, ez´ert a hda az els˝oleges IDE csatlakoz´o master eszk¨oze, a hdb ugyanezen k´ abelen l´ev˝ o slave eszk¨oz. A hdc, hdd a m´asodlagos IDE csatlakoz´ora felf˝ uz¨ott eszk¨ oz¨ oket jelzik. Ha a hda lemez part´ıci´okat tartalmaz, akkor az els˝oleges part´ıci´o hda0 n´even, m´ıg a m´ asodik part´ıci´ o hda1 n´even fog szerepelni a /dev k¨onyvt´arban. SATA/SCSI eszk¨oz¨ok eset´en az sd ut´ an k¨ ovetkez˝ o a,b,c,d bet˝ ujelek ´es az 1,2,3,4 sz´amok ugyanezt jelentik (p´eld´aul: \dev\sda0 vagy \dev\sda1). Term´eszetesen az oper´ aci´ os rendszert inform´alni kell arr´ol, hogy milyen part´ıci´ok l´eteznek az adott lemezen, amit a Master Boot Record (MBR) tartalmaz. Ebben tal´alhat´ok a part´ıci´ok m´eretei, kezd˝ o ´es v´eg ´ert´ekeik valamint az, hogy melyik part´ıci´o tartalmaz oper´aci´os rendszer elind´ıt´ as´ ahoz sz¨ uks´eges adatokat - ezt/ezeket a part´ıci´okat h´ıvjuk bootolhat´o part´ıci´onak. A MBR-t az 1980-as ´evekben tal´ alt´ak ki. Tov´abbfejleszt´ese a GUID Partion Table (GPT), amely sz´ amos kiterjeszt´est tartalmaz MBR-hez k´epest, p´eld´aul az MBR eset´eben a legnagyobb part´ıci´ o m´erete maximum 2 TiB lehet, m´ıg a GPT eset´en ez 8 ZiB (ZiB = Zeta Byte = 1021 Byte), tov´ abb´ a GPT part´ıcion´ al´ as eset´en a part´ıci´ok sz´ama sem korl´atozott (ellenben az MBR-rel).
4. F´ ajlrendszerek A f´ ajlrendszer feladata, hogy az elt´ aroland´o f´ajlokat ´es k¨onyvt´arakat a h´att´ert´ar egy part´ıci´oj´an a megfelel˝ o helyen elhelyezze, garant´ alja annak visszaolvashat´os´ag´at, valamint a v´altoz´asokat
5
adminisztr´ alja. Teh´ at a f´ ajlrendszer funkci´oja kett˝os: egyr´eszt t´arolja egy adott part´ıci´on l´ev˝ o adatok (f´ ajlok) hely´et, m´ asr´eszt kezeli az ezekhez kapcsol´od´o metaadatokat5 . Minden, a f´ ajlrendszerben t´ arolt adathoz (egy adott f´ajl fizikai elhelyezked´ese a lemezen) tartozik egy metaadat bejegyz´es is, ez tartalmazza a f´ajl vagy k¨onyvt´ar nev´et, a l´etrehoz´as, m´odos´ıt´as, utols´o hozz´ af´er´es d´ atum´ at, a tulajdonos adatait, valamint a hozz´af´er´esi jogosults´agokat. A k¨onyvt´arak a f´ ajlrendszer adatb´ azis´ aban l´ev˝ o bejegyz´esk´ent vannak t´arolva (teh´at amennyiben egy lemezr˝ol elvesz´ıtj¨ uk a f´ ajlrendszert le´ır´ o adatb´ azist (a metaadatokat), u ´gy a nyers adatok (f´ajlok tartalma) visszanyerhet˝ oek, de: 1) nem fogjuk tudni, hogy melyik f´ajl hol kezd˝od¨ott, hogyan k¨ovetkeznek egym´ as ut´ an a f´ ajl tartalm´ at alkot´ o blokkok ´es hol van v´ege 2) nem fogjuk tudni rekonstru´alni a k¨ onyvt´ arrendszert.) L´ athat´ o, hogy a f´ ajlrendszer helyes m˝ uk¨od´ese l´etfontoss´ag´ u a t´arolt adatok haszn´ alhat´ os´ ag´ anak szempontj´ ab´ ol, ´eppen ez´ert a f´ajlrendszer adatb´azisa a lemezen ´altal´aban t¨ obb p´eld´ anyban, sokszoros´ıtva ker¨ ul elt´arol´asra, cs¨okkentve a megs´er¨ ul´es val´osz´ın˝ us´eg´et. Mivel a sz´ am´ıt´ og´epek sz´ amos k¨ ul¨ onb¨oz˝o feladatra haszn´alhat´oak (csal´adi szem´elyi sz´am´ıt´og´ep, banksz´ amlakezel˝ o rendszer, egy t˝ ozsdei keresked˝orendszer vagy egy milli´os forgalm´ u webkiszolg´ al´ o), ez´ert az adatok t´ arol´ askor is k¨ ul¨onb¨oz˝o ig´enyek l´ephetnek fel (mind teljes´ıtm´eny, mind biztons´ ag tekintet´eben). Ezen ig´enyekre kiel´eg´ıt´es´ere rengeteg f´ajlrendszer megval´os´ıt´as l´etezik m´ as-´es-m´ as tulajdons´ agokkal, teljes´ıtm´ennyel, funkcionalit´assal. Ebben a jegyzetben r´eszletesen a FAT, illetve az ext2/3/4 f´ ajlrendszerrel fogunk megismerkedni. Mivel f´ ajlrendszer sz¨ uks´eges mag´ anak az oper´aci´os rendszernek az install´al´as´ahoz is, a f´ajlrendszereket f´ ajlrendszereket az oper´ aci´os rendszerrel egy¨ utt sz´all´ıtj´ak: p´eld´aul MS Windows oper´ aci´ os rendszerhez h´ arom f´ ajlrendszer ´erhet˝o el: a FAT, NTFS, exFAT. Linux alatt a legelterjedtebb az ext3/4 f´ ajlrendszer, de sz´amos egyedi ig´enyt kiel´eg´ıt˝o megval´os´ıt´as is l´etezik (XFS, JFS, btrfs, Reiserfs, stb). L´eteznek h´ al´ ozati f´ ajlrendszerek is (Google Drive, NFS, sshfs, stb.), amelyek az oper´aci´os rendszer szempontj´ ab´ ol ´ atlagos part´ıci´ onak t˝ unnek, de fizikailag az adatok nem az adat sz´am´ıt´og´ep h´ att´ert´ ar´ an t´ arol´ odnak, hanem egy t´avoli szerveren. P´eld´aul az egyetemen l´ev˝o t´arhelyeinket (turdus, users) is felcsatolhatjuk meghajt´ok´ent az ´altalunk haszn´alt oper´aci´os rendszerben (s˝ot, val´ oj´ aban is ez t¨ ort´enik, n´ezz¨ uk meg a mount paranccsal). Fontos megjegyezni, hogy a f´ ajlrendszerek f´ajl- ´es k¨onyvt´arelhelyez´esi implement´aci´oja nem azonos az ´ altalunk megszokott k¨ onyvt´arstrukt´ ur´aval! Teh´at a felhaszn´al´ok sz´am´ara l´athat´o k¨ onyvt´ arstrukt´ ura m¨ og¨ ott a fizikai t´ arol´asi m´odja ett˝ol teljesen elt´er˝o, ahogy ezt l´atni fogjuk.
4.1. Fragment´ aci´ o Egy f´ ajlrendszerben a f´ ajlok blokkokban t´arol´odnak. Ha ezek a blokkok fizikailag nem egym´as ut´ ani ter¨ uleten helyezkednek el a h´ att´ert´aron, akkor k¨ uls˝ o fragment´ aci´ o r´ol besz´el¨ unk. Ez azokn´al a h´ att´ert´ arakn´ al ´erdekes, amelyekn´el az egym´as ut´ani blokkok olvas´asa sokkal gyorsabb m˝ uvelet, mint a t´ avoli blokkok olvas´ asa (ilyen h´att´ert´ar a merevlemez, mivel a fej mozgat´as´ahoz illetve a lemez megfelel˝ o helyre forg´ as´ ahoz id˝ o kell). Annak ´erdek´eben, hogy a f´ajlok olvas´as´at meggyors´ıtsuk, a blokkokat egym´ as ut´ an helyezhetj¨ uk, amit defragment´ aci´ o nak nevez¨ unk. Mivel a f´ ajlokat blokkokban t´ aroljuk, ´es blokkn´al kisebb egys´eg lefoglal´as´ara nincs lehet˝os´eg6 , a f´ ajlt tartalmaz´ o blokkok k¨ oz¨ ul az utols´o majdnem mindig tartalmaz szabad helyet. Ezt bels˝ o t¨ oredezetts´egnek nevezz¨ uk, mivel a blokkokon bel¨ ul van kihaszn´alatlan hely. Mindebb˝ol az is k¨ ovetkezik, hogy ha N darab 1 b´ ajtot tartalmaz´o ´allom´anyt hozunk l´etre, akkor a f´ajlrendszerben minden f´ ajlhoz egy blokk lefoglal´ odik, azaz a lemezen l´ev˝o t´arhely nem N · 1 b´ajttal cs¨okken, hanem N · blokkm´eret b´ ajttal. A blokkm´eret megv´ alaszt´ as´ aval a bels˝o fragment´aci´o cs¨okkenthet˝o (hiszen ekkor az utols´o blokk m´erete is kisebb, ´ıgy kevesebb kihaszn´alatlan hely lehet benne), de a blokkok sz´ama n¨ovekszik (hiszen kisebb blokkb´ ol t¨ obb j¨on l´etre, mivel a teljes part´ıci´ot fel kell osztani blokkokra), ami nagyobb lehet˝ os´eget ad a k¨ uls˝ o fragment´aci´ora. Az ´altal´anosan haszn´alt blokkm´eret 1-4-64 kiB k¨ oz¨ ott v´ altozik a part´ıci´ o m´eret´et˝ ol f¨ ugg˝oen, mert ez v´allalhat´o kompormisszumot jelent a k¨ uls˝ o ´es bels˝ o fragment´ aci´ o k¨ oz¨ ott. 5 adatok 6 az
tulajdons´ agait le´ır´ o adatok u ´jabb f´ ajlrendszerek m´ ar adnak erre lehet˝ os´ eget, pontosan ezt a probl´ em´ at megoldand´ o
6
4.2. F´ ajlrendszer implement´ aci´ ok 4.2.1. Flash f´ ajlrendszerek A flash t´ arol´ okra optimaliz´ alt f´ ajlrendszerek figyelembe veszik a flash t´arol´ok fentebb t´argyalt saj´ atoss´ agait, ugyanakkor nagyon fontos, hogy ezek a f´ajlrendszerek kiz´ar´olag k¨ozvetlen¨ ul a flash t´ arol´ okon haszn´ aland´ ok, azaz az USB (pen)drive, SSD h´att´ert´arak eset´eben sz¨ uks´egtelen ilyen f´ ajlrendszereket haszn´ alni, mert a flash speci´alis kezel´es´et a hardver (a fentebb eml´ıtett flash vez´erl˝ o) elv´egzi. Flash f´ ajlrendszerekre p´elda: JFFS(2), YAFFS. 4.2.2. A FAT f´ ajlrendszer A File Allocation Table (FAT) f´ ajlrendszert a Microsoft fejlesztette, ´es a Windows XP megjelen´es´eig ez volt a Windows oper´ aci´ os rendszerek ´altal kiz´ar´olagosan haszn´alt f´ajlrendszer. A FAT f´ ajlrendszer klasztereket tart sz´ amon, ´es a k¨ ul¨onb¨oz˝o FAT verzi´ok f˝ok´ent abban k¨ ul¨onb¨oznek, hogy h´ any biten t´ arolj´ ak a klaszterek sorsz´amait (FAT12, FAT16, FAT32). Ez bitsz´am hat´arozza meg, hogy o ¨sszesen mekkora lehet egy FAT part´ıci´o m´erete. Az oper´aci´os rendszert is tartalmaz´ o FAT part´ıci´ ok tartalmaznak boot sectort is, ez a szektor ker¨ ul beolvas´asra a mem´ori´ aba az oper´ aci´ os rendszer bootol´ as´ anak els˝o l´ep´esek´ent. Az al´ abbiakban r´eszletesen megn´ezz¨ uk, hogyan t´arolja a f´ajlokat a FAT f´ajlrendszer. A 2 abr´ ´ an l´ athat´ o a part´ıci´ o egy darabja: a t´arolt f´ajlok, valamint a hozz´ajuk tartoz´o allok´aci´os t´ abla-beli bejegyz´esek. Az allok´ aci´ os t´abla - t¨obbek k¨oz¨ott - tartalmazza a f´ajl nev´et ´es annak a klaszternek a sz´ am´ at, ahol a f´ ajl kezd˝odik. Minden klaszter v´eg´en tal´alhat´o egy c´ım amely a f´ ajl t¨ obbi darabj´ at t´ arol´ o klaszterre mutat vagy egy 0xFFF(F...F) jelz´es, ami azt jelenti, hogy ez az utols´ o klaszter, amiben a f´ ajl r´eszlete volt elt´arolva. Fontos ´eszrevenn¨ unk, hogy a rendszer nem k¨ oveteli meg, hogy egy nagyobb m´eret˝ u f´ajl egym´as ut´ani klaszterek sorozatak´ent legyen a lemezen: az oper´ aci´ os rendszer utas´ıt´ asait´ol f¨ ugg˝oen ak´ar rengeteg, a lemez k¨ ul¨onb¨oz˝o pontjain elhelyezked˝ o klaszterbe is ker¨ ulhet a f´ ajl egy-egy darabja. A klaszterm´eret az esetek t´ ulnyom´o t¨ obbs´eg´eben 2-32 KiB k¨ oz¨ otti. FAT f´ ajlrendszert haszn´ alnak a pendrive-ok. 4.2.1. feladat. Egyes pendrive-ok eset´eben a h´att´ert´ar els˝o n´eh´any kilob´ajtja speci´alisan kialak´ıtott. Mi lehet ennek az oka?
2. ´ abra. Egy FAT part´ıci´o darabja. Forr´as: http://www.ntfs.com/images/recover-FAT-structure.gif
4.2.3. Az Ext2 f´ ajlrendszer Az ext2 f´ ajlrendszer alapegys´ege a blokk, amelynek m´erete tipikusan 1-8 kiB-ig terjed (ez a f´ ajlrendszer l´etrehoz´ asakor be´ all´ıthat´ o ´ert´ek, de k´es˝obb nem v´altoztathat´o ´es minden blokk ekkora m´eret˝ u lesz). ´Igy ha l´etrehozunk egy f´ ajlt amiben elhelyez¨ unk 2 karaktert az minimum 1 kiB-ot (vagy ´epp 8 kiB-ot, ha akkora a blokkm´eret) fog elfoglalni a lemezen. A szuperblokk a part´ıci´o elej´en helyezkedik el ´es az oper´ aci´ os rendszer bootol´as´ahoz sz¨ uks´eges adatokat, illetve mag´ar´ol a f´ ajlrendszerr˝ ol egy´eb inform´ aci´ okat tartalmazz. A blokkokat csoportokban t´arolj´ak, ezzel is cs¨ okkentve a t¨ oredezetts´eg m´ert´ek´et. Ezeket a blokkokb´ol ´all´o csoportokat extents-nek nevezz¨ uk. A ext2 f´ ajlrendszerben minden f´ ajlt ´es k¨onyvt´arat egy u ´gynevezett inode ´ır le. Az inode tartalmazza a f´ ajllal vagy k¨ onyvt´ arral kapcsolatos adminisztrat´ıv inform´aci´okat: f´ajlnev´et, l´etrehoz´as-,
7
m´ odos´ıt´ as d´ atum´ at, tulajdonost, jogosults´agokat, stb. Az inode t¨obbi r´esze 12-15 linket (blokk c´ımeket) tartalmaz, amely egy csoportot c´ımez meg, ezek a direkt blokkok (l´asd a 3. ´abr´an). Amennyiben a f´ ajl m´erete meghaladja a direkt blokkokban t´arolhat´o adatmennyis´eget, akkor az utols´ o link hely´ere nem egy direkt blokk c´ımet helyez¨ unk az inode-ban, hanem egy m´asik csoportle´ır´ ot, ami tov´ abbi blokkokra vagy csoportle´ır´okra mutat. Ezzel a m´odszerrel a legnagyobb t´ arolhat´ o f´ ajl m´erete 1 kiB-os blokk m´eretn´el 16 GiB, m´ıg 8 kiB blokkm´eret eset´en 2 TiB.
3. ´ abra. Az ext2 inode fel´ep´ı´ese Forr´as: http://upload.wikimedia.org/wikipedia/commons/a/a2/Ext2-inode.gif A f´ ajlok ´es k¨ onyvt´ arak mellett l´etezik egy m´asik t´ıpus´ u inode bejegyz´es-t´ıpus is, ez a link. A link nem m´ as, mint egy bejegyz´es a f´ ajlrendszerben, amely egy m´asik f´ajlrendszer-beli bejegyz´esre ¨ hivatkozik. Onmag´ aban teh´ at nem t´ arol adatot, hanem az ˝ot megnyit´o programot tov´abbir´any´ıtja az ´ altala mutatott f´ ajlra (ennek egyszer˝ ubb v´altozata az MS Windows-beli parancsikon). K´et t´ıpus´ at k¨ ul¨ onb¨ oztetj¨ uk meg, az egyik a soft link a m´asik a hard link. A hard link eset´eben a k¨ onyvt´ arbejegyz´esben szerepl˝o inode bejegyz´es egy m´ar l´etez˝o i-node-ra mutat. A hard linkek teh´ at pontosan ugyan´ ugy n´eznek ki, mint az adott f´ajl els˝o k¨onyvt´arbejegyz´ese, azaz a hard linkek egyenrang´ uak! Ezzel szemben a soft link egy speci´alis f´ajl, amely annak a f´ ajlnak az el´er´esi u ´tj´ at tartalmazza, amire mutat. Ebb˝ol k¨ovetkez˝oen a hard linkn´el a mutatott f´ ajl vagy k¨ onyvt´ ar addig nem t¨ or¨ olhet˝ o, am´ıg l´etezik r´a mutat´o link (ezt a link sz´aml´al´ob´ol tudja - l´ asd feladatok). Hard link l´etrehoz´ as´ ara az ln parancs haszn´alhat´o. Szintaktik´aja: ln r´ egi ´ uj ahol r´ egi jelenti azt a m´ ar megl´ev˝ o f´ ajlt, amire linket akarunk l´etrehozni, ´es ´ uj jelenti a l´etrehozand´ o linket. Az ls -i paranccsal kilist´azhat´ok az i-node sz´amok is, ´ıgy ellen˝orizhet˝o, hogy a hard link val´ oban ugyanarra az i-node-ra mutat. Fontos, hogy hard link csak f´ajlra hozhat´o l´etre (azaz k¨ onyvt´ arra nem)! Soft linket az ln -s r´ egi ´ uj paranccsal hozhatunk l´etre. A soft linkn´el a link az el´er´esi utat t´arolja, ´ıgy a mutatott f´ajl vagy k¨onyvt´ar nem tudja, ´ hogy l´etezik olyan hivatkoz´ as, amely re´a mutat. Eppen ez´ert ha let¨or¨olj¨ uk a hivatkozott f´ajlt, a link c´elpont” n´elk¨ ul marad, ´es t¨ or¨ ott” link [dangling / broken link] j¨on l´etre. M´asik fontos ” ” k¨ ul¨ onbs´eg, hogy hard linket csak part´ıci´on bel¨ ul lehet l´etrehozni, mivel az inode-ra mutat, aminek a sz´ amoz´ asa part´ıci´ on bel¨ ul egyedi. Ezzel szemben a soft link el´er´esi utat t´arol (ahogy azt m´ar eml´ıtett¨ uk egy part´ıci´ o a k¨ onyvt´ arstrukt´ ura tetsz˝oleges pontj´ara becsatolhat´o), ´ıgy a soft link mutathat m´ asik part´ıci´ on elhelyezked˝ o f´ajlra is. 4.2.4. SWAP f´ ajlrendszer Egy adott pillanatban nem minden programot haszn´alunk, amit elind´ıtottunk a sz´am´ıt´og´ep¨ unk¨ on, illetve az adott programnak sem haszn´aljuk minden r´esz´et. Ebb˝ol kifoly´olag a nem akt´ıv programokat, valamint programr´eszeket az oper´aci´os rendszer nem a viszonylag sz˝ uk¨os mem´ori-
8
´ban tartja, hanem a h´ a att´ert´ aron, az u ´gynevezett swap ter¨ uleten. A t´arol´as olyan form´atumban t¨ ort´enik, hogy a ki´ırt mem´ orialapokat sz¨ uks´eg eset´en k¨ ul¨on keres´es-konvert´al´as n´elk¨ ul a mem´ori´ aba tudja visszat¨ olteni. (P´eld´ aul: amikor a t´alc´ara letesz¨ unk egy programot ´es sok´aig nem foglalkozunk vele, majd k´es˝ obb el˝ ovessz¨ uk azt tapasztaljuk, hogy el´eg lassan reag´al a k´er´eseinkre, ´es a h´ att´ert´ ar nagy temp´ oban dolgozik: ekkor ker¨ ulnek vissza a swap ter¨ uletr˝ol a mem´ori´aba az adott programhoz tartoz´ o adatok ´es program r´eszletek). MS Windows alatt a f´ajlrendszerben egy f´ ajlk´ent jelenik meg a swap ter¨ ulet, amit Pagefile-nak h´ıv a rendszer. GNU/Linux rendszerekn´el a swap t´ arter¨ ulet f´ ajl mellett egy linux-swap t´ıpus´ u f´ajlrendszerrel rendelkez˝o k¨ ul¨on part´ıci´ o is lehet.
5. Ko arstrukt´ ura ´ es a f´ ajlrendszer adminisztr´ aci´ oj´ anak ¨nyvt´ manipul´ aci´ oja Linux alatt a BASH shell seg´ıts´eg´evel lehet˝os´eg¨ unk van a parancssori utas´ıt´asok seg´ıts´eg´evel f´ ajlok ´es k¨ onyvt´ arak l´etrehoz´ as´ ara, m´ odos´ıt´as´ara, valamint t¨orl´es´ere, teh´at a k¨onyvt´arstrukt´ ura m´ odos´ıt´ as´ ara. Tov´ abb´ a lehet˝ os´eg¨ unk van a f´ajlrendszer adminisztr´aci´os inform´aci´ok megjelen´ıt´es´ere, megfelel˝ o jogosults´ ag eset´en m´ odos´ıt´as´ara.
5.1. Alapvet˝ o parancsok A cd, pwd, mkdir, rmdir, ls, rm, mv, cp parancsokat az els˝o ´ora anyaga tartalmazta. A cat paranccsal egy f´ ajl tartalma jelen´ıthet˝ o meg, a touch paranccsal egy u ¨res f´ajl hozhat´o l´etre.
5.2. Jogosults´ agok A linux disztrib´ uci´ okban tal´ alhat´ o egy kit¨ untetett felhaszn´al´o, a rendszergazda, ami a telep´ıt´es sor´ an j¨ on l´etre, a neve: root. Neki mindenhez joga van, b´armit t¨or¨olhet, b´armit megnyithat, l´etrehozhat felhaszn´ al´ ot, stb. Az ˝ o´ altala ind´ıtott programok az ˝o jogaival futnak, egy sz´and´ekosan vagy v´eletlen¨ ul megv´ altoztatott program a root jogaival futva komoly k´arokat tud okozni. Ez´ert a legt¨ obb disztrib´ uci´ oban l´etre kell hozni m´ar a telep´ıt´eskor egy korl´atozott jog´ u felhaszn´al´ot, akinek az adataival bel´epve korl´ atozott jogokkal tudunk dolgozni. Ez ´ıgy biztons´agos! 5.2.1. p´ elda. ´Irjuk be: cat /etc/passwd A kapott hossz´ u lista els˝o oszlopa a rendszer¨ unk¨on l´ev˝ o felhaszn´ al´ ok neveit tartalmazza, a saj´atunkat is ott kell l´atnunk. (Tal´an kider¨ ult m´ar: a cat utas´ıt´ assal sz¨ oveges f´ ajlok tartalm´ at lehet kilist´azni.) A lentebb bemutat´ asra ker¨ ul˝ o jogoknak igazi jelent˝os´ege a t¨obb felhaszn´al´o ´altal haszn´alt rendszerek eset´eben van (pl.: users ´es turdus szerverek), ha egy g´epet csak egyed¨ ul mi haszn´alunk, a jogosults´ agok ´ all´ıtgat´ asa nem lesz annyira fontos. Minden felhaszn´ al´ o valamilyen csoportnak is tagja (ak´ar t¨obbnek is), mindenkinek van egy alap´ertelmezett csoportja (els˝ odleges csoport), ez Debian rendszeren megegyezik a felhaszn´al´o nev´evel, a felhaszn´ al´ o l´etrehoz´ asakor j¨ on l´etre, az u ´j felhaszn´al´o egyb˝ol beleker¨ ul. 5.2.2. feladat. Adjuk ki a k¨ ovetkez˝ o utas´ıt´ast: cat /etc/group A kapott lista els˝o oszlopa a rendszer¨ unk¨ on l´ev˝ o csoportok neveit tartalmazza. A Linux f´ ajlrendszere t´ arolja a f´ ajl tulajdonos´anak azonos´ıt´oj´at a f´ajlhoz tartoz´o csoportot ´es a hozz´ af´er´esi jogosults´ agot is. A hozz´ af´er´esi jogosults´agok ´abr´azol´as´ahoz egy h´arom r´eszb˝ol ´all´o k´ odot haszn´ al, amit f´ ajlmodnak nevez¨ unk. • Els˝ o r´esz a saj´ at (user) jogot • M´ asodik r´esz a csoport (group) jogot • Harmadik r´esz mindenki m´ as (others) jogait r¨ogz´ıti A saj´ at jog alatt a f´ ajl tulajdonos´ anak jogait ´ertj¨ uk, legt¨obb esetben ˝o az adott f´ajl vagy k¨onyvt´ar l´etrehoz´ oja is. Mindegyik r´esz a k¨ ovetkez˝o komponensekb˝ol ´all: 9
• r (Read): olvas´ asi jog (vagyis az adott f´ajl ez´altal olvashat´o) • w (Write): ´ır´ asi jog (az adott f´ ajl ez´altal v´alik ´ırhat´ov´a) • x (eXecute): v´egrehajt´ asi jog (futtat´asi jog)
5.3. Jogosults´ agok megv´ altoztat´ asa Egy f´ ajl tulajdonosi (hozz´ af´er´esi) jogait csak a f´ajl tulajdonosa, vagy a rendszergazda tudja megv´ altoztatni a k¨ ovetkez˝ o paranccsal: chmod +|-<m´ od> Meg kell hat´arozni az al´abbiakat: adunk vagy elvesz¨ unk jogot (+: adunk, -: elvesz¨ unk), kinek/kit˝ol (saj´at, csoport, mindenki m´ as (ugo)), milyen jogot adunk (r w x / 4 2 1 ). 5.3.1. p´ elda. Saj´ at magunknak ´ır´ asi jog: chmod u+w munka.tar.gz 5.3.2. p´ elda. M´ asoknak futtat´ asi jog: chmod o+x munka.tar.gz 5.3.3. p´ elda. Egyszerre t¨ obb jogot is meg lehet v´altoztatni: chmod o+x,u+w munka.tar.gz 5.3.4. p´ elda. Mindenkinek minden jog: chmod 777 munka.tar.gz ugyanezt a funkci´ot val´os´ıtja meg a chmod a+rwx munka.tar.gz 5.3.5. p´ elda. Csak nekem legyen jogom mindenhez: chmod 700 munka.tar.gz ugyanaz mint: chmod u+rwx,g-rwx,o-rwx munka.tar.gz F´ ajlok eset´eben a v´egrehajt´ asi jognak csak a futtathat´o f´ajlokn´al van jelent˝os´eg¨ uk (bin´aris ´allom´ anyok, scriptek). K¨ onyvt´ arak eset´en az olvas´asi jog azt jelenti, hogy elolvashatja a f´ajlok neveit az adott k¨ onyvt´ arban, az ´ır´ asi jog jelenti, hogy a k¨onyvt´arban ´allom´anyt, k¨onyvt´arat hozhatunk l´etre, m´ıg a futtat´ asi jog megengedi a bel´ep´est a k¨onyvt´arba. 5.3.6. feladat. Hozzunk l´etre egy k¨ onyvt´arat, ´es v´altoztassuk meg a jogosults´agait u ´gy, hogy aki ismeri a k¨ onyvt´ arban l´ev˝ o f´ ajlneveket, alk¨onyvt´arakat, az el tudja ezeket olvasni, de m´as nem!
5.4. Alap´ ertelmezett jogok Amikor egy f´ ajlt l´etrehozunk, akkor az a jogosults´agok alap´ertelmezett ´ert´ek´evel fog rendelkezni. Pl.: L´etrehozunk egy u ajlt: ¨res f´ $ touch akarmi $ ls -la akarmi -rw-r--r-- 1 bnorbert
staff
0 Okt 31 06:14 akarmi
A l´etrehoz´ ason k´ıv¨ ul, alap´ertelmez´es szerint ´ır´asi ´es olvas´asi joggal, a csoportba tartoz´ok ´es mindenki m´ as pedig csak olvas´ asi joggal rendelkeznek. Ennek az az oka, hogy az oper´aci´os rendszer a f´ ajl l´etrehoz´ asakor a 022 maszkot alkalmazza. Egy ´allom´any l´etrehoz´asakor alap´ertelmez´esben senki sem kap futtat´ asi jogot. Az alap´ertelmezett maszk lek´erdezhet˝o a k¨ovetkez˝o paranccsal: $ umask 022 K¨ onyvt´ arak l´etrehoz´ asa eset´en a 777-b˝ol von´odik ki a mask, azaz alap´ertelmezetten egy k¨onyvt´ ar 755 jogokkal j¨ on l´etre. F´ ajlokn´ al a 666-b´ol von´odik ki a mask, ´ıgy 644 jogokkal j¨onnek l´etre a f´ ajljaink.
5.5. Tulajdonos megv´ altoztat´ asa Az egyes bejegyz´esek (f´ ajlok ´es k¨ onyvt´ arak) tulajdonos´anak megv´altoztat´asa a chown parancs seg´ıts´eg´evel t¨ ort´enik, valamint felhaszn´ al´o csoport v´alt´asa a chgrp parancs seg´ıts´eg´evel lehets´eges. A jogosults´ agokat is tartalmaz´ o r´eszletes list´at a ls -l paranccsal kaphatunk (illetve kombin´ alhatjuk a m´ ar megismert -i kapcsol´oval is, hogy az i-node azonos´ıt´ok is l´athat´oak legyenek: ls -li 10
5.6. F´ ajlrendszerrel kapcsolatos parancsok • Az fsck parancs seg´ıts´eg´evel lehet ellen˝orizni, hogy a h´att´ert´ar tartalma megegyezik-e az adminsztr´ aci´ os f´ ajlok ´ altal le´ırt a´llapottal, azaz a f´ajlrendszer koherens ´allapotban van-e. Ilyen p´eld´ aul akkor fordulhat el˝ o, amikor hirtelen kikapcsol a sz´am´ıt´og´ep (pl. ´aramsz¨ unet eset´en) ´es valamilyen lemezm˝ uvelet f´elbeszakad. Szint´en problematikus eset a f´ajlrendszer koherenci´ aj´ anak szempontj´ ab´ ol, ha akkor t´avol´ıtunk el egy cser´elhet˝o eszk¨ozt, amikor m´eg nem fejez˝ od¨ ott be a lemezre ´ır´ as m˝ uvelet. • F´ ajlrendszer egy u ora a mkfs parancs seg´ıts´eg´evel tudunk l´etrehozni, a parancs ¨res part´ıci´ lefut´ asa l´etrehozza az ¨ osszes adminisztr´aci´os ´allom´anyt, ami sz¨ uks´eges a f´ajlrendszer menedzsel´es´ehez. Hasonl´ oan, ha egy f´ajlrendszerrel rendelkez˝o part´ıci´ot leform´azunk, akkor a form´ az´ as l´etrehozza az u ¨res adminisztr´aci´os f´ajlokat (fontos, hogy ezzel m´eg az el˝oz˝o f´ ajlrendszerben t´ arolt adatok megmaradnak, csak nem tartozik hozz´ajuk adminisztr´aci´os allom´ ´ any). • Az ´erv´enyes, hibamentes f´ ajlrendszereket tartalmaz´o part´ıci´okat haszn´alat el˝ott fel kell ´ csatolnunk a k¨ onyvt´ arstrukt´ ur´ aba. Altal´ aban az mnt k¨onyvt´arban van egy - part´ıci´ohoz tartoz´ o-u onyvt´ ar, ahov´ a a mount paranccsal tudjuk becsatolni a part´ıci´ot. ¨res k¨
5.7. Feladatok • Mit csin´ al a df parancs? Keress¨ uk meg a man oldal´an, hogy mit csin´al a -T kapcsol´o ´es futtassuk a df -T parancsot. • N´ezz¨ uk meg a stat parancs man oldal´at, pr´ob´aljuk ki a k¨ovetkez˝oekre: sima f´ajl, k¨onyvt´ar, eszk¨ ozf´ ajl, soft link, hard link. • N´ezz¨ uk meg az ls -i parancsot, keress¨ unk egy f´ajl a k¨onyvt´arb´ol ´es n´ezz¨ uk meg, hogy az ls -i parancsban megadott inode sz´ am egyezik-e a stat parancs kimenet´evel. • Hozzunk l´etre soft ´es hard linkeket, f´ajlra, k¨onyvt´arra, figyel¨ unk a link counter ´ert´ek´enek v´ altoz´ as´ ara. T¨ or¨ olj¨ uk azt a f´ ajlt amire a link mutat mit tapasztalunk szoft illetve hard link eset´en? • n´ezz¨ uk meg a dumpe2fs parancsot ´es futtassuk az egyik part´ıci´ora. A grep parancs seg´ıtsg´evel (grep -i superblock) n´ezz¨ uk meg h´any p´eld´anyban t´arol´odik a lemezen a szuperblokk.
6. Ko arszerkezet ¨nyvt´ Linux alatt fa gr´ afba van szervezve a teljes k¨onyvt´arszerkezet, (azaz ne sz´am´ıtsunk C, D, ... meghajt´ okra!) Mindennek az alapja a / jellel jel¨olt gy¨ok´erk¨onyvt´ar, m´as n´even root. Ez minden f´ ajlrendszer alapja, ebb˝ ol ´ agaztathat´ o le a teljes szerkezet. 6.0.1. p´ elda. Adjuk ki a k¨ ovetkez˝ o utas´ıt´ast: ls / Hasonl´o list´at kell l´atnunk: bin boot cdrom dev etc home lib lost+found media mnt opt proc root 11
sbin sys tmp usr var vmlinuz Ezek a f˝ ok¨ onyvt´ arak majdnem minden Linuxban v´altozatlanul megvannak, lesz´am´ıtva tal´an a /cdrom-ot ´es /media-t. A /media egy u ´jabb tal´alm´any”, ide ker¨ ulnek a cser´elhet˝o m´edi´ak. ” N´ezz¨ uk, melyikben mi tal´ alhat´ o: bin, sbin: A bin k¨ onyvt´ arakban futtathat´o ´allom´anyok vannak. T¨obb bin k¨onyvt´ar is tal´alhat´o ezen k´ıv¨ ul, p´eld´ aul a /usr/bin ´es a /usr/sbin. B´ar ez nem t¨orv´enyszer˝ u, de ´altal´aban a bin k¨ onyvt´ arakban a minden felhaszn´al´o ´altal el´erhet˝o programok ker¨ ulnek az sbin k¨onyvt´ arakba pedig olyan rendszereszk¨oz¨ok, melyeket ´altal´aban rendszergazd´ak haszn´alnak. A /bin ´es /sbin az alaprendszerhez, a boot folyamathoz sz¨ uks´eges programokat tartalmazza, a felhaszn´ al´ oi programok a /usr/bin /usr/sbin al´a ker¨ ulnek. boot: a boot k¨ onyvt´ arban tal´ alhat´ ok a bootn´al fontos f´ajlok: ´altal´aban a rendszermag (kernel), illetve Grub rendszerbet¨ olt˝ o eset´en annak konfigur´aci´os ´allom´anya is. cdrom:Ez al´ a csatol´ odik be a CD meghajt´o egys´eg. dev: Linux alatt f´ ajlokon kereszt¨ ul ´er¨ unk el mindent, a CD-vel kezdve, a hangon ´at, az eg´erig. Ezek a speci´ alis eszk¨ ozf´ ajlok tal´ alhat´ok ebben a mapp´aban. etc: Az etc k¨ onyvt´ ar a gy˝ ujt˝ ohelye a k¨ ul¨onb¨oz˝o programok glob´alis konfigur´aci´os f´ajljainak. Ellent´etben a Windowsos registry megold´assal, Linux alatt minden konfigur´aci´os ´allom´any egyszer˝ u sz¨ ovegf´ ajlba van mentve, aminek nagy el˝onye, hogy az ´allom´anyok akkor is egyszer˝ uen el´erhet˝ ok, ha a rendszer egy´ebk´ent haszn´alhatatlan. Term´eszetesen emellett az egyes programok felhaszn´ al´ o specifikus be´all´ıt´asokkal is rendelkeznek, ezeket a home k¨onyvt´arakban t´ arolja a rendszer, rejtett mapp´akban. home: ez alatt a k¨ onyvt´ ar alatt tal´ alhat´ok a felhaszn´al´oi k¨onyvt´arak, az adott k¨onyvt´ar alatt a felhaszn´ al´ onak teljes d´ ul´ asi joga van, ezen az egy k¨onyvt´aron k´ıv¨ ul azonban legink´abb csak olvas´ asi joga van alapb´ ol. lib: a lib k¨ onyvt´ ar alatt m´ ar a rendszer r´eszei lapulnak: library f´ajlok, kernel modulok, stb. lost+found: egy speci´ alis k¨ onyvt´ ar, jelen esetben egy ext3 t´ıpus´ u f´ajlrendszerrel szerelt part´ıcior´ ´ ol van sz´ o, ez a k¨ onyvt´ ar nem is a Linux, mint ink´abb a f´ajlrendszer r´esze: a f´ajlrendszer jav´ıt´ asakor el˝ oker¨ ult, n´evvel nem rendelkez˝o f´ajl darabokat helyezi el itt a rendszer. media: rendszerf¨ ugg˝ o, ´ altal´ aban a /media k¨onyvt´ar al´a ker¨ ulnek bef˝ uz´esre a CD/DVD eszk¨oz¨ok, pendrive illetve a floppy. R¨ oviden: a cser´elhet˝o m´edi´ak. mnt: a m´ asik becsatol´ asra haszn´ alt k¨onyvt´ar. Ez al´a a k¨onyvt´ar al´a ker¨ ulnek (´altal´aban) csatol´ asra a fix part´ıci´ ok. Mivel ebben a k¨onyvt´arstrukt´ ur´aban nincs kiemelt helye/neve egy egy meghajt´ onak, mint Windows alatt a C:, D:, stb., ´ıgy egy-egy eszk¨ozt tetsz˝oleges helyre bef˝ uzhet¨ unk a f´ ajlrendszerbe. K¨ ul¨on¨osen praktikus ez p´eld´aul a home k¨onyvt´ar est´en: ha kin˝ oj¨ uk az e c´elra fenntartott part´ıci´ot, ´es vesz¨ unk egy u ´j vincsesztert, egyszer˝ uen csak r´ am´ asoljuk anyagainkat, let¨ or¨ olj¨ uk az eredeti p´eld´anyt, majd bef˝ uzz¨ uk a /home k¨onyvt´ar al´ a az u ´j adathordoz´ ot. opt: a hivatalos le´ır´ as szerint k¨ uls˝ os programok telep¨ ulnek ebbe a k¨onyvt´arba, de a rendszerek nagy r´esz´en u all... ¨resen ´ proc: Itt tal´ alhat´ oak az ´eppen fut´ o folyamatokkal kapcsolatos metaadatok, illetve inform´aci´ok a rendszerr˝ ol: processzorr´ ol, mem´ori´ar´ol, stb. Nagy mennyis´eg˝ u hasznos inform´aci´ot tal´al itt az avatott k´ez.
12
root: A rendszergazda (root) felhaszn´al´o home k¨onyvt´ara tmp: Az egyes programoknak sz¨ uks´eg¨ uk van/lehet ´atmeneti f´ajlokra. Ezek ker¨ ulnek ide. Ez a m´ asik olyan k¨ onyvt´ ar, amely alap´ertelmezetten ´ırhat´o minden felhaszn´al´o sz´am´ara. usr: Ez alatt a k¨ onyvt´ ar alatt tal´ alhat´o minden. Persze ez ´ıgy kicsit t´ ulz´onak hat, de majdnem igaz: az usr k¨ onyvt´ ar alatt tal´ alhat´o a telep´ıtett programok nagy r´esze, hagyom´anyb´ol ide szoktunk forr´ asokat pakolni (/usr/src), ´es azt leford´ıtani. Itt tal´alhat´ok a dokument´aci´ok, itt tal´ alhat´ ok az ikonok nagy r´esze, stb... var: Szint´en sz´ amos szolg´ altat´ as gy˝ ujt˝ok¨onyvt´ara. Itt tal´alhat´ok a napl´of´ajlok, egyes programok hosszabb ideig t´ arolt, m´egis ´ atmeneti f´ajljai, alap´ertelmezetten a felhaszn´al´oi postal´ad´ak, stb. 6.0.2. feladat. N´ezz¨ unk bele az egyes k¨onyvt´arakba: adjuk ki a k¨ovetkez˝o utas´ıt´ast (ut´anuk ENTER): ls /bin (azt´ an ls /boot, ls /home,...) 6.0.3. feladat. G´epelj¨ uk be, majd nyomjunk ENTER-t: cat /proc/meminfo
7. Egy´ eb parancsok N´eh´ any gyakran haszn´ alt, fontosabb parancs: date: ki´ırja az aktu´ alis d´ atumot. df: disk free, egy kis statisztik´ at jelen´ıt meg az egyes part´ıci´ok foglalts´ag´ar´ol. pl.: df -h du: disk usage, az egyes ´ allom´ anyok, k¨onyvt´arak m´eret´er˝ol k´esz´ıt kis statisztik´at. pl.: du -hs ./ (a man alapj´ an pr´ ob´ aljuk meg ´ertelmezni az egyes kapcsol´okat, param´etereket!) ncal: calendar, egy kis napt´ ar program. pl.: ncal 2011 Term´eszetesen a list´ at m´eg hosszasan lehetne sorolni, aki tov´abbi parancsokkal szeretne megismerkedni, haszn´ alja ki az internet lehet˝os´egeit! B´armely keres˝o a linux parancsok” kifejez´esre ” t¨ obb j´ ol haszn´ alhat´ o oldalt is aj´ anl.
8. Feladatok 8.0.4. feladat. N´ezz ut´ ana, hogy mit csin´al az ncal parancs! 8.0.5. feladat. A h´et milyen napj´ an sz¨ ulett´el? 8.0.6. feladat. Mekkora helyet foglalsz a users.itk.ppke.hu szerveren? 8.0.7. feladat. Hozd l´etre a k¨ ovetkez˝ o k¨onyvt´arstrukt´ ur´at a saj´at k¨onyvt´aradon bel¨ ul! ./szulok/apa ./szulok/anya 8.0.8. feladat. Hozz l´etre egy f´ ajlt (ak´ar u ul! (touch, ¨reset is lehet) az apa alk¨onyvt´aron bel¨ esetleg nano, esetleg cat,. . . ) 8.0.9. feladat. M´ asold ´ at az anya alk¨onyt´arba! 8.0.10. feladat. ´Irasd ki egy f´ ajlba az elm´ ult 10 percben m´odos´ıtott f´alok neveit a munkak¨onyvt´ aradon bel¨ ul! (find parancs) 8.0.11. feladat. F˝ uzd hozz´ a a f´ ajl v´eg´ehez az aktu´alis d´atumot! ( date ´es ´atir´any´ıt´as) 8.0.12. feladat. M´ odos´ıtsd az el˝ oz˝ o f´ ajl jogait, hogy neked csak ´ır´asi jogod, m´asoknak (csoport, egy´eb) pedig semmilyen joga ne legyen!
13
8.0.13. feladat. Pr´ ob´ ald meg a tartalm´at kilist´azni! (pl.: cat) 8.0.14. feladat. Szerezz inform´ aci´ okat az od programr´ol! (man, keres˝ok,. . . ) 8.0.15. feladat. Add ki a k¨ ovetkez˝ o utas´ıt´ast: verb=echo ˝ o | od -t x1 ´ Ertelmezd az eredm´enyt!
14