270 likes | 363 Views
Chapter 11: File System Implementation. Implementation. Looked at interface to file-system How users and processes access and modify files But what happens between the ones and zeros on the platter and that interface Layered approach
E N D
Implementation • Looked at interface to file-system • How users and processes access and modify files • But what happens between the ones and zeros on the platter and that interface • Layered approach • Idea is that low-level format and layout of data should not change the way the user interacts with the file-system
File-System Structure • File system resides on secondary storage (disks) • To the operating: large 1-D array of “blocks” • Address becomes a block ID One large array of blocks
Secondary Storage • File-system installed on a partition (volume) • Can be multiple partitions to a disk drive • MBR contains disk-level information (stage one bootloader) • Boot block (boot control block, kernel or loader, first block in boot partition) • Volume Control Block (called a super block in UFS and a Master File Table in NTFS file systems; contains things like the number of blocks, size of blocks, etc.) • Inode list Inode list Inode list Super block Boot block (stage 2 bootloader) Super block ----Data blocks---- ----Data blocks---- Master Boot Record (stage 1 bootloader) Partitions (or volumes)
Each file represented by… • File control block(Inode in Unix) – storage structure consisting of information about a file • One inode per file
To open a file • Must locate the Inode (file-control block) • Then will know where blocks are
OS keeps an open file table Also keeps one for each process Open() returns a file descriptor which is an index into this table Used for reads and writes Open file tables
Virtual File Systems • Virtual File Systems (VFS) provide an object-oriented way of implementing file systems. • VFS allows the same system call interface (the API) to be used for different types of file systems. • Same syntax regardless of FS (read(), write(), open(), close())
Directory Implementation • Directory (dih-rek-tuh-ree) a book alphabetically listing persons and organizations, usually with information about how to contact them • In file-systems used to organize and locate files • Usually implemented as a file itself • Contains • Linear list of file names with pointer to the data blocks. • Hash Table – linear list with hash data structure.
Allocation Methods • An allocation method refers to how disk blocks are allocated for files: • How the blocks are laid out on the drive • Contiguous allocation • Linked allocation • Indexed allocation
Contiguous Allocation • Simple – only starting location (block #) and length (number of blocks) are required • Fragmentation: dynamic storage-allocation problem
Linked Allocation • Table points to first block • Each subsequent block points to next • No fragmentation but disk head must jump around to collect entire file • Very early versions of file allocation table (FAT)
Indexed Allocation • File-control block has list of every block used by disk. • No external fragmentation • Can make one sweep of the disk head to gather entire file
Index: how large can a file be? • How many blocks? • Contiguous and linked no limit (except addressing limitations) • However many entries will fit in an inode • Triple indirection • 1st 12 blocks directly from inode • 13th points to a block that holds nothing but addresses of data blocks • 14th double indirection • 15th triple
Index: how large can a file be? • Example • 12 direct-block references • one single-indirection reference • one double-indirection reference • one triple-indirection reference • How large can a file be? • Assume • block-size of 4096 bytes • an indirection-block (a block used to hold pointers to data-blocks) can hold 1,260 entries (26 bits each).
Free-Space Management • When it is time to request a block • Must have a list of “available” or “free” blocks • Unix uses a bit vector (n blocks) • Example: block size = 212 bytes disk size = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (or 32K bytes) 0 1 2 n-1 … 0 block[i] free 1 block[i] occupied bit[i] =
Bit map requires extra space • Must be kept on disk • Copy in memory and disk may differ • Cannot allow for block[i] to have a situation where bit[i] = 1 in memory and bit[i] = 0 on disk • Solution: write ahead • Set bit[i] = 1 in disk • Allocate block[i] • Set bit[i] = 1 in memory Disk BV ↔ Memory BV
Could implement free-block list with a linked-list implementation Traversal expensive Often just need the first one Linked Free Space List on Disk
Grouping Just keep track of the first free block It will have a list of n free blocks The last one in the list will have another list of free blocks Can acquire large numbers of blocks quickly Counting Exploits fact that usually several contiguous blocks are allocated or freed Keep a free-block list Each entry points to a free block and indicates the number of free contiguous blocks Other free-list approaches Grouping Counting
Efficiency: buffering and caching Recovering from failures NFS A few final issues Efficiency Recovery Networked File System
Efficiency and Performance • Disk cache (buffer cache) – main memory can act as cache for disk (much like hi-speed cache does for memory) • Would this be useful to a Web Server? • Can piggy-back off of demand paging system by using memory-mapped IO for file access • Unified virtual memory • Can lead to double caching …
Unified Buffer Cache • A unified buffer cache uses the same page cache to cache both memory-mapped pages and ordinary file system I/O
Recovery • Consistency checking – compares data in directory structure with data blocks on disk, and tries to fix inconsistencies • Use system programs to back up data from disk to another storage device (floppy disk, magnetic tape, other magnetic disk, optical) • Recover lost file or disk by restoring data from backup Backup fsck Restore
Log Structured File Systems • Log structured (or journaling) file systems record each update to the file system as a transaction • Journaling • Similar to DB techniques covered in synchronization chapter • Example of Log-Based File Systems • Linux ext3 • Windows NTFS • Easy to recover from failures • Simply • Redo completed transactions • Undo uncompleted transactions
The Sun Network File System (NFS) • Ability to mount a remote file-system into a local file-system • NFS instructions and protocols carried over TCP/IP (UDP) • Server serving up a shared FS must maintain an export list
NFS Protocol • File-system appears local • Commands are interpreted and sent as Remote Procedure Calls to remote system • The same Virtual File System (VFS) layer that allows interfacing with different file-system implementations is used for NFS