操作系统-概念

来源:维基百科https://en.wikipedia.org/wiki/File_system

操作系统

一个操作系统(OS)是系统软件,用于管理计算机硬件,软件资源,并提供通用服务的计算机程序。

分时操作系统为有效使用系统安排任务,还可能包括用于对处理器时间,大容量存储,打印和其他资源进行成本分配的会计软件。

对于硬件功能,例如输入和输出和存储器分配,操作系统作为和计算机硬件的程序之间的中介,虽然应用程序代码通常是由硬件直接执行,并经常使系统调用到操作系统功能或被其中断。在包含计算机的许多设备上都可以找到操作系统,从蜂窝电话和视频游戏机到Web服务器和超级计算机。

主导的桌面操作系统是Microsoft Windows,市场份额约为76.45%。MACOS由苹果公司是排在第二位(17.72%),和品种的Linux是共同排在第三位(1.73%)。在移动行业(包括智能手机和平板电脑)中,Android的份额到2020年将达到72%。根据2016年第三季度的数据,Android在智能手机上的份额占主导地位,为87.5%,并且增长率也很高每年的10.3%,其次是苹果的iOS每年的市场份额为12.1%,下降了5.2%,而其他操作系统的份额仅为0.3%。 Linux发行版在服务器和超级计算领域占主导地位。对于许多应用程序,还存在其他专门的操作系统类别,例如嵌入式和实时系统。

术语的起源

在计算机出现之前,术语文件系统用于描述一种存储和检索纸质文档的方法。[4]到1961年,该术语与原始含义一起被用于计算机归档。[5]到1964年,它已被广泛使用。[6]

建筑

文件系统由两层或三层组成。有时层被明确地分开,有时功能被组合。[7]

该逻辑文件系统负责与用户应用程序的交互。它提供了应用程序接口(API),用于文件操作- ,,等等,并将所请求的操作到其下方的层进行处理。逻辑文件系统“管理打开的文件表条目和按进程的文件描述符”。[8]该层提供“文件访问,目录操作,[和]安全性和保护”。[7]OPENCLOSEREAD

第二个可选层是虚拟文件系统。“此接口允许支持物理文件系统的多个并发实例,每个实例都称为文件系统实现”。[8]

第三层是物理文件系统。该层与存储设备(例如磁盘)的物理操作有关。它处理正在读取或写入的物理块。它处理缓冲和内存管理,并负责将块物理放置在存储介质上的特定位置。物理文件系统与设备驱动程序或通道交互以驱动存储设备。[7]

文件系统的各个方面
空间管理
注意:这仅适用于存储设备中使用的文件系统。

松弛空间的一个示例,用4,096字节的NTFS群集演示:100,000个文件,每个文件五个字节,等于500,000字节的实际数据,但需要409,600,000字节的磁盘空间来存储
文件系统以粒度方式分配空间,通常是设备上的多个物理单元。文件系统负责组织文件和目录,并跟踪媒体的哪些区域属于哪个文件,哪些未被使用。例如,在1980年代初期的Apple DOS中,140 KB的软盘上的256字节扇区使用了磁道/扇区映射。[需要引用]

当文件不是分配单元的精确倍数时,这会导致未使用的空间,有时称为松弛空间。对于512字节分配,平均未使用空间为256字节。对于64 KB群集,平均未使用空间为32 KB。创建文件系统时选择分配单元的大小。根据预期在文件系统中的文件的平均大小选择分配大小可以最大程度地减少不可用空间。通常,默认分配可以提供合理的用法。如果文件系统将主要包含非常大的文件,则选择太小的分配大小会导致过多的开销。

文件系统可能会变得零散
文件系统碎片当未使用的空间或单个文件不连续时发生。使用文件系统时,将创建,修改和删除文件。创建文件后,文件系统会为数据分配空间。一些文件系统允许或要求随着文件的增长指定初始空间分配和后续的增量分配。随着文件被删除,最终分配给它们的空间被认为可供其他文件使用。这将创建各种大小的交替使用和未使用区域。这是自由空间碎片。创建文件时,没有可用于其初始分配的连续空间区域,则必须按片段分配空间。修改文件使其变得更大时,它可能会超过最初分配给它的空间,

在某些操作系统中,系统管理员可以使用磁盘配额来限制磁盘空间的分配。

文件名

主条目:文件名
甲文件名(或文件名)被用于在文件系统中,以确定的存储位置。大多数文件系统对文件名的长度都有限制。在某些文件系统中,文件名不区分大小写(即名称MYFILE和myfile引用目录中的同一文件);在其他国家,文件名是大小写敏感的(即,名称MYFILE,MyFile以及myfile参考三个独立的文件,这些文件在同一目录)。

大多数现代文件系统都允许文件名包含Unicode字符集中的多种字符。但是,它们可能对某些特殊字符的使用有所限制,不允许在文件名中使用它们。这些字符可能用于指示设备,设备类型,目录前缀,文件路径分隔符或文件类型。

目录

主条目:目录(文件系统)
文件系统通常具有目录(也称为文件夹),该目录允许用户将文件分组为单独的集合。这可以通过将文件名与目录或类似Unix的文件系统中的索引节点中的索引相关联来实现。目录结构可以是平坦的(即线性),也可以是其中目录可以包含子目录的层次结构。Multics操作系统中使用了第一个支持目录的任意层次结构的文件系统。[9]类似Unix的系统的本机文件系统也支持任意目录层次结构,例如Apple的分层文件系统及其后续Mac OS中的HFS +,MS-DOS 2.0和更高版本的MS-DOS和Microsoft Windows中的FAT文件系统,Windows NT操作系统家族中的NTFS文件系统以及ODS -2(磁盘结构2)和OpenVMS中更高级别的Files-11文件系统。

