2011年(7)
分类: LINUX
2011-07-02 17:10:50
1、什么是文件系统:
文件系统定义了把文件存储于磁盘时所必须的数据结构及磁盘数据 的管理方式。如果磁盘扇区之间不建立任何关系,其中的文件将无法访问,我们不知道文件从哪个扇区开始的、占了几个扇区、文件有什么属性等等。因此为了访问 磁盘上的数据,需要一种逻辑上的数据存储结构。而建立这种逻辑结构就是文件系统要做的事了。在磁盘上建立文件系统的过程通常称为“格式化”。
一个比喻:一块硬盘就像一块空地,文件像不同的材料,我们首先得在空地上建起仓库(分区),并且指定好仓库(格式化)对材料的管理规范(文件系统),这样才能将材料运到仓库保管。
注意:
1)文件不会受所在分区的文件系统的影响,因为文件在不同的分区中差别仅仅是放置和管理方法的不同而已,就像同样是汽车轮胎在仓库A可能是直接堆在地上,而在仓库B中则是挂在墙上的,它们并不因此而有所不同。因此,文件可以在具有不同文件系统的分区间移动(如NTFS分区和FAT32分区之间),其内容绝不会有所改变。
2)文件系统是对应分区的,而不是硬盘,不管是将硬盘分为一个分区,还是几个分区。因此,“我的硬盘是FAT32格式的”或“C盘是NTFS格式”等说法是不合适的,因为NTFS或者FAT32并不是格式,他们是管理文件的系统(规范)。
2、常见文件系统:
1)FAT12: 是IBM第一台个人电脑中的MS-DOS 1.0使用的文件系统,主要用于软盘。这种系统限制分区的容量最大为16MB——但这根本算不上问题,因为软盘容量从来没有达到16MB。
2)FAT16:它被很多操作系统支持,兼容性最好,但分区最大只能到2GB,并且空间浪费现象比较严重。并且由于FAT16文件系统是单用户文件系统,不支持任何安全性及长文件名。
3)FAT32:是在FAT16基础上发展而来,随着Windows 95 OSR2一起发布,可以被大多数操作系统支持,FAT32比FAT16更有效地利用了硬盘空间,并且最大分区的上限已经达到了32GB,适合一般家庭使用。
4)ISO9660:CD-ROM的文件系统,不过现在已经延伸出很多新的文件系统,对它的一些缺点进行了弥补,如Juliet等。
5)UDF:可读写光盘的文件系统。
6)Mac HFS:苹果电脑的文件系统,对大容量磁盘有比较好的支持。不过,现在大多数苹果电脑还在使用FAT32文件系统。
7)NTFS:它的英文全称为“NT File System”,中文意为NT文件系统,它随着1996年7月的Windows NT 4.0诞生的,但直到Windows 2000,它才开始在个人用户中间得以推广,跨入了主力分区文件系统的行列。今天,Windows XP/2003和NTFS早已是“如胶似漆”了。
NTFS是随着 Windows NT操作系统而产生的,它的优点和FAT文件系统相比是有更好的安全性和稳定性,在使用中不易产生文件碎片,NTFS分区对用户权限作出了非常严格的限 制,同时它还提供了容错结构日志,从而保护了系统的安全。但NTFS分区格式的兼容性不好,Windows 98/ME操作系统均不能直接访问该分区。 对于超过4GB以上的硬盘,使用NTFS分区,可以减少磁盘碎片的数量,大大提高硬盘的利用率;NTFS可 以支持的文件大小可以达到64GB,远远大于FAT32下的4GB;支持长文件名,支持的最大分区为 2TB。
3、其他:
1、文件系统分析:常见的FAT(File Allocation Table)文件系统(见参考资料[2])
1)FAT文件系统的组成:
FAT文件系统有两个重要的组成部分:FAT表(File Allocation Table)和数据存储区。
FAT表是FAT文件系统的名称来源,它定义了存储数据的簇(Cluster,由2的n次方个Sector组成,n值根据分区 大小而定,需综合考虑数据存取效率和存储空间的利用率)之间的链接关系,这种链接关系是一个单向链表,指向0xFF表示结束。
数据区存储的数据包含文件目录项(Directory Entries)和文件数据。
FAT表和文件目录项是为了文件的访问和管理而建立的。
应用程序要访问一个文件时,根据文件路径(逻辑分区号+目录,如F:/software)和文件名称(如setup.exe)可从文件目录项中获得存储文 件数据的起始簇号,之后从FAT表查询这个簇号对应的链表,就可以获得该文件对应的全部簇编号。从这些簇中读出全部数据,就得到一个完整的文件。
2)FAT12、FAT16和FAT32文件系统的由来:
依据一个簇编号所用bit数的不同,可分为FAT12、FAT16和FAT32文件系统。
2、在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重要特征之一就是支持多种文件系统,并可以和许多其它种操作系统共存。
参考资料:
[1]http://hi.baidu.com/willwillyes/blog/item/23f89202d161ab0a4bfb51bf.html
[2]http://hi.baidu.com/willwillyes/blog/item/0ed79db1fcf55b5109230297.html
[3]Linux文件系统剖析
http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/
[4]有关文件系统的博客资料:
%5Fzeus/blog/category/%CE%C4%BC%FE%CF%B5%CD%B3