<<

What$is$a$File?$File$System?$

Request$file$by$ name,$por6on $ file$ CSE$120:$Principles$of$Opera6ng$Systems$ Respond$with$ file$contents$ Lecture$11:$File$Systems$ File$System$ • File:$logical$unit$of$storage,$container$of$data$ Prof.$Joseph$Pasquale$ – Accessed$by$$ University$of$California,$San$Diego$ • File$System:$a$structured$collec6on$of$files$ February$19$and$24,$2014$ – Access$control,$name$space,$persistent$storage$

©$2014$by$Joseph$Pasquale$$ 1$ ©$2014$by$Joseph$Pasquale$$ 2$

File$System$Requirements$ Hierarchical$File$Name$Space$

• LongSterm$storage$ • Name$space$is$organized$as$a$tree$ – user$data:$text,$graphics,$images,$audio,$video$ – Name$has$components,$branches$start$from$root$ – user$programs$ – No$size$restric6ons$ /$ – system$programs$(including$kernel)$and$data$ – Intui6ve$for$users$ • Persistent:$remains$“forever”$ • Example:$UNIX$“pathnames”$ a$ b$ • Large:$“unlimited”$size$ – Absolute:$/a/b/c$ b$ c$ d$ – Rela6ve:$b/c$rela6ve$to$/a$ • Sharing:$controlled$access$ c$ d$ – • Security:$protec6ng$informa6on$ Not$strictly$a$tree:$links$

©$2014$by$Joseph$Pasquale$$ 3$ ©$2014$by$Joseph$Pasquale$$ 4$ A$File$Has$Aaributes$ File$Opera6ons$

• Type$(recognized$by$system$or$users)$ • Crea6on:$create,$delete$ • Times:$crea6on,$accessed,$modified$ • Prepare$for$access:$,$close,$mmap$ • Sizes:$current$size,$maximum$size$ • Access:$,$$ • Access$control$(permissions)$ • Search:$move$to$loca6on$ • Aaributes:$get,$set$(e.g.,$permissions)$ • Mutual$exclusion:$lock,$unlock$ • Name$management:$rename$

©$2014$by$Joseph$Pasquale$$ 5$ ©$2014$by$Joseph$Pasquale$$ 6$

Read/Write$Model$ MemorySmapped$Model$ File$System$ VAS$ fd$=$open$(“x”)$ • return&fd& copy$of$ file$“x”$ Map$file$into$address$space$ file$“x”$ Small$ read$(fd,$buf,$n)$ – mmap$(addr,$n,$...,$fd,$…)$ File$ place&n&bytes&in&buf& – Large$ process$ addr$=$mmap$(NULL,$n,$…,$fd,$…)$ File$ buffer$ kernel$ storage$ buffer$ (disk)$ • Can$then$use$memory$ops$ • fd$=$open$(fname,$usage)$ – x$=$addr[5];$strcpy$(addr,$“hello”);$ • nr$=$read$(fd,$buf,$size)$ • Issues$ • nw$=$write$(fd,$buf,$size)$ – Efficient$for$mul6ple$processes$sharing$memory$ • close$(fd)$ – If$memory$is$wriaen,$how$is$file$actually$updated?$

©$2014$by$Joseph$Pasquale$$ 7$ ©$2014$by$Joseph$Pasquale$$ 8$ Access$Control$ Accessing$System$Objects$

• How$are$files$shared,$to$varying$degrees?$ • System$objects$need$to$be$accessed$by$user$ • Access$control$ – Peripheral$resources$such$as$disks,$networks$ – Who$can$access$file$ – Also$OS$objects:$processes,$memory$segments$ – What$opera6ons$are$allowed$ • Access$can$be$modeled$by$read$and$write$ – User$interface$must$be$simple$and$intui6ve$ • Use$file$system$interface$ • Example:$Unix$ – Name$space:$use$names$like$regular$files$ – r/w/x$permissions$for$owner,$group,$and$everyone$ – System$calls:$open,$close,$read,$write,$ioctl$ – Access$control:$permissions$

©$2014$by$Joseph$Pasquale$$ 9$ ©$2014$by$Joseph$Pasquale$$ 10$

File$System$Implementa6on:$Goals$ Storage$Abstrac6on$

Block$0$ • Archival$storage$ • Hide$complexity$of$storage$device$ Block$1$ – Keep$forever,$including$previous$versions$ – Model$as$array$of$blocks$ Block$2$ • Support$mul6ple$types$of$storage$ – Randomly$addressable$by$block$number$ – Disks$(different$types),$remote$disks$ – Typical$block$size:$1KB$(also$4KBS64KB)$ • Generally$mul6ple$of$disk$sector$size:$512B$ • Performance$ …$ • Simple$interface$ • Reliability$ – read$(block_number)$ • Security$ – write$(block_number)$ Block$nS1$

©$2014$by$Joseph$Pasquale$$ 11$ ©$2014$by$Joseph$Pasquale$$ 12$ Implementa6on$Structure$ File$System$Metadata$