元数据

其他簿记信息通常与文件系统中的每个文件相关联。的长度包含在文件中的数据的可以被存储为分配给所述文件或作为块数字节计数。该时间该文件的最后修改可被存储为文件的时间戳。文件系统可能会存储文件创建时间,上次访问时间,文件元数据更改的时间或文件的最后备份时间。其他信息可以包括文件的设备类型(例如,block,character,socket,subdirectory等),其所有者用户ID和组ID,其访问权限和其他文件属性(例如,文件是否是只读文件,可执行文件等)。

文件系统将与文件关联的所有元数据(包括文件名,文件内容的长度以及文件在文件夹层次结构中的位置)与文件内容分开存储。

大多数文件系统将所有文件的名称存储在一个目录中的一个位置(该目录的目录表)中,该目录通常与其他文件一样存储。许多文件系统仅将文件的某些元数据放在目录表中,而该文件的其余元数据则放在完全独立的结构中,例如inode。

大多数文件系统还存储不与任何一个特定文件关联的元数据。这样的元数据包括有关未使用区域的信息(可用空间位图,块可用性图)以及有关坏扇区的信息。通常,有关分配组的此类信息存储在分配组本身内部。

使用扩展文件属性,可以在文件系统上关联其他属性,例如NTFS,XFS,ext2,ext3,某些版本的UFS和HFS +。一些文件系统提供用户定义的属性,例如文档的作者,文档的字符编码或图像的大小。

某些文件系统允许将不同的数据收集与一个文件名关联。这些单独的集合可以称为流或分叉。苹果很早就在Macintosh上使用了分叉的文件系统,而Microsoft在NTFS中支持流。某些文件系统使用单个文件名维护文件的多个以前的修订版。文件名本身将检索最新版本,而先前保存的版本可以使用特殊的命名约定(例如“ filename; 4”或“ filename(-4)”)进行访问以访问四个之前保存的版本。

文件系统作为抽象的用户界面
在某些情况下,文件系统可能不使用存储设备,而是可以用于组织和表示对任何数据的访问,无论它是存储的还是动态生成的(例如procfs)。

实用工具
文件系统包括用于初始化,更改参数和删除文件系统实例的实用程序。其中一些功能可以扩展或截断分配给文件系统的空间。

目录实用程序可用于创建,重命名和删除目录条目(也称为dentries(单数:dentry)[10]),并更改与目录关联的元数据。目录实用程序还可以包括以下功能:创建指向目录的其他链接(在Unix中为硬链接),重命名父链接(在类似Unix的操作系统中为“ …” ),[需要澄清]以及创建指向文件的双向链接。

文件实用程序创建,列出,复制,移动和删除文件以及更改元数据。他们可能能够截断数据,截断或扩展空间分配,就地附加,移动和修改文件。根据文件系统的基础结构,它们可以提供一种机制,以在文件的开头进行前缀或截断,将条目插入文件的中间,或从文件中删除条目。如果文件系统提供了取消删除功能,则为删除的文件释放空间的实用程序也属于此类别。

某些文件系统通过提供实用程序以在最少活动时执行这些功能来推迟诸如重组可用空间,安全擦除可用空间以及重建层次结构之类的操作。一个示例是文件系统碎片整理实用程序。

文件系统实用程序的一些最重要功能是管理活动,这些活动可能涉及绕过所有权或直接访问基础设备。其中包括高性能备份和恢复,数据复制以及文件系统内各种数据结构和分配表的重组。

限制和允许访问
另请参阅:计算机安全性,密码破解,文件系统级加密和加密文件系统
文件系统使用几种机制来控制对数据的访问。通常,其目的是防止某个用户或一组用户读取或修改文件。另一个原因是要确保以受控方式修改数据,因此访问可能仅限于特定程序。示例包括存储在文件或其他位置的元数据中的密码以及以权限位,访问控制列表或功能形式的文件权限。文件系统实用程序需要能够在媒体级别访问数据以重组结构并提供有效的备份,通常意味着它们仅对礼貌的用户有效,而对入侵者无效。

文件系统中有时包含用于加密文件数据的方法。这是非常有效的,因为不需要文件系统实用程序知道加密种子即可有效地管理数据。依赖加密的风险包括攻击者可以复制数据并使用蛮力解密数据的事实。另外,丢失种子意味着丢失数据。

维护完整性

文件系统的一项重要职责是确保辅助存储中的文件系统结构保持一致,而不管程序访问文件系统的操作如何。这包括在修改文件系统的程序异常终止或忽略以通知文件系统它已完成其活动时采取的措施。这可能包括更新元数据,目录条目以及处理在物理存储介质上已缓冲但尚未更新的任何数据。

文件系统必须处理的其他故障包括介质故障或与远程系统的连接断开。

如果发生操作系统故障或“软”电源故障,则必须像单独程序失败时一样,调用文件系统中的特殊例程。

文件系统还必须能够纠正损坏的结构。这些可能是由于操作系统无法通知文件系统的操作系统故障,电源故障或重置导致的。

文件系统还必须记录事件以允许分析系统性问题以及特定文件或目录的问题。

用户数据

