Input & Output 1: File systems What are files? A sequence of (usually) fixed sized blocks stored on a device. A device is often refered to as a volume. A large device might be split into several volumes, or partitions. Or a volume might span more than one device. Each volume, or partition is divided into numbered blocks.
Input & Output : The O/S has to keep track of which blocks are used by which file. A mapping between the file name, the volume, and the blocks in which it is kept. A special file known as a directory holds these mappings The simplest structure has a single volume and a single layer. A table holds the mapping information.
Input & Output : Flat File Systems Macintosh File System (MFS), A 400 kilobyte floppy disc based flat file system. Each file contained two parts, known as forks : Resource Fork : contains metadata in the form of attribute/value pairs icon bitmaps program segments structured data Data Fork : contains the file data in common with other file systems Introduced with the Macintosh 128k in January 1984
Input & Output : Hierarchical File systems MS-DOS FAT(12/16/V) file system. Provided directories in a tree structure. Data stored in 512 byte sectors, grouped into clusters of 4 to 64 sectors. Each cluster has an entry in the File Allocation Table (FAT) to indicate how it is being used. Entry values include: marked as bad unused used next cluster number/end of chain number
Input & Output : Hierarchical File Systems 2 Each directory table has a 32 byte entry per file containing File name and extension also used to indicate deletion File Attributes Read-only Hidden System Directory Change Date/time File Size Starting cluster number
Input & Output : Hierarchical File Systems 3 Disk Structure : Volume Boot Sector, the first sector. File Allocation Table, held in the next sectors Two copies are kept primary, backup. Root Directory Table, following the 2nd FAT Fixed size, which limits number of entries. 1.44Mb floppy = 224 entries Hard disk = 512 entries
Input & Output : Hierarchical File Systems 3 Each directory has 2 special entries. and.. shorthand for the current directory and the parent directory. Files need not occupy adjacent clusters, leading to fragmented files. Chaining clusters together to hold files is risky. The directory table only holds the first cluster number. The FAT holds the chain information.
FAT16 Diagrams
File systems : Linux VFS Related calls file_ops : inode_ops: llseek (); create(); read (); lookup(); write (); link(); readdir (); mkdir(); poll (); rmdir(); ioctl (); rename(); mmap (); readpage(); open (); writepage() release (); readlink();
Linux File systems: 2 Review : Directories are special files containing variable length records, one for each file or directory contained within the directory. struct dirent { unsigned short d_namlen; /* name length */ unsigned short d_reclen; /* entry length */ long int d_ino; /* inode number */ char d_name[]; /* file name */ }; They only hold the file name and a reference number, the index node.
Linux File systems: 3 The inode has two forms The on-disk inode : contains the information preserved when the file is closed, occupies 128 bytes. The file mode, (permissions and access control) The UID and the GID of the owner & group. The size in bytes Last access, modification & creation times Link count number of blocks Array of pointers to actual data blocks. Fragment information.
Linux File systems: 4 The in-memory inode : contains the above + additional information pointers to the linked list holding the inode the device on which the inode is kept the number of current users of this file. mutual exclusion information pointers to operations specific to the file type. pointers into virtual memory holding the file file type specific information
Linux File systems: 5 File Types can be file! -rwxr-xr-x 1 craig craig 249823232 2010-12-08 21:08 sdimage-new.dd directory drwx------ 2 ngunton ecestaff 4096 Feb 12 2004 mail socket srwxr-xr-x 1 ngunton ecestaff 0 Nov 18 20:17 SOff_ soft link lrwxrwxrwx 1 root root 8 Jul 10 2002 cdrom->/dev/hdc block special (device) brw-r--r-- 1 root disk 22, 0 May 8 1995 hdc character special (device) crwx-w---- 1 ngunton tty 4, 1 Nov 22 09:20 tty1 named pipe prw------- 1 ngunton ecestaff 0 Nov 22 17:29 mypipe
Linux File systems: 6 Opening a file: Lookup the directory entry for the file. If the file does not exist, create it? Check the user privileges against file permissions Check if the file is already open refuse access? refuse if open for write? refuse write if open for read? Create in-memory inode if above succeed. Return file-handle to user.
Getting a copy of the file info
Getting a copy of the file info
Getting a copy of the file info
Getting a copy of the file info
Linux File systems: On disk
Linux File systems: On disk
Linux File systems: On disk
Super Block: Every block group has a copy of the super block. Contains unchanging information about the file system (partition) including : total inode & free inode count total number of data blocks number of free blocks size of a block group location of first data block ID of this block group size of a block Copied into memory when the file system is mounted.
Block Group Descriptor: This is also present in each block group. A table of records, one for each block group, containing information specific to an individual block group. pointer to a bitmap tracking data block allocation pointer to a bitmap tracking inode allocation pointer to the inode table. counter of free data blocks in group. counter of free inodes in group. number of directories in this group. Also copied into memory when filesystem is mounted.
Bitmaps: Block bitmap: one bit for each data block, 0 = free; 1 = in use; Exactly one disk block in size. Inode bitmap: one bit for each inode, as per the block bitmap.
Inode Table :
Inode table
Inode table
Inode Table : 3 This limits the maximum file size to 64 gigabytes.