• Three$major$regions$ FSM$ • Informa6on$about$the$file$system$ FSM$ – Sequence$of$blocks$for$each$one$ • Sizes$ FM$ FM$ • Region$1:$File$System$Metadata$ – Files$in$use,$free$entries$ – Informa6on$about$file$system$ – Data$blocks$in$use,$free$entries$ • Region$2:$File$Metadata$ • Free$lists$(or$bitmaps)$

– File$control$blocks$ DB$ – File$control$blocks$ DB$ • Region$3:$Data$Blocks$ – Data$blocks$ – File$contents$

©$2014$by$Joseph$Pasquale$$ 13$ ©$2014$by$Joseph$Pasquale$$ 14$

File$Control$Block$(File$Metadata)$ Example$of$File$Control$Block$

0$ • Informa6on$about$a$file$ FSM$ • Number:$88$(index$in$file$control$block$array)$

1$ File"Control" • Referenced$by$number/index$ Block" • Size:$4096$bytes$ 2$ FM$ • Contains$ • Permissions:$rwSrSSrSS$ – Aaributes$ 3$ • Data$blocks:$set$of$indexes$into$storage$array$ • type$of$file,$size,$permissions,$…$ 4$ – References$to$data$blocks$ – E.g.,$567,$7076,$9201,$9248$(assuming$1KB$blocks)$ …" • disk$block$map$ DB$ – This$is$an$example$of$list$of$nonScon6guous$blocks$ NS1$ • Note:$many$file$control$blocks$ • What$about$file$name?$ File$control$ may$fit$in$single$storage$block$ block$array$

©$2014$by$Joseph$Pasquale$$ 15$ ©$2014$by$Joseph$Pasquale$$ 16$ Keeping$Track$of$Allocated$Blocks$ Example:$Unix$Block$Map$

5$ • Con6guous$blocks$ • Array$of$pointers$to$data$blocks$ – Single$sequence$of$blocks$ • 13$pointers$ – 10$direct:$references$10$data$blocks$ • Extents$ 2$ – 1$singlySindirect:$references$n$data$blocks$ – Groups$of$con6guous$blocks$ 3$ – 1$doublySindirect:$references$n2$data$blocks$ • NonScon6guous$blocks$ – 1$triplySindirect:$references$n3$data$blocks$ – Blocks$individually$named$ • n$depends$on$how$many$pointers$fit$in$a$block$ – Example:$256$4Sbyte$pointers$will$fit$in$1KB$block$

©$2014$by$Joseph$Pasquale$$ 17$ ©$2014$by$Joseph$Pasquale$$ 18$

Block$Map$(Unix)$ Keeping$Track$of$Free$Blocks$ Data$ Blocks$ • Free$Block$Map$ 1$ 3$ – Compact$if$lots$of$free$ 2$ regions$of$space$

1$ Ptrs$to$ • Doubly$Linked$List$ Data$ Block$ 3$ …$ blocks$ – Easy$to$keep$ordered$due$ Map$ Ptrs$to$ to$fast$inserts$and$deletes$ Single$ Single$Indirect$ 2$ …$ Indirect$ Ptrs$to$ Blocks$ Assuming&1KB&blocks,&4;byte&pointers& • Bit$Map$ Double$ Double$Indirect$ &Direct:&10&x&1KB&=&10KB& Single&Indirect:&256&x&1KB&=&256KB& – Fixed$size$regardless$of$ …$ Indirect$ Blocks$ Double&Indirect:&256&x&256&x&1KB&=&64MB& 101000100$ Triple&Indirect:&256&x&256&x&256&x&1KB&=&16GB& fragmenta6on$ Triple$Indirect$ Total:&(10&+&256&+&2562&+&2563)&x&1KB&=&16+GB&

©$2014$by$Joseph$Pasquale$$ 19$ ©$2014$by$Joseph$Pasquale$$ 20$ File$Name$to$File$Control$Block$ Implemen6ng$Unix$Directories$

• Users$access$files$using$file$names$ • Table$where$each$entry$contains$ • Problem:$how$to$translate$ – name$and$aaributes$ – from$file$name:$“/sports/baseball/Padres”$ – name$and$pointer$to$file$control$structure$ – to$file$control$block$number:$88$ • Unix$(name$and$pointer)$S$pre$BSD$ • Must$parse$file$name$ – Each$entry:$branch$name$(14),$iSnode$number$(2)$ • Each$branch$corresponds$to$a$/folder$ – Berkeley$Unix$uses$a$more$complex$scheme$to$ support$long$names$ • Each$directory/folder$may$itself$be$a$file$

©$2014$by$Joseph$Pasquale$$ 21$ ©$2014$by$Joseph$Pasquale$$ 22$

Example$of$Parsing$Names$in$Unix$ The$Big$Picture$

