文件系统定义了把文件存储于磁盘时所必须的数据结构及磁盘数据的管理方式。我们知道,磁盘是由很多个扇区(Sector)组成的,如果扇区之间不建立任何的关系,写入其中的文件就无法访问,因为无法知道文件从哪个扇区开始,文件占多少个扇区,文件有什么属性。为了访问磁盘中的数据,就必需在扇区之间建立联系,也就是需要一种逻辑上的数据存储结构。建立这种逻辑结构就是文件系统要做的事情,在磁盘上建立文件系统的过程通常称为“格式化”。
以Windows平台下最常见的FAT文件系统为例。FAT文件系统有两个重要的组成部分:FAT表(File Allocation Table)和数据存储区。FAT表是FAT文件系统的名称来源,它定义了存储数据的簇(Cluster,由2的n次方个Sector组成,n值根据分区大小而定,需综合考虑数据存取效率和存储空间的利用率)之间的链接关系,这种链接关系是一个单向链表,指向0xFF表示结束。依据一个簇编号所用bit数的不同,可分为FAT12、FAT16和FAT32文件系统。数据区存储的数据包含文件目录项(Directory Entries)和文件数据。文件目录项存储的是一个文件或目录的属性信息,包括文件名称(把目录也看成是文件)、读写属性、文件大小、创建时间、起始簇编号等,一个目录下的每个子目录和文件都对应一个表项记录。文件目录项以固定32字节的长度存储,以树型结构管理,其中根目录的位置是确定的。也就是说,根据分区根目录可以找到下级子目录和文件的起始簇编号,根据下级子目录又可以找到更下级目录或文件的起始簇编号。可见,FAT表和文件目录项是为了文件的访问和管理而建立的。应用程序要访问一个文件时,根据文件路径(逻辑分区号+目录,如F:\software)和文件名称(如setup.exe)可从文件目录项中获得存储文件数据的起始簇号,之后从FAT表查询这个簇号对应的链表,就可以获得该文件对应的全部簇编号。从这些簇中读出全部数据,就得到一个完整的文件。
一般来说,文件系统是和操作系统紧密结合在一起的,不同的操作系统使用不同的文件系统,但有时为了兼容,不同操作系统也使用相同的文件系统。
二、主流文件系统特点
在Windows系列操作系统中,MS-DOS和Windows 3.x使用FAT16文件系统,默认情况下Windows 98也使用FAT16,Windows 98和Windows Me可以同时支持FAT16、FAT32两种文件系统,Windows NT则支持FAT16、NTFS两种文件系统,Windows 2000可以支持FAT16、FAT32、NTFS三种文件系统.每一种文件系统提供的功能与特点各不相同。比如FAT32文件系统。,采用32位的文件分配表,磁盘的管理能力大为增强。但由于文件分配表的增大,性能相对来说有所下降。此外,这个版本的文件系统不能向下兼容。
NTFS是随着 Windows NT操作系统而产生的,它的优点和FAT文件系统相比是有更好的安全性和稳定性,在使用中不易产生文件碎片,NTFS分区对用户权限作出了非常严格的限制,同时它还提供了容错结构日志,从而保护了系统的安全。但NTFS分区格式的兼容性不好,Windows 98/ME操作系统均不能直接访问该分区。对于超过4GB以上的硬盘,使用NTFS分区,可以减少磁盘碎片的数量,大大提高硬盘的利用率;NTFS可以支持的文件大小可以达到64GB,远远大于FAT32下的4GB;支持长文件名,支持的最大分区为 2TB。
在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重要特征之一就是支持多种文件系统,并可以和许多其它种操作系统共存。随着Linux的不断发展,它所支持的文件格式系统也在迅速扩充。特别是Linux 2.4内核正式推出后,出现了大量新的文件系统。Linux系统可以支持十多种文件系统类型包括:JFS、 ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
操作系统 文件系统 特点
Windows 95、Windows 98、OSR2、Windows 98 SE、Windows Me、Windows 2000和Windows XP Fat文件系统
FAT12/FAT16和FAT32 可以允许多种操作系统访问,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符,扩展名为3个字符)。最大的限制在于兼容性方面,Fat32不能保持向下兼容。当分区小于512M时,Fat32不会发生作用。单个文件不能大于4G。
Windows NT/2000 NTFS文件系统 支持文件系统故障恢复,尤其是大存储媒体、长文件名。分区大小可以达到2TB。通过使用标准的事物处理日志和恢复技术来保证分区的一致性。只能被Windows NT/2000所识别,不能被FAT文件系统所存取。
Windows longhorn Winfs 用以组织、搜索和共享多种多样的信息的存储平台。WinFS被设计为在无结构文件和数据库数据之间建立起更好的互操作性,从而提供快捷的文件浏览和搜索功能。
Linux Ext2/ ext3/ XFS等文件系统 是一种日志式文件系统。日志式文件系统的优越性在于:由于文件系统都有快取层参与运作,如不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部卸下后才能进行关机。
UNIX 系统 NFS 网络文件系统,允许多台计算机之间共享文件系统,易于从所有这些计算机存放文件。
Windows 系列 CIFS 网络文件系统,允许多台计算机之间共享文件系统,易于从所有这些计算机存放文件。
AIX JFS 具有可伸缩性和健壮性,与非日志文件系统相比,它的优点是其快速重启能力:Jfs 能够在几秒或几分钟内就把文件系统恢复到一致状态。为满足服务器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计的。使用数据库日志处理技术,jsf 能在几秒或几分钟之内把文件系统恢复到一致状态。
Solaris Vxfs 日志式文件系统.建立文件的索引区,将操作记录在事件日志中,当系统发生意外时,能让系统迅速、完全地得到恢复。提供文件系统的照相功能,保证了数据的在线备份,提供文件系统的在线扩展,并提高了I/O吞吐率。
三、NFS和CIFS网络文件系统
NFS (Network File System,网络文件系统)是当前主流异构平台共享文件系统之一.主要应用在UNIX环境下。 最早是由SUN microsystem开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在FreeBSD、SCO、Solaris等等异构操作系统平台, 允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS 可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。
NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。NFS 客户端程序对共享文件系统进行访问时,把它们从 NFS 服务器中“输送”出来。文件通常以“块” 为单位进行传输. 其尺寸是 8K (虽然它可能会将操作分成更小尺寸的分片).NFS 传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。
CIFS(Common Internet File Syste,公共互联网文件系统)是当前主流异构平台共享文件系统之一。主要应用在NT/Windows环境下,是由Microsoft公司开发。其工作原理是让CIFS协议运行于TCP/IP通信协议之上,让Unix计算机可以在网络邻居上被Windows计算机看到。
共享文件系统特点:
1、异构平台下的文件共享:不同平台下的多个客户端可以很容易的共享NAS中的同一个文件。
2、充分利用现有的LAN网络结构,保护现有投资。
3、容易安装,使用和管理都很方便,实现即插即用。
4、广泛的连接性:由于基于IP/Ethernet以及标准的NFS和CIFS,可以适应复杂的网络环境。
5、内部资源的整合:可以将内部的磁盘整合成一个统一的存储池,以卷的方式提供给不同的用户,每一个卷可以格式化成不同的文件系统。
6、允许应用进程打开一个远地文件,并能够在该文件的某一个特定的位置上开始读写数据。NFS 可使用户只复制一个大文件中的一个很小的片段,而不需复制整个大文件,在网络上传送的只是少量的修改数据。
需要注意的是,CIFS和NFS虽然同样也是文件系统(File System),但它并不能用于在磁盘中存储和管理数据,它定义的是通过TCP/IP网络传输文件时的文件组织格式和数据传输方式。利用CIFS和NFS共享文件实际涉及到两次的文件系统转换。客户端从服务器端申请一个文件时,服务器端首先从本地读出文件(本地文件系统格式),并以NFS/CIFS的格式封装成IP报文并发送给客户端。客户端收到IP报文以后,把文件存储与本地磁盘中(本地文件系统格式)。
四、存储系统与文件系统
提到NAS,通常会想到传统的NAS设备,它具有自己的文件系统,具有较大的存储容量,具有一定的文件管理和服务功能。NAS设备和客户端之间通过IP网络连接,基于NFS/CIFS协议在不同平台之间共享文件,数据的传输以文件为组织单位。虽然NAS设备常被认为是一种存储架构,但NAS设备最核心的东西实际上在存储之外,那就是文件管理服务。从功能上来看,传统NAS设备就是一个带有DAS存储的文件服务器。从数据的IO路径来看,它的数据IO发生在NAS设备内部,这种架构与DAS毫无分别。而事实上,很多NAS设备内部的文件服务模块与磁盘之间是通过SCSI总线连接的。至于通过NFS/CIFS共享文件,完全属于高层协议通信,根本就不在数据IO路径上,所以数据的传输不可能以块来组织。正是由于这种功能上的重叠,在SAN出现以后,NAS头设备(或NAS网关)逐渐发展起来,NAS over SAN的方案越来越多,NAS回归了其文件服务的本质。
由此可知,NAS与一般的应用主机在网络层次上的位置是相同的,为了在磁盘中存储数据,就必须要建立文件系统。有的NAS设备采用专有文件系统,而有的NAS设备则直接借用其操作系统支持的文件系统。由于不同的OS平台之间文件系统不兼容,所以NAS设备和客户端之间就采用通用的NFS/CIFS来共享文件。至于SAN,它提供给应用主机的就是一块未建立文件系统的“虚拟磁盘”。在上面建立什么样的文件系统,完全由主机操作系统确定。