NTFS olemus ja sisu
Sissejuhatus
Keskmise arvutikasutaja jaoks ei ütle kombinatsioon NTFS võib-olla midagi, kuid igapäevaselt infotehnoloogia valdkonnas tegutsevad inimesed peaksid teadma mida see tähendab ja kus seda kasutatakse. Kunagi oli ka minu enda jaoks NTFS täiesti tundmatu mõiste, kuid tänaseks päevaks on mingi teadlikus sellest süsteemist tekkinud. Siiski sooviksin antud tehnoloogiast rohkem teada saada ja sel põhjusel otsustasingi NTFS-i referaadi teemaks valida. Enne NTFS-i oli populaarseim failisüsteem FAT32 ja ka FAT. Süsteeme FAT32 ja vähemkasutatud FAT kasutati vanemate Windows'i operatsioonisüsteemidega, kaasa arvatud Windows 95, Windows 98 ja Windows Millennium versioon. Mõlemal failisüsteemil olid omad piirangud ja puudused ning kuna infohulk ja muud teenused ning vajadused erinevate infotehnoloogiliste protsesside juures pidevalt kasvasid, oli vajadust uuema ja võimsama failisüsteemi järele. NTFS-i kaks kõige tähtsamat uuendust või parandust olid suurenenud turvalisus ja toetus suurematele kõvaketastele. Tänaseks päevaks on Microsoft välja arendanud ka juba uuema failisüsteemi ReFS (Resilient File System), mida kasutatakse näiteks Windows Server 2012 kooseisus. ReFS lubab kasutada suuremaid volume ja palju muud. Siiski üritan järgneva materjaliga anda pildi NTFS-i olemusest ja sisust ning teha selle süsteemi toimimise nii endale kui ka lugejale natukene selgemaks.
Mis on failisüsteem?
Failisüsteem on operatsioonisüsteemi (OS`i) komponent, mis vastutab andmete salvestamise eest massmäluseadmetes (kõvakettad, välkmälud, optilised kettad, jne.).
Failisüsteemi peamised ülesanded on:
- Info talletamine
- Failide struktureerimine
- Andmetele õigustekohase ligipääsu tagamine
- Andmete kaitse
- Erinevatest andmekandjatest ühetaolise keskkonna loomine
Failisüsteemi objektid on failid ja kaustad. Fail talletab infot ja on mugav objekt kasutamiseks programmeerija poolt ning ka üksus, millele saab OS'i poolt määrata juurdepääsuõiguseid. Kataloogid on kaustad, mis sisaldavad faile ja alamkatalooge ning nende ülesandeks on võimaldada OS'il ja kasutajatel efektiivselt faile hierarhilistesse struktuuridesse paigutada. Kataloogid on üldiselt korraldatud puukujulisse struktuuri. Puul on juurkataloog ja teised kataloogid on juurkataloogi harud.
Failisüsteem haldab vastavust failide ja kataloogide abstraktse mudeli ja nende tegeliku kettal oleva paigutuse vahel, hoides kettal vastavat infostruktuuri. Need struktuurid sisaldavad informatsiooni, mis on vajalik failide ja kataloogide leidmiseks kettalt. Info on massmäluseadmetel salvestatud sektoritena, mis sisaldavad teatud hulga andmeid ja failisüsteemi roll on organiseerida need sektorid failideks ja kataloogideks ning hallata millised sektorid kuuluvad mingite failide juurde ning millised sektorid on vabad kasutamiseks.
NTFS - New Technology File System
NTFS on Microsofti poolt välja töötatud failisüsteem. NTFS vahetas välja Microsofti eelmise FAT (File Allocation Table) failisüsteemi, mis oli kasutuses MS-DOSis ja eelmistes Windowsi versioonides. Võrreldes FAT-iga on NTFS-il täiustatud metaandmete tugi ja edasiarendatud andmestruktuuride kasutus, parandamaks sooritusvõimet, vastupidavust ja kettamahu ärakasutamist. Lisatud on turvalisusastmed (access control lists) ja failisüsteemi päevikupidamine (file system journaling). NTFS on kasutuses alates Windows NTst ning on toetatud kõigi sellest uuemate Windowsi versioonide poolt (XP, Vista, Windows 7, 8 , Windows Server). Windows Server 2012 koosseisus kasutatakse veelgi uuemat failisüsteemi ReFS, aga see on juba omaette teema. Vormindamist NTFS-i keskkonnas võib vaadata läbi kahe mõiste – partitsioneerimine ehk kettaseadme tükeldamine ja formateerimine ehk failisüsteemi loomine kettaseadmele. Kui ei ole vaja täita erinõudeid, pole tihtipeale vajadust rohkema kui ühe partitsiooni järele. Erinõuded võivad olla tingitud väga paljudest asjaoludest, näiteks kasutaja andmete hoidmine eraldi süsteemile tähtsatest andmetest. Mitut partitsiooni võib minna vaja ka juhul, kui on soovi arvutis kasutada rohkem kui ühte operatsioonisüsteemi. NTFS-i failisüsteemi kasutades võib maksimaalne partitsiooni suurus ulatuda kaks astmes 64 baidini (16 eksabaiti) . Kettaseadme pind jaotatakse omakorda väiksemateks osadeks – klastriteks. Klaster on väikseim suurusühik, mida kasutatakse andmete salvestamiseks. NTFS-is kasutatakse klastrisuurusi alates 512 B, üks sektor ja kuni 64 kB. Kõige optimaalsem valik on 4 kB suurune klaster, sellisel juhul tundub tasakaal väikeste ja suurte failide vahel balansis olevat. Kuid see, kui suurt klastrit on vaja, sõltub põhiliselt kettaseadme kasutusest.
MFT – Master File Table
Kettaseade jaotatakse NTFSis kahte ossa – Master File Table (MFT) piirkond (~12%) ja andmete piirkond (~88%). MFT piirkonda luuakse MFT tabel. MFT on oma olemuselt spetsiaalne fail. See fail sisaldab 1 KB suuruseid kirjeid ning iga kirje identifitseerib üheselt ühe kettaseadmele salvestatud faili. MFT tabelis 16. esimest faili nimetatakse metafailideks. Metafailide asukohaks on juurkataloog ja nende tunnuseks on $-sümbol failinime ees. MFT piirkond on süsteemile peaaegu et ligipääsematu. Ainult erandjuhtumil võib süsteem saada luba sinna tavaandmeid kirjutada. See võib juhtuda sellisel puhul, kui andmete osa on täis saanud, siis vähendatakse MFT piirkonda ja kirjutatakse ka sinna andmeid. See, kui suure osa võrra seda vähendatakse, oleneb süsteemist.
Failid ja kataloogid
NTFS-i jaoks on kõik süsteemi komponendid failid. Iga fail on identifitseeritud kirjena MFT tabelis. Seetõttu, kui MFT tabelis on kirje faili kohta, siis see fail eksisteerib. Ülejäänud info, mis käib faili kohta, on mittekohustuslik. Kataloogifail NTFS-is on eriline fail, milles on salvestatud viited failidele ja alamkataloogidele. Niimoodi luuakse hierarhiline struktuur. Kataloogifail on jagatud plokkideks, millest igaüks sisaldab failinime, faili põhiatribuute ja viiteid MFT tabelisse. Kirjed on kataloogifailis sorteeritud tähestiku järjekorras ja hoitakse B+ puu kujul. B+ puu on üks kahendpuu vormidest – igas puu sõlmpunktis hoitakse mitmeid kirjeid. Kuna on alust arvata, et kõik kirjed kataloogifaili ära ei mahu, siis paigutatakse kirjed indeksite puhvrisse (index allocation buffer). Kataloogifaili jääb märge selle kohta, kus neid kirjeid tuleb otsida.
Faili atribuudid
- Standardinformatsioon – tavalised failiatribuudid, nagu read-only, hidden, system, ajatempel.
- Nimi – faili või katalooginimi Unicode-is (rahvusvaheline standard arvutites kirjasüsteemide kodeerimiseks).
- Security descriptor – andmestruktuur, mis kirjeldab kasutajate õigusi.
- Andmed – faili sisu. Täpsemalt on tegu nimetu andmevooga, mida NTFS käsitleb tavalise failiatribuudina. Kataloogifailidel see atribuut puudub.
- Nimeline andmevoog – mittekohustuslik faili atribuut, mis identifitseerib teised andmevood. Sellised vood võivad olla suunatud ka kataloogifailidesse.
- Index Root, index allocation, bitmap – kasutusel suurte kataloogifailide puhul failinimede indekseerimisel;
Faili NTFS-s võib tinglikult vaadata kui kanalite süsteemi. Vaikimisi on failil ainult üks kanal. Igas sellises kanalis talletatakse andmeid ning selliseid kanaleid nimetatakse voogudeks (streams). Uue faili loomisel võetakse kasutusele üks kanal – nimetu voog (unnamed stream). Nimetu voog sisaldab andmeid, millest saab aru enamus programmidest ning soovi korral on neid võimalus transportida teistesse failisüsteemidesse. Ülejäänud voogude loomine ja kasutamine on konkreetsete programmide ülesanne. Need vood on kindlate nimedega, et rakendusprogrammid neid ära tunneksid. Kuna enamus programme neid kasutada ei oska, on nimega vood (named streams) väljaspool NTFS-i kasutud. Kui transportida faili, mis omab peale nimetu voo veel teisigi voogusid, siis ühest süsteemist üleminekul teise jäetakse alles info ainult nimetu voo kohta.
Pakkimine (Compression)
Pakkimine (compression) on NTFS-i osa olnud juba algusest peale. Kui pakkimisel poleks omi nõrku külgi, siis võiks NTFS-is kõik andmed eksisteerida pakitud kujul. Nõrgaks küljeks ja suureks miinuseks on see, et selliste algoritmide täitmised kasutavad palju protsessori aega ja ressurssi. Enne pakkimist jaotatakse voog loogilisteks osadeks. Selliste osade pikkuseks on 16 klastrit (suuruseks 64 KB, juhul kui klastri suuruseks on 4 KB). Iga tükk loetakse eraldi mällu, kasutatakse pakkimisalgoritme ja saadud tulemus kirjutatakse tagasi kettaseadmele. Kui pakkimine õnnestus ja tagasikirjutatav osa hõlmab vähem kettapinda, siis tagastatakse vabaks jäänud klastrid süsteemile. Võib juhtuda, et ühte osa polnudki võimalik pakkida. Sellisel juhul kirjutatakse see osa samamoodi kettaseadmele tagasi. Kui fail oli sellise pikkusega, et jaotatud tükkidest viimane ei andnud 16 klastri mõõtu, siis seda osa mällu ei loeta ja pakkimist selle osa puhul ette ei võeta.
Kvoot
Kvoodi tugi NTFS-is aitab administraatoril jälgida ja piirata kasutajatele määratud kettaseadmel salvestatava pinna suurust. Kvootide toetuse tõttu on administraatoril parem ülevaade kettaseadme kasutatavusest. Administraator võib lihtsalt jälgida kasutajate kvoote, aga ta võib ka neid piirata. Kui kasutaja püüab ületada talle määratud pinda, siis süsteem teatab, et ketas on täis. Kvootide puhul arvestatakse faili loogilist suurust. Kui faili tegelik suurus on 10 MB, aga ta on kokku pakitud 8 MB peale, siis loetakse kvoodi poolt faili suuruseks 10 MB. Kui faili suurus on 0 B, aga sinna on suunatud voog, mille suurus on 10 MB, siis kvoot arvestab faili suuruseks 10 MB. Selline suuruse arvestus on loodud selleks, et saaks võrrelda erinevate kettaseadmete kvoote võrdsetel alustel.
Krüpteerimine NTFS-is
Krüpteerimine (encryption) võimaldab oma andmeid kaitsta teiste kasutajate eest. See ei kaitse faile, aga kaitseb sisu. Krüpteeritud faile on võimalik avada, aga midagi arusaadavat ei ole võimalik sealt välja lugeda. NTFS kasutab võtmepaaride loomiseks CryptoAPI-t (Cryptographic Application Programming Interface). Võtmeid säilitatakse arvutis, aga neid ei kirjutata füüsiliselt kettaseadmele, seetõttu ei ole võimalik neid kettalt varastamise eesmärgil välja lugeda. Loomulikult võib kasutada spetsiaalseid kiipkaarte krüpteerimisvõtmete hoidmiseks. Antud juhul on võimalus, et võtmed kaotatakse ja pärast on ligipääsemine failidele võimatu. Selliseks juhuks on välja mõeldud tagavara võtmesüsteem. NTFS ei luba kasutada krüpteerimist, kui taoline süsteem puudub. Tagavaravõtmed genereeritakse automaatselt. Domeenis defineeritakse need võtmed domeeni kontrollerisse ja nendele võtmetele pääseb ligi ainult administraatori õigustega isik. Krüpteerimine EFS(Encrypting File System) abil välistab kurikaelte pahateod, sest faili suudab dekrüpteerida ainult volitatud isikud. Paljud arvutikasutajad ei tea, et ka siis kui fail on tavavahenditega kustutatud või isegi ketas formaaditud, on ikkagi võimalik vabalt kättesaadavate vahenditega faili sisu taastada. Seega, kui me kustutame faili, ei kao see fail füüsiliselt kuhugi, me oleme vastava kettaruumi vaid vabastanud, et võimaldada uute failide salvestamist vanade ülekirjutamise teel. Failidega opereerimisel on krüpteerimisprotsess läbipaistev (kui omatakse operatsioonideks õigusi), kui õigusi pole, kuvatakse teade "Access denied". Samuti võimaldab NTFS failisüsteem kaitsta andmete kadumise eest juhul kui näiteks arvuti jookseb kokku, sest NTFS salvestab automaatselt lahtiolevate failide sisu transaktsioonide tabelisse, kust seda hiljem on võimalik taastada (system recovery). NTFS kindlustab seega andmete integreerituse kõikidel tema poolt hallatavates kettajagudes, käivitades automaatselt kõvaketta taastamisprotseduuri (HDD recovery) peale esimest restarti esinenud kettaprobleemi järel.
Kokkuvõte
Tänases maailmas on info kaitsmisel ja turvamisel suur tähtsus ning samuti mängib olulist rolli andmemahtude kasv. Et nende muutujatega edukalt toime tulla peab ka operatsioonisüsteemi üks olulisi komponente, failisüsteem, sellistele nõudmistele vastama. Kindlasti on failisüsteemidel FAT ja FAT32 oma koht olemas ja nende roll mingites olukordades on vajalik, kuid siiski on NTFS praegusel hetkel domineeriv pool. Microsofti uus arendus ReFS on kindlasti põnev, kuid minu jaoks hetkel veel kogemus puudub. Ka NTFS failisüsteemile tehakse pidevalt parendusi ja uuendusi ning ka Windows Server 2012 juures tehti NTFS-i mõningaid Update´e. NTFS failisüsteemi on tõhustatud nii, et see pakub ka online skanneeringut failide tõrgete korral ja vähendab vajadust probleemide kõrvaldamiseks lülituda offline´i. Märksõnad on Online Scanning ja Self-Healing, mis kokkuvõtvalt tähendab kiirendatud ja probleemivabat tõrgete eemaldamist ning paremat andmete terviklikkust ja kättesaadavust. Arvan, et suutsin failisüsteemi NTFS olemust ja sisu natukene selgemaks muuta ja anda ettekujutuse, mis protsesse ja võimalusi see endas sisaldab. Leidus ka materjale, mis seletasid süsteemi väga põhjalikult, kuid samas keeruliselt ning pidasin mõistlikus seda antud töösse mitte panna kuna liigne keerukus ja tehnilisus muudaks minu arvates töö olemuse hoopiski raskemini arusaadavaks.
Kasutatud materjalid
- http://www.microsoftvirtualacademy.com/training-courses/windows-server-2012-storage#?fbid=A8UedKI1U5Y (file system enhancements: pdf tekstid)
Autor
Ivo Suur
A22 - 2013