Inode$0$(root)$ Inode$22$ Inode$15$ Inode$88$ 0$ File$ System$ 1$ Metadata$ entertain$ 37$ business$ 12$ basketball$ 62$ 2$ Padres$ poli6cs$ 25$ tennis$ 44$ Padres$ 88$ File$ file$data$ 3$ sports$ 22$ golf$ 21$ Dodgers$ 92$ Metadata$ science$ 67$ baseball$ 15$ Mets$ 46$ 4$ 2$ .$ • Given$pathname:$/sports/baseball/Padres$ Block$ 7$ ..$ Map$ – Inode$0$block$map$points$to$data$block(s)$of$root$directory$ …" 32$ cat$ – Look$up$“sports”$in$root$directory$to$get$inode$22$ 4$ dog$ – Inode$22$block$map$points$to$data$block(s)$of$sports$directory$ Data$ Blocks$ 16$ fish$ – Look$up$“baseball”$in$sports$directory$to$get$inode$15$ File$Control$ Blocks$ – …$ contents$ (“Inode$Table”)$ of$“dog”$ ©$2014$by$Joseph$Pasquale$$ 23$ ©$2014$by$Joseph$Pasquale$$ 24$ File$Systems$Use$Disks$for$Storage$ File$System$Performance$

disk$r/w$ head(s)$ • Disk$accesses$are$6me$expensive:$5S20$msec!$ sector$ – Rota6onal$latency:$2S6$msec$(5400S15000$RPM)$ – Seek$6me:$3S13$msec$ plaaers$ – Transfer$rate:$100+$MB/sec$ • Reduce$accesses$by$ cylinder$ track$ – reading$mul6ple$blocks$in$one$access$(read$ahead)$ • Why$disks:$persistent,$random$access,$cheap$ – maintaining$a$block$cache$ • But,$disks$are$slow,$because$they$are$mechanical$ • Cluster$related$blocks$to$reduce$seek$6me$

©$2014$by$Joseph$Pasquale$$ 25$ ©$2014$by$Joseph$Pasquale$$ 26$

Solid$State$Drives$(SSD)$ Improving$Performance:$Caching$

• NANDSbased$flash$memory,$nonSvola6le$ • Data$blocks$of$files$ • Unaffected$by$shock,$magne6c$fields;$no$noise$ • File$system$metadata$(keep$in$memory)$ • Limited$number$of$writes$ • File$metadata$ • 10x$faster,$10x$more$expensive,$10x$less$space$ – Currently$ac6ve$files$ A0ribute" Solid"State"Drive" Hard"Disk"Drive" SDD"vs"HDD" – Recently$used$ Access$6me$ 0.1$msec$ 10$msec$ 100x$beaer$ • Block$maps$ Throughput$ 200S500$MB/sec$ 50S100$MB/sec$ 5x$beaer$ Power$ 3$waas$ 6S7$waas$ 2x$beaer$ • File$names$ Capacity$ 64$–$256$GB$ 500$GB$–$2$TB$ 10x$worse$ – Name$to$file$metadata$transla6ons$ Cost$ $50S100$for$100$GB$ $5S10$for$100$GB$ 10x$worse$

©$2014$by$Joseph$Pasquale$$ 27$ ©$2014$by$Joseph$Pasquale$$ 28$ File$System$Consistency$ Clustering$

• Buffer$cache$reduces$disk$accesses$ • Blocks$that$exhibit$locality$of$reference$ • But$if$system$crashes,$block$modifica6ons$lost$ – Directory,$and$files$within$that$directory$ • To$improve$file$system$consistency$ – The$inodes$of$the$directory$and$files$ – Write$out$modified$blocks$(how$ozen?)$ • Strategy$ – Write$out$cri6cal$blocks$(writeSthrough)$ – Place$related$blocks$close$to$each$other:$clustering$ • Cri6cal$blocks:$file$system$metaSdata$ – Reduces$disk$head$movement,$and$thus$seek$6me$ – Directories,$iSnodes,$free$block$lists$

©$2014$by$Joseph$Pasquale$$ 29$ ©$2014$by$Joseph$Pasquale$$ 30$

Block$Size$ Homework$

• What$should$the$block$size$be?$ • Read$Chapter$11$(File$System$Interface)$ – The$larger$the$block,$the$beaer$the$throughput$ – LectureSrelated:$11.1S11.3,$11.6S11.7$ – The$smaller$the$block,$the$less$wasted$space$ – Recommended:$11.4S11.5$ • Technology$trends$ • Read$Chapter$12$(File$System$Implementa6on)$ – Disk$density$is$increasing$faster$than$disk$speed$ – LectureSrelated:$12.1S12.6,$12.10$ – Make$disk$blocks$larger:$1$KB$→$8$KB,$64$KB,$1$MB$ – Recommended:$12.7S12.9$ • For$8th$ed.,$Chapters$10$and$11$ – Sec6ons$correspond$(e.g.,$11.1$in$9th$=$10.1$in$8th)$

©$2014$by$Joseph$Pasquale$$ 31$ ©$2014$by$Joseph$Pasquale$$ 32$