Skráakerfi

**Skráakerfi** (e. *file system* ) er hugtak sem notað er í tölvunarfræði um aðferð til geymslu á tölvutækum skrám með það fyrir augum að auðvelda aðgengi og leit að þeim. Skráakerfi geta notað margvíslegar aðferðir til að geyma skrárnar, hvort heldur sem er með því að vista þær á gagnageymslutæki svo sem á diskum eða segulböndum. Einnig getur skráakerfi notað net (t.d. NFS, SMB, DFS) til að geyma skrár á öðrum vélum eða þá að skráakerfið inniheldur sýndarskrár og skráasvæði (t.d. procfs í Unix/Linux og líkum kerfi).

## Eiginleikar skráakerfa
Skráakerfi hafa afar mismunandi eiginleika og uppbyggingu en eiga þó í öllum tilfellum það sameiginlegt að geyma skrár og einhver lýsigögn (e. metadata) um skrárnar á einhvers konar miðli hvort sem það er yfir net eða staðvært. Einföldustu skráakerfi bjóða upp á lágmarks aðgerðir svo sem að vista, lesa og eyða skrám og alltaf einhver lýsigögn svo sem nafn skrár, skráarendingu og dagsetningu sem gæti verið annað hvort hvenær skráin var stofnuð eða hvenær henni var breytt síðast. 

Þau skráakerfi sem er líklegast að rekast á við hefðbundna tölvunotkun notast við gagnageymslu miðla, svo sem harða diska, disklinga, geisladiska, eða segulbönd til að geyma gögnin á. Skráakerfið skiptir þá geymslumiðlinum upp í jafnstóra hluta sem kallaðir eru blokkir (e. blocks). Stærð þessara blokka ræður tveimur lykilatriðum um skráakerfið, hversu stórt það getur orðið og hve stór minnsta eining er sem skrá getur tekið. Skráakerfi geta oftast ekki skrifað nema eina skrá í hverja blokk og einnig eru takmörk á því hvað skráakerfi getur innihaldið margar blokkir.

Skráakerfi eru þó ekki einungis bundin við diska heldur getur einnig verið að skráakerfið sé að hjúpa netstaðsetningar af einhverju tagi eða að um sé að ræða sýndarskráakerfi er inniheldur „skrár“ sem innihalda gögn sem geta breyst milli þess sem þau eru skoðuð og eru ekki geymd á varanlegan hátt, dæmi um þetta er procfs á Unix/Linux og líkum kerfum en „skrár“ í /proc innihalda upplýsingar sem tilheyra forritum sem eru í keyrslu á vélinni á hverjum tíma. Þannig verður til nýtt skráasvæði fyrir hvert ferli (e. process) sem ræst er á vélinni og inni í skráasvæðinu eru „skrár“ sem innihalda keyrslugögn ferlisins, þegar keyrslu ferlisins lýkur hættir skráasvæðið sem tilheyrir ferlinu að vera til og þær skrár sem það inniheldur hverfa einnig.

Skráakerfi geyma einnig alls kyns lýsigögn um skrár og skráasvæði sem þau innihalda, þannig geyma öll skráakerfi upplýsingar um nafn skráa ásamt upplýsingum um stærð hennar og dagsetningu. Stærðin getur verið gefin upp sem fjöldi blokka sem skráin er vistuð í, t.d. ef við gefum okkur skráakerfi sem lýsir stærð skráa á þann hátt með blokkir af stærðinni 32KB þá gætu verið þar 2 skrár (skrá A af stærð 1KB og skrá B af stærð 40KB) þá mundi skráakerfið lýsa þeim þannig að A væri af stærð 1 og B af stærð 2 þar sem A kemst fyrir í einni blokk en það þarf 2 blokkir til að rúma B. Hafa skal í huga að í flestum tilfellum getur einungin ein skrá verið í einni blokk á hverjum tíma, þannig væru í dæminu hér á undan farin 96KB undir 41KB af gögnum og því mætti segja að 56KB færu til spillis.

Skráakerfi geyma svo gjarnan dagsetningar sem tengjast skránum. Einföldustu skráakerfi geyma mögulega einungis eina dagsetningu en flest vinsæl nútíma skráakerfi geyma allt að þrjár dagsetninga, stofn dagsetningu, síðast breytt og síðast skoðað, þess ber þó að geta að Unix/Linux og lík kerfi geyma ekki þessar dagsetningar heldur síðast skoðað, síðast breytt og síðast breytt lýsigögnum.

