270 likes | 460 Views
File Systems Examples. MS-DOS File System. Naming: 8+3 in upper case Directories: Hierarchical directory structure No soft or hard links 32 byte directory entry Max file size: 2 32 = 4 GB (not possible due to other reasons). FAT. MS-DOS uses a File Allocation Table (FAT)
E N D
MS-DOS File System • Naming: 8+3 in upper case • Directories: Hierarchical directory structure • No soft or hard links • 32 byte directory entry • Max file size: 232 = 4 GB (not possible due to other reasons)
FAT • MS-DOS uses a File Allocation Table (FAT) • FAT-12, FAT-16, FAT-32 based on # bits in disk address • Disk block is some multiple of 512 bytes • Block size also known as cluster size in Microsoft terminology • 1st MS-DOS version used FAT-12 with 512-byte blocks • Partition size: 212*512, actually 4086*512 ~ 2 MB • Memory space: 4096 entries of 2 bytes each • Later versions had variable disk block sizes 16 MB partitions • MS-DOS supported 4 disk partitions 64 MB disks • MS-DOS uses FAT to track free disk blocks • Mark free blocks with special code • Does not need free-list of bitmap
FAT-16 and FAT-32 • FAT-16: 16-bit disk pointers, with varying block sizes • Block sizes from 512 bytes to 32 KB were supported • Memory requirement: 216*2 bytes = 128 KB • Largest disk partition: 216*32 KB ~ 2 GB • Total of 8 GB disk space • FAT-32: 28-bit disk pointers • Introduced with 2nd version of Windows 95 • Theoretical partition size: 228*32 KB • Internal representation using 32-bits and 512-byte sectors 2 TB • Pros over FAT-16: other than larger disks • 8 GB can be single partition • Smaller block size can be used for same disk partition
Windows 98 FS • Uses FAT-32 and long file names • Also used in Windows Me • New directory structure: • How to store long file names? • Challenge: compatibility with earlier DOS versions • Solution: 2 names: DOS compliant (8 + 3), and original name • SampleFile is also known as SAMPLE~1
Storing Long File Names • Use long file name fields to store the longer file name • Attributes field ensures that MS-DOS ignores these entries Checksum
NTFS • Partition also called a volume • Cluster size from 512 bytes to 64 KB, usually 4 KB used • Addressing: uses logical cluster numbers • File Structure: object with certain attributes • Opposed to stream of bytes in MS-DOS and UNIX • User data in data attributes • NTFS disk structure: • 12% allocated for MFT area
Master File Table (MFT) • Every system component is a file, and MFT is most imp. • Has information of every other file on the disk • MFT divided into records of fixed size (1 to 4 KB) • Each record corresponds to a file • Each file described by one or more records • Small (resident) attributes are stored in MFT record • For small files, even data might be stored in MFT record • Large (nonresident) attributes stored on disk • Pointer stored in MFT • For files with large # of attributes, or high fragmentation • Base file record has info of other records with file info
Other Details • Each file in NTFS has unique ID called File Reference • 64 bit in length with 48-bit file number, 16-bit sequence number • File number is array slot in MFT for that file • Sequence number incremented on every MFT reuse • Used for internal consistency checks • Directory Structure • As a B+ Tree: no tree reorganization, height of all leaves same • Index root of dir contains top level of B+ Tree • Might point to disk extents (seq. of contiguous blocks) for large dirs • Each dir entry has name, file ref., copy of update timestamp, size
NTFS Metadata • First 16 NTFS files are system files, called metafiles • Disk structure: • The first NTFS file is the MFT file • Second file contains copy of 1st 16 entries of MFT • Next few files are also special • $LogFile: metadata updates to FS • $Volume: housekeeping info • $Attrdef: list of attributes on volume • $. : root directory • $Bitmap: volume free space bitmap • $Boot: boot sector • $Quota: users rights on disk space (from NT5)
NTFS Journaling • All FS data structure updates done within transactions • Before altering a data structure write redo and undo information • Write commit record to log after a successful update • Restore FS data structure after a crash by processing log • Redo committed transactions, and undo unsuccessful ones • Periodically write a checkpoint record to log • Log records before checkpoint not required • Note: Journaling does not ensure file data consistency
WinFS • Bridge worlds of file systems, relation DBs, objects, XML • Eg. Store your data as object relations, which is also useful to other apps • Just too much work to be done! • Rewrite OS (apps), compatibility with NTFS, …
Unix V7 FS • Structured as a tree, starting at the root • File names are 14 ASCII chars, other than / and NUL • Directories: one entry for each file • Each entry has 2 fields: file name (14 bytes) & i-node # (2 bytes) • Number of files is 216 = 64 K
Unix I-nodes • I-node attributes: size, times (creation, modification, last access), owner, group, protection, num. of link pointers
Linux ext2 File System • Very common on Linux systems • Extends on Unix FS • Generic code in /usr/src/linux/fs • ext2 specific code in /usr/src/linux/fs/ext2 • Disk partitioned into “block groups” • Ext2fs block structure: • Similar to FFS cylinder groups
The Linux Ext2fs File System • File Allocation: first select a block group • For data blocks, tries to allocate block to group with file’s i-node • For i-node allocations, selects group of file’s parent’s dir • Directory files are dispersed across all block groups • Within block groups, tries to allocate contiguous blocks • Uses a bitmap for free blocks in the group • For first blocks for a file, searches free block from the beginning • For extending file, search for a free byte in bitmap from last alloc • If no free byte, then choose any free bit • After choosing block, back track to not leave holes!
Linux Virtual File System • Operations differ on various OSes • Linux provides abstraction called virtual file system (VFS) • The Linux VFS is designed around OO principles • is composed of two components: • Set of definitions defining what a file object is allowed to look like • inode-object & file-object structures represent individual files • the file systemobject represents an entire file system • A layer of software to manipulate those objects