Linux file systems Name: Peijun Li Student ID: Prof. Morteza Anvari
Introduction to Linux Unix-like operating system Free for everyone to use Multi-user Multi-tasking Internet ready Robust Multi platform Symmetrical Multi Processors
History 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
History 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.
History 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.
History 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
History 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.
Summery of features of different file system Minix FS Ext FS Ext2 FS Xia FS Max FS size64 MB2GB4TB2GB Max file size64MB2GB 64MB Max file name16/30 c255c 248c 3 times supportNO YES ExtensibleNO YESNO Var. block sizeNO YESNO MaintainedYESNOYES?
Basic File System Concept Inodes Directories Links Devices
Basic 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
: Inode structure
Basic 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.
Directories Inode table i1name1 i2name2 i1name3 i4name4 directory
Basic 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.
Basic 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.
Virtual 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
User process System call interface VFS Ext2 FS (etc.) Buffer Cache Device drivers Disk controller System call Linux kernel Hardware I/O request
VFS 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
The 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.
Physical 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
The 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
Variable 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 i11605 File1 i24009 Long_name i31202 f2
Performance 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.
The 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
The 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.
Performance 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
Results of Bonnie benchmark Char Write (KB/s) Block Write (KB/s) Rewite (KB/s) Char Read (KB/s) Block Read (KB/s) BSD Async BSD sync Ext2 fs Xia fs
Reference [Williaim Stallings 1998] Operating Systems 3 rd edition 1998 [David A. Rustuling 1999] The Linux kernel 1999 [Remy Card 1993] Design and Implementation of the second Extended Filesystem 1993
Thank you!