我们都使用 文件或文件 每天都会用到它 文件夹或目录无论是在台式电脑、笔记本电脑、移动设备等的文件系统中。因此,在本文中,我将解释您需要了解的所有内容,以便您能够理解 什么是信息以及如何存储信息 在记忆。
什么是文件系统?
Un 文件系统 文件系统 (FS) 是操作系统用来控制信息存储和检索方式的一种方法和数据结构。如果没有文件系统,存储在存储介质上的数据将是一个单一的数据实体,无法区分一个数据集的结束位置和下一个数据集的开始位置,也无法区分需要检索时数据集所在的位置。这就是所谓的原始数据。
当您使用 NTFS、FAT、ext4、btrfs、HFS+ 等格式格式化存储驱动器时,实际上是在创建一个文件系统来管理该驱动器上的数据。换句话说,我们所说的格式实际上就是文件系统 (FS)。
通过将数据分成块并命名每个块,l数据可以轻松分离和识别为了实现这一切,文件系统由两到三层组成。有时这些层明确地分开,有时则将功能合并在一起。我们讨论的层是:
- 逻辑文件系统:负责与用户应用程序交互。它提供了文件操作的 API,例如 打开、关闭、阅读等。并将请求的操作转发到其下一层进行处理。逻辑文件系统管理每个进程的打开文件表条目和文件描述符。该层提供文件访问、目录操作、安全和保护。
- 虚拟文件系统:此接口允许支持多个物理文件系统的并发实例。此层是可选的,并非始终存在。
- 物理文件系统:处理存储设备的物理操作。它处理正在读取或写入的物理块。它负责缓冲、内存管理,并负责将块物理放置在存储介质上的特定位置。物理文件系统与存储硬件设备驱动程序或通道交互,以引导存储设备。
FS 功能
现有的每个文件系统都有其局限性, 特点 你应该知道的,比如:
- 空间管理或分配: 文件系统以粒度的方式分配空间,通常分布在设备上的多个物理驱动器上。文件系统负责组织文件和目录,并跟踪介质的哪些区域属于哪些文件,哪些区域未被使用。
- 碎片: 当同一个文件存储在存储驱动器的不同部分时,就会发生这种情况,这意味着各个文件部分并不连续。随着文件的创建、修改和删除,这会导致已使用和未使用的空间大小不一。不仅如此,这还会影响某些文件系统(例如 Microsoft 的 FAT 和 NTFS),从而降低文件读取速度。
- 文件名: 文件系统管理长度限制、区分大小写以及文件名中特殊字符的使用。
- 目录: 它们通常有目录来将文件组织成单独的集合。目录可以是平面的,也可以是分层的。我稍后会更详细地讨论这一点,因为这正是它的意义所在……
- 元数据: 它具有相关的元数据信息,其中包括数据长度、时间戳、访问权限和文件属性等详细信息。
- 公用设施和通道: 它们用于初始化、修改和删除文件系统实例,以及创建、重命名和删除目录和文件、加密、配额、迁移、转换、备份等。
- 完整性和故障管理: 即使在操作系统故障或断电的情况下,FS 也必须维护二级存储或外部驱动器上的文件系统结构的完整性。
- 用户数据: 必须允许管理用户数据,包括数据的存储、检索和更新。
- 多个文件系统: 单个系统上可以有多个文件系统。
- 设计限制: 文件系统具有功能限制,定义了该系统内的最大存储容量、文件的最大大小、文件的数量等。
什么是分区?
一 隔断 分区是数据存储设备(例如 HDD、SSD、闪存驱动器等)的逻辑部分或细分。此分区具有多种用途,可以更好地组织和管理存储的数据。例如,每个分区可以用于特定用途,可以在其上安装多个操作系统等。
重要的是要注意 创建、删除和调整大小 分区更改可能会导致数据丢失,因此在对分区结构进行重大更改之前,谨慎执行这些操作并备份关键数据非常重要。
另一方面,总而言之,你也应该明白, 各种类型的分区 MBR 系统中的基础(GPT 中扩展了可能性,同一单元上最多可以有 128 个分区,尽管这是另一个话题...):
- 主分区: 每个存储驱动器最多可以有四个主分区。这些分区是安装操作系统和存储数据的主要分区。其中一个主分区可以指定为活动分区或启动分区,操作系统将从该分区启动。
- 扩展分区: 扩展分区是一种特殊的主分区,用于在其中创建额外的逻辑分区。它不直接包含数据,而是充当逻辑分区的容器。一个扩展分区内可以包含多个逻辑分区。这样可以克服硬盘驱动器上四个主分区的限制。
- 逻辑分区: 这些分区是在扩展分区内创建的。它们不用于启动操作系统,通常用于组织数据或文件。您可以在一个扩展分区内创建多个逻辑分区,这样可以更轻松地组织数据。
什么是分区表?
La 分区表 它是一个位于硬盘驱动器起始位置的数据结构,包含有关驱动器如何划分分区的信息。它通常存储在基于 BIOS 的系统上的主引导扇区 (MBR) 中,或存储在更现代的基于 UEFI 的系统上的 GPT(GUID 分区表)中。分区表包含每个分区的大小、分区类型(例如 NTFS、FAT32、ext4 等)以及分区在存储介质上的位置等详细信息。
因此,分区表和文件系统之间的关系在于分区表指示 每个分区的开始和结束位置 在物理磁盘上。每个分区都使用特定的文件系统进行格式化。当访问某个分区并读取或写入文件时,操作系统会使用分区表中的信息来定位并了解该分区上文件系统的结构。
文件系统类型
在不同的文件系统中,应重点关注以下类型:
- 磁盘文件系统: 这些系统利用磁盘存储介质随机快速访问数据的能力。它们允许多个用户或进程访问磁盘上的数据,而不受其顺序位置的限制。示例包括 FAT、exFAT、NTFS、Reiser FS、HFS、HFS+、HPFS、APFS、UFS、ext2、ext3、ext4、XFS、btrfs、VMFS、ZFS、ReiserFS、NSS 和 ScoutFS。除此之外,还可以考虑以下文件系统:
- 光盘: CD、DVD 和蓝光上使用的常见格式,例如 ISO 9660 和通用磁盘格式 (UDF)。
- 闪存文件系统: 这些系统专为闪存设备设计,并充分考虑了闪存设备的特性和限制。建议使用专为闪存设备设计的文件系统,而不是改编磁盘系统。例如,JFFS、JFFS2、YAFFS、UBIFS、LogFS 和 F2FS。
- 磁带文件系统: 这些系统管理磁带上的存储,磁带的随机访问时间比磁盘更长。它们在目录管理方面有所不同,并且强调需要避免磁带上频繁的线性移动。IBM 的 LTFS 就是一个例子。
- 数据库文件系统: 基于数据库的文件系统,其中文件通过类型、作者或元数据等特征进行标识。例如 IBM DB2 等。
- 事务文件系统: 这些系统保证了文件操作的原子性和隔离性。例如,Microsoft Windows 中的 NTFS 文件系统,以及 UNIX/Linux 的其他原型事务文件系统(例如 LFS、ext3 等)。
- 网络文件系统: 网络文件系统,允许通过 NFS、AFS、SMB、FTP 和 WebDAV 等协议访问远程服务器上的文件。也就是说,它们是为分布式计算而设计的。
- 共享文件系统: 这些系统允许多台服务器安全地访问同一磁盘子系统。示例包括 GFS2、GPFS、SFS、CXFS、StorNext 和 ScoutFS。
- 特殊文件系统: 它们有些特殊,本身没有文件元素,但可以通过 API 访问。例如,我们将设备文件系统定义为 devfs,用于 Linux 等系统。另一方面,我们还有一些特殊的文件系统,例如 configfs、sysfs 和 procfs,它们在 Linux 世界中也被称为。
- 最小文件系统/录音带存储: 录音带被用作数据存储系统,为当时的一些微型计算机型号(例如 Commodore PET)供电。
- 平面文件系统(Flat File System): 这些系统没有子目录,所有目录条目都存储在一个主目录中。这类文件系统的示例包括 CP/M 系统中使用的文件系统以及苹果经典 Mac 电脑的 Macintosh 文件系统。
FS技术公司

