还指代数据结构以及分区中文件的管理方法。还用于指代系统中文件的整体组织形式:目录树。
2,Linux 和 UNIX 中的基本文件存储单元都是磁盘分区,即将一个或多个硬盘的逻辑划分,操作系统将每个逻辑分区视为独立
的磁盘。文件和文件管理系统“居住”在磁盘分区中。 Linux 将这些磁盘分区作为设备处理,进而通过 /dev 目录中的特殊
文件使用文件 I/O 机制。
3,有两种类型的设备文件:块和字符/原始。两者之间的一个重要差别是,块设备被缓冲,而字符设备因为没有文件管理系统,所以不被缓冲。
4,LBA 表示逻辑块寻址,它将硬盘的柱面、块和扇区模式转换为线性块编号进行处理。
5,
文件管理系统概述
要使分区后的磁盘可用,必须在其上构建文件系统。这种情况下,通常还将文件系统称作“分区类型”、“基于 磁盘的文件系统”和“文件系统类型”。实际上,可以将这些文件系统看作是文件管理系统,这是因为该称呼正体现了它们的功能:它们通过维护文件上的元数据, 使系统上的文件保持状态一致。
Linux 项目的特点之一是需要实现与每个可用实用程序的多个样式和首选设置的兼容性,而这种兼容性在可用文件管理系统的选择上体现得最为明显。Linux 内核内部的虚拟文件系统 (VFS) 实现了此选择。VFS 采用了一组可由其他文件管理系统使用的基本数据结构。这些数据结构是超级块、inode、dentry(或目录文件)和数据块。
每个分区都包含一个超级块,用于维护分区中文件系统上的信息,包括一组在每个超级块中唯一编号的 inode、空闲 inode 的数目以及 inode 总数、数据块总数、空闲数据块数和文件系统的状态。文件系统的状态有两种:干净(当文件处于未更改状态时)和脏(当有未写入磁盘的文件系统更改时)。超级块中的一个 inode 对应着一个文件。
除文件名外,inode 包含了有关文件的所有信息,其中包括:
- 地址
- 类型
- 大小
- 所有者
- 对文件数据所在块的引用
- 文件最后一次修改和访问的时间戳。
可以使用以下命令查看文件的 inode:
$ ls -i
6,inode 只在超级块中唯一编号,且每个分区只有一个超级块,这就是硬链接无法跨越多个分区的原因。
7,Linux 支持任何具备 VFS 定义的基本函数集的文件管理系统。对于像 vfat 这样的文件管理系统,Linux 项目提供了它自己的设备驱动程序。
8,ext2/ext3 的最大文件大小实际上取决于所选择的块大小和硬件体系结构。ext2 的许多特性之一是它允许由磁盘分区决定块大小。
9,日志文件管理系统(如 ext3 和ReiserFS)记录对文件系统元数据:inode、空闲块分配映射、inode映射等的更改。当系统崩溃时,
可以通过此方式检查日志以获得最近修改的元数据,从而确保快速恢复文件系统。此功能对大型系统尤其重要。如果没有此功能,则
在出现硬件故障后,对于 ext2 等文件系统,需要在重新启动时运行 fsck 工具。对于大型文件系统,此过程可能要花费几个小时。
9,记录日志需要付出一定的代价,即需要在处理时间和恢复之间寻求一个平衡。对于 ext3,可以选择日志记录模式,
这些模式允许在寻求上述平衡时做出某些自主决定。journal 模式(记录所有文件系统数据,包括数据块和元数据)是最安全但也是最慢的模式。
默认模式(称作 orderd)只记录元数据,但在写元数据之前先将数据块写入磁盘,从而在快速恢复和快速性能之间取得折衷。最快的模式是 writeback 模式,
该模式只记录元数据。在此模式中,可能会丢失文件数据,但文件系统自身的完整性将得到维护。