File System Implementation (Part I)
Amir H. Payberah
amir@sics.se
Amirkabir University of Technology
(Tehran Polytechnic)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 1 / 57
Motivation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 2 / 57
Motivation
The file system resides permanently on secondary storage.
How to
• structure file use
• allocate disk space
• recover free space
• track the locations of data
• interface other parts of the OS to secondary storage
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 3 / 57
File System Structure
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 4 / 57
File-System Structure
Disk provides in-place rewrite and random access
• I/O transfers performed in blocks of sectors (usually 512 bytes)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
File-System Structure
Disk provides in-place rewrite and random access
• I/O transfers performed in blocks of sectors (usually 512 bytes)
File system resides on secondary storage
• User interface to storage, mapping logical to physical
• Efficient and convenient access to disk
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
File-System Structure
Disk provides in-place rewrite and random access
• I/O transfers performed in blocks of sectors (usually 512 bytes)
File system resides on secondary storage
• User interface to storage, mapping logical to physical
• Efficient and convenient access to disk
File structure
• Logical storage unit
• Collection of related information
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
File-System Design Problems
How the file system should look to the user?
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
File-System Design Problems
How the file system should look to the user?
• Defining a file and its attributes
• The operations allowed on a file
• The directory structure for organizing files
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
File-System Design Problems
How the file system should look to the user?
• Defining a file and its attributes
• The operations allowed on a file
• The directory structure for organizing files
Algorithms and data structures to map the logical file system onto
the physical secondary-storage devices.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
File System Layers (1/6)
Different levels
Each level uses the features of lower
levels to create new features for use
by higher levels.
Reducing complexity and redundancy,
but adds overhead and can decrease
performance.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 7 / 57
File System Layers (2/6)
Device drivers manage I/O devices
at the I/O control layer.
Translates high-level commands to
low-level hardware-specific instructions.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 8 / 57
File System Layers (3/6)
Basic file system translates given command
like retrieve block 123 to device driver.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 9 / 57
File System Layers (3/6)
Basic file system translates given command
like retrieve block 123 to device driver.
Also manages memory buffers and
caches (allocation, freeing, replacement)
• Buffers hold data in transit
• Caches hold frequently used data
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 9 / 57
File System Layers (4/6)
File organization understands files, logical
address, and physical blocks.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
File System Layers (4/6)
File organization understands files, logical
address, and physical blocks.
Translates logical block number to physical
block number.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
File System Layers (4/6)
File organization understands files, logical
address, and physical blocks.
Translates logical block number to physical
block number.
Manages free space and disk allocation.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
File System Layers (5/6)
Logical file system manages metadata
information.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
File System Layers (5/6)
Logical file system manages metadata
information.
Translates file name into file number, file
handle, location by maintaining file
control blocks (inodes in Unix)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
File System Layers (5/6)
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
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
File System Layers (6/6)
Many file systems, sometimes many within an OS
Each with its own format
• CD-ROM: ISO 9660
• Unix: UFS, FFS
• Windows: FAT, FAT32, NTFS
• Linux: more than 40 types, with extended file system (ext2, ext3,
ext4)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 12 / 57
File System Implementation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 13 / 57
File-System Implementation
Based on several on-disk and in-memory structures.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
File-System Implementation
Based on several on-disk and in-memory structures.
On-disk
• Boot control block (per volume)
• Volume control block (per volume)
• Directory structure (per file system)
• File control block (per file)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
File-System Implementation
Based on several on-disk and in-memory structures.
On-disk
• Boot control block (per volume)
• Volume control block (per volume)
• Directory structure (per file system)
• File control block (per file)
In-memory
• Mount table
• Directory structure cache
• The open-file table (system-wide and per process)
• Buffers of the file-system blocks
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
On-Disk File System Structures (1/2)
Boot control block contains information needed by system to boot
OS from that volume.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
On-Disk File System Structures (1/2)
Boot control block contains information needed by system to boot
OS from that volume.
• Needed if volume contains OS, usually first block of volume.
• In UFS, it is called boot block, and in NTFS partition boot sector.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
On-Disk File System Structures (1/2)
Boot control block contains information needed by system to boot
OS from that volume.
• Needed if volume contains OS, usually first block of volume.
• In UFS, it is called boot block, and in NTFS partition boot sector.
Volume control block contains volume details.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
On-Disk File System Structures (1/2)
Boot control block contains information needed by system to boot
OS from that volume.
• Needed if volume contains OS, usually first block of volume.
• In UFS, it is called boot block, and in NTFS partition boot sector.
Volume control block contains volume details.
• Total num. of blocks, num. of free blocks, block size, free block
pointers or array
• In UFS, it is called super block, and in NTFS master file table.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
On-Disk File System Structures (2/2)
Directory structure organizes the files.
• In UFS, this includes file names and associated inode numbers.
• In NTFS, it is stored in the master file table.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 16 / 57
On-Disk File System Structures (2/2)
Directory structure organizes the files.
• In UFS, this includes file names and associated inode numbers.
• In NTFS, it is stored in the master file table.
File control block contains many details about the file.
• In UFS, inode number, permissions, size, dates.
• In NFTS stores into in master file table.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 16 / 57
In-Memory File System Structures
Mount table contains information about each mounted volume.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
In-Memory File System Structures
Mount table contains information about each mounted volume.
Directory structure cache holds the directory information of recently
accessed directories.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
In-Memory File System Structures
Mount table contains information about each mounted volume.
Directory structure cache holds the directory information of recently
accessed directories.
System-wide open-file table contains a copy of the FCB of each open
file.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
In-Memory File System Structures
Mount table contains information about each mounted volume.
Directory structure cache holds the directory information of recently
accessed directories.
System-wide open-file table contains a copy of the FCB of each open
file.
Per-process open-file table contains a pointer to the appropriate
entry in the system-wide open-file table.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
In-Memory File System Structures
Mount table contains information about each mounted volume.
Directory structure cache holds the directory information of recently
accessed directories.
System-wide open-file table contains a copy of the FCB of each open
file.
Per-process open-file table contains a pointer to the appropriate
entry in the system-wide open-file table.
Buffers hold file-system blocks when they are being read from disk
or written to disk.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
Create a File
A program calls the logical file system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
Create a File
A program calls the logical file system.
The logical file system knows the format of the directory structures,
and allocates a new FCB.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
Create a File
A program calls the logical file system.
The logical file system knows the format of the directory structures,
and allocates a new FCB.
The system, then, reads the appropriate directory into memory, up-
dates it with the new file name and FCB, and writes it back to the
disk.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
Open a File
The file must be opened.
• The open() passes a file name to the logical file system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
Open a File
The file must be opened.
• The open() passes a file name to the logical file system.
The open() first searches the system-wide open-file: if the file is
already in use by another process.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
Open a File
The file must be opened.
• The open() passes a file name to the logical file system.
The open() first searches the system-wide open-file: if the file is
already in use by another process.
• If yes: a per-process open-file table entry is created.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
Open a File
The file must be opened.
• The open() passes a file name to the logical file system.
The open() first searches the system-wide open-file: if the file is
already in use by another process.
• If yes: a per-process open-file table entry is created.
• If no: the directory structure is searched for the given file name:
once the file is found, the FCB is copied into a system-wide
open-file table in memory.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
Open a File
The file must be opened.
• The open() passes a file name to the logical file system.
The open() first searches the system-wide open-file: if the file is
already in use by another process.
• If yes: a per-process open-file table entry is created.
• If no: the directory structure is searched for the given file name:
once the file is found, the FCB is copied into a system-wide
open-file table in memory.
This table stores the FCB as well as the number of processes that
have the file open.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
Read From a File
The open() returns a pointer to the appropriate entry in the per-
process file-system table.
All file operations are then performed via this pointer.
This pointer is called file descriptor in Unix and file handle in Win-
dows.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 20 / 57
Close a File
When a process closes the file:
• The per-process table entry is removed.
• The system-wide entry’s open count is decremented.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 21 / 57
Close a File
When a process closes the file:
• The per-process table entry is removed.
• The system-wide entry’s open count is decremented.
When all users that have opened the file close it, any updated meta-
data is copied back to the disk-based directory structure, and the
system-wide open-file table entry is removed.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 21 / 57
Partitions and Mounting (1/2)
Partition can be a volume containing a file system or raw.
• Raw partition: just a sequence of blocks with no file system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 22 / 57
Partitions and Mounting (1/2)
Partition can be a volume containing a file system or raw.
• Raw partition: just a sequence of blocks with no file system.
Boot block points to boot volume or boot loader.
• Boot loader: knows enough about the file-system structure to be
able to find and load the kernel and start it executing.
• Dual-boot that allows to install multiple OS on a single system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 22 / 57
Partitions and Mounting (2/2)
Root partition contains the OS
• Mounted at boot time
• Other partitions can hold other OSes, other file systems, or be raw
• Other partitions can mount automatically or manually
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 23 / 57
Partitions and Mounting (2/2)
Root partition contains the OS
• Mounted at boot time
• Other partitions can hold other OSes, other file systems, or be raw
• Other partitions can mount automatically or manually
At mount time, file system consistency checked.
• Is all metadata correct? if not, fix it, try again, if yes, add to mount
table, allow access
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 23 / 57
Virtual File Systems
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 24 / 57
Virtual File Systems (1/2)
Virtual File Systems (VFS) on Unix provide an object-oriented way
of implementing file systems.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
Virtual File Systems (1/2)
Virtual File Systems (VFS) on Unix 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.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
Virtual File Systems (1/2)
Virtual File Systems (VFS) on Unix 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.
The API is to the VFS interface, rather than any specific type of
file system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
2 It provides a mechanism for uniquely representing a file throughout
a network.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
2 It provides a mechanism for uniquely representing a file throughout
a network.
The VFS is based on a structure, called a vnode.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
2 It provides a mechanism for uniquely representing a file throughout
a network.
The VFS is based on a structure, called a vnode.
• Contains a numerical designator for a network-wide unique file.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
2 It provides a mechanism for uniquely representing a file throughout
a network.
The VFS is based on a structure, called a vnode.
• Contains a numerical designator for a network-wide unique file.
• Unix inodes are unique within only a single file system.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Virtual File Systems (2/2)
VFS layer serves two important functions:
1 It separates file-system-generic operations from their implementa-
tion, and allows transparent access to different types of file systems
mounted locally.
2 It provides a mechanism for uniquely representing a file throughout
a network.
The VFS is based on a structure, called a vnode.
• Contains a numerical designator for a network-wide unique file.
• Unix inodes are unique within only a single file system.
• The kernel maintains one vnode structure for each active node.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 27 / 57
VFS in Linux (1/2)
The four main object types defined by the Linux VFS are:
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
VFS in Linux (1/2)
The four main object types defined by the Linux VFS are:
• The inode object: represents an individual file
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
VFS in Linux (1/2)
The four main object types defined by the Linux VFS are:
• The inode object: represents an individual file
• The file object: represents an open file
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
VFS in Linux (1/2)
The four main object types defined by the Linux VFS are:
• The inode object: represents an individual file
• The file object: represents an open file
• The super block object: represents an entire file system
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
VFS in Linux (1/2)
The four main object types defined by the Linux VFS are:
• The inode object: represents an individual file
• The file object: represents an open file
• The super block object: represents an entire file system
• The dentry object: represents an individual directory entry
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
VFS in Linux (2/2)
VFS defines a set of operations on the objects that must be imple-
mented.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
VFS in Linux (2/2)
VFS defines a set of operations on the objects that must be imple-
mented.
Every object has a pointer to a function table.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
VFS in Linux (2/2)
VFS defines a set of operations on the objects that must be imple-
mented.
Every object has a pointer to a function table.
• Function table has addresses of routines to implement that function
on that object.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
VFS in Linux (2/2)
VFS defines a set of operations on the objects that must be imple-
mented.
Every object has a pointer to a function table.
• Function table has addresses of routines to implement that function
on that object.
• For example:
int open(...): open a file
int close(...): close an already-open file
ssize t read(...): read from a file
ssize t write(...): write to a file
int mmap(...): memory-map a file
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
Directory Implementation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 30 / 57
Directory Implementation
Linear list
Hash table
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 31 / 57
Directory Implementation - Linear List
Linear list of file names with pointer to the data blocks.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
Directory Implementation - Linear List
Linear list of file names with pointer to the data blocks.
Simple to program.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
Directory Implementation - Linear List
Linear list of file names with pointer to the data blocks.
Simple to program.
Time-consuming to execute.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
Directory Implementation - Linear List
Linear list of file names with pointer to the data blocks.
Simple to program.
Time-consuming to execute.
Linear search time.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
Directory Implementation - Linear List
Linear list of file names with pointer to the data blocks.
Simple to program.
Time-consuming to execute.
Linear search time.
Could keep ordered alphabetically via linked list or use B+ tree:
binary search, but heavy
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
Directory Implementation - Hash Table
Hash Table: linear list with hash data structure
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
Directory Implementation - Hash Table
Hash Table: linear list with hash data structure
Decreases directory search time
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
Directory Implementation - Hash Table
Hash Table: linear list with hash data structure
Decreases directory search time
Collisions: situations where two file names hash to the same location
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
Directory Implementation - Hash Table
Hash Table: linear list with hash data structure
Decreases directory search time
Collisions: situations where two file names hash to the same location
Chained-overflow method.
• Each hash entry can be a linked list instead of an individual value.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
Allocation Methods
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 34 / 57
Allocation Methods
How disk blocks are allocated to files?
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 35 / 57
Allocation Methods
How disk blocks are allocated to files?
Methods:
• Contiguous allocation
• Linked allocation
• Indexed allocation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 35 / 57
Contiguous Allocation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 36 / 57
Contiguous Allocation (1/2)
Contiguous allocation: each file occupies set of contiguous blocks.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
Contiguous Allocation (1/2)
Contiguous allocation: each file occupies set of contiguous blocks.
• Best performance in most cases
• Simple: only starting location (block number) and length (number
of blocks) are required.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
Contiguous Allocation (1/2)
Contiguous allocation: each file occupies set of contiguous blocks.
• Best performance in most cases
• Simple: only starting location (block number) and length (number
of blocks) are required.
• Supports both sequential and direct access.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
Contiguous Allocation (1/2)
Contiguous allocation: each file occupies set of contiguous blocks.
• Best performance in most cases
• Simple: only starting location (block number) and length (number
of blocks) are required.
• Supports both sequential and direct access.
Allocation strategies like contiguous memory allocation:
• First fit
• Best fit
• Worst fit
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
Contiguous Allocation (2/2)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 38 / 57
Contiguous Allocation Problems
Finding space for file
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
Contiguous Allocation Problems
Finding space for file
External fragmentation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
Contiguous Allocation Problems
Finding space for file
External fragmentation
Need for compaction (fragmentation) off-line or on-line: lose of
performance
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
Contiguous Allocation Problems
Finding space for file
External fragmentation
Need for compaction (fragmentation) off-line or on-line: lose of
performance
Knowing file size
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
Extent-Based Systems
A modified contiguous allocation scheme.
• E.g., Veritas file system
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
Extent-Based Systems
A modified contiguous allocation scheme.
• E.g., Veritas file system
Extent-based file systems allocate disk blocks in extents.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
Extent-Based Systems
A modified contiguous allocation scheme.
• E.g., Veritas file system
Extent-based file systems allocate disk blocks in extents.
An extent is a contiguous block of disks.
• Extents are allocated for file allocation.
• A file consists of one or more extents.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
Linked Allocation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 41 / 57
Linked Allocation (1/2)
Linked allocation: each file is a linked list of blocks.
• Each block contains pointer to next block.
• File ends at null pointer.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
Linked Allocation (1/2)
Linked allocation: each file is a linked list of blocks.
• Each block contains pointer to next block.
• File ends at null pointer.
No external fragmentation, no compaction.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
Linked Allocation (1/2)
Linked allocation: each file is a linked list of blocks.
• Each block contains pointer to next block.
• File ends at null pointer.
No external fragmentation, no compaction.
Free space management system called when new block needed.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
Linked Allocation (2/2)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 43 / 57
Linked Allocation Problems
Locating a block can take many I/Os and disk seeks.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
Linked Allocation Problems
Locating a block can take many I/Os and disk seeks.
Reliability can be a problem.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
Linked Allocation Problems
Locating a block can take many I/Os and disk seeks.
Reliability can be a problem.
The space required for the pointers.
• Efficiency can be improved by clustering blocks into groups but
increases internal fragmentation.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
File-Allocation Table (FAT)
Beginning of volume has a table, indexed by block number.
Much like a linked list, but faster on disk and cacheable.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 45 / 57
Indexed Allocation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 46 / 57
Indexed Allocation (1/2)
Indexed allocation: each file has its own index block(s) of pointers
to its data blocks.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
Indexed Allocation (1/2)
Indexed allocation: each file has its own index block(s) of pointers
to its data blocks.
Need index table
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
Indexed Allocation (1/2)
Indexed allocation: each file has its own index block(s) of pointers
to its data blocks.
Need index table
Random access
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
Indexed Allocation (1/2)
Indexed allocation: each file has its own index block(s) of pointers
to its data blocks.
Need index table
Random access
Dynamic access without external fragmentation, but have overhead
of index block
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
Indexed Allocation (2/2)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 48 / 57
Indexed Allocation Problems
Wasted space: overhead of the index blocks.
For example, even with a file of only one or two blocks, we need an
an entire index block.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 49 / 57
Index Block Size
How large the index block should be?
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
Index Block Size
How large the index block should be?
Keep the index block as small as possible.
• We need a mechanism to hold pointers for large files.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
Index Block Size
How large the index block should be?
Keep the index block as small as possible.
• We need a mechanism to hold pointers for large files.
Mechanisms for this purpose include the following:
• Linked scheme
• Multi-level index
• Combined scheme
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
Linked Scheme
Linked scheme: link blocks of index table (no limit on size)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 51 / 57
Linked Scheme
Linked scheme: link blocks of index table (no limit on size)
For example, an index block might contain a small header giving the
name of the file and a set of the first 100 disk-block addresses.
The next address is null or is a pointer to another index block.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 51 / 57
Multi-Level Index
Two-level index
A first-level index block to point to a set of second-level index blocks,
which in turn point to the file blocks.
Could be continued to a third or fourth level.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 52 / 57
Combined Scheme
Combine scheme: used in Unix/Linux FS
The first 12 pointers point to direct blocks
• The data for small files do not need a separate index block.
The next 3 pointers point to indirect blocks.
• Single indirect
• Double indirect
• Triple indirect
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 53 / 57
Performance
Best method depends on file access type.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
Performance
Best method depends on file access type.
Contiguous is great for sequential and random.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
Performance
Best method depends on file access type.
Contiguous is great for sequential and random.
Linked is good for sequential, not random.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
Performance
Best method depends on file access type.
Contiguous is great for sequential and random.
Linked is good for sequential, not random.
Indexed is more complex
• Single block access could require 2 index block reads then data
block read
• Clustering can help improve throughput, reduce CPU overhead
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
Summary
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 55 / 57
Summary
FS layers: device, I/O control, basic FS, file-organization, logical
FS, application
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
Summary
FS layers: device, I/O control, basic FS, file-organization, logical
FS, application
FS implementation:
• On-disk structures: boot control block, volume control block,
directory structure, and file control block
• In-memory structures: mount table, directory structure, open-file
tables, and buffers
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
Summary
FS layers: device, I/O control, basic FS, file-organization, logical
FS, application
FS implementation:
• On-disk structures: boot control block, volume control block,
directory structure, and file control block
• In-memory structures: mount table, directory structure, open-file
tables, and buffers
Virtual file system (VFS)
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
Summary
FS layers: device, I/O control, basic FS, file-organization, logical
FS, application
FS implementation:
• On-disk structures: boot control block, volume control block,
directory structure, and file control block
• In-memory structures: mount table, directory structure, open-file
tables, and buffers
Virtual file system (VFS)
Directory implementation: linear list, and hash table
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
Summary
FS layers: device, I/O control, basic FS, file-organization, logical
FS, application
FS implementation:
• On-disk structures: boot control block, volume control block,
directory structure, and file control block
• In-memory structures: mount table, directory structure, open-file
tables, and buffers
Virtual file system (VFS)
Directory implementation: linear list, and hash table
Allocation methods: contiguous allocation, linked allocation, and
indexed allocation
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
Questions?
Acknowledgements
Some slides were derived from Avi Silberschatz slides.
Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 57 / 57