每个文件系统都有自己的特性,它们支持 不同的技术. 其中一些最重要的是:
- 自我修复: 指文件系统自动检测并纠正存储系统中可能出现的错误和问题的能力。这些错误可能包括硬盘驱动器上的坏扇区或其他类型的数据损坏。检测到错误时,文件系统可以尝试通过从备份中还原或修复损坏的数据来恢复受影响的数据。这有助于维护文件系统中存储数据的完整性。
- 压缩: 此功能允许您减小文件系统中存储的文件和数据的大小。压缩数据可以节省磁盘空间并加快文件传输速度。启用压缩后,文件系统会自动压缩写入的文件,并在读取文件时解压缩。这在资源受限的存储系统中非常有用,尽管这可能会降低访问速度。
- 西弗拉多: 它是一种用于保护文件系统中存储数据机密性的技术。数据在写入磁盘之前会被加密,读取时则会解密。加密技术确保没有正确解密密钥的任何人都无法读取数据。这对于保护敏感数据的隐私和安全至关重要。与压缩类似,加密也会降低访问速度。
- 日志记录(事务日志): 此功能记录在文件系统上执行的所有操作,例如文件的创建、修改或删除。此记录称为“日志”或“事务日志”。如果发生系统故障(例如意外断电),文件系统可以使用事务日志恢复到一致状态。这可以防止数据损坏并确保文件系统的完整性。
- 快照容量: 快照是文件系统在特定时间点的副本。这些副本是快照,与文件系统中的当前数据一起存储。如果发生错误或不必要的更改,快照可以将文件系统恢复到之前的状态。这对于备份、数据恢复以及在系统上永久实施更改之前进行测试非常有用。
什么是目录或文件夹?

