操作系统之文件系统

2018-02-08 10:21:58来源:oschina作者:晨猫人点击

分享

文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

常见的文件系统


FAT

通常PC机使用的文件系统是FAT16。像基于MS-DOS,Win95等系统都采用了FAT16


文件系统。在Win9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬件和应用的不断提高,FAT16文件系统已不能很好地适应系统的要求。


在这种情况下,推出了增强的文件系统FAT32。同FAT16相比,FAT32主要具有以下特点:


1.同FAT16相比FAT32最大的优点是可以支持的磁盘大小达到32GB,但是不能支持小于512MB的分区。


基于FAT32的Win2000可以支持分区最大为32GB;而基于FAT16的Win2000支持的分区最大为4GB。


2.由于采用了更小的簇,FAT32文件系统可以更有效率地保存信息。如两个分区大小都为2GB,一个分区采用了FAT16文件系统,另一个分区采用了FAT32文件系统。采用FAT16的分区的簇大小为32KB,而FAT32分区的簇只有4KB的大小。这样FAT32就比FAT16的存储效率要高很多,通常情况下可以提高15%。


3.FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。

NTFS

NTFS文件系统是一个基于安全性的文件系统,是WindowsNT所采用的独特的文件系统结构,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。使用非常广泛的WindowsNT4.0采用的就是NTFS4.0文件系统,相信它所带来的强大的系统安全性一定给广大用户留下了深刻的印象。Win2000采用了更新版本的NTFS文件系统??NTFS5.0,它的推出使得用户不但可以像Win9X那样方便快捷地操作和管理计算机,同时也可享受到NTFS所带来的系统安全性。


NTFS5.0的特点主要体现在以下几个方面:


1.NTFS可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到2TB。而Win2000中的FAT32支持分区的大小最大为32GB。


2.NTFS是一个可恢复的文件系统。在NTFS分区上用户很少需要运行磁盘修复程序。NTFS通过使用标准的事物处理日志和恢复技术来保证分区的一致性。发生系统失败事件时,NTFS使用日志文件和检查点信息自动恢复文件系统的一致性。


3.NTFS支持对分区、文件夹和文件的压缩。任何基于Windows的应用程序对NTFS分区上的压缩文件进行读写时不需要事先由其他程序进行解压缩,当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自动对文件进行压缩。


4.NTFS采用了更小的簇,可以更有效率地管理磁盘空间。在Win2000的FAT32文件系统的情况下,分区大小在2GB~8GB时簇的大小为4KB;分区大小在8GB~16GB时簇的大小为8KB;分区大小在16GB~32GB时,簇的大小则达到了16KB。而Win2000的NTFS文件系统,当分区的大小在2GB以下时,簇的大小都比相应的FAT32簇小;当分区的大小在2GB以上时(2GB~2TB),簇的大小都为4KB。相比之下,NTFS可以比FAT32更有效地管理磁盘空间,最大限度地避免了磁盘空间的浪费。


5.在NTFS分区上,可以为共享资源、文件夹以及文件设置访问许可权限。许可的设置包括两方面的内容:一是允许哪些组或用户对文件夹、文件和共享资源进行访问;二是获得访问许可的组或用户可以进行什么级别的访问。访问许可权限的设置不但适用于本地计算机的用户,同样也应用于通过网络的共享文件夹对文件进行访问的网络用户。与FAT32文件系统下对文件夹或文件进行访问相比,安全性要高得多。另外,在采用NTFS格式的Win2000中,应用审核策略可以对文件夹、文件以及活动目录对象进行审核,审核结果记录在安全日志中,通过安全日志就可以查看哪些组或用户对文件夹、文件或活动目录对象进行了什么级别的操作,从而发现系统可能面临的非法访问,通过采取相应的措施,将这种安全隐患减到最低。这些在FAT32文件系统下,是不能实现的。


6.在Win2000的NTFS文件系统下可以进行磁盘配额管理。磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。设置磁盘配额后,可以对每一个用户的磁盘使用情况进行跟踪和控制,通过监测可以标识出超过配额报警阈值和配额限制的用户,从而采取相应的措施。磁盘配额管理功能的提供,使得管理员可以方便合理地为用户分配存储资源,避免由于磁盘空间使用的失控可能造成的系统崩溃,提高了系统的安全性。


7.NTFS使用一个“变更”日志来跟踪记录文件所发生的变更。

