Et filsystem (i akronym FS ), i informatikk , indikerer uformelt en mekanisme der filer plasseres og organiseres på dataenheter som brukes til datalagring [1] , for eksempel masselagringsenheter (som et magnetbånd , harddisker , optiske disker , solid state-minneenheter eller, i spesielle tilfeller, til og med i RAM ) eller på eksterne enheter via nettverksprotokoller .
Før bruken av datamaskiner ble begrepet "filsystem" brukt for å beskrive en metode for å arkivere og hente papirdokumenter [2] . I 1961 ble begrepet brukt på datastyrt arkivering ved siden av den opprinnelige betydningen [3] , og fra 1964 ble dens generelle bruk etablert.
Mer formelt er et filsystem settet med abstrakte datatyper som er nødvendige for lagring (skriving), hierarkisk organisering, manipulering, navigasjon, tilgang og lesing av data . Noen filsystemer (som NFS ) samhandler faktisk ikke direkte med lagringsenheter.
Filsystemer kan representeres både grafisk via filleser og tekstlig via tekstskall . I den grafiske representasjonen ( GUI ) brukes vanligvis metaforen til mapper som inneholder dokumenter (filer) og andre undermapper .
Lagringsenheter, for eksempel harddisker , presenterer seg for operativsystemet som en rekke blokker med fast størrelse, vanligvis kalt sektorer , typisk 512 byte hver. De tilgjengelige operasjonene er å lese og skrive en vilkårlig blokk, eller noen ganger et sett med blokker. Basert på denne tjenesten levert av blokkenheter, realiserer filsystemet to abstraksjonsnivåer, som gjør masselagringsressurser lett brukbare av brukere.
Programvare for filsystemadministrasjon er ansvarlig for å organisere disse sektorene i filer og holde styr på hvilke sektorer som tilhører hvilke filer og hvilke sektorer som ikke brukes. Brukeren har normalt full frihet til å lage nye filer, slette eksisterende filer (og dermed frigjøre blokkene de okkuperte), og endre eksisterende filer (og dermed også endre størrelsen og dermed antall okkuperte blokker).
Det første abstraksjonsnivået er det som organiserer sektorene i et sett med arkiver (filer) av vilkårlig størrelse, som kan variere fra null til hele tilgjengelig størrelse på enheten: hver fil er distribuert i et sett med sektorer. Normalt ser brukeren bare én fil og trenger ikke å bekymre seg for hvilke sektorer som ble brukt til å lagre den. De tilgjengelige operasjonene er å lese eller skrive en blokk med data av vilkårlig størrelse på et vilkårlig punkt i filen. Ikke alle filsystemer trenger en lagringsenhet. Et filsystem kan faktisk brukes til å organisere og representere alle typer data, enten de er lagret eller dynamisk generert (for eksempel fra en nettverkstilkobling).
Det andre abstraksjonsnivået er det som lar deg organisere filer ved å tildele dem hierarkiske navn. Filsystemer har vanligvis assosiasjonstabeller av filnavn med deres respektive filer via harde lenker , vanligvis kobler filnavnet til en indeks i en filallokeringstabell av noe slag , for eksempel FAT til et MS-DOS- , eller en inode i en Unix -lignende filsystem . Mappestrukturer kan bare være på ett nivå, eller de kan tillate en hierarkisk struktur der mapper kan inneholde undermapper. I noen filsystemer er filnavn strukturert med en spesiell syntaks (for eksempel utvidelser eller versjonsnumre).
Hierarkiske filsystemer var en av de tidlige forskningsinteressene til Dennis Ritchie , en av grunnleggerne til Unix ; tidligere implementeringer var begrenset til noen få nivåer.
Filsystemet brukes også til å lagre data som brukes til å kontrollere tilgangen til hver fil av prosesser . Sikkerhetspolicyer for tilgang til filsystemoperasjoner er vanligvis basert på tilgangskontrolllister ( ACL ) eller muligheter . Upåliteligheten til ACL-er har blitt oppdaget i noen tiår, og av denne grunn har moderne operativsystemer en tendens til å bruke funksjonsmekanismen. Kommersielle filsystemer bruker fortsatt ACL-er. En ACL lar deg definere for hvert element i filsystemet hvilke tillatelser (lese, skrive, endre osv.) hver bruker som har tilgang til systemet har.
Tradisjonelle filsystemer tilbyr verktøy for å opprette, flytte og slette både filer og mapper, men de lar deg ikke opprette flere lenker til mapper ( hardlinkene Unix og NTFS ) , eller gi nytt navn til overordnede lenker (".." i Unix eller DOS / Windows-systemer ) og for å lage toveiskoblinger mellom filer. Disse tradisjonelle filsystemene har også metoder for å opprette, flytte, slette og avkorte filer, og for å erstatte eller sette noen data i kø. I stedet tillater de ikke å legge til data eller kutte en fil i hodet, noe som forhindrer innsetting eller vilkårlig sletting av data. De mulige operasjonene er derfor svært asymmetriske og er ofte ineffektive i spesielle sammenhenger.
I løpet av datahistorien har en myriade av filsystemer blitt utviklet. Moderne operativsystemer er ofte i stand til å få tilgang til forskjellige filsystemer, ofte ganske enkelt ved å installere en spesiell modul eller driver . Filsystemtyper kan klassifiseres i diskfilsystemer , nettverksfilsystemer og filsystemer med spesielle formål . I mange tilfeller, på bransjespråket, brukes begrepet filsystem til å bety lagringsstrukturen til enheten, en slang måte å si "mapper og filer" sett på av operativsystemets skall. I vanlig sjargong er det vanlig å si, spesielt i GNU/Linux-systemer , at filsystemet er montert , for å la operativsystemet få tilgang til det for lese-/skriveoperasjoner.
Et diskfilsystem er et filsystem designet for å lagre filer på en diskstasjon , som kan kobles direkte eller indirekte til datamaskinen din . Eksempler på diskfilsystemer er:
Et distribuert filsystem lar deg få tilgang til filer på en ekstern datamaskin over et nettverk , potensielt samtidig fra flere datamaskiner. Eksempler på nettverksfilsystemer er:
Noen filsystemer brukes til spesielle oppgaver som ikke faller direkte inn i de to første kategoriene. Mange har ingen relasjon til et permanent datalagringsmedium, men brukes av operativsystemet for å gi tilgang til noe funksjonalitet. Noen eksempler er: