Unix filsystem

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 2 april 2015; kontroller kräver 24 redigeringar .
UFS
Utvecklaren CSRG
Filsystem UNIX filsystem
Inlämningsdatum ( 4.2BSD )
Strukturera
Mappinnehåll tabell
Restriktioner
Maximal filstorlek 2 73 byte
(8 Zbyte )
Maximal filnamnslängd 255 byte
Maximal volymstorlek 2 73 byte
(8 Zbyte )
Förmågor
OS stöds FreeBSD , OpenBSD , NetBSD , DragonFlyBSD , A/UX och andra

Unix File System (UFS) är ett filsystem skapat för operativsystem i BSD- familjen och används i en reviderad och kompletterad form för tillfället som det huvudsakliga i efterkommande operativsystem ( FreeBSD , OpenBSD , NetBSD ).

Stöd för detta filsystem finns även tillgängligt i Linux-kärnan och Solaris - operativsystemet .

Design

Rent fysiskt består UFS av följande delar:

Inoderna är numrerade i följd. De första få inoderna behålls av historiska skäl, följt av rotinoderna .

Filkatalogen innehåller endast en lista med filer och en inod som är associerad med varje fil. All filmetadata lagras i inoden.

Historia och utveckling

Tidiga versioner av Unix använde ett filsystem som helt enkelt kallas "FS". FS inkluderade endast startblock, superblock, många inoder och datablock. Detta fungerade bra på de små diskarna som producerades under de tidiga Unix-dagarna. Men tekniken utvecklades, diskarna blev större, det fanns för många inoder och datablock. Sedan optimerades FS och utvecklades till FFS (Fast File System), där grupper av cylindrar uppträdde, som var och en hade sin egen inod och undvek den resulterande "dumpen".

Syftet med FFS är att försöka lokalisera associeringen av datablock och metadata i samma cylindergrupp, och helst allt innehåll i en katalog (både data och metadata för alla filer) i samma grupp, och på så sätt minska fragmentering orsakad av spridningen av innehållet i diskkataloger.

Några av dessa egenskaper i ett superblock inkluderade antalet spår och sektorer, skivrotationshastighet, huvudhastighet. I ett helt optimerat system kan huvudet flyttas mellan intilliggande spår för att läsa spridda sektorer från interfolierade spårlager.

När diskstorlekarna har ökat har optimeringsnivån blivit mindre effektiv (särskilt med diskar som använder linjära numreringssektorer och variabla sektorer per spår). Med ökningen av diskar och filer har det blivit svårare att läsa fragmenterade bitar. För att bekämpa detta ökade BSD ursprungligen filsystemets blockstorlek från en sektor till 1K i 4.0BSD och, i FFS, till 8K. Antalet block som kan representeras med en fast (bit) blockbredd har utökats (upplösning för stora diskar). När blockstorleken ökar kommer diskar med många små filer att ta upp mycket utrymme. För att lösa problemet med ineffektiv användning av ledigt utrymme lades en fragmentnivå till FFS-lagret i UFS2-filsystemet, vilket är ett sätt att adressera enskilda delar av ett datablock - fragment.

På grund av ständigt ökande volymer av diskenheter och övergången av diskutrymmesadressering till Advanced Format i FreeBSD, har filsystemets standardblockstorlek ökat från 16 KB till 32 KB, och fragmentstorleken från 2 KB till 4 KB. Denna optimering förbättrade prestandan för disk I/O-operationer på diskenheter med en kapacitet på cirka 1 TB med en sektorstorlek på 4 KB. Den maximala möjliga blockstorleken på ett UFS2/FFS-filsystem är 64 KB.

Applikation

Användare av vissa kommersiella Unix-system, som Solaris , HP-UX och Tru64 UNIX , har antagit UFS. De flesta av dem migrerade system till UFS, lade till proprietära tillägg som kan hindra användare av andra versioner av UNIX från att känna igen UFS. Överraskande nog fortsätter många av dem att använda den ursprungliga datablockstorleken och blockbredden som de gjorde i det ursprungliga UFS, så en viss grad av plattformsoberoende kompatibilitet kvarstår. Kompatibiliteten mellan implementeringar är i bästa fall ofullständig och bör undersökas innan den används på flera plattformar.

