文件系统
计算机的文件系统 (File system) 是一种存储和组织计算机文件和数据的方法,它使得对其访问和查找变得容易。
文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议(如NFS、SMB、9P等)提供的或者内存上,甚至可能根本不存在对应的文件(如 proc文件系统)。
严格地说,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 (Abstract data type)。
A file system (often also written as filesystem) is a method of storing and organizing computer files and their data. Essentially, it organizes these files into a database for the storage, organization, manipulation, and retrieval by the computer’s operating system.
一、文件系统概览
文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(扇区),一般每块512字节。数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。
不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。
1、文件名
不论文件系统底层是不是存储设备,文件系统都可以把数据组织为文件及目录的形式。文件系统一般会把文件名链接到某种文件分配表中(MS-DOS的FAT文件系统),或者链接到一个文件链表的节点上(Unix-like文件系统)。目录可以是平的结构,也可以是分层式结构,后者可以在目录中创建子目录。
有的文件系统中,文件名是结构化的,带有文件名扩展信息及版本号等;而另一些文件系统里,文件名只是一个简单的字符串,每个文件的属性信息保存在其它地方。
2、元数据(Metadata)
其它文件保存信息常常伴随着文件自身保存在文件系统中。文件长度可能是分配给这个文件的区块数,也可能是这个文件实际的字节数。文件最后修改时间也许记录在文件的时间戳中。有的文件系统还保存文件的创建时间,最后访问时间及属性修改时间。(不过大多数早期的文件系统不记录文件的时间信息)其它信息还包括文件设备类型(如:区块数,字符集,套接口,子目录等等),文件所有者的ID,组ID,还有访问权限(如:只读,可执行等等)。
二、文件系统的类型
文件系统可以分为磁盘文件系统、网络文件系统和特殊文件系统。
1、磁盘文件系统
磁盘文件系统是一种设计用来利用数据存储设备来保存计算机文件的文件系统,最常用的数据存储设备是磁盘驱动器,可以直接或者间接地连接到计算机上。例如:FAT、exFAT、NTFS、HFS、HFS+、ext2、ext3、ext4、ISO 9660、ODS-5和UDF。 有些文件系统是进程文件系统(也有译作日志文件系统)或者追踪文件系统。
2、数据库文件系统
文件管理方面的一个新概念是一种基于数据库的文件系统的概念。不再(或者不仅仅)使用分层结构管理,文件按照他们的特征进行区分,如文件类型、专题、作者或者亚数据进行区分。于是文件检索就可以按照SQL风格甚至自然语言风格进行。例如BFS和WinFS。
3、网络文件系统
网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制。
二、文件系统详述
1、Linux 支持的文件系统
随着Linux的不断发展,它所支持的文件格式系统也在迅速扩充。Linux系统内核可以支持十多种文件系统类型:Btrfs、JFS、 ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
Mac OS X 的文件系统,现在使用HFS+,之前采用HFS。
2、谷歌文件系统
谷歌 File System(GFS)是谷歌公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。由于它没有使用任何 ext3 或者按照 Linux GPL 授权的代码,所以没有法定的约束要求 谷歌 公开发布这种文件系统。尽管谷歌公布了该系统的一些技术细节,但谷歌并没有将该系统的软件部分作为开源软件发布。
NTFS 是 Windows NT 以及之后的 Windows 2000 、 Windows XP 、 Windows Server 2003 、 Windows Server 2008 、 Windows Vista 和 Windows 7 的标准文件系统。
NTFS取代了文件分配表(FAT)文件系统,为Microsoft的Windows系列操作系统提供文件系统。NTFS对FAT和HPFS(高性能文件系统)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如访问控制列表(ACL)和文件系统日志。该文件系统的详细定义属于商业秘密,但Microsoft已经将其注册为知识产权产品。
4、ext4
ext4,第四扩展文件系统,是Linux系统下的日志文件系统,是ext3文件系统的后继版本。
ext4原始的开发目标是一系列的向下兼容ext3、移除其64位限制与提升其效能的延伸包。然而,某些Linux开发者因稳定性原因而拒绝将这些延伸包应用在ext3上,并要求其作为ext3的分支,改名为ext4并另行开发,以免影响到目前的ext3用户。该要求被接受以后,ext3维护者 Theodore Ts’o 在2006年6月28日公开了ext4的开发计划。
ext4文件系统可支持最高 1 Exbibyte 的分区区与最大 16 Tebibyte 的文件,并向下兼容于ext3与ext2。
5、ext3
ext3,第三扩展文件系统,是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。Stephen Tweedie 在1999年2月的内核邮件列表中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中。
虽然它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFS和XFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之外,它还具有比ReiserFS和XFS更低的的CPU使用率。
6、Ext2
ext2 (second extended filesystem),全称第二扩展文件系统,是Linux内核所用的文件系统。它开始由 Rémy Card 设计,用以代替ext。ext2 的经典实现为Linux内核中的ext2fs文件系统驱动。其他的实现包括 GNU Hurd, Mac OS X (第3方), Darwin (第3方), BSD。ext2为数个Linux发行版的默认文件系统,如 Debian、Red Hat Linux 等。
7、ZFS
ZFS 源自于 Sun Microsystems 为 Solaris 操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL协议条款授权的开源项目。ZFS之名最早代表 “Zettabyte File System”,但现在仅是无意义的首字缩写。
了解更多
维基百科:http://zh.wikipedia.org/zh-cn/文件系统
维基百科:http://en.wikipedia.org/wiki/File_system(英文)
本文链接地址(Giga OS) - http://sancc.net/os/operating-system/file-system
如转载,请注明:“转载自 Giga OS - http://gigaos.com/”,并注明链接地址!









