《LINUX课件filesystem》由会员分享,可在线阅读,更多相关《LINUX课件filesystem(51页珍藏版)》请在金锄头文库上搜索。
1、 文件系统DOS的文件系统Unix的文件系统Linux的文件系统 当你把新 买 的一个硬 盘 装到 电脑 上之后,你接下来要做的事情是什么? 文件系统分区和格式化 为什么一定要分区?分区的理由:首先,分区可以方便我们对磁盘的使用,不同的分区可以建立不同的文件系统;其次,分区有安全性上的优势。因为一个分区毁坏了,另一个分区仍然可以使用;再次,分区有可靠性上的优势。一个分区的故障不影响另一个分区的运行。这些都是好的理由,但都不是必须分区的理由。 必 须 分区的理由:必 须 分区的理由是 对 磁 盘 空 间 的使用。 因 为计 算机的内存字 长 是有限的,而磁 盘 地址需要存放在内存字里面。 因此,
2、操作系 统 能 够访问 的磁 盘 地址数量是一个有限数。例如,早期的内存字 长 度 为 16位,操作系 统 能 够表示的磁 盘 地址数 为 216,也就是 65536个磁 盘 地址。假设 磁 盘 数据 块 (每个地址 )的大小 为 512字 节 , 则 操作系统 能 够访问 的最大磁 盘 空 间为 33554432,即 32MB的空 间文件系统常用的文件物理分配方式如下: 连续区分配优点:(1) 顺序访问容易(2)顺序访问速度快;文件访问的速度是几种存储空间分配方式中最高的一种。缺点:(1)要求有连续的存储空间(2)必须事先知道文件的长度不宜用来存放用户文件、数据库文件等经常被修改的文件。 隐
3、式链接 在文件目录的每个 目录项 中,都必须含有指向链接文件第一个盘块和最后一个盘块的指针顺序访问(随机访问低效)可靠性差为了提高检索速度和指针所占的存储空间,可将几个盘块组成一个簇( cluster) 显式链接用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,该表在整个磁盘仅一张 ,即 FAT。 文件分配表FAT技术Microsoft在其早期的操作系统中采用的是 FAT(File Allocation Table,文件分配表 )文件系统 . 早期 MS-DOS操作系统所使用的是 FAT12文件系统,在每个分区中都配有两张文件分配表 FAT1和 FAT2,在FAT的每个表项中存放下一
4、个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的 FCB (File Control Block,文件控制块 ,即目录项 )中。MS-DOS的文件物理结构 对于 1.2 MB的软盘,每个盘块的大小为512 B, 在每个 FAT中共含有 2.4 K个表项,由于每个 FAT表项占 12位,故 FAT表占用 3.6 KB的存储空间 现在我们来计算以盘块为分配单位时,所允许的最大磁盘容量。由于每个 FAT表项为 12位,因此,在 FAT表中最多允许有 4096个表项,如果采用以盘块作为基本分配单位,每个盘块 (也称扇区 )的大小一
5、般是 512字节,那么,每个磁盘分区的容量为 2 MB(4096512 B)。同时,一个物理磁盘支持 4个逻辑磁盘分区,所以相应的磁盘最大容量仅为 8 MB。这对最早时期的硬盘还可应付,但很快磁盘的容量就超过了 8MB, FAT12是否还可继续用呢,回答虽是肯定的,但需要引入一个新的分配单位 簇 .FAT技术 簇的概念为了适应磁盘容量不断增大的需要,在进行盘块分配时,不再以盘块而是以簇 (cluster)为基本单位。簇是一组连续的扇区,在 FAT中它是作为一个虚拟扇区,簇的大小一般是 2n (n为整数 )个盘块,在 MS-DOS的实际运用中,簇的容量可以仅有一个扇区 (512 B)、两个扇区
6、(1 KB)、四个扇区 (2 KB)、八个扇区 (4 KB)等。一个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇仅有一个扇区时,磁盘的最大容量为 8 MB;当一个簇包含两个扇区时,磁盘的最大容量可以达到 16 MB;当一个簇包含了八个扇区时,磁盘的最大容量便可达到64 MB。FAT技术 由上所述可以看出,以簇作为基本的分配单位所带来的最主要的好处是,能适应磁盘容量不断增大的情况。值得注意的是,使用簇作为基本的分配单位虽可减少FAT表中的项数 (在相同的磁盘容量下, FAT表的项数是与簇的大小成反比的 )。这一方面会使 FAT表占用更少的存储空间,并减少访问 FAT表的存取开销,提
7、高文件系统的效率;但这也会造成更大的簇内零头 (它与存储器管理中的页内零头相似 )。 FAT技术 FAT12存在的问题尽管 FAT12曾是一个不错的文件系统,但毕竟已老化,已不能满足操作系统发展的需要,其表现出来的主要问题是,对所允许的磁盘容量存在着严重的限制,通常只能是数十兆字节,虽然可以用继续增加簇的大小来提高所允许的最大磁盘容量,但随着支持的硬盘容量的增加,相应的簇内碎片也将随之成倍地增加。此外,它只能支持 8+3格式的文件名。FAT技术 FAT16对 FAT12所存在的问题进行简单的分析即可看出,其根本原因在于, FAT12表最多只允许 4096个表项,亦即最多只能将一个磁盘分区分为
8、4096个簇。这样,随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。由此可以得出解决方法,那就是增加 FAT表的表项数,亦即应增加 FAT表的宽度,如果我们将 FAT表的宽度增至 16位,最大表项数将增至 65536个,此时便能将一个磁盘分区分为 65536(216)个簇。我们把具有 16位表宽的 FAT表称为 FAT16。在 FAT16的每个簇中可以有的盘块数为 4、 8、 16、 32直到 64,由此得出 FAT16可以管理的最大分区空间为 216 64 512 = 2048 MB。FAT技术 由上述分析不难看出, FAT16对 FAT12的局限性有所改善,但改善很有限。当磁盘
9、容量迅速增加时,如果再继续使用 FAT16,由此所形成的簇内碎片所造成的浪费也越大。例如,当要求磁盘分区的大小为 8GB时,则每个簇的大小达到 128 KB,这意味着内部零头最大可达到128 KB。一般而言,对于 1 4 GB的硬盘来说,大约会浪费 10 20的空间。为了解决这一问题,微软推出了 FAT32。由于 FAT12和 FAT16都不支持长文件名,为了满足用户的需求, Windows95系统对 FAT16进行了扩展,通过一个长文件名占用多个目录项的方法,使文件名的长度可以达到 255个字符,这种扩展的 FAT16也成为 VFAT。FAT技术 FAT32如同存储器管理中的分页管理,所选择
10、的页面越大,可能造成的页内零头也会越大。为减少页内零头就应该选择适当大小的页面。在这里,为了减小磁盘的簇内零头,也就应当选择适当大小的簇。问题是 FAT16表的长度只有 65535项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内零头,也就应当增加 FAT表的长度。为此,需要再增加 FAT表的宽度,这样也就由 FAT16演变为 FAT32。当然, FAT32也有一些不足,微软后来专门为Windows NT开发了一个全新的文件系统 NTFS (New Technology File System).FAT技术 FAT32是 FAT系列文件系统的最后一个产品。每一簇在 FAT表中的表项
11、占据 4字节 (232), FAT表可以表示4294967296项,即 FAT32允许管理比 FAT16更多的簇。这样就允许在 FAT32中采用较小的簇, FAT32的每个簇都固定为 4 KB,即每簇用 8个盘块代替 FAT16的 64个盘块,每个盘块仍为 512字节, FAT32分区格式可以管理的单个最大磁盘空间大到 4 KB232 = 2 TB。三种FAT类型的最大分区以及所对应的块的大小如图所示。FAT技术 簇的大小在一些磁盘管理工具如分区魔术师 (PartitionMagic)中可以调整簇的大小。从节约磁盘空间的角度来说簇越小越好, 但是从系统的存取速度上来看是越大越好(一定范围内),
12、要是全是大文件的话用大簇比较好 (比如可以专门用一个分区来存放电影,这个分区可以用大簇 ),否则就用默认就可以了。 FAT技术 UNIX文件系统是 UNIX成功的关键。其特点主要表现为以下几点: v目 录结 构采用 树 形 层 次 结 构v可安装拆卸的文件系 统v文件是无 结 构的字符流式文件v把外部 设备 和文件目 录 作 为 文件 处 理。UNIX文件系统特点UNIX文件系统特点 目录 (directory)的实现目录的功能是实现文件名到文件地址的映射。目录中的一项称为目录项 (dentry, directory entry)。所以,文件名和地址这两项在目录中是必不可少的。而文件的其他属性
13、是否放到目录中,不同的操作系统有不同的做法。 下图是一个 MS-DOS的目录项,它总共 32个字节。目录文件名 8 扩 展名31 10 2 2 2 4属性 保留 时间 日期 第一块号长度 目录的实现UNIX中采用的目录结构非常简单,如图,每个目录项占 16个字节,其中只包含文件名及其索引节点号。有关文件类型、长度、时间、所有者和磁盘地址等信息都放到索引节点 (inode, index node)中 ,inode的引入为文件共享提供了便利。目录索引节点号索引节点hello.c的内容目录项磁盘驱动器文件名 14 2拥 有者、 创 建时间 、修改 时间 、 访问权 限 ,链 接数等属性磁 盘 地址注
14、意:目录也是一个文件,可以像普通文件一样通过 less命令查看v 链接的目的是为了 文件共享 。可以用链接命令 ln( Link)对一个已存在的文件再建立一个新的链接,而不复制文件的内容v 硬链接 (hard link): 让一个文件对应一个或多个文件名,或者说把我们使用的文件名和文件系统使用的节点号链接起来,这些文件名可以在同一目录或不同目录v 软链接(也叫符号链接 ,symbolic link): 是一种特殊的文件,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件 软链接和硬链接 在 Unix/Linux系 统 中,每个文
15、件有一个唯一的数字 标示,称 为 索引 节 点号,用来唯一 标 示物理上的一个文件。 硬链接 ln sourcefile linkfile对一个现存的文件 a,执行 ln a b操作,即建立了一个硬链接 b,其实质是 a和 b指向同一个物理文件,它们的索引节点号相同,也就是多个逻辑文件同时指向一个物理文件,删除任何一个逻辑文件,只是将索引节点中的文件链接数减一,直到减为零,才会删除物理文件。硬链接其实就是为物理文件增加一个逻辑文件名。硬链接的缺点:不能跨文件系统建立硬链接;不能对目录建立硬链接。当文件所有者把本地文件删除了,别人却还是可以通过另一个连接点访问到该文件。链接文件 软链接(又称符号链接):为了克服硬链接的上述缺点,产生了软链接。用法: ln s sourcefile linkfile软链接相当于 windows下的快捷方式,其只包含目标文件的路径,当目标文件被删除后,就不能通过软链接访问文件了。可以跨文件系统建立符号链接,也可以对目录创建符号链接,甚至可以对一个不存在的文件创建符号链接 。 链接文件 一行表示一个目录项 . 当一个进程执行以下代码:fd1=open(“/etc/passwd”,O_RDONLY);fd2=open(“local”,O_RDONLY);fd3=open(“/etc/pass