CDFS

CDFS是大部分的光盘的文件系统,只有小部分光盘使用其他文件系统。这些文件系统只能在CD-R或CD-RW上读取。

exFAT

(全称ExtendedFileAllocationTableFileSystem,扩展FAT,即扩展文件分配表)是


扩展文件分配表主界面


扩展文件分配表主界面Microsoft在WindowsEmbeded5.0以上(包括WindowsCE5.0、6.0、WindowsMobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。

相对FAT文件系统,exFAT有如下好处:


1.增强了台式电脑与移动设备的互操作能力


2.单文件大小最大可达16EB(2305843009213693952字节,就是(理论值,16×1024×1024TB),1TB=1024G)


3.簇大小可高达32MB


4.采用了剩余空间分配表,剩余空间分配性能改进


5.同一目录下最大文件数可达65536个


6.支持访问控制


7.支持TFAT

采用该文件系统的闪存盘不支持WindowsVistaReadyBoost。WindowsVistaSP1支持该文件系统。


请注意:exFAT只是一个折中的方案,只为U盘而生。


现在超过4GB的U盘格式化时默认是NTFS分区,但是这种格式是很伤U盘的,因为NTFS分区是采用“日志式”的文件系统,需要记录详细的读写操作,肯定会比较伤闪盘芯片,因为要不断读写。

exFAT、NTFS、FAT分区的比较



1.支持非常大的文件和存储设备


2.对性能的改进支持


3.对未来的创新的可扩展性功能的支持

RAW

RAW文件系统是一种磁盘未经处理或者未经格式化产生的的文件系统,一般来说有这几种可能造成正常文件系统变成RAW文件系统:


●没有格式化。


●格式化中途取消操作。


●硬盘出现坏道。


●硬盘出现不可预知的错误。


●病毒所致。


解决RAW文件系统的最快的方法是立即格式化,并且使用杀毒软件全盘杀毒。当然,如果文件很重要的话可以考虑用磁盘数据恢复软件先救出数据,然后再格式化和杀毒,或者在网上查找一些有关于“raw文件系统恢复”的内容。

Ext2

Ext2是GNU/Linux系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。


其单一文件大小与文件系统本身的容量上限与文件系统本身的簇大小有关,在一般常见的x86电脑系统中,簇最大为4KB,则单一文件大小上限为2048GB,而文件系统的容量上限为16384GB。


但由于目前核心2.4所能使用的单一分割区最大只有2048GB,实际上能使用的文件系统容量最多也只有2048GB。


至于Ext3文件系统,它属于一种日志文件系统,是对ext2系统的扩展。它兼容ext2,并且从ext2转换成ext3并不复杂。

Ext3

Ext3是一种日志式文件系统,是对ext2系统的扩展,它兼容ext2。日志式文件系统的优越性在于:由于文件系统都有快取层参与运作,如不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部shutdown后才能进行关机。


如果在文件系统尚未shutdown前就关机(如停电)时,下次重开机后会造成文件系统的资料不一致,故这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而,此一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失。


为了克服此问题,使用所谓‘日志式文件系统(JournalFileSystem)’。此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。


由于资料的写入动作包含许多的细节,像是改变文件标头资料、搜寻磁盘可写入空间、一个个写入资料区段等等,每一个细节进行到一半若被中断,就会造成文件系统的不一致,因而需要重整。


然而,在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。

Ext4

Linuxkernel自2.6.28开始正式支持新的文件系统Ext4。Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,而不仅仅像Ext3对Ext2那样,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能:


1.与Ext3兼容。执行若干条命令,就能从Ext3在线迁移到Ext4,而无须重新格式化磁盘或重新安装系统。原有Ext3数据结构照样保留,Ext4作用于新数据,当然,整个文件系统因此也就获得了Ext4所支持的更大容量。


2.更大的文件系统和更大的文件。较之Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。


3.无限数量的子目录。Ext3目前只支持32,000个子目录,而Ext4支持无限数量的子目录。


4.Extents。Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数据块大小为4KB)的映射表。而Ext4引入了现代文件系统中流行的extents概念,每个extent为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25,600个数据块中”,提高了不少效率。


5.多块分配。当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块,写一个100MB文件就要调用25,600次数据块分配器,而Ext4的多块分配器“multiblockallocator”(mballoc)支持一次调用分配多个数据块。