文件系统的最重要目的是管理用户数据。这包括存储,检索和更新数据。

一些文件系统接受用于存储的数据作为字节流,以一种对媒体有效的方式收集和存储字节。程序检索数据时,它指定内存缓冲区的大小,并且文件系统将数据从介质传输到缓冲区。运行时库例程有时可能允许用户程序基于指定长度的库调用来定义记录。当用户程序读取数据时,库通过文件系统检索数据并返回记录。

某些文件系统允许指定固定记录长度,该长度用于所有写入和读取。这有利于查找第n个记录,以及更新记录。

每个记录的标识(也称为密钥)使文件系统更加完善。用户程序可以读取,写入和更新记录,而无需考虑它们的位置。这需要对通常将关键块和数据块分开的媒体块进行复杂的管理。可以使用金字塔结构开发非常有效的算法来定位记录。[11]

使用文件系统
实用程序,特定于语言的运行时库和用户程序使用文件系统API来请求文件系统。其中包括数据传输,定位,更新元数据,管理目录,管理访问规范以及删除。

单个系统中的多个文件系统
通常,零售系统配置有占用整个存储设备的单个文件系统。

另一种方法是对磁盘进行分区,以便可以使用具有不同属性的多个文件系统。一个用作浏览器缓存或电子邮件存储的文件系统可能配置为具有较小的分配大小。这样可以将创建和删除文件的活动保留在磁盘的狭窄区域中,这是浏览器活动所特有的,并且不会干扰其他文件分配。可能会创建另一个分区,用于存储块大小相对较大的音频或视频文件。另一个通常可以设置为只读,并且只能定期设置为可写。

第三种方法(通常在云系统中使用)是在另一个(主机)文件系统中,使用“磁盘映像”在其他(主机)文件系统中容纳具有或不具有相同属性的其他文件系统。一个常见的示例是虚拟化:一个用户可以在其生产Windows环境(使用NTFS)下的虚拟机中运行实验性Linux发行版(使用ext4文件系统)。ext4文件系统驻留在磁盘映像中,该映像被视为NTFS主机文件系统中的一个文件(或多个文件,具体取决于系统管理程序和设置)。

在单个系统上具有多个文件系统的另一个好处是,在单个分区损坏的情况下,其余文件系统通常仍将保持完整。这包括病毒破坏系统分区,甚至无法启动的系统。需要专用访问权限的文件系统实用程序可以有效地逐步完成。此外,整理碎片可能更有效。多个系统维护实用程序(例如病毒扫描和备份)也可以分段处理。例如,如果自上次备份以来未添加任何视频,则无需备份包含视频以及所有其他文件的文件系统。对于图像文件,可以轻松地“剥离”差分图像,这些差分图像仅包含写入主(原始)图像的“新”数据。差异图像可以同时用于两个安全方面的考虑(作为“一次性”系统-如果被病毒破坏或污染,可以快速恢复,因为可以删除旧图像并且可以在几秒钟内创建新图像,即使没有自动化程序)和快速虚拟机部署(因为可以使用脚本快速批量生成差异映像)。

设计局限性
所有文件系统都有一些功能限制,这些限制定义了该系统内的最大可存储数据容量。这些功能限制是设计人员根据当前存储系统的大小以及将来可能会变成的大型存储系统进行的最佳尝试。磁盘存储以接近指数级的速度持续增长(请参阅摩尔定律),因此,几年后,文件系统一直达到设计限制,要求计算机用户反复迁移到容量越来越大的新系统上。

文件系统的复杂度通常与可用存储容量成比例地变化。对于拥有数百GB容量的现代存储系统,具有50 KB到512 KB存储空间的1980年代初期家用计算机的文件系统不是一个合理的选择。同样,对于这些早期系统而言,现代文件系统也不是一个合理的选择,因为现代文件系统结构的复杂性将很快消耗甚至超过早期存储系统非常有限的容量。

文件系统类型
文件系统类型可以分为磁盘/磁带文件系统,网络文件系统和专用文件系统。

磁盘文件系统
甲磁盘文件系统利用了盘存储介质的能力的优点随机地址数据在很短的时间量。其他考虑因素包括访问最初请求之后的数据的速度以及预期也可能请求以下数据的速度。这允许多个用户(或进程)访问磁盘上的各种数据,而无需考虑数据的顺序位置。示例包括FAT(FAT12,FAT16,FAT32),exFAT,NTFS,HFS和HFS +,HPFS,APFS,UFS,ext2,ext3,ext4,XFS,btrfs,Files-11,Veritas File System,VMFS,ZFS和ReiserFS。一些磁盘文件系统是日记文件系统或版本控制文件系统。

光盘
ISO 9660和通用磁盘格式(UDF)是针对光盘,DVD和蓝光光盘的两种常见格式。Mount Rainier是自2.6系列Linux内核和Windows Vista以来支持的UDF的扩展,该版本有助于重写DVD。

Flash文件系统
主条目:Flash文件系统
一个闪存文件系统考虑的特殊能力,性能和限制,闪存设备。通常,磁盘文件系统可以将闪存设备用作基础存储介质,但是最好使用专门为闪存设备设计的文件系统。

磁带文件系统
一个磁带文件系统是文件系统和磁带格式,设计用于存储在磁带上的文件。磁带是顺序存储介质,其随机数据访问时间比磁盘长得多,这给创建和有效管理通用文件系统带来了挑战。

