
File Systems Main Points • File layout • Directory layout File System Design Constraints • For small files: – Small blocks for storage efficiency – Files used together should be stored together • For large files: – Con>guous allocaon for sequen>al access – Efficient lookup for random access • May not know at file creaon – Whether file will become small or large File System Design • Data structures – Directories: file name -> file metadata • Store directories as files – File metadata: how to find file data blocks – Free map: list of free disk blocks • How do we organize these data structures? – Device has non-uniform performance Design Challenges • Index structure – How do we locate the blocks of a file? • Index granularity – What block size do we use? • Free space – How do we find unused blocks on disk? • Locality – How do we preserve spaal locality? • Reliability – What if machine crashes in middle of a file system op? File System Design Op>ons FAT FFS NTFS Index Linked list Tree Tree structure (fixed, assym) (dynamic) granularity block block extent free space FAT array Bitmap Bitmap allocaon (fixed (file) locaon) Locality defragmentaon Block groups Extents + reserve Best fit space defrag Named Data in a File System index fle name directory fle number structure storage ofset ofset block MicrosoW File Allocaon Table (FAT) • Linked list index structure – Simple, easy to implement – S>ll widely used (e.g., thumb drives) • File table: – Linear map of all blocks on disk – Each file a linked list of blocks FAT MFT Data Blocks 0 1 2 3 fle 9 block 3 4 5 6 7 8 9 fle 9 block 0 10 fle 9 block 1 11 fle 9 block 2 12 fle 12 block 0 13 14 15 16 fle 12 block 1 17 18 fle 9 block 4 19 20 FAT • Pros: – Easy to find free block – Easy to append to a file – Easy to delete a file • Cons: – Small file access is slow – Random access is very slow – Fragmentaon • File blocks for a given file may be scaered • Files in the same directory may be scaered • Problem becomes worse as disk fills Berkeley UNIX FFS (Fast File System) • inode table – Analogous to FAT table • inode – Metadata • File owner, access permissions, access >mes, … – Set of 12 data pointers – With 4KB blocks => max size of 48KB files FFS inode • Metadata – File owner, access permissions, access >mes, … • Set of 12 data pointers – With 4KB blocks => max size of 48KB files • Indirect block pointer – pointer to disk block of data pointers • Indirect block: 1K data blocks => 4MB (+48KB) FFS inode • Metadata – File owner, access permissions, access >mes, … • Set of 12 data pointers – With 4KB blocks => max size of 48KB • Indirect block pointer – pointer to disk block of data pointers – 4KB block size => 1K data blocks => 4MB • Doubly indirect block pointer – Doubly indirect block => 1K indirect blocks – 4GB (+ 4MB + 48KB) FFS inode • Metadata – File owner, access permissions, access >mes, … • Set of 12 data pointers – With 4KB blocks => max size of 48KB • Indirect block pointer – pointer to disk block of data pointers – 4KB block size => 1K data blocks => 4MB • Doubly indirect block pointer – Doubly indirect block => 1K indirect blocks – 4GB (+ 4MB + 48KB) • Triply indirect block pointer – Triply indirect block => 1K doubly indirect blocks – 4TB (+ 4GB + 4MB + 48KB) Inode Array Triple Double Indirect Indirect Indirect Data Inode Blocks Blocks Blocks Blocks File Metadata Direct Pointer DP DP DP DP DP DP DP DP DP DP Direct Pointer Indirect Pointer Dbl. Indirect Ptr. Tripl. Indirect Ptr. FFS Asymmetric Tree • Small files: shallow tree – Efficient storage for small files • Large files: deep tree – Efficient lookup for random access in large files • Sparse files: only fill pointers if needed FFS Locality • Block group allocaon – Block group is a set of nearby cylinders – Files in same directory located in same group – Subdirectories located in different block groups • inode table spread throughout disk – inodes, bitmap near file blocks • First fit allocaon – Small files fragmented, large files con>guous F r e e S p a D a c t a e B B l o i c t k m s f a o p r f l e Block Group 0 s i n Block Group 1 d i Block Group 2 r e c t o I n r o i e d D s e a / s t b a , / B a l / o g c , k / s s z e f o d r p o f / n l /a I e s d in n d , a i c re , / ct /q ories /d F p r a e D itm e Free ce B a Spa S ta p B a l ce oc B k i s f tm or a fl p es i /c n di /b rectories /a, /d, and Inodes FFS First Fit Block Allocaon In-Use Free Start of Block Block Block ... Group FFS First Fit Block Allocaon Start of Write Two Block File Block ... Group FFS First Fit Block Allocaon Start of Write Large File Block ... Group FFS • Pros – Efficient storage for both small and large files – Locality for both small and large files – Locality for metadata and data • Cons – Inefficient for >ny files (a 1 byte file requires both an inode and a data block) – Inefficient encoding when file is mostly con>guous on disk (no equivalent to superpages) – Need to reserve 10-20% of free space to prevent fragmentaon NTFS • Master File Table – Flexible 1KB storage for metadata and data • Extents – Block pointers cover runs of blocks – Similar approach in linux (ext4) – File create can provide hint as to size of file • Journalling for reliability – Next chapter NTFS Small File Master File Table MFT Record (small fle) Std. Info. File Name Data (resident) (free) NTFS Medium-Sized File MFT Start Data Extent Length MFT Record Std. Info. File Name Data (nonresident) (free) Start Data Extent Length NTFS Indirect Block MFT MFT Record (part 1) Std. Info. Attr.list File Name Data (nonresident) Data Extent Data Extent MFT Record (part 2) Std. Info. Data (nonresident) (free) Data Extent Data Extent Data Extent MFT MFT MFT Record MFT Record (small file) (huge/badly-fragmented file) Std. Info. Data (resident) Std. Info. Attr.list (nonresident) MFT Record Extent with part of attribute list (normal file) Std. Info. Data (nonresident) Data (nonresident) MFT Record Data (nonresident) (big/fragmented file) Std. Info. Attr.list Data (nonresident) Data (nonresident) Data (nonresident) Extent with part of attribute list Data (nonresident) Data (nonresident) Data (nonresident) Data (nonresident) Named Data in a File System index fle name directory fle number structure storage ofset ofset block Directories Are Files music 320 work 219 foo.txt 871 Recursive Filename Lookup File 2 bin 737 / usr 924 home 158 File 158 mike 682 /home ada 818 tom 830 File 830 music 320 /home/tom work 219 foo.txt 871 File 871 The quick /home/tom/foo.txt brown fox jumped over the lazy dog. Directory Layout Directory stored as a file Linear search to find filename (small directories) File 830 /home/tom Name . .. music work foo.txt End of File File Number 830 158 320 219 Free Space 871 Free Space Next Large Directories: B Trees Search for Hash (foo.txt) = 0x30 Root Before 240 510 730 980 Child Pointer Child Child Before 58 121 180 240 780 841 930 980 Child Pointer Leaf Leaf Hash 15 30 44 58 Entry Pointer Hash Number 30 Name . .. foo.txt music ... work code bin ... test File Number 830 158 871 320 ... 219 3 014 ... 324 Large Directories: Layout File Containing Directory Name music work Root Child Leaf Leaf Child ... ... ... ... File Number 320 219 Directory Entries B+Tree Nodes.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages33 Page
-
File Size-