现在我们知道了数据是如何存储在存储单元中的,以及必要的数据结构,现在是时候继续解释一下 文件夹或目录.
目录或文件夹是 用于编目其他文件的结构 在文件系统中,它为用户或操作系统提供了更直观的层次结构或组织方式。为此,它包含对其他文件以及可能的其他目录或文件夹(在本例中称为子目录或子文件夹)的引用。
一些采用分层文件系统的操作系统(例如 Unix)通常会在 RAM 的某个部分中设置目录缓存,其中包含最近访问的路径。在 Unix 中,这部分缓存被称为 DNLC(目录名称查找缓存),而在 Linux 中,它被称为 dcache。这部分内存会使用最近访问的路径进行更新;而在网络文件系统中,则需要一种机制来管理已失效或由用户创建的条目,以确保一致性。
在一个 分层文件系统 存储是树状的。术语“父”和“子”通常用于描述子目录与其所属目录之间的关系,后者称为父目录。在这种文件系统中,级别最高的目录(没有自己的父目录)称为根目录。这在 Unix 或 Linux 中最为常见,因为它们具有特定的层次结构,并且根目录为 root 或 /,所有其他目录都挂在该目录中,即使它们不在同一分区上。
虚拟目录是一种文件组织方式,它不依赖于分层目录树中的位置。相反,它从数据源(例如数据库或自定义索引)收集结果,并以与文件夹视图相同的格式直观地呈现它们。
这些文件夹或目录 可以管理 使用 GUI 和 CLI 工具。例如,我们可以使用命令或文件管理器本身来创建、删除、重命名、移动、复制等操作。虽然某些操作系统可能对某些文件夹的权限和操作有所限制……
有关不同操作系统上的文件夹或目录的详细信息
恩卡达 文件系统和操作系统,文件和文件夹的处理方式不同:
- 根:这是系统其余文件夹层次结构的起始点或驻留点。在 Windows 中,通常是 C:\;在 Unix/Linux 中,则是根分区或 /。
- 路径或路线:这是文件夹或文件在文件系统 (FS) 中的路径。例如,在 Windows 中,路径可能是 C:\Program Files\Office\Word.exe。在 Unix/Linux 中,路径可能是 /home/user/example.c。我们可以看到,在 Windows 中使用反斜杠,而在 *nix 系统中,则使用正斜杠。
- 文件名或文件名:这是特定文件系统 (FS) 中每个文件的命名。每个文件系统对文件名的最大字符数都有各自的限制。此外,必须区分基本名称和扩展名。一些早期系统还对扩展名的长度有限制,通常为 3 个。这就是为什么您有时会看到 .htm 而不是 .html,以确保与 DOS 系统兼容。文件名的示例可能是 example.txt,其中“example”是名称,“txt”是扩展名,在这种情况下表示它是文本。
Unix/Linux 的特殊情况
什么是超级块?
Un 超级区块 超级块是文件系统起始处的基本数据结构。它包含文件系统本身的关键信息,用于管理和访问存储在文件系统上的数据。每个 Unix 文件系统都有自己的超级块,其具体格式可能因所使用的文件系统(例如 ext4、XFS、UFS 等)而异。
La 存储的信息 超级块中可能包括:
- 文件系统大小: 表示文件系统的总大小。
- 索引节点数量: 指定文件系统上可用的 Inode 数量。Inode 是表示文件和目录的数据结构。
- 空闲块: 记录文件系统中剩余用于存储信息的空闲数据块的数量。
- 挂载点: 表示文件系统在操作系统上的挂载目录。
- 文件系统识别: 文件系统的唯一标识符,用于将其与同一系统上的其他文件系统区分开来。
- 集会日期和时间: 记录文件系统上次挂载的时间。
- 使用的 Inode 和块计数器: 跟踪文件系统上正在使用的 inode 和数据块的数量。
- 校验和及其他完整性元数据: 一些现代超级块可能包含附加信息来验证文件系统中存储的数据的完整性。
当文件系统(即格式化的分区)挂载时,操作系统会访问超级块以获取有关文件系统结构和状态的重要信息。这些信息对于读写文件系统数据以及确保存储数据的完整性和一致性至关重要。
Inode 和目录
En Unix/Linux, 一切都是文件,例如分区、设备驱动器等。在其他系统(例如 Windows)中并非如此。然而,当一切都是文件时,即使是文件夹或目录也会被视为特殊的文件类型。
因此,目录是一个特殊的文件,包含文件(和子目录)名称和 索引节点号 同一文件系统上的文件,或指向同一或不同文件系统上的文件或目录的符号链接的名称。对于硬链接,inode 会跟踪其中列出的目录条目数,并在链接计数达到零时删除文件块。软链接或符号链接的情况则有所不同。删除符号链接不会影响目标文件。但是,如果删除了包含指向该文件的符号链接,则链接将无法使用。
在 Unix/Linux 文件系统中,文件 可以有多个名字, 每个名称在相同或不同的目录中都有一个目录条目,所有条目都指向相同的 inode 结构,该结构维护存储数据的磁盘块列表。
为了更好地理解这一切,重要的是记住什么是 inode(索引节点)。它是 *nix 文件系统中的一个基本数据结构。 表示和存储重要信息 文件系统中的文件或目录。因此,文件夹和文件都会被系统视为一个 inode。
为了实现这一点,每个 inode 都指向下一个 资讯:
- Inode 编号: 每个文件或目录的唯一标识符。
- 文件类型: 指示 inode 是指常规文件 (f)、目录 (d)、符号链接 (l) 还是其他类型的文件。
- 大小: 文件的当前大小(以字节为单位)。
- 权限和所有者: 关于谁有权访问(读、写、执行)和修改文件,以及文件所有者(用户或 root)的信息。所有者甚至可以是不存在的用户,也可能是设备等。
- 创建/修改日期和时间: 记录 inode 的首次创建时间和上次修改时间。还可能包含其他元数据或扩展权限。
- 链接数: 指示有多少个文件或目录名称与此 inode 关联。目录至少有两个链接:一个指向自身,一个指向其父目录。
- 指向数据块的指针: 包含对存储单元上用于存储文件实际内容的数据块的引用。这些块可以是直接、间接或双重间接地址,具体取决于具体的文件系统实现和文件的大小。
Inode 对于文件系统的运行至关重要,因为它们允许操作系统跟踪每个文件和目录的物理位置及其相关信息。访问文件或目录时,操作系统会查询相应的 Inode 编号,以查找数据的位置以及与该文件相关的其他信息。