在磁盘文件系统中,通常有一个主文件目录,以及一个已使用和可用数据区域的映射。任何文件的添加,更改或删除都需要更新目录和已用/可用映射。随机访问数据区域的时间以毫秒为单位,因此该系统适用于磁盘。

磁带需要直线运动才能缠绕和解绕可能很长的介质卷。磁带移动可能需要几秒钟到几分钟才能将读/写头从磁带的一端移到另一端。

因此,磁带的主文件目录和使用情况映射可能会非常缓慢且效率低下。写入通常涉及读取块使用情况图以查找要写入的空闲块,更新使用率图和目录以添加数据,然后前进磁带以将数据写入正确的位置。每次额外写入文件都需要更新映射和目录并写入数据,每个文件可能要花费几秒钟的时间。

相反,磁带文件系统通常允许将文件目录分布在与数据混合在一起的磁带上,这称为流传输,因此不需要费时和重复的磁带运动来写入新数据。

但是,这种设计的副作用是,读取磁带的文件目录通常需要扫描整个磁带以读取所有分散的目录条目。大多数与磁带存储一起使用的数据归档软件会将磁带目录的本地副本存储在磁盘文件系统上,因此可以快速完成向磁带中添加文件的操作,而无需重新扫描磁带介质。如果在指定的时间内未使用本地磁带目录副本,通常将其丢弃,此时,如果将来要使用该磁带,则必须重新扫描该磁带。

IBM开发了用于磁带的文件系统,称为线性磁带文件系统。该文件系统的IBM实现已作为开源IBM线性磁带文件系统-单驱动器版(LTFS-SDE)产品发布。线性磁带文件系统在磁带上使用单独的分区来记录索引元数据,从而避免了与在整个磁带上分散目录条目相关的问题。

磁带格式化
将数据写入磁带,擦除或格式化磁带通常是一个非常耗时的过程,在大型磁带上可能要花费几个小时。[a] 对于许多数据磁带技术,在将新数据覆盖到磁带之前不必格式化磁带。这是由于在顺序媒体上覆盖数据的固有破坏性。

由于格式化磁带可能会花费一些时间,因此通常会对磁带进行预格式化,以便磁带用户无需花费时间来准备使用每个新磁带。通常所需要做的就是在使用前在磁带上写一个可识别的介质标签,即使是第一次使用新的磁带时,也可以由软件自动写入。

数据库文件系统
文件管理的另一个概念是基于数据库的文件系统的思想。代替分层结构管理或除了分层结构化管理之外,文件还通过文件的特征来标识,例如文件的类型,主题,作者或类似的丰富元数据。[12]

IBM DB 2 for i [13](以前称为DB2 / 400和DB2 i5 / OS)是一种数据库文件系统,是基于对象的IBM i [14]操作系统(以前称为OS / 400和i5 / OS)的一部分),它包含一个单一级别的存储,并在由IBM i的前首席科学家Frank G. Soltis设计的IBM Power Systems(以前称为AS / 400和iSeries)上运行。在1978年至1988年左右,Frank G. Soltis和他在IBM Rochester的团队成功设计并应用了诸如数据库文件系统之类的技术,而后来像Microsoft这样的其他技术则未能实现。[15] 这些技术被非正式地称为“罗切斯特要塞” [需要引用]从早期的大型机技术扩展到几个基本方面,但是从技术角度来看在许多方面都更先进[需要引用]。

其他一些不是“纯”数据库文件系统,但使用数据库文件系统的某些方面的项目:

许多Web内容管理系统都使用关系DBMS来存储和检索文件。例如,XHTML文件存储为XML或文本字段,而图像文件存储为Blob字段;SQL SELECT(带有可选的XPath)语句检索文件,并允许使用复杂的逻辑和比“常规文件系统”更丰富的信息关联。许多CMS还可以选择仅在数据库中存储元数据,而标准文件系统用于存储文件的内容。
由Apache Hadoop和Google File System之类的应用程序实现的超大型文件系统使用某些数据库文件系统概念。
事务性文件系统
某些程序需要进行多个文件系统更改,或者如果一个或多个更改由于任何原因失败,则不进行任何更改。例如,正在安装或更新软件的程序可能会编写可执行文件,库和/或配置文件。如果某些写入操作失败,并且部分安装或更新了该软件,则该软件可能已损坏或无法使用。关键系统实用程序(例如命令外壳)的不完全更新可能会使整个系统处于无法使用的状态。

事务处理引入了原子性保证,确保事务内部的所有操作要么全部落实,要么可以中止该事务,并且系统丢弃其所有部分结果。这意味着,如果发生崩溃或电源故障,则在恢复后,存储状态将保持一致。该软件将被完全安装,或者失败的安装将被完全回滚,但是系统上不会留下无法使用的部分安装。事务还提供隔离保证[需要澄清],这意味着在事务提交之前,事务中的操作对系统中的其他线程是隐藏的,并且系统上的干扰操作将随事务正确序列化。

Windows从Vista开始,在称为Transactional NTFS的功能中向NTFS添加了事务支持,但现在不鼓励使用它。[16]有许多用于UNIX系统的事务文件系统的研究原型,包括Valor文件系统,[17] Amino,[18] LFS,[19]和TxOS内核上的事务ext3文件系统,[20] ]以及针对嵌入式系统的事务性文件系统,例如TFFS。[21]