I Solaris 7 inkluderade Sun Microsystems UFS Logging, vilket förde filsystemsjournalisering till UFS. Solaris UFS inkluderade även extrafunktioner för stora filer och diskar. Från och med Solaris 10 får användaren välja mellan antingen UFS eller ZFS (Suns avancerade filsystem) vid installationen. I OpenSolaris har UFS helt ersatts av ZFS.

Efter att 4.4BSD och BSD Unix-system splittrades. System som FreeBSD , NetBSD , OpenBSD och DragonFlyBSD uppstod . UFS1 och UFS2 kommer till, som är tre lager – ett topplager som tillhandahåller katalogstrukturen och upprätthåller metadata (behörigheter, behörigheter etc.) i strukturens inod, och 2 lägre lager som gör att containerdata kan representeras, som t.ex. som inoder. Detta gjordes för att stödja både traditionell FFS och AKU . Det översta lagret kallas "UFS" och de nedre lagret kallas "FFS" och "LFS".

Kirk McKusick byggde FreeBSD på FFS och UFS för att stödja en ny variant som heter UFS2, som lägger till en 64-bitars blockpekare (som tillåter upp till 8 zettabyte ) med en variabel blockstorlek (liknar EFS ), utökade flaggfält, utökat stödattribut och POSIX1.e ACLm. UFS2 har kallats UFS som standard sedan FreeBSD 5.0. FreeBSD gjorde också några tillägg ( Soft Updates ) och möjligheten att skapa ett filsystem från UFS1 och UFS2. Mjuka uppdateringar har porterats till NetBSD men kommer att tas bort från NetBSD 6.0 till förmån för det mindre komplexa journalmekanismens filsystem ( WAPBL ) som lades till för FFS i NetBSD 5.0. OpenBSD har stödt mjuka uppdateringar i version 2.9 [1] och UFS2 sedan version 4.2 [2] . Eftersom FreeBSD 7.0 UFS också stöder ett journaliserat filsystem som använder gjournal GEOM- leverantören. FreeBSD 9.0 lade till stöd för journalföring utöver softupdates(SU+J) [3] , vilket avsevärt minskar behovet av bakgrundskontroller av filsystem och använder NFS-stil ACL:er som standard.

Linux stöder UFS på läsnivå, men har inte fullt stöd för att skriva UFS. Den ursprungliga Linux ext2 är modellerad efter UFS (på vissa 4.4BSD-system kan UFS-lagret använda ext2-lagret som en behållare, precis som det kan använda FFS och LFS).

NeXTStep , som kommer från BSD, använder också UFS-versionen. I Apples Mac OS X är UFS tillgängligt som ett alternativ till HFS+ . Men från och med Mac OS X v10.5 kan du inte installera Mac OS X "Leopard" på en UFS-formaterad partition. Du kan inte heller uppgradera äldre versioner av Mac OS X installerade på UFS till Leopard; Uppgradering kräver omformatering av partitionen.

PlayStation 3 -spelkonsolen använder UFS2 på sin hårddisk. PlayStation 2 använder UFS. [fyra]

Du kan använda programmet R.saver för att komma åt UFS-filsystemet från Windows -familjen av operativsystem .

Anteckningar

  1. OpenBSD 2.9 Release . Hämtad 15 mars 2009. Arkiverad från originalet 2 december 2008.
  2. OpenBSD 4.2 Release . Datum för åtkomst: 15 mars 2009. Arkiverad från originalet den 14 februari 2009.
  3. UFS journaliseringsstödpatchar lades till FreeBSD-CURRENT . Tillträdesdatum: 1 maj 2016. Arkiverad från originalet 2 juni 2016.
  4. Netkas börjar spela med JB PS3s (nedlänk) . Tillträdesdatum: 11 januari 2012. Arkiverad från originalet den 29 oktober 2010. 

Länkar