1.04k likes | 1.23k Views
Chapter 12: File System Implementation 文件系统实现. File System Structure 文件系统结构 File System Implementation 文件系统实现 Directory Implementation 目录实现 Allocation Methods 分派方法 Free-Space Management 空闲空间管理 Efficiency and Performance 效率和性能 Recovery 恢复 Log-Structured File Systems 日志结构文件系统
E N D
Chapter 12: File System Implementation文件系统实现 • File System Structure 文件系统结构 • File System Implementation文件系统实现 • Directory Implementation 目录实现 • Allocation Methods 分派方法 • Free-Space Management 空闲空间管理 • Efficiency and Performance 效率和性能 • Recovery 恢复 • Log-Structured File Systems 日志结构文件系统 • NFS 网络文件系统 Operating System Concepts
12.1 File-System Structure(文件系统结构) • File structure(文件结构) • Logical storage unit(逻辑存储单元) • Collection of related information(相关信息的集合) • File system resides on secondary storage (disks). (文件系统存在于辅助存储器中—磁盘) • File system organized into layers.(文件系统按层组织) • File control block – storage structure consisting of information about a file. (文件控制块FCB:由一个文件的相关信息组成的存储结构) Operating System Concepts
Layered File System Operating System Concepts
Layered File System • I/O control, the lowest level • Device drivers • Interrupt handlers • Basic file system • Issue generic commands to read and write • File-organization module • File and their logical bocks, physical blocks • Free space manger • Logical file system • Manage metadata information • Manage directory structure • Maintain file structure via file control blocks • Responsible for protection and security Operating System Concepts
Layered File System • Application • Unix: UNIX file system(UFS) • Windows NT: FAT, FAT32,NTFS • Linux: ext、ext2、msdos、vfat、iso9660、hpfs等多种文件系统。使用命令mkfs创建各类文件系统 Operating System Concepts
文件系统的类型 • FAT文件系统(MS-DOS文件系统、msdos) 它是MS-DOS操作系统使用的文件系统,它也能由Windows98/NT、linux、SCO UNIX等操作系统访问。文件地址以FAT表结构存放,文件目录32B,文件名为8个基本名加上一个“.”和3个字符扩展名。 • FAT32文件系统(vfat) 它是Windows98使用的扩展的DOS文件系统,它在MS-DOS文件系统基础上增加了对长文件名(最多到256B)支持。 • NTFS(NT文件系统) 它是Windows NT操作系统使用的文件系统,它具有很强的安全特性和文件系统恢复功能,可以处理巨大的存储媒体,支持多种文件系统。 • S51K/S52K(sysv) 它是AT&T UNIX S V 操作系统使用的文件系统。 Operating System Concepts
文件系统的类型 • ext2(二级扩展文件系统) 它是Linux操作系统使用的高性能磁盘文件系统,它是对Minux操作系统中使用的文件系统扩展(ext)的扩展。它支持256字符的文件名,最大可支持到4TB的文件系统大小。 • HPFS(高性能文件系统、hpfs) 它是OS/2操作系统使用的文件系统。 • CD-ROM文件系统(iso9660) 它是符合ISO9660标准的支持CD-ROM的文件系统,它有High sierra CD-ROM和Rock Ridge CD-ROM二种类型。 • UDF通用磁盘格式文件系统 UDF(Universal Disk Format)文件系统是依据光学储存技术协会(Optical Storage Technology Association, OSTA)的通用磁盘格式文件系统规格1.02版所制定的。它提供了对 UDF格式媒体的只读访问(例如DVD光盘)。Windows98提供对UDF文件系统支持。 Operating System Concepts
操作系统(Windows98/NT 、Linux )对多种文件系统的支持 • WindowsNT多重文件系统 Windows NT支持FAT文件系统、NTFS、HPFS、CD-ROM文件系统等多种文件系统。 Windows NT执行体内I/O系统分成I/O管理程序、文件系统驱动程序和盘驱动程序三层,不同的文件系统采用不同的文件系统驱动程序,系统用动态连接库对这些文件系统进行装入和卸出并适宜于将来的扩展, Windows NT分层驱动程序如下图所示。 Windows NT磁盘管理器窗口显示某台微机硬盘各分区安装的多种文件系统如下图所示,图中所示硬盘有二个分区,C盘是FAT文件系统,D盘是NTFS文件系统,E盘是CD-ROM文件系统。 Operating System Concepts
WindowsNT多重文件系统-1 I/O管理程序 NTFS 驱动程序 HPFS 驱动程序 FAT 驱动程序 硬盘 驱动程序 软盘 驱动程序 WindowsNT分层驱动程序 Operating System Concepts
WindowsNT多重文件系统-2 Operating System Concepts
Linux 虚拟文件系统VFS • Linux采用虚拟文件系统VFS支持许多不同类型的文件系统,VFS是物理系统与服务之间的一个接口层,它屏蔽各类文件系统的差异,给用户和程序提供一个统一的接口。Linux支持ext、ext2、msdos、vfat、iso9660、hpfs等多种文件系统。使用命令mkfs创建各类文件系统。 • VFS是物理文件系统与服务之间的一个接口,它对Linux的每一个文件系统的所有细节进行抽象,使得不同的文件系统在Linux内核以及系统中运行的其它进程看来都是相同的。严格说来VFS并不是一种实际的文件系统,它只存在于内存中,不存在于任何外存空间,VFS在系统启动时建立,在系统关闭时消亡。 • VSF使Linux同时安装支持不同类型的文件系统成为可能。 Operating System Concepts
Linux 虚拟文件系统VFS-1 VFS MINIX FS ext FS ext2 FS MSDOS FS Buffer Cache I/O设备驱动 VFS拥有关于各种特殊文件系统的公共接口,如超级块 incde,文件操作函数入口等。特殊文件系统的细节问题统一由VFS的公共接口来翻译,它们对系统内核和用户进程是透明的,VFS与实际文件系统的封装关系如下: Operating System Concepts
Schematic View of Virtual File SystemVFS示意图 Operating System Concepts
文件系统模型 Operating System Concepts
12.2 File System Implementation • Overview • On-disk and in-memory structure • To create a new file • To use a file • To close a file • Partitions and Mounting • Virtual File System Operating System Concepts
12.2.1 Overview • On-disk structures: • A boot control block • Boot block in UFS • Partition boot sector in NTFS • A partition control block—contains partition details • Called Superblock in UFS • Called Master File Table in NTFS • A directory structure • A File Control block(FCB)–--contains many of a file’s details • Called inode in UFS • Included in Master File Table in NTFS Operating System Concepts
Overview(2) • In-memory information : used for file-system management and performance improvement via caching • in-memory partition table– information about each mounted partition • in-memory directory structure– recently accessed directory infomation • System-wide open-file table, a copy of the FCB of each open file • Per-process open-file table, a pointer to the appropriate entry in the system-wide open-file table Operating System Concepts
Create, open, use and close a file • Create a new file: • Locate a new FCB • Read appropriate directory into memory • Update it with the new file name and FCB • Write it back to the disk • Open a file • Find the file • Copy the FCB to a system-wide open-file table in memory • Made an entry in the per-process open-file table • Return a pointer to the entry in the per-process open-file table • File descriptor in Unix • File handler in Windows Operating System Concepts
Create, open, use and close a file(2) • Use • All operations are performed via the file pointer • Close a file • The entry in per-process open-file table is removed • Open count in system-wide open-file table is decremented. If the open count is 0, then the entry is removed Operating System Concepts
A Typical File Control Block Operating System Concepts
In-Memory File System Structures • The following figure illustrates the necessary file system structures provided by the operating systems. 下面图例描述了OS中文件系统所需的系统结构 • Figure 12-3(a) refers to opening a file. • Figure 12-3(b) refers to reading a file. Operating System Concepts
In-Memory File System Structures Operating System Concepts
12.2.2 Partitions and Mounting • A disk be sliced into multiple partitions • A partition span multiple disks • RAID • “raw partition/disk”– no file system • “cooked partition”– contain a file system • Boot information in a separate partition • Root partition • OS kernel • Other system file potentially • Mount table in its in-memory contains the information of mounted file systems Operating System Concepts
12.2.3 Virtual File Systems • Virtual File Systems (VFS) provide an object-oriented way of implementing file systems. 虚拟文件系统(VFS)提供一个面向对象的文件系统实现方法 • VFS allows the same system call interface (the API) to be used for different types of file systems(API). VFS允许不同类型的文件系统使用相同的系统调用接口(API) • The API is to the VFS interface, rather than any specific type of file system. API作为VFS接口要好于规定的文件系统类型 • 三个层次 Operating System Concepts
Schematic View of Virtual File SystemVFS示意图 Operating System Concepts
12.3 Directory Implementation (目录实现) • Linear list of file names with pointer to the data blocks. (线性的文件名列表,包括指向数据块的指针) • simple to program (容易编程) • time-consuming to execute (to find a file ) (耗CPU的执行时间) • Improve: cache the most recently used directory information • Hash Table – linear list with hash data structure. (哈希表—有着哈希数据结构的线性表) • decreases directory search time(减少目录的搜索时间) • collisions– situations where two file names hash to the same location(碰撞:两个名字映射到同样的位置) • fixed size(固定长度) • 需要改变长度时 (e.g. 0-640-127),必须重新组织目录项 Operating System Concepts
Directory Implementation (+) • 为了实现用户对文件的按名存取,系统必须首先利用用户提供的文件名,对文件目录进行查询,找出该文件的文件控制块FCB,对UNIX系统即要找出该文件的索引节点。然后根据找到的FCB中所记录的文件物理地址,(对UNIX系统即是索引节点中的用于UNIX直接、间接混合寻址的13个地址项di-addr[13]),并根据文件物理组织方式找出文件的盘块号,进而换算出文件在磁盘上的物理位置(柱面号、磁头号、扇区号),最后启动磁盘驱动程序,将所需文件读入内存。 • 对目录查询的技术有两种:线性检索法和Hash法。这里介绍UNIX中使用的线性检索法,又称为顺序检索法。 Operating System Concepts
UNIX树型的目录结构 I=1 bin boot unix usr mnt etc tmp dey 2 3 4 5 I=2 I=5 ls 10 dir 10 I=10 ls 返8 Operating System Concepts
目录查询技术 • 下面以在上图所示UNIX树型目录中查找文件/bin/ls为例介绍线性检索法。 • 首先系统读入根索引节点(其索引节点号为1),从文件地址项查找根目录文件所在物理块号读入内存。同时从用户提供的文件名中读入根目录下第一个文件分量bin ,用它与根目录文件中各个目录项的文件名顺序地进行比较,从中找到匹配号,得到匹配项的索引节点号为2。 • 然后将磁盘第2个索引节点读入内存,从中找出bin目录文件所在物理块号,并将它读入内存。同时从用户提供的文件名中读入第二个文件分量ls,用它与bin目录文件中目录项的文件名顺序地进行比较,从中找出匹配号,得到匹配项的索引号为10。尔后,将磁盘第10号节点读入内存,从中判断ls文件所在的物理块号。目录查询操作到此结束,如果顺序查找过程中发现一个文件分量名未能找到,则停止查找并送回“文件未找到”信息。 Operating System Concepts
12.4 Allocation Methods • An allocation method refers to how disk blocks are allocated for files: 一种分派方法指出如何为文件分派磁盘块 • Contiguous allocation 连续分派 • Linked allocation 链接分派 • Indexed allocation 索引分派 Operating System Concepts
12.4.1 Contiguous Allocation(连续分配) • 连续分配(contiguous):只需记录第一个簇的位置,适用于预分配方法。可以通过紧缩(compact)将外存空闲空间合并成连续的区域。 • Each file occupies a set of contiguous blocks on the disk.(每一个文件占用一个连续的磁盘块的集合) • Simple – only starting location (block #) and length (number of blocks) are required.(简单:只需要起始块号和长度) • Random access.(可以随机存取) • Wasteful of space (dynamic storage-allocation problem).(浪费空间:动态存储分配问题) • Files cannot grow. (文件不能增长) • External fragmentation • Improve: compact Operating System Concepts
Contiguous Allocation of Disk Space Operating System Concepts
Extent-Based Systems(基于长度系统) • Many newer file systems (i.e. VeritasFile System) use a modified contiguous allocation scheme. 许多新的文件系统使用一种修改连续分派方法 • 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. 一个长度是一段连续的磁盘块,(文件分派以长度为单位),一个文件有一个或多个长度 Operating System Concepts
12.4.2 Linked Allocation(链接分配) pointer block = • 链式分配(chained):在每个簇中有指向下一个簇的指针。可以通过合并(consolidation)将一个文件的各个簇连续存放,以提高I/O访问性能。 • Each file is a linked list of disk blocks: blocks may be scattered anywhere on the disk. 每个文件是一个磁盘块的链接列表:块可以分散在磁盘各处 Operating System Concepts
Linked Allocation (Cont.) (链接分配,续) Q LA/511 R • Simple – need only starting address(简单:只需要起始地址) • Free-space management system – no waste of space (自由空间管理系统:没有磁盘空间浪费) • No random access(无法随机存取) • Mapping(映射) • Block to be accessed is the Qth block in the linked chain of blocks representing the file. Displacement into block = R + 1 • File-allocation table (FAT) – disk-space allocation used by MS-DOS and OS/2. (文件分配表:被MS-DOS和OS/2所采用) Operating System Concepts
Linked Allocation Operating System Concepts
Linked Allocation • Disadvantages • Effectively only for sequential-access files, inefficient to support a direct-access capability • Space required for the pointers • Improve: clusters • Cost: increase internal fragmentation • Problem of reliability • Improve • FAT Operating System Concepts
File-Allocation Table (FAT链接结构) Operating System Concepts
MS-DOS / Windows98 FAT表结构 • MS-DOS文件系统的文件物理结构采用FAT表结构。该结构为了克服链接文件随机读取任一逻辑块需要化费多次盘I/O操作的不足,将各盘块中的链接指针集中存放在盘的开始部分,构成一张表,称为FAT表。FAT表每一项存放链接指针(下一个簇号),每个FAT表项占12位或16位,称为FAT12或FAT16。对于软盘因为容量小,簇数也少,采用12位FAT表,对于硬盘则采用16位FAT表。 • FAT表文件系统原为小硬盘的目录结构而设计,由于簇的数目最多只能用16位表示,即最多只能有64K个簇,要用FAT表管理大的磁盘分区,只能采取增大每簇所包含的扇区数,一般根据磁盘的类型和容量大小来决定簇的大小,如下表所示。当然每簇包含扇区数增加,带来内碎片的浪费,这对小文件特别严重。 • Windows98为了减少内另头的浪费,可采取每簇的数目用32位表示,减少每簇包含扇区数,这称为FAT32。 FAT16 、FAT32文件系统簇和扇区关系也见下表所示。 Operating System Concepts
12.4.3 Indexed Allocation(索引分配) index table • 索引分配(indexed):文件的第一个簇中记录了该文件的其他簇的位置。可以每处存放一个簇或连续多个簇(只需在索引中记录连续簇的数目)。 • Brings all pointers together into the index block. (把所有的指针都一起放在索引块里) • Logical view. (逻辑形式) Operating System Concepts
Example of Indexed Allocation Operating System Concepts
Indexed Allocation (Cont.)索引分配 续. Q LA/512 R • Need index table(需要索引表) • Random access(随机存取) • Dynamic access without external fragmentation, but have overhead of index block.(可以动态存取而没有外部碎片) • Mapping from logical to physical in a file of maximum size of 256K words and block size of 512 words. We need only 1 block for index table.(为了从逻辑映射到实际的文件系统,一个256K字的文件,块为512字,我们只需一个块作为索引表) Q = displacement into index table R = displacement into block Operating System Concepts
Indexed Allocation – Mapping (Cont.)索引分配—映射(续) • Mapping from logical to physical in a file of unbounded length (block size of 512 words). (无限长度的文件从逻辑向物理的映射) • Methods for large file • Linked scheme • Link together several index blocks • Multilevel index • Combined scheme (e.g. 15 pointers) • Direct blocks (e.g. 12 pointers) • Indirect blocks (e.g. 3 pointers) • Single indirect block • Double indirect block • Triple indirect block Operating System Concepts
Indexed Allocation – Mapping (Cont.)索引分配—映射(续) Q1 LA / (512 x 511) R1 Q2 R1 / 512 R2 • Mapping from logical to physical in a file of unbounded length (block size of 512 words). (无限长度的文件从逻辑向物理的映射) • Linked scheme – Link blocks of index table (no limit on size). (链接策略—把索引块链接起来)(没有长度限制) Q1= block of index table R1is used as follows: Q2 = displacement into block of index table R2 displacement into block of file: Operating System Concepts
Indexed Allocation – Mapping (Cont.)索引分配—映射(续) Q1 R1 Q2 R1 / 512 R2 • Two-level index (maximum file size is 5123) LA / (512 x 512) Q1 = displacement into outer-index R1 is used as follows: Q2 = displacement into block of index table R2 displacement into block of file: Operating System Concepts
Indexed Allocation – Mapping (Cont.) outer-index file index table Operating System Concepts
UNIX/Linux直接间接混合分配方式 • 由于80%以上文件是小文件,为了解决能高速存取小文件和管理大文件的矛盾,UNIX将直接寻址、一级索引、二级索引和三级索引结合起来,形成了混合寻址方式,如下图所示。 • 在UNIX S V的索引结点中设有13个地址项di_addr[13](Linux的ext2设有15个地址项)它们把所存的地址项分成两类,其中最后三个地址项分别是一级索引、二级索引和三级索引的指针,而前面10个(ext2为12个)为直接寻址的地址项,即存放文件逻辑块第0-9块的盘块号。 • 如每个盘块大小为4KB时,当文件不大于40KB时,便可直接从索引结点中读出该文件全部盘块号,这样读小文件时速度快;如文件大于 40KB时,系统再逐步增加一级索引、二级索引和三级索引,这样最大管理的文件为40KB+4MB+4GB+4TB,达到管理大文件的目标。 Operating System Concepts
Combined Scheme: UNIX (4K bytes per block) Operating System Concepts
例1 一个文件系统中有一个20MB大文件和一个20KB小文件,当分别采用连续、链接、链接索引、二级索引和UNIX Sytem V 分配方案时(每块大小为4096B,每块地址用4B表示),问: 1.各文件系统管理的最大的文件是多少? 2.每种方案对大、小二文件各需要多少专用块来记录文件的物理地址(说明各块的用途) ? 3.如需要读大文件前面第5.5KB和后面(16M+5.5KB)信息,则每个方案各需要多少次盘I/O操作? 这个范例是帮助读者深入比较文件物理组织的各种方案:顺序文件的连续分配、链接文件的链接分配、二级索引分配、链接索引分配和UNIX的直接间接混合分配,明确各种分配方案的优缺点和UNIX分配方案的设计特点。 Operating System Concepts
例1-解答 1.各种分配方案的文件系统可管理的最大文件 • 连续分配:不受限制,可大到整个磁盘文件区。 • 链接分配:同上。 • 链接索引:同上。 • 二级索引:由于盘块大小为4KB,每个地址用4B表示,一个盘块可存1K个索引表目,二级索引可管理的最大文件容量为4KB×1K×1K=4GB,如要管理更大的文件需采用三索引,它可管理4TB大小文件。 • UNIX混合分配:可管理的最大文件为40KB+4MB+4GB+4TB。 2.每种分配方案对20MB大文件和20KB小文件各需要多少专用块来记录文件的物理地址? • 连续分配:对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数,不需专用块来记录文件的物理地址。 Operating System Concepts