没有文件系统事务,要确保跨多个文件系统操作的一致性非常困难,即使不是不可能。文件锁定可以用作单个文件的并发控制机制,但是它通常不保护目录结构或文件元数据。例如,文件锁定不能阻止符号链接上的TOCTTOU竞争条件。文件锁定也无法自动回滚失败的操作,例如软件升级;这需要原子性。

日记文件系统是一种用于在文件系统结构中引入事务级别一致性的技术。日记帐事务不作为OS API的一部分公开给程序;它们仅在内部使用,以确保单个系统调用的粒度上的一致性。

数据备份系统通常不提供对以事务方式存储的数据的直接备份的支持,这使得恢复可靠且一致的数据集变得困难。大多数备份软件仅记录自某个时间以来已更改了哪些文件,而与整个数据集中多个文件之间共享的事务状态无关。解决方法是,某些数据库系统仅生成一个存档状态文件,其中包含该点之前的所有数据,而备份软件仅备份该文件,而根本不直接与活动事务数据库进行交互。恢复需要在备份软件还原文件后从状态文件中重新创建数据库。

网络文件系统
主条目:分布式文件系统
甲网络文件系统是充当一个远程文件访问协议的客户端,服务器上提供对文件的访问的文件系统。使用本地接口的程序可以透明地创建,管理和访问远程网络连接计算机中的分层目录和文件。网络文件系统的示例包括NFS,AFS,SMB协议的客户端,以及FTP和WebDAV的类似文件系统的客户端。

共享磁盘文件系统
主条目:共享磁盘文件系统
甲共享磁盘文件系统是其中多个机器(通常服务器)的所有的访问相同的外部磁盘子系统(通常是SAN)。文件系统仲裁对该子系统的访问,以防止写冲突。例子包括GFS2从红帽,GPFS来自IBM,SFS从DataPlow,CXFS从SGI和的StorNext来自昆腾公司。

特殊文件系统
一个特殊的文件系统的操作系统作为文件呈现非文件中的元素,使他们能够使用文件系统API来采取行动。这通常在类似Unix的操作系统中完成,但是在某些非类似Unix的操作系统中也为设备指定了文件名。

设备文件系统
甲设备文件系统表示I / O设备和伪设备如文件,称为设备文件。类似Unix的系统中的示例包括devfs,而在Linux 2.6系统中的示例包括udev。在非类Unix系统中,例如TOPS-10和受其影响的其他操作系统中,文件的完整文件名或路径名可以包含设备前缀,除那些包含文件系统的设备外,其他设备都由设备前缀引用。指定设备,没有任何后续操作。

其他特殊文件系统
在Linux内核中,configfs和sysfs提供了可用于向内核查询信息并在内核中配置实体的文件。
procfs将进程以及Linux上的其他操作系统结构映射到文件空间。
最小的文件系统/盒式录音带
在1970年代,磁盘和数字磁带设备对于某些早期的微型计算机用户来说过于昂贵。设计了一种廉价的基本数据存储系统,该系统使用了通用的盒式磁带。

当系统需要写入数据时,通知用户按盒式录音机上的“ RECORD”,然后按键盘上的“ RETURN”以通知系统盒式录音机正在记录。该系统先编写声音以提供时间同步,然后调制声音以对前缀,数据,校验和和后缀进行编码。当系统需要读取数据时,指示用户按盒式录音机上的“ PLAY”。系统会听直到磁带上的声音可以被识别为同步为止。然后,系统会将随后的声音解释为数据。数据读取完成后,系统将通知用户按盒式录音机上的“停止”。这是原始的,但是很有效(很多时候)。数据是按顺序存储的,通常以未命名的格式存储,尽管某些系统(例如Commodore PET系列计算机)确实允许命名文件。通过快进磁带并在磁带计数器处观察以找到磁带上下一个数据区域的近似起点,可以写入和定位多组数据。用户可能必须听声音才能找到正确的位置,开始播放下一个数据区域。一些实施甚至包括散布在数据中的可听声音。

平面文件系统
不要与平面文件数据库混淆。
在平面文件系统中,没有子目录;所有文件的目录条目都存储在一个目录中。

当软盘介质是第一个可用这种类型的文件系统是足够的,由于可用的数据空间相对较少。CP / M机器具有一个平面文件系统,可以将文件分配给16个用户区域之一,而通用文件操作的范围缩小为只能在一个用户区域上工作,而不是默认为在所有用户区域上工作。这些用户区只不过是与文件关联的特殊属性。也就是说,没有必要为每个区域定义特定的配额,只要磁盘上仍有可用的存储空间,就可以将文件添加到组中。早期的Apple Macintosh也具有平面文件系统Macintosh File System。这是不寻常的,因为文件管理程序(Macintosh Finder)在EMFS之上造成了部分分层的文件系统的错觉。这种结构要求每个文件都必须具有唯一的名称,即使它似乎位于单独的文件夹中也是如此。IBM DOS / 360和OS / 360将磁盘包(卷)上所有文件的条目存储在该包的称为卷目录(VTOC)的目录中。

尽管简单,但是随着文件数量的增加,平面文件系统变得笨拙,并且很难将数据组织到相关的文件组中。

平面文件系统家族的最新成员是Amazon的S3,这是一种远程存储服务,该服务故意简化以使用户能够自定义存储数据的方式。唯一的构造是存储桶(想象一个无限制大小的磁盘驱动器)和对象(相似但与文件的标准概念不同的对象)。通过能够在对象名称中使用几乎任何字符(包括“ /”),并能够基于相同的前缀选择存储桶内容的子集,可以进行高级文件管理。

