第11章文件系统实现6.2内容1.文件系统结构2.文件系统实现3.物理块分配方法4.空闲空间管理5.其它1、文件系统结构6.4文件系统结构文件结构逻辑存储单元相关信息的集合文件系统驻留在二级存储器(磁盘)上文件系统按层组织文件控制块(FCB)-包含了文件的信息6.5分层设计的文件系统6.7文件系统层次逻辑文件系统(Logicalfilesystem):管理文件系统中的元数据根据文件名管理文件目录把文件名转换为文件ID,文件句柄管理FCB和目录存储保护优缺点降低复杂性和冗余增加系统开心和降低性能例子CD-ROM:ISO9660Unix:UFS,FFSWindows:FAT,FAT32,NTFSLinux(40多种):ext2,ext32、文件系统实现6.9概述操作系统提高了文件操作的API,文件系统如何实现?两种结构:磁盘和内存磁盘分为多个卷,每个卷可以实现一个文件系统引导控制块(Bootcontrolblock):保含了系统引导操作系统锁需要的各种信息只有安装了操作系统的卷才有卷控制块(Volumecontrolblock):包含卷的信息UFS:超级快(superblock)NTFS:主控文件表(masterfiletable)总的块数、空闲块数、块大小等文件通过目录组织6.10文件控制块每个文件有文件控制块(FileControlBlock(FCB)),包含文件详细信息6.11内存文件系统结构作用:通过缓冲技术提高文件系统的性能当文件系统安装时:安装表:安装卷信息目录缓冲结构:保存最近访问的目录信息系统和单个进程打开文件表各种文件操作需要用到内存文件系统结构6.12内存中文件系统结构6.13分区磁盘和分区(卷):一个磁盘可以有不止一个分区,一个分区可以跨多个磁盘分区类型熟分区:包含文件系统生分区:不包含文件系统(如Unix的Swap分区)引导块通过文件系统启动操作系统多操作系统引导根分区(Rootpartition):包含操作系统,其他分区等分区信息系统启动时加载其他分区自动或手工加载6.14虚拟文件系统支持多个文件系统虚拟文件系统(VFS)提供了一种面向对象的方法来实现文件系统VFS为不同类型的文件系统提供了统一的系统调用接口(API)API是VFS的接口,而不属于某个特定类型的文件系统6.15目录实现线性列表,存储文件名和数据块指针编程简单运行费时哈希表-使用线性列表存储哈希数据结构降低目录搜索时间冲突-两个文件名哈希到相同的位置固定的大小3、物理块分配方法6.17连续分配每个文件在磁盘上占用一组连续的块简单-仅需要起始块号和长度支持随机访问浪费空间(动态存储分配的问题)文件不能增长物理块号:从0开始连续的逻辑地址6.18磁盘空间的连续分配地址映射(逻辑地址)LA/512QR访问块号=Q+start块内偏移=R每块512字节6.19基于扩展(extent)的系统有些新的文件系统(I.e.VeritasFileSystem)采用了改进的连续分配方案基于扩展的文件系统在某个范围内分配磁盘块一个扩展是一组连续的磁盘块扩展在文件分配时被分配一个文件可能包含一个或多个范围6.20链接分配每个文件是一个磁盘块的链表;磁盘块分布在磁盘的任何位置简单-仅需要起始地址文件结束于空指针每个块有一个指针指向下一块提高效率:多个块集合成组无法实现随机访问缺点:可靠性有问题,存取效率差空闲空间管理系统-没有碎片,没有浪费的空间pointerblock=6.21链接分配地址映射访问块=Q块内地址=R+1为什么?LA/511QR6.22文件分配表(FAT)文件分配表(FAT)-用于MS-DOS和OS/2系统的磁盘空间分配6.23FAT32FAT表的表项占据4字节(232)FAT表最大232项每个簇固定为4KB每簇8个盘块,每个盘块仍为512字节FAT32管理的单个最大磁盘空间:4KB*232=2TBFAT16和FAT646.24索引分配把所有的指针放在一起:索引块逻辑形式索引表6.25索引分配的例子6.26索引分配需要索引表支持随机访问动态存取没有外碎片,但索引块的负担较重逻辑地址到物理地址的映射:LA/512QR访问块号=索引表中Q项存放的块号块内偏移=R6.27索引分配-映射有的文件很大,单级索引不能满足要求链接策略-把索引块链接起来(没有长度限制)LA/(512x511)Q1R1Q1=索引块R1再次计算:R1/512Q2R2访问块号=索引表中Q2项存放的块号块内偏移=R26.28索引分配-映射两级索引(最大文件长度为5123)LA/(512x512)Q1R1R1/512Q2R2Q1=外层索引块中表项R1再次计算:访问块号=索引表中Q2项存放的块号块内偏移=R26.292级索引外层索引索引表文件6.30联合策略:UNIX(每块4KB)6.31性能好的分配方法依赖于访问类型连续分配可用于随机或顺序访问,效率高链接分配适合顺序访问,不适合随机访问在文件创建时根据访问类型选择链接还是连续索引分配更加复杂依赖于索引结构、文件大小、块大小增加磁盘I/O速度是提高性能的一个因素IntelCorei7990x3.46Ghz=159,000MIPS典型的磁盘250I/Os/秒每次I/O操作时间可以执行159,000MIPS/250=630MIPS快速SSD60,000Ios/秒每次I/O操作时间可以执行159,000MIPS/60,000=2.65MIPS4、空闲空间管理6.33空闲空间管理位向量(n块)…012n-1bit[i]=0block[i]free1block[i]occupied块号计算:8*字节的序号+字节内的位号(左边为0)6.34空闲空间管理位图需要额外的空间。例如blocksize=212bytesdisksize=230bytes(1gigabyte)n=230/212=218bits(or32Kbytes)比较容易得到连续的文件链表(空闲空间表)得到连续空间难没有浪费的空间组计数5、其它6.36效率与性能效率取决于:磁盘分配和目录管理算法保留在文件目录结构中的数据类型性能磁盘缓存-存在于内存中的独立区域,其中的数据频繁被访问马上释放-预先读取-优化顺序存取的技术用于PC上的改善性能的方法:留出一块内存作为虚拟磁盘,或RAM磁盘6.37不同的磁盘缓存位置6.38页缓存使用虚拟内存技术,将文件数据作为页而不是块来缓存页缓存实现缓冲缓存和内存映像I/O的交互缓冲缓存实现文件系统和标准I/O调用的交互统一缓冲6.39恢复一致性检查-将目录结构数据与磁盘数据块相比较,试图纠正所发现的不一致利用系统程序将磁盘数据备份到另一存储设备,如软盘、磁带或光盘完全备份增量备份恢复丢失文件或整个磁盘时,只需要从备份中恢复6.40系统还原例子6.41网络文件系统(NFS)NFS:NetworkFileSystem用于通过LAN(或WAN)访问远程文件的软件系统的实现或规范Solaris操作系统:运行在SUN工作站上,采用TCP或UDP/IP协议6.42CIFS(CommonInternetFileSystem)在windows主机之间进行网络文件共享