Suggested Exercise 9 Sarah Diesburg Operating Systems CS 3430 Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 1. Read in the file header for the root directory ‘/’ Stored at a fixed location on disk / Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 2. Read the first data block for the root directory Lookup the directory entry for pets / pets Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 3. Read the file header for pets / pets pets Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 4. Read the first data block for the pet directory Lookup the directory entry for cat.jpg / pets pets cat Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 5. Read the file header for cat.jpg / pets pets cat cat Hierarchical Name Space To access the data content of /pets/cat.jpg The system needs to perform the following disk I/Os 6. Read the data block for cat.jpg / pets pets cat cat Hierarchical Name Space So how many disk I/Os do we need to resolve the path? Depends what resolving means 5 to resolve the path (everything but reading the file) 6 if resolving includes reading the first file data block How would you design your file system differently? If you have infinite number of CPUs? If you have infinite memory size? If you have infinite disk storage? If you have infinite network bandwidth? File System Components Disk layout Naming Protection Reliability Infinite Number of CPUs Some of you forgot to think about disk seek and data transfer times These are separate from computational power Use naming schemes that take a lot of computational power E.g., relational, contextual, content-based Hash data block locations Maybe encryption for extra security Infinite Memory Size Load (cache) all file to data mappings into memory on boot Memory-map files to disk Infinite Disk Storage Make extra copies for reliability Make extra copies for speed Contiguous or segment-based allocation No longer need to worry about external fragmentation Infinite Network Bandwidth Automatic remote copy (remote RAID 1?) Store metadata locally (accessed more often), store data remotely (accessed less often) How would you design a file system for only large files? for only small files? if memory capacity == disk capacity For large files Multi-level indexed allocation Hash allocation – change to one block won’t affect rest For small files Indexed allocation Small segmented allocation Memory capacity = Disk capacity Cache all metadata and files as they are being used