文件系统和操作系统
许多操作系统都支持多个文件系统。有时,操作系统和文件系统是如此紧密地交织在一起,以至于很难分离出文件系统功能。

用户和文件系统之间需要有操作系统软件提供的接口。此界面可以是文本的(例如由命令行界面(例如Unix shell或OpenVMS DCL提供)或图形的(例如由图形用户界面(例如文件浏览器)提供)。如果是图形化的,通常使用文件夹的隐喻,其中包含文档,其他文​​件和嵌套文件夹(另请参见:目录和文件夹)。

Unix和类Unix操作系统
类似于Unix的操作系统创建一个虚拟文件系统,该虚拟文件系统使所有设备上的所有文件看起来都存在于单个层次结构中。这意味着,在那些系统中,存在一个根目录,并且系统上存在的每个文件都位于该目录下的某个位置。类Unix的系统可以使用RAM磁盘或网络共享资源作为其根目录。

类似于Unix的系统为每个设备分配设备名称,但这不是访问该设备上文件的方式。相反,要访问另一台设备上的文件,必须首先通知操作系统这些文件应在目录树中的何处。此过程称为挂载文件系统。例如,要访问CD-ROM上的文件,必须告诉操作系统“从此CD-ROM中获取文件系统,并将其显示在某某目录下”。给操作系统的目录称为挂载点 –例如,它可以是/ media。该/媒体目录存在许多Unix系统(在指定的文件系统层次标准),专门用作CD,DVD,USB驱动器或软盘等可移动介质的安装点。它可能为空,或者可能包含用于安装单个设备的子目录。通常,只有管理员(即root用户)可以授权文件系统的安装。

类似于Unix的操作系统通常包含有助于安装过程并为其提供新功能的软件和工具。其中一些策略被称为“自动安装”,以反映其目的。

在许多情况下,操作系统启动后,除了根目录以外的其他文件系统都必须可用。因此,所有类Unix系统都提供了在引导时挂载文件系统的功能。系统管理员在配置文件fstab(Solaris中的vfstab)中定义这些文件系统,该文件还指示选项和安装点。
在某些情况下,无需在引导时挂载某些文件系统,尽管此后可能需要使用它们。对于类似Unix的系统,有一些实用程序允许按需挂载预定义的文件系统。
在微型计算机平台上,可移动介质已变得非常普遍。它们允许程序和数据在没有物理连接的情况下在机器之间传输。常见示例包括USB闪存驱动器,CD-ROM和DVD。因此,已经开发了实用程序来检测介质的存在和可用性,然后在没有任何用户干预的情况下安装该介质。
类似Unix的渐进系统也引入了一种概念,称为“超级安装”。参见例如Linux supermount-ng项目。例如,可以从系统中物理删除已超级安装的软盘。通常情况下,磁盘应已同步,然后再卸下,然后再卸下。如果已发生同步,则可以将其他磁盘插入驱动器。系统自动注意到磁盘已更改,并更新安装点内容以反映新介质。
一个挂载当涉及到在其顶上它应该被安装在目录作出将自动装入文件系统。这通常用于网络服务器上的文件系统,而不是依赖于诸如插入媒体之类的事件,而这适用于可移动媒体。
Linux
Linux支持许多文件系统,但是块设备上系统磁盘的常见选择包括ext *系列(ext2,ext3和ext4),XFS,JFS和btrfs。对于没有闪存转换层(FTL)或内存技术设备(MTD)的原始闪存,其中包括UBIFS,JFFS2和YAFFS。SquashFS是常见的压缩只读文件系统。

Solaris
对于可引导文件系统和补充文件系统,早期版本中的Solaris缺省为(非日志记录或非日志记录)UFS。Solaris默认为,支持和扩展的UFS。

随着时间的推移,增加了对其他文件系统的支持并进行了重大改进,包括Veritas Software Corp.(journaling)VxFS,Sun Microsystems(clustering)QFS,Sun Microsystems(journaling)UFS和Sun Microsystems(开源,可池化,128位可压缩,和纠错)ZFS。

内核扩展已添加到Solaris,以允许可启动的Veritas VxFS操作。日志或日记记录已添加到Sun的Solaris 7中的UFS中。中发布的Solaris 10,快速的Solaris,OpenSolaris的,和其他开源的Solaris操作系统版本支持可引导的变种ZFS。

逻辑卷管理允许跨多个设备跨文件系统,以增加冗余,容量和/或吞吐量。Solaris中的旧版环境可以使用Solaris Volume Manager(以前称为Solstice DiskSuite)。多个操作系统(包括Solaris)可以使用Veritas Volume Manager。通过使用ZFS中的虚拟存储池,基于现代Solaris的现代操作系统满足了对卷管理的需求。

macOS
macOS(以前称为Mac OS X)使用Apple文件系统(APFS),该文件系统最近取代了从经典Mac OS继承的称为HFS Plus(HFS +)的文件系统。Apple还为HFS +使用术语“ Mac OS Extended”。[22] HFS Plus是一个元数据丰富且保留大小写但(通常)不区分大小写的文件系统。由于macOS的Unix根源,Unix权限已添加到HFS Plus。HFS Plus的更高版本增加了日记功能,以防止损坏文件系统结构,并对分配算法进行了许多优化,以尝试自动对文件进行碎片整理,而无需使用外部碎片整理程序。

文件名最多可包含255个字符。HFS Plus使用Unicode来存储文件名。在macOS上,文件类型可以来自存储在文件元数据中的类型代码或文件扩展名。

HFS Plus具有三种链接:Unix风格的硬链接,Unix风格的符号链接和别名。别名被设计为即使原始文件被移动或重命名也可以保持链接。它们不是由文件系统本身解释的,而是由userland中的文件管理器代码解释的。

macOS 10.13 High Sierra于2017年6月5日在Apple的WWDC活动中宣布,在固态驱动器上使用Apple File System。

macOS还支持通过NeXTSTEP从BSD Unix Fast File System派生的UFS文件系统。但是,从Mac OS X Leopard开始,无法再将MacOS安装在UFS卷上,也不能将安装在UFS卷上的Pre-Leopard系统升级到Leopard。[23]自Mac OS X Lion以来,对UFS的支持已完全删除。

较新版本的macOS能够读写Windows上常见的旧FAT文件系统(16和32)。他们还能够读取Windows的较新的NTFS文件系统。为了在Mac OS X之前的macOS版本上写入NTFS文件系统,需要使用第三方软件Snow Leopard。Mac OS X 10.6(Snow Leopard)和更高版本允许写入NTFS文件系统,但仅在进行非常规系统设置更改后(存在自动执行此操作的第三方软件)。[24]

最后,从Mac OS X Snow Leopard(版本10.6.5开始)开始,macOS支持读写exFAT文件系统。[25]

OS / 2
OS / 2 1.2引入了高性能文件系统(HPFS)。HPFS支持在不同代码页中使用大小写混合的文件名,长文件名(255个字符),更有效地利用磁盘空间,一种使磁盘空间上的相关项目彼此靠近,减少数据碎片,基于扩展数据块的空间分配,目录的B +树结构以及位于磁盘中点的根目录,以加快平均访问速度。一个日志文件系统(JFS)被运于1999年。

PC-BSD
PC-BSD是FreeBSD的桌面版本,与FreeNAS相似,它继承了FreeBSD的ZFS支持。的新的图形安装PC-BSD可以处理/(根)上ZFS和RAID-Z池安装和磁盘加密使用格力以容易的方便(从一开始就GUI)的方式。当前的PC-BSD 9.0+“ Isotope Edition”具有ZFS文件系统版本5和ZFS存储池版本28。

计划9
Bell Labs的Plan 9将所有内容都视为一个文件,并像访问文件一样访问所有对象(即,没有ioctl或mmap):通过I访问网络,图形,调试,身份验证,功能,加密和其他服务对文件描述符的/ O操作。所述9P协议删除本地和远程文件之间的差异。计划9中的文件系统是在每个进程的私有命名空间的帮助下进行组织的,从而使每个进程对提供分布式系统资源的许多文件系统具有不同的看法。

在地狱操作系统共享这些概念与计划9。

Microsoft Windows

Windows命令外壳中的目录列表
Windows使用FAT,NTFS,exFAT,Live File System和ReFS文件系统(仅在Windows Server 2012,Windows Server 2016,Windows 8,Windows 8.1和Windows 10中支持并使用它们中的最后一个; Windows无法启动从中)。

Windows在用户级别使用驱动器号抽象来区分一个磁盘或分区与另一个磁盘或分区。例如,路径 C:\ WINDOWS表示由字母C表示的分区上的目录WINDOWS。驱动器C:最常用于主硬盘驱动器分区,通常在该分区上安装Windows并从中引导。这种“传统”已变得根深蒂固,以至于许多应用程序中都存在错误,这些错误假定操作系统安装所在的驱动器为C。使用驱动器号以及使用“ C”作为驱动器号的传统。主硬盘驱动器分区,可以追溯到MS-DOS,其中字母A和B最多保留两个软盘驱动器。反过来,这又是从1970年代的CP / M派生而来,并最终源自1967年的IBM的CP / CMS。

FAT
主条目:文件分配表
几乎所有个人计算机操作系统都支持FAT文件系统家族,包括Windows和MS-DOS / PC DOS,OS / 2和DR-DOS的所有版本。(PC DOS是MS-DOS的OEM版本,MS-DOS最初基于SCP的86- DOS。DR-DOS基于Digital Research的并发DOS(CP / M-86的后继)。)因此,FAT文件系统非常适合作为大多数类型和年龄的计算机与设备之间的通用交换格式。

FAT文件系统的根源可追溯到Standalone Disk BASIC和短暂的MDOS / MIDAS项目中的(不兼容)8位FAT前驱体。[需要引用]

多年来,文件系统已从FAT12扩展到FAT16和FAT32。文件系统已添加了各种功能,包括子目录,代码页支持,扩展属性和长文件名。诸如Digital Research之类的第三方已经合并了对删除跟踪的可选支持,以及基于卷/目录/文件的多用户安全方案,以支持文件和目录的密码和权限,例如读/写/执行/删除访问权限。Windows不支持其中大多数扩展。

FAT12和FAT16文件系统对文件系统根目录中的条目数有限制,并且对FAT格式的磁盘或分区的最大大小有限制。

FAT32解决了FAT12和FAT16中的限制,但文件大小限制接近4 GB,但与NTFS相比仍然受到限制。

FAT12,FAT16和FAT32文件名的限制为八个字符,扩展名的限制为三个字符(例如.exe)。这通常称为8.3文件名限制。VFAT是Windows 95和Windows NT 3.5中引入的FAT12,FAT16和FAT32的可选扩展,它允许长文件名(LFN)以向后兼容的方式存储在FAT文件系统中。

NTFS
主要文章:NTFS
NTFS是Windows NT操作系统于1993年引入的,它允许基于ACL的权限控制。NTFS还支持的其他功能包括硬链接,多个文件流,属性索引,配额跟踪,稀疏文件,加密,压缩和重新解析点(用作其他文件系统的挂载点的目录,符号链接,联结,远程存储链接) 。

exFAT
主要文章:exFAT
在文件系统开销方面,exFAT比NTFS具有某些优势。

exFAT与FAT12,FAT16或FAT32等FAT文件系统不向后兼容。Windows XP,Windows Server 2003,Windows Vista,Windows 2008,Windows 7,Windows 8和Windows 10等更新的Windows系统支持该文件系统。

从版本10.6.5(Snow Leopard)开始,macOS支持exFAT。[25] 其他操作系统的支持很少,因为实现对exFAT的支持需要许可证。exFAT是macOS和Windows上完全支持的唯一文件系统,可以容纳大于4 GB的文件。[需要引用]

OpenVMS
主要文章:Files-11
MVS
主条目:MVS§MVS文件系统
在引入VSAM之前,OS / 360系统实施了一种不寻常的混合文件系统。该系统旨在轻松支持可移动磁盘包,因此,与一个磁盘(IBM术语中的卷)上的所有文件有关的信息都存储在该磁盘上的一个平面系统文件中,该文件称为卷目录(VTOC)。VTOC存储该文件的所有元数据。后来随着系统目录的引入,采用了分层目录结构,可以选择对驻留卷和可移动卷上的文件(数据集)进行分类。目录仅包含将数据集与特定卷关联的信息。如果用户请求访问脱机卷上的数据集,并且他们具有适当的特权,则系统将尝试安装所需的卷。如果向OPEN请求提供了所需的卷ID,仍然可以使用VTOC中的信息来绕过目录访问已编录和未编录的数据集。再后来,对VTOC进行了索引,以加快访问速度。

会话监控系统
主条目:CMS文件系统
VM / 370的IBM会话监控系统(CMS)组件为每个虚拟磁盘(minidisk)使用单独的平面文件系统。文件数据和控制信息是分散和混合的。锚是一条称为主文件目录(MFD)的记录,始终位于磁盘的第四个块中。最初,CMS使用固定长度的800字节块,但后来的版本使用最大4K的较大大小的块。对数据记录的访问需要两个间接级别,即文件的目录条目(称为文件状态表(FST)条目)指向包含各个记录的地址列表的块。

AS / 400文件系统
AS / 400及其后续产品上的数据由映射到单级存储中的系统虚拟地址空间的系统对象组成。定义了许多类型的AS / 400对象,包括在其他文件系统中找到的目录和文件。文件对象与其他类型的对象一起构成了AS / 400对集成关系数据库的支持的基础。

其他文件系统
Prospero文件系统是基于虚拟系统模型的文件系统。[26]该系统是由南加州大学信息科学研究所的B. Clifford Neuman博士创建的。
RSRE FLEX文件系统-用ALGOL 68编写
密歇根终端系统(MTS)的文件系统很有趣,因为:(i)它提供“行文件”,其中记录长度和行号作为元数据与文件中的每个记录相关联,可以添加,替换和更新行相同或不同长度的记录,并在文件的任何位置删除,而无需读取和重写整个文件;(ii)除用户和组外,使用程序密钥文件可以与命令和程序共享或允许;(iii)有完善的文件锁定机制,可以保护文件的数据及其元数据。[27] [28]
局限性
转换文件系统的类型
将文件放在不同于当前文件系统的文件系统中可能是有利的或必要的。原因包括需要将空间需求增加到超出当前文件系统的限制。路径深度可能需要增加,超出文件系统的限制。可能存在性能或可靠性方面的考虑。另一个原因是提供对不支持现有文件系统的另一个操作系统的访问。

就地转换
在某些情况下,转换可以就地完成,尽管迁移文件系统更为保守,因为迁移涉及创建数据的副本,因此建议您这样做。[29]在Windows上,可以通过convert.exe实用程序将FAT和FAT32文件系统转换为NTFS,但不能相反。[29]在Linux上,可以将ext2转换为ext3(并转换回),并且ext3可以转换为ext4(但不能转换回),[30]并且ext3和ext4都可以转换为btrfs,并转换回直到undo信息被删除。[31]由于文件数据本身使用相同的格式,并且在某些情况下使用稀疏文件支持,因此将元数据重新放置到空白空间中,因此可以进行这些转换。[31]

迁移到其他文件系统
迁移的缺点是需要更多空间,尽管它可能更快。最好的情况是,如果介质上有未使用的空间,它将包含最终的文件系统。

例如,将FAT32文件系统迁移到ext2文件系统。首先创建一个新的ext2文件系统,然后将数据复制到该文件系统,然后删除FAT32文件系统。

当在创建新文件系统之前没有足够的空间来保留原始文件系统时,另一种方法是使用工作区(例如可移动介质)。这会花费更长的时间,但是备份数据是一个很好的副作用。

长文件路径和长文件名
在分层文件系统中,文件是通过路径访问的,该路径是包含该文件的目录的分支列表。不同的文件系统对路径深度有不同的限制。文件系统对单个文件名的长度也有限制。

从一个文件系统到另一个文件系统,复制具有长名称或深度的文件可能会导致不良结果。这取决于执行复制的实用程序如何处理差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值