Title: Linux file systems
1Linux file systems
- Name Peijun Li
- Student ID 0100276
- Prof. Morteza Anvari
2Introduction to Linux
- Unix-like operating system
- Free for everyone to use
- Multi-user
- Multi-tasking
- Internet ready
- Robust
- Multi platform
- Symmetrical Multi Processors
3History of Linux file systems Minux
FS--VFS--Ext FS--Xia FS--Ext 2 FS
- In the early days, Linux was developed under the
Minix operating system - Linus Torvalds implemented support for the Minux
filesystem in Linux. - Limitations
- block addresses are stored in 16 bits
integers. - maximal filesystem size is 64 MB
- maximal file name is 14 characters
4History of Linux file systems Minux
FS--VFS--Ext FS--Xia FS--Ext 2 FS
- In order to ease the addition of new filesystem
into the Linux kernal, a Virtual File System
layer(VFS) was developed and integrated into the
Linux kernel.
5History of Linux file systems Minux
FS--VFS--Ext FS--Xia FS--Ext 2 FS
- In April 1992, a new filesystem called Extended
File System was implemented and added to Linux
0.96c - Maximal size is 2 GB and maximal file name size
is 255 characters - Limitations No support for the separate access,
inode modification, and data modification
timestamps. Performance is too bad.
6History of Linux file systems Minux
FS--VFS--Ext FS--Xia FS--Ext 2 FS
- Released in Jan 1993
- Heavily based on the Minux FS Kernel code. Very
stable. Provide long file names, support for
bigger partitions and the three timestamps. - Limitation not extensible
7History of Linux file systems Minux
FS--VFS--Ext FS--Xia FS--Ext 2 FS
- Released in Jan, 1993
- Based on Ext FS code with many improvements.
- Was not stable. Right now is very stable with the
improvements and integrated new features.
8Summery of features of different file system
Minix FS Ext FS Ext2 FS Xia FS
Max FS size 64 MB 2GB 4TB 2GB
Max file size 64MB 2GB 2GB 64MB
Max file name 16/30 c 255c 255c 248c
3 times support NO NO YES YES
Extensible NO NO YES NO
Var. block size NO NO YES NO
Maintained YES NO YES ?
9Basic File System Concept
- Inodes
- Directories
- Links
- Devices
10Basic FS concept--Inodes
- Each file is represented by an Inode
- Each inode contains the description of the file
file type, access rights, owners, timestamps,
size, pointers to data blocks - The addresses of data blocks allocated to a file
are stored in its inode
11Inode structure
                                             Â
                     Â
12Basic FS concept--Directories
- Directories are structured in a hierarchical
tree. Each directory can contain files and
subdirectories - A directory is a file containing a list of
entries. Each entry contains an inode number and
a file name - When a process uses a pathname, the kernel code
searches in the directories to find the
corresponding inode number, the Inode is loaded
into memory for requests.
13Directories
Inode table
directory
i1 name1
i2 name2
i1 name3
i4 name4
14Basic FS concept --links
- Hard link
- can only be used to create a single file
system can only point on files - Symbolic link
- Does not point to an inode
- It is possible to create cross-file systems
symbolic links - Point to any type of file, even on
nonexistent files. -
15Basic FS concept--Device special files
- Character special files
- I/o operations in character mode
- Block special files
- requires data to be written in block mode
- When an I/O request is made on a special file, it
is forwarded to a (pseudo) device driver. A
special file is referenced by a major number,
which identifies the device type, and a minor
number, which identifies the unit.
16Virtual File System
- Is used during system calls acting on files
- The VFS is an indirection layer which handles the
file oriented system calls and calls the
necessary functions in the physical file system
code to do the I/O. - Knows about filesystem types supported in the
kernel. It uses a table defined during the kernel
configuration. Each entry in this table describes
a filesystem type
17User process
System call
System call interface
Linux kernel
VFS
Ext2 FS (etc.)
Buffer Cache
Device drivers
I/O request
Hardware
Disk controller
18VFS structure
- A mounted filesystem descriptor contains
information common to filesystem types, pointers
for functions provided by physical filesystem
kernel code, and private data maintained by the
physical filesystem code - An inode descriptor
- contains pointers to functions that can be
used to act on any file - An open file descriptor
- contains pointer to functions which can only
act on open files
19The Second Extended File System(Ext2fs)
- supports standard Unix file types regular files,
directories, device special files and symbolic
links - allows the users to modify the kernel behavior
Can set attributes on a file or on a directory - Can select System V or BSD semantics at mount
time. - Allows the administrator to choose the logical
block size(1024, 2048, 4096 bytes). - Implements fast symbolic links and keeps track of
file system state. -
20Physical structure
- A file system is made up of block groups. Block
groups are not tied to the physical layout of the
blocks on the disk.
Boot selector Block Group 1 Block Group2 Block Group N
21The structure of a block group
- Contains a redundant copy of crucial
filesystem control informations and also contains
a part of filesystem. -
Super Block FS descriptors Block Bitmap Inode Btmap Inode Table Data Blocks
22Variable length entry
- In Ext2fs, directories are managed as linked
lists of variable length entries. Each entry
contains inode number, entry length, file name
and file length
Inode number Entry length Name length File name
i1 16 05 File1
i2 40 09 Long_name
i3 12 02 f2
23Performance optimization
- Use buffer cache management by performing
readaheads when a block has to be read, the
kernel code requests the I/O on several
contiguous blocks. - Block groups are used to cluster together related
inodes and data. This will reduce the disk head
seeks made when the kernel reads an inode and its
data blocks. - When writing data to a file, Ext2fs preallocates
up to 8 adjacent blocks when allocating a new
block. This will speed up future sequential read.
24The Ext2fs library
- Provides routines which can be used to examine
and modify the data of an Ext2 filesystem. - Many of the Ext2 utilities use the Ext2fs
library. This greatly simplifies the maintainance
of these utilities. - Since the interfaces of the Ext2 library are
abstract and general, new programs can be very
easily written to access the Ext2fs - Provides access to several class of operations
filesystem, directories, inodes
25The Ext2fs tools
- The mke2fs program to initialize a partition to
contain an empty Ext2 File system - The tune2fs program to modify the filesystem
parameters - The E2fsck program to repair filesystem
inconsistencies after an unclean shutdown of the
system. It is designed to run as quickly as
possible. - The Debugfs program to examine and change the
state of a filesystem. Read-only by default.
26Performance measurement
- Use Bonnie benchmark to measure filesystem
performance(Remy Card 1993) - Bonnie Benchmark have been made on a
middle-end PC, based on a i486DX2 processor,
using 16MB of memory and two 420MB IDE disks. The
tests were run on Ext2 fs , Xia fs and on the BSD
fast filesystem in asynchronous and synchronous
mode
27Results of Bonnie benchmark
Char Write (KB/s) Block Write (KB/s) Rewite (KB/s) Char Read (KB/s) Block Read (KB/s)
BSD Async 710 684 401 721 888
BSD sync 699 677 400 710 878
Ext2 fs 452 1237 536 397 1033
Xia fs 440 704 380 366 895
28Reference
- Williaim Stallings 1998 Operating Systems 3rd
edition 1998 - David A. Rustuling 1999 The Linux kernel 1999
- Remy Card 1993 Design and Implementation of the
second Extended Filesystem 1993 - http//e2fsprogs.sourceforge.net/ext2.html
29Thank you!