12_File System Implementation[1]
12_File System Implementation[1]
Implementation
Outline
• File-System Structure
• File-System Operations
• Directory Implementation
• Allocation Methods
• Free-Space Management
• Efficiency and Performance
• Recovery
• Example: WAFL File System
Objectives
• Describe the details of implementing
local file systems and directory
structures
• Discuss block allocation and free-
block algorithms and trade-offs
• Explore file system efficiency and
performance issues
• Look at recovery from file system
failures
• Describe the WAFL file system as a
concrete example
File-System Structure
• File structure
– Logical storage unit
– Collection of related information
• File system resides on secondary
storage (disks)
– Provided user interface to storage,
mapping logical to physical
– Provides efficient and convenient access
to disk by allowing data to be stored,
located retrieved easily
• Disk provides in-place rewrite and
random access
Layered File System
File System Layers
• Device drivers manage I/O devices at the I/O control layer
Given commands like
read drive1, cylinder 72, track 2, sector 10, into memory location 1060
Outputs low-level hardware specific commands to
hardware controller
• Basic file system given command like “retrieve block 123”
translates to device driver
• Also manages memory buffers and caches (allocation,
freeing, replacement)
– Buffers hold data in transit
– Caches hold frequently used data
• File organization module understands files, logical
address, and physical blocks
• Translates logical block # to physical block #
• Manages free space, disk allocation
File System Layers (Cont.)
• Logical file system manages metadata
information
– Translates file name into file number, file
handle, location by maintaining file control
blocks (inodes in UNIX)
– Directory management
– Protection
• Layering useful for reducing complexity and
redundancy, but adds overhead and can
decrease performance
• Logical layers can be implemented by any
coding method according to OS designer
File System Layers (Cont.)
• Many file systems, sometimes more
than one within an operating system
– Each with its own format:
– CD-ROM is ISO 9660;
– Unix has UFS, FFS;
– Windows has FAT, FAT32, NTFS as well
as floppy, CD, DVD Blu-ray,
– Linux has more than 130 types, with
extended file system ext3 and ext4
leading; plus distributed file systems, etc.)
– New ones still arriving – ZFS, GoogleFS,
FUSE
File-System Operations
• We have system calls at the API level, but
how do we implement their functions?
– On-disk and in-memory structures
• Boot control block contains info needed by
system to boot OS from that volume
– Needed if volume contains OS, usually first block
of volume
• Volume control block (superblock, master
file table) contains volume details
– Total # of blocks, # of free blocks, block size, free
block pointers or array
• Directory structure organizes the files
– Names and inode numbers, master file table
File Control Block (FCB)
• OS maintains FCB per file, which
contains many details about the file
– Typically, inode number, permissions,
size, dates
– Example
In-Memory File System Structures
• Mount table contains information
about each mounted volume.
• System-wide open-file table
contains a copy of the FCB of
each file and other info
• Per-process open-file table
contains pointers to appropriate
entries in system-wide open-file
table as well as other info
In-Memory File System Structures (Cont.)
• Block to be accessed
= starting address +
Q
• Displacement into
block = R
Linked Allocation
• Each file is a linked list of blocks
• File ends at nil pointer
• No external fragmentation
• Each block contains pointer to next block
• No compaction, external fragmentation
• Free space management system called when
new block needed
• Improve efficiency by clustering blocks into
groups but increases internal fragmentation
• Reliability can be a problem
• Locating a block can take many I/Os and disk
seeks
Linked Allocation Example
• Each file is a linked list of disk blocks:
blocks may be scattered anywhere on
the disk
• Scheme
Linked Allocation (Cont.)
• Mapping
Q
LA/511
R
index table
Example of Indexed Allocation
Indexed Allocation – Small Files
• Need index table
• Random access
• Dynamic access without external fragmentation,
but have overhead of index block
• Mapping from logical to physical in a file of
maximum size of 256K bytes and block size of
512 bytes. We need only 1 block for index table
Q
LA/512
R
• Calculation:
– Q = displacement into index table
– R = displacement into block
Indexed Allocation – Large Files
• Mapping from logical to physical in
a file of unbounded length (block
size of 512 words)
– Linked scheme – Link blocks of index
table (no limit on size)
– Multi-level indexing
Indexed Allocation – Two-level Scheme
• Two-level index (4K blocks could store 1,024 four-
byte pointers in outer index -> 1,048,567 data
blocks and file size of up to 4GB)
Q1
LA / (512 x 512)
R1
• Mapping scheme for outer-index:
– Q1 = displacement into outer-index
– R1 is used as follows:
Q2
R1 / 512
R2
0 block[i] occupied
Block number calculation
(number of bits per word) *
(number of 0-value words) +
offset of first 1 bit
Example : Free-Space Management
• Number of bits per word = 32 (i.e., each word
is 32 bits long).
• Number of 0-value words = 3 (meaning the
first three words are filled entirely with 0s).
• Offset of the first 1-bit = 7 (meaning the first
1-bit occurs at the 7th position in the next
word, relative to that word).
• Now, applying the formula:
• Block Number = 32×3+7=96+7=103
• So, the block number would be 103
Free-Space Management
• File system maintains free-space list to
track available blocks
• Bit vector or bit map (n blocks)
• Bit map requires extra space
– Example:
block size = 4KB = 212 bytes
disk size = 240 bytes (1 terabyte)
n = 240/212 = 228 bits (or 32MB)
if clusters of 4 blocks -> 8MB of
memory
• Grouping
– Modify linked list to store address of next
n-1 free blocks in first free block, plus a
pointer to next block that contains free-
block-pointers (like this one)
• Counting
– Because space is frequently contiguously
used and freed, with contiguous-
allocation, extents, or clustering
• Keep address of first free block and count of
following free blocks
• Free space list then has entries containing
addresses and counts
TRIMing Unused Blocks