6.延迟分配。Ext3的数据块分配策略是尽快分配,而Ext4和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。


7.快速fsck。以前执行fsck第一步就会很慢,因为它要检查所有的inode,现在Ext4给每个组的inode表中都添加了一份未使用inode的列表,今后fsckExt4文件系统就可以跳过它们而只去检查那些在用的inode了。


8.日志校验。日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4的日志校验功能可以很方便地判断日志数据是否损坏,而且它将Ext3的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。


9.“无日志”(NoJournaling)模式。日志总归有一些开销,Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。


10.在线碎片整理。尽管延迟分配、多块分配和extents能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4支持在线碎片整理,并将提供e4defrag工具进行个别文件或整个文件系统的碎片整理。


11.inode相关特性。Ext4支持更大的inode,较之Ext3默认的inode大小128字节,Ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode版本),默认inode大小为256字节。Ext4还支持快速扩展属性(fastextendedattributes)和inode保留(inodesreservation)。


12.持久预分配(Persistentpreallocation)。P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。Ext4在文件系统层面实现了持久预分配并提供相应的API(libc中的posix_fallocate()),比应用软件自己实现更有效率。


13.默认启用barrier。磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写commit记录,若commit记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4默认启用barrier,只有当barrier之前的数据全部写入磁盘,才能写barrier之后的数据。(可通过"mount-obarrier=0"命令禁用该特性。)

Btrfs

Btrfs(通常念成ButterFS),是由Oracle于2007年宣布并进行中的copy-on-write文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单个文件的大小,总文件系统大小或文件检查和加入目前ext3未支持的功能,像是writablesnapshots、snapshotsofsnapshots、内建磁盘阵列(RAID)支持,以及subvolumes。Btrfs也宣称专注在“容错、修复及易于管理”。

ZFS

ZFS源自于SunMicrosystems为Solaris操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL协议条款授权的开源项目。

HFS

1HFS文件系统概念


分层文件系统(HierarchicalFileSystem,HFS)是一种由苹果电脑开发,并使用在MacOS上的文件系统。最初被设计用于软盘和硬盘,同时也可以在在只读媒体如CD-ROM上见到。


2HFS文件系统开发过程


HFS首次出现在1985年9月17日,作为Macintosh电脑上新的文件系统。它取代只用于早期Mac型号所使用的平面文件系统MacintoshFileSystem(MFS)。因为Macintosh电脑所产生的数据,比其它通常的文件系统,如DOS使用的FAT或原始Unix文件系统所允许存储的数据更多。苹果电脑开发了一种新式更适用的文件系统,而不是采用现有的规格。例如,HFS允许文件名最多有31个字符的长度,支持metadata和双分支(每个文件的数据和资源支分开存储)文件。


尽管HFS象其它大多数文件系统一样被视为专有的格式,因为只有它为大多数最新的操作系统提供了很好的通用解决方法以存取HFS格式磁盘。


在1998年,苹果电脑发布了HFSPlus,其改善了HFS对磁盘空间的地址定位效率低下,并加入了其它的改进。当前版本的MacOS仍旧支持HFS,但从MacOSX开始HFS卷不能作为启动用。


3构成方式


分层文件系统把一个卷分为许多512字节的“逻辑块”。这些逻辑块被编组为“分配块”,这些分配块可以根据卷的尺寸包含一个或多个逻辑块。HFS对地址分配块使用16位数值,分配块的最高限制数量是65536。


组成一个HFS卷需要下面的五个结构:


卷的逻辑块0和1是启动块,它包含了系统启动信息。例如,启动时载入的系统名称和壳(通常是Finder)文件。


逻辑块2包含主目录块(MasterDirectoryBlock,简称MDB)。


逻辑块3是卷位图(VolumeBitmap)的启动块,它追踪分配块使用状态。


总目录文件(CatalogFile)是一个包含所有文件的记录和储存在卷中目录的B*-tree。


扩展溢出文件(ExtentOverflowFile)是当最初总目录文件中三个扩展占用后,另外一个包含额外扩展记录的分配块对应信息的B*-tree。

ReiserFS

ReiserFS,是一种文件系统格式,作者是HansReiser及其团队Namesys,1997年7月23日他将ReiserFS文件系统在互联网上公布。Linux内核从2.4.1版本开始支持ReiserFS。