Aðrar upplýsingar eru gjarnan geymdar í skráakerfinu svo sem hver er eigandi skrárinnar, hvaða notandahópum tilheyrir hann, hvaða aðgangsréttindi eru á skránum. Einnig þarf að geyma upplýsingar um hvort skráin er skrá eða undirskráasvæði, ef um undirskráasvæði er að ræða þarf að geyma upplýsingar um hverslags skráakerfi það er því ekki er víst að það sé samskonar skráakerfi og það er geymt í, dæmi um slíkt er procfs sem er aðgengilegt gegnum /proc og er af allt öðru tagi en skráakerfið sem það er aðgengilegt frá.

Ekki er gefið að skráakerfi geti innihaldið skráasvæði, einföld skráakerfi hafa oft einungis eitt skráasvæði og það skráasvæði getur einungis innihaldið skrár sem innihalda gögn en ekki skrár sem innihalda önnur skráasvæði.

## Mismunandi gerðir skráakerfa
Hægt er að skipta skráakerfum upp í nokkrar gerðir diskskráakerfi, netskráakerfi og sértæk skráakerfi

### Diskskráakerfi
Diskskráakerfi er, eins og nafnið gefur til kynna, hannað með það fyrir augum að geyma skrár á gagnageymslumiðli sem er tengdur tölvunni með beinum eða óbeinum hætti. Dæmi um slík skráakerfi eru til dæmis FAT, NTFS, ext2/ext3 og HFS/HFS+. Sum diskskráakerfi eru með dagbókarstuðning og sum með útgáfustuðning.

### Netskráakerfi
Netskráakerfi hjúpar í raun samskipti við skráakerfi á netþjóni sem eiga sér stað yfir fyrirfram skilgreindan netskráakerfisstaðal, dæmi um slík skráakerfi eru NFS og SMB nú CIFS

### Gagnagrunnsskráakerfi
### Hreyfinga skráakerfi
## Tegundir skráakerfa
Til eru mörg mismunandi skráakerfi, sem skrár og lýsigögn á afar mismunandi vegu. Hér verða talin upp nokkur algeng skráakerfi en hafa ber í huga að þetta er á engan hátt tæmandi listi.

### FAT 12/16/32
Hér er um að ræða 3 aðskilin skráakerfi sem þó eru það náskyld að hægt er að tala um þau saman. FAT stendur fyrir File Allocation Table og er í raun byggt upp á þann hátt að fremst á skráakerfinu er tafla þar sem hvert vistfang á skráakerfinu er táknað með einu hólfi, innihald hólfsins segir svo til um hvort vistfangið er í notkun, laust eða ónothæft af einverjum ástæðum. Talan í nafninu segir til um hve margra bita vistföngin eru og þar með hversu marga klasa hægt var að skrifa í og þar með hámarksstærð skráakerfisins. Talsvert er um breytingar milli mismunandi útgáfa af FAT til dæmis lengd á skráanöfnum og hvort skrár gátu innihaldið skráasvæði.

FAT skráakerfin komu fyrst í almenna notkun með PC vélum sem keyrðu MS-DOS, en eru nú algengust á USB-minnislyklum og tónhlöðum ýmiskonar.

### NTFS
NTFS er það skráakerfi sem hefur fylgt Windows NT frá upphafi enda kennt við það. NTFS er mun fullkomnara skráakerfi en FAT, NTFS var hannað sem skráakerfi sem átti að gera allt fyrir alla og því inniheldur það mun meiri lýsigögn en Windows notar. Hér eru lýsigögnin geymd í MFT (Master File Table) sem inniheldur eina færslu fyrir hverja skrá í skráakerfinu. Hver færsla inniheldur öll lýsigögn skrárinnar það er tímastimpla, aðgangsstýringar fyrir Windows, aðgangsstýringar fyrir Unix\Linux lík kerfi og ýmis önnur lýsigögn, einnig er í færslunni 2KB pláss fyrir gögn þannig að skrár sem komast þar fyrir eru geymdar í data hluta færslunnar, sem nýtir pláss mun betur þar sem margar færslur geta verið í sömu blokk. 

Einnig er NTFS með dagbókarstuðning, það er allar aðgerðir sem framkvæmdar eru á skrám eru skráðar niður og því hægt að endurtaka þær ef vélin hrynur og það þarf að endurbyggja þá hluta skráakerfisins sem ekki var búið að færa út á disk.

NTFS notar einnig b-tré gagnagrind til að geyma skrár sem er mun hraðvirkara heldur en listi eins og notaður er í FAT.

## Heimildir

## Tengt efni
* SSHFS

## Ytri tenglar
* https://www.pricenfees.com/digit-life-archives/ntfs-file-system 
* http://www.pcguide.com/ref/hdd/file/ntfs/index.htm