File System Implementation - Part1

  • 1.
    File System Implementation(Part I) Amir H. Payberah [email protected] Amirkabir University of Technology (Tehran Polytechnic) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 1 / 57
  • 2.
    Motivation Amir H. Payberah(Tehran Polytechnic) File System Implementation 1393/9/8 2 / 57
  • 3.
    Motivation The file systemresides permanently on secondary storage. How to • structure file use • allocate disk space • recover free space • track the locations of data • interface other parts of the OS to secondary storage Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 3 / 57
  • 4.
    File System Structure AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 4 / 57
  • 5.
    File-System Structure Disk providesin-place rewrite and random access • I/O transfers performed in blocks of sectors (usually 512 bytes) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
  • 6.
    File-System Structure Disk providesin-place rewrite and random access • I/O transfers performed in blocks of sectors (usually 512 bytes) File system resides on secondary storage • User interface to storage, mapping logical to physical • Efficient and convenient access to disk Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
  • 7.
    File-System Structure Disk providesin-place rewrite and random access • I/O transfers performed in blocks of sectors (usually 512 bytes) File system resides on secondary storage • User interface to storage, mapping logical to physical • Efficient and convenient access to disk File structure • Logical storage unit • Collection of related information Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 5 / 57
  • 8.
    File-System Design Problems Howthe file system should look to the user? Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
  • 9.
    File-System Design Problems Howthe file system should look to the user? • Defining a file and its attributes • The operations allowed on a file • The directory structure for organizing files Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
  • 10.
    File-System Design Problems Howthe file system should look to the user? • Defining a file and its attributes • The operations allowed on a file • The directory structure for organizing files Algorithms and data structures to map the logical file system onto the physical secondary-storage devices. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 6 / 57
  • 11.
    File System Layers(1/6) Different levels Each level uses the features of lower levels to create new features for use by higher levels. Reducing complexity and redundancy, but adds overhead and can decrease performance. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 7 / 57
  • 12.
    File System Layers(2/6) Device drivers manage I/O devices at the I/O control layer. Translates high-level commands to low-level hardware-specific instructions. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 8 / 57
  • 13.
    File System Layers(3/6) Basic file system translates given command like retrieve block 123 to device driver. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 9 / 57
  • 14.
    File System Layers(3/6) Basic file system translates given command like retrieve block 123 to device driver. Also manages memory buffers and caches (allocation, freeing, replacement) • Buffers hold data in transit • Caches hold frequently used data Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 9 / 57
  • 15.
    File System Layers(4/6) File organization understands files, logical address, and physical blocks. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
  • 16.
    File System Layers(4/6) File organization understands files, logical address, and physical blocks. Translates logical block number to physical block number. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
  • 17.
    File System Layers(4/6) File organization understands files, logical address, and physical blocks. Translates logical block number to physical block number. Manages free space and disk allocation. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 10 / 57
  • 18.
    File System Layers(5/6) Logical file system manages metadata information. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
  • 19.
    File System Layers(5/6) Logical file system manages metadata information. Translates file name into file number, file handle, location by maintaining file control blocks (inodes in Unix) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
  • 20.
    File System Layers(5/6) 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 Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 11 / 57
  • 21.
    File System Layers(6/6) Many file systems, sometimes many within an OS Each with its own format • CD-ROM: ISO 9660 • Unix: UFS, FFS • Windows: FAT, FAT32, NTFS • Linux: more than 40 types, with extended file system (ext2, ext3, ext4) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 12 / 57
  • 22.
    File System Implementation AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 13 / 57
  • 23.
    File-System Implementation Based onseveral on-disk and in-memory structures. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
  • 24.
    File-System Implementation Based onseveral on-disk and in-memory structures. On-disk • Boot control block (per volume) • Volume control block (per volume) • Directory structure (per file system) • File control block (per file) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
  • 25.
    File-System Implementation Based onseveral on-disk and in-memory structures. On-disk • Boot control block (per volume) • Volume control block (per volume) • Directory structure (per file system) • File control block (per file) In-memory • Mount table • Directory structure cache • The open-file table (system-wide and per process) • Buffers of the file-system blocks Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 14 / 57
  • 26.
    On-Disk File SystemStructures (1/2) Boot control block contains information needed by system to boot OS from that volume. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
  • 27.
    On-Disk File SystemStructures (1/2) Boot control block contains information needed by system to boot OS from that volume. • Needed if volume contains OS, usually first block of volume. • In UFS, it is called boot block, and in NTFS partition boot sector. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
  • 28.
    On-Disk File SystemStructures (1/2) Boot control block contains information needed by system to boot OS from that volume. • Needed if volume contains OS, usually first block of volume. • In UFS, it is called boot block, and in NTFS partition boot sector. Volume control block contains volume details. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
  • 29.
    On-Disk File SystemStructures (1/2) Boot control block contains information needed by system to boot OS from that volume. • Needed if volume contains OS, usually first block of volume. • In UFS, it is called boot block, and in NTFS partition boot sector. Volume control block contains volume details. • Total num. of blocks, num. of free blocks, block size, free block pointers or array • In UFS, it is called super block, and in NTFS master file table. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 15 / 57
  • 30.
    On-Disk File SystemStructures (2/2) Directory structure organizes the files. • In UFS, this includes file names and associated inode numbers. • In NTFS, it is stored in the master file table. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 16 / 57
  • 31.
    On-Disk File SystemStructures (2/2) Directory structure organizes the files. • In UFS, this includes file names and associated inode numbers. • In NTFS, it is stored in the master file table. File control block contains many details about the file. • In UFS, inode number, permissions, size, dates. • In NFTS stores into in master file table. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 16 / 57
  • 32.
    In-Memory File SystemStructures Mount table contains information about each mounted volume. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
  • 33.
    In-Memory File SystemStructures Mount table contains information about each mounted volume. Directory structure cache holds the directory information of recently accessed directories. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
  • 34.
    In-Memory File SystemStructures Mount table contains information about each mounted volume. Directory structure cache holds the directory information of recently accessed directories. System-wide open-file table contains a copy of the FCB of each open file. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
  • 35.
    In-Memory File SystemStructures Mount table contains information about each mounted volume. Directory structure cache holds the directory information of recently accessed directories. System-wide open-file table contains a copy of the FCB of each open file. Per-process open-file table contains a pointer to the appropriate entry in the system-wide open-file table. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
  • 36.
    In-Memory File SystemStructures Mount table contains information about each mounted volume. Directory structure cache holds the directory information of recently accessed directories. System-wide open-file table contains a copy of the FCB of each open file. Per-process open-file table contains a pointer to the appropriate entry in the system-wide open-file table. Buffers hold file-system blocks when they are being read from disk or written to disk. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 17 / 57
  • 37.
    Create a File Aprogram calls the logical file system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
  • 38.
    Create a File Aprogram calls the logical file system. The logical file system knows the format of the directory structures, and allocates a new FCB. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
  • 39.
    Create a File Aprogram calls the logical file system. The logical file system knows the format of the directory structures, and allocates a new FCB. The system, then, reads the appropriate directory into memory, up- dates it with the new file name and FCB, and writes it back to the disk. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 18 / 57
  • 40.
    Open a File Thefile must be opened. • The open() passes a file name to the logical file system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
  • 41.
    Open a File Thefile must be opened. • The open() passes a file name to the logical file system. The open() first searches the system-wide open-file: if the file is already in use by another process. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
  • 42.
    Open a File Thefile must be opened. • The open() passes a file name to the logical file system. The open() first searches the system-wide open-file: if the file is already in use by another process. • If yes: a per-process open-file table entry is created. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
  • 43.
    Open a File Thefile must be opened. • The open() passes a file name to the logical file system. The open() first searches the system-wide open-file: if the file is already in use by another process. • If yes: a per-process open-file table entry is created. • If no: the directory structure is searched for the given file name: once the file is found, the FCB is copied into a system-wide open-file table in memory. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
  • 44.
    Open a File Thefile must be opened. • The open() passes a file name to the logical file system. The open() first searches the system-wide open-file: if the file is already in use by another process. • If yes: a per-process open-file table entry is created. • If no: the directory structure is searched for the given file name: once the file is found, the FCB is copied into a system-wide open-file table in memory. This table stores the FCB as well as the number of processes that have the file open. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 19 / 57
  • 45.
    Read From aFile The open() returns a pointer to the appropriate entry in the per- process file-system table. All file operations are then performed via this pointer. This pointer is called file descriptor in Unix and file handle in Win- dows. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 20 / 57
  • 46.
    Close a File Whena process closes the file: • The per-process table entry is removed. • The system-wide entry’s open count is decremented. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 21 / 57
  • 47.
    Close a File Whena process closes the file: • The per-process table entry is removed. • The system-wide entry’s open count is decremented. When all users that have opened the file close it, any updated meta- data is copied back to the disk-based directory structure, and the system-wide open-file table entry is removed. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 21 / 57
  • 48.
    Partitions and Mounting(1/2) Partition can be a volume containing a file system or raw. • Raw partition: just a sequence of blocks with no file system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 22 / 57
  • 49.
    Partitions and Mounting(1/2) Partition can be a volume containing a file system or raw. • Raw partition: just a sequence of blocks with no file system. Boot block points to boot volume or boot loader. • Boot loader: knows enough about the file-system structure to be able to find and load the kernel and start it executing. • Dual-boot that allows to install multiple OS on a single system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 22 / 57
  • 50.
    Partitions and Mounting(2/2) Root partition contains the OS • Mounted at boot time • Other partitions can hold other OSes, other file systems, or be raw • Other partitions can mount automatically or manually Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 23 / 57
  • 51.
    Partitions and Mounting(2/2) Root partition contains the OS • Mounted at boot time • Other partitions can hold other OSes, other file systems, or be raw • Other partitions can mount automatically or manually At mount time, file system consistency checked. • Is all metadata correct? if not, fix it, try again, if yes, add to mount table, allow access Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 23 / 57
  • 52.
    Virtual File Systems AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 24 / 57
  • 53.
    Virtual File Systems(1/2) Virtual File Systems (VFS) on Unix provide an object-oriented way of implementing file systems. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
  • 54.
    Virtual File Systems(1/2) Virtual File Systems (VFS) on Unix 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. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
  • 55.
    Virtual File Systems(1/2) Virtual File Systems (VFS) on Unix 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. The API is to the VFS interface, rather than any specific type of file system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 25 / 57
  • 56.
    Virtual File Systems(2/2) VFS layer serves two important functions: Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 57.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 58.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. 2 It provides a mechanism for uniquely representing a file throughout a network. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 59.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. 2 It provides a mechanism for uniquely representing a file throughout a network. The VFS is based on a structure, called a vnode. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 60.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. 2 It provides a mechanism for uniquely representing a file throughout a network. The VFS is based on a structure, called a vnode. • Contains a numerical designator for a network-wide unique file. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 61.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. 2 It provides a mechanism for uniquely representing a file throughout a network. The VFS is based on a structure, called a vnode. • Contains a numerical designator for a network-wide unique file. • Unix inodes are unique within only a single file system. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 62.
    Virtual File Systems(2/2) VFS layer serves two important functions: 1 It separates file-system-generic operations from their implementa- tion, and allows transparent access to different types of file systems mounted locally. 2 It provides a mechanism for uniquely representing a file throughout a network. The VFS is based on a structure, called a vnode. • Contains a numerical designator for a network-wide unique file. • Unix inodes are unique within only a single file system. • The kernel maintains one vnode structure for each active node. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 26 / 57
  • 63.
    Amir H. Payberah(Tehran Polytechnic) File System Implementation 1393/9/8 27 / 57
  • 64.
    VFS in Linux(1/2) The four main object types defined by the Linux VFS are: Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
  • 65.
    VFS in Linux(1/2) The four main object types defined by the Linux VFS are: • The inode object: represents an individual file Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
  • 66.
    VFS in Linux(1/2) The four main object types defined by the Linux VFS are: • The inode object: represents an individual file • The file object: represents an open file Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
  • 67.
    VFS in Linux(1/2) The four main object types defined by the Linux VFS are: • The inode object: represents an individual file • The file object: represents an open file • The super block object: represents an entire file system Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
  • 68.
    VFS in Linux(1/2) The four main object types defined by the Linux VFS are: • The inode object: represents an individual file • The file object: represents an open file • The super block object: represents an entire file system • The dentry object: represents an individual directory entry Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 28 / 57
  • 69.
    VFS in Linux(2/2) VFS defines a set of operations on the objects that must be imple- mented. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
  • 70.
    VFS in Linux(2/2) VFS defines a set of operations on the objects that must be imple- mented. Every object has a pointer to a function table. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
  • 71.
    VFS in Linux(2/2) VFS defines a set of operations on the objects that must be imple- mented. Every object has a pointer to a function table. • Function table has addresses of routines to implement that function on that object. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
  • 72.
    VFS in Linux(2/2) VFS defines a set of operations on the objects that must be imple- mented. Every object has a pointer to a function table. • Function table has addresses of routines to implement that function on that object. • For example: int open(...): open a file int close(...): close an already-open file ssize t read(...): read from a file ssize t write(...): write to a file int mmap(...): memory-map a file Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 29 / 57
  • 73.
    Directory Implementation Amir H.Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 30 / 57
  • 74.
    Directory Implementation Linear list Hashtable Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 31 / 57
  • 75.
    Directory Implementation -Linear List Linear list of file names with pointer to the data blocks. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
  • 76.
    Directory Implementation -Linear List Linear list of file names with pointer to the data blocks. Simple to program. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
  • 77.
    Directory Implementation -Linear List Linear list of file names with pointer to the data blocks. Simple to program. Time-consuming to execute. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
  • 78.
    Directory Implementation -Linear List Linear list of file names with pointer to the data blocks. Simple to program. Time-consuming to execute. Linear search time. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
  • 79.
    Directory Implementation -Linear List Linear list of file names with pointer to the data blocks. Simple to program. Time-consuming to execute. Linear search time. Could keep ordered alphabetically via linked list or use B+ tree: binary search, but heavy Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 32 / 57
  • 80.
    Directory Implementation -Hash Table Hash Table: linear list with hash data structure Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
  • 81.
    Directory Implementation -Hash Table Hash Table: linear list with hash data structure Decreases directory search time Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
  • 82.
    Directory Implementation -Hash Table Hash Table: linear list with hash data structure Decreases directory search time Collisions: situations where two file names hash to the same location Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
  • 83.
    Directory Implementation -Hash Table Hash Table: linear list with hash data structure Decreases directory search time Collisions: situations where two file names hash to the same location Chained-overflow method. • Each hash entry can be a linked list instead of an individual value. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 33 / 57
  • 84.
    Allocation Methods Amir H.Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 34 / 57
  • 85.
    Allocation Methods How diskblocks are allocated to files? Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 35 / 57
  • 86.
    Allocation Methods How diskblocks are allocated to files? Methods: • Contiguous allocation • Linked allocation • Indexed allocation Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 35 / 57
  • 87.
    Contiguous Allocation Amir H.Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 36 / 57
  • 88.
    Contiguous Allocation (1/2) Contiguousallocation: each file occupies set of contiguous blocks. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
  • 89.
    Contiguous Allocation (1/2) Contiguousallocation: each file occupies set of contiguous blocks. • Best performance in most cases • Simple: only starting location (block number) and length (number of blocks) are required. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
  • 90.
    Contiguous Allocation (1/2) Contiguousallocation: each file occupies set of contiguous blocks. • Best performance in most cases • Simple: only starting location (block number) and length (number of blocks) are required. • Supports both sequential and direct access. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
  • 91.
    Contiguous Allocation (1/2) Contiguousallocation: each file occupies set of contiguous blocks. • Best performance in most cases • Simple: only starting location (block number) and length (number of blocks) are required. • Supports both sequential and direct access. Allocation strategies like contiguous memory allocation: • First fit • Best fit • Worst fit Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 37 / 57
  • 92.
    Contiguous Allocation (2/2) AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 38 / 57
  • 93.
    Contiguous Allocation Problems Findingspace for file Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
  • 94.
    Contiguous Allocation Problems Findingspace for file External fragmentation Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
  • 95.
    Contiguous Allocation Problems Findingspace for file External fragmentation Need for compaction (fragmentation) off-line or on-line: lose of performance Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
  • 96.
    Contiguous Allocation Problems Findingspace for file External fragmentation Need for compaction (fragmentation) off-line or on-line: lose of performance Knowing file size Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 39 / 57
  • 97.
    Extent-Based Systems A modifiedcontiguous allocation scheme. • E.g., Veritas file system Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
  • 98.
    Extent-Based Systems A modifiedcontiguous allocation scheme. • E.g., Veritas file system Extent-based file systems allocate disk blocks in extents. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
  • 99.
    Extent-Based Systems A modifiedcontiguous allocation scheme. • E.g., Veritas file system Extent-based file systems allocate disk blocks in extents. An extent is a contiguous block of disks. • Extents are allocated for file allocation. • A file consists of one or more extents. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 40 / 57
  • 100.
    Linked Allocation Amir H.Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 41 / 57
  • 101.
    Linked Allocation (1/2) Linkedallocation: each file is a linked list of blocks. • Each block contains pointer to next block. • File ends at null pointer. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
  • 102.
    Linked Allocation (1/2) Linkedallocation: each file is a linked list of blocks. • Each block contains pointer to next block. • File ends at null pointer. No external fragmentation, no compaction. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
  • 103.
    Linked Allocation (1/2) Linkedallocation: each file is a linked list of blocks. • Each block contains pointer to next block. • File ends at null pointer. No external fragmentation, no compaction. Free space management system called when new block needed. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 42 / 57
  • 104.
    Linked Allocation (2/2) AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 43 / 57
  • 105.
    Linked Allocation Problems Locatinga block can take many I/Os and disk seeks. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
  • 106.
    Linked Allocation Problems Locatinga block can take many I/Os and disk seeks. Reliability can be a problem. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
  • 107.
    Linked Allocation Problems Locatinga block can take many I/Os and disk seeks. Reliability can be a problem. The space required for the pointers. • Efficiency can be improved by clustering blocks into groups but increases internal fragmentation. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 44 / 57
  • 108.
    File-Allocation Table (FAT) Beginningof volume has a table, indexed by block number. Much like a linked list, but faster on disk and cacheable. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 45 / 57
  • 109.
    Indexed Allocation Amir H.Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 46 / 57
  • 110.
    Indexed Allocation (1/2) Indexedallocation: each file has its own index block(s) of pointers to its data blocks. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
  • 111.
    Indexed Allocation (1/2) Indexedallocation: each file has its own index block(s) of pointers to its data blocks. Need index table Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
  • 112.
    Indexed Allocation (1/2) Indexedallocation: each file has its own index block(s) of pointers to its data blocks. Need index table Random access Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
  • 113.
    Indexed Allocation (1/2) Indexedallocation: each file has its own index block(s) of pointers to its data blocks. Need index table Random access Dynamic access without external fragmentation, but have overhead of index block Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 47 / 57
  • 114.
    Indexed Allocation (2/2) AmirH. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 48 / 57
  • 115.
    Indexed Allocation Problems Wastedspace: overhead of the index blocks. For example, even with a file of only one or two blocks, we need an an entire index block. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 49 / 57
  • 116.
    Index Block Size Howlarge the index block should be? Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
  • 117.
    Index Block Size Howlarge the index block should be? Keep the index block as small as possible. • We need a mechanism to hold pointers for large files. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
  • 118.
    Index Block Size Howlarge the index block should be? Keep the index block as small as possible. • We need a mechanism to hold pointers for large files. Mechanisms for this purpose include the following: • Linked scheme • Multi-level index • Combined scheme Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 50 / 57
  • 119.
    Linked Scheme Linked scheme:link blocks of index table (no limit on size) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 51 / 57
  • 120.
    Linked Scheme Linked scheme:link blocks of index table (no limit on size) For example, an index block might contain a small header giving the name of the file and a set of the first 100 disk-block addresses. The next address is null or is a pointer to another index block. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 51 / 57
  • 121.
    Multi-Level Index Two-level index Afirst-level index block to point to a set of second-level index blocks, which in turn point to the file blocks. Could be continued to a third or fourth level. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 52 / 57
  • 122.
    Combined Scheme Combine scheme:used in Unix/Linux FS The first 12 pointers point to direct blocks • The data for small files do not need a separate index block. The next 3 pointers point to indirect blocks. • Single indirect • Double indirect • Triple indirect Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 53 / 57
  • 123.
    Performance Best method dependson file access type. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
  • 124.
    Performance Best method dependson file access type. Contiguous is great for sequential and random. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
  • 125.
    Performance Best method dependson file access type. Contiguous is great for sequential and random. Linked is good for sequential, not random. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
  • 126.
    Performance Best method dependson file access type. Contiguous is great for sequential and random. Linked is good for sequential, not random. Indexed is more complex • Single block access could require 2 index block reads then data block read • Clustering can help improve throughput, reduce CPU overhead Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 54 / 57
  • 127.
    Summary Amir H. Payberah(Tehran Polytechnic) File System Implementation 1393/9/8 55 / 57
  • 128.
    Summary FS layers: device,I/O control, basic FS, file-organization, logical FS, application Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
  • 129.
    Summary FS layers: device,I/O control, basic FS, file-organization, logical FS, application FS implementation: • On-disk structures: boot control block, volume control block, directory structure, and file control block • In-memory structures: mount table, directory structure, open-file tables, and buffers Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
  • 130.
    Summary FS layers: device,I/O control, basic FS, file-organization, logical FS, application FS implementation: • On-disk structures: boot control block, volume control block, directory structure, and file control block • In-memory structures: mount table, directory structure, open-file tables, and buffers Virtual file system (VFS) Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
  • 131.
    Summary FS layers: device,I/O control, basic FS, file-organization, logical FS, application FS implementation: • On-disk structures: boot control block, volume control block, directory structure, and file control block • In-memory structures: mount table, directory structure, open-file tables, and buffers Virtual file system (VFS) Directory implementation: linear list, and hash table Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
  • 132.
    Summary FS layers: device,I/O control, basic FS, file-organization, logical FS, application FS implementation: • On-disk structures: boot control block, volume control block, directory structure, and file control block • In-memory structures: mount table, directory structure, open-file tables, and buffers Virtual file system (VFS) Directory implementation: linear list, and hash table Allocation methods: contiguous allocation, linked allocation, and indexed allocation Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 56 / 57
  • 133.
    Questions? Acknowledgements Some slides werederived from Avi Silberschatz slides. Amir H. Payberah (Tehran Polytechnic) File System Implementation 1393/9/8 57 / 57