ReiserFS的命名是源自作者HansReiser的姓氏,这个日志型文件系统发展比ext2/3晚近许多。在技术上使用的是B*-tree为基础的文件系统,其特色为能很有效率地处理大型文件到众多小文件都可以用很高的效率处理;实务上ReiserFS在处理文件小于1k小文件时,甚至效率可以比ext3快约10倍。


ReiserFS原先是Novell公司的SuSELinuxEnterprise采用的缺省文件系统,直到2006年10月12日其宣称将在未来的版本改采ext3为缺省。Novell公司否认这与HansReiser被控杀妻案有任何关系。

JFS

JFS(JOURNALFILESYSTEM),一种字节级日志文件系统,借鉴了数据库保护系统的技术,以日志的形式记录文件的变化。JFS通过记录文件结构而不是数据本身的变化来保证数据的完整性。这种方式可以确保在任何时刻都能维护数据的可访问性。


该文件系统主要是为满足服务器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计、开发的。JFS文件系统是为面向事务的高性能系统而开发的。在IBM的AIX系统上,JFS已经过较长时间的测试,结果表明它是可靠、快速和容易使用的。2000年2月,IBM宣布在一个开放资源许可证下移植Linux版本的JFS文件系统。JFS也是一个有大量用户安装使用的企业级文件系统,具有可伸缩性和健壮性。与非日志文件系统相比,它的突出优点是快速重启能力,JFS能够在几秒或几分钟内就把文件系统恢复到一致状态。虽然JFS主要是为满足服务器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计的,但还可以用于想得到高性能和可靠性的客户机配置,因为在系统崩溃时JFS能提供快速文件系统重启时间,所以它是因特网文件服务器的关键技术。使用数据库日志处理技术,JFS能在几秒或几分钟之内把文件系统恢复到一致状态。而在非日志文件系统中,文件恢复可能花费几小时或几天。


JFS的缺点是,使用JFS日志文件系统性能上会有一定损失,系统资源占用的比率也偏高,因为当它保存一个日志时,系统需要写许多数据。

VMFS

VMwareVirtualMachineFileSystem(VMFS)是一种高性能的群集文件系统,它使虚拟化技术的应用超出了单个系统的限制。VMFS的设计、构建和优化针对虚拟服务器环境,可让多个虚拟机共同访问一个整合的群集式存储池,从而显著提高了资源利用率。VMFS是跨越多个服务器实现虚拟化的基础,它可启用VMwareVmotionTM、DistributedResourceScheduler和VMwareHighAvailability等各种服务。VMFS还能显著减少管理开销,它提供了一种高效的虚拟化管理层,特别适合大型企业数据中心。采用VMFS可实现资源共享,使管理员轻松地从更高效率和存储利用率中直接获益。

XFS

XFS是SiliconGraphics,Inc.于90年代初开发的文件系统。它至今仍作为SGI基于IRIX的产品(从工作站到超级计算机)的底层文件系统来使用。现在,XFS也可以用于Linux。XFS的Linux版的到来是激动人心的,首先因为它为Linux社区提供了一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求。

UFS

UFS文件系统:基于BSD高速文件系统的传统UNIX文件系统,是Solaris的默认文件系统。默认启用UFS日志记录功能。在早期的Solaris版本中,UFS日志记录功能只能手动启用。Solaris10在运行64位Solaris内核的系统上支持多TBUFS文件系统。以前,UFS文件系统在64位系统和32位系统上的大小仅限于约1TB(Tbyte)。现在,所有UFS文件系统命令和公用程序已更新为支持多TBUFS文件系统。


UFS1文件系统是OpenBSD和Solaris的默认文件系统。UFS1也曾是NetBSD和FreeBSD的默认文件系统,但NetBSD2.0和FreeBSD5.0以后版本开始使用UFS2做默认的文件系统。UFS2增加了对大文件和大容量磁盘的支持和一些先进的特性。目前似乎还只有FreeBSD和NetBSD支持UFS2。AppleOSX和Linux也支持UFS1,但并不做为它们的默认文件系统。

VXFS

VeritasFileSystem(VxFS)是首个商业日志记录文件系统。通过日志记录功能,元数据更改首先写入到日志,然后再写入到磁盘。由于无需在多处写入更改,且元数据是异步写入的,因此吞吐量的速度较快。VxFS也是基于扩展区的意向日志记录文件系统。VxFS设计用于要求高性能和高可用性,并且可以处理大量数据的操作环境。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台