UNIX 文件系统内部结构2025年4月29日 | 阅读 6 分钟 在本文中,我们将详细学习 UNIX 文件系统及其内部结构。 您对 UNIX 操作系统有什么看法?所有工具和应用程序都存储为文件。这是一种组织和存储大量信息的逻辑方法。 在 UNIX 中,文件系统是文件和目录的层次结构,用户可以通过文件存储和检索信息。 UNIX 文件系统结构UNIX 系统中的所有文件都相互关联。  UNIX 文件系统的目录结构如下所示Root ( / ): 目录结构的顶端称为根。它也称为父目录,因为它包含 UNIX 文件系统的所有子目录。在 UNIX 系统中,它用斜杠符号表示。 /lib: 此目录包含系统库函数的所有信息以及一些关键文件,例如内核模块或设备驱动程序。它还包含编译器可以在程序中包含的系统调用。 /bin: 此目录包含系统的二进制文件和某些基本实用程序。它是 admin 级命令(如 ls 或 cp)的目录。路径 (var) 始终在此列表中显示此目录。 以下是 /bin 目录的子目录 - /sbin: 如果存在无法执行的命令,系统管理员可以执行此命令,以便将其放在此目录中。只有系统和管理员路径会显示此目录。
/dev: 代表“设备”,其中包含有关 UNIX 系统中使用的设备文件的所有信息。这些文件不占用磁盘上的任何空间。它包含有关硬盘驱动器、外围设备的目录表示、软盘、设备信息和伪设备的所有信息。 以下是 /dev 目录的子目录 - /dev /HD1: 此设备文件包含第一个硬盘驱动器的信息。
- /dev /HD2: 此设备文件包含第二个硬盘驱动器的信息。
- /dev /FD0: 此设备文件包含第一个软盘驱动器的信息。
- /dev /FD1: 此设备文件包含第二个软盘驱动器的信息。
/etc : 此目录及其子目录包含许多 UNIX 配置文件和系统数据库。这些文件包含许多可以根据系统功能进行更改的文本文件。它还包含您的登录名和密码信息。 以下是 /etc 目录的子目录 - /etc/passwd: 此目录包含有关您的系统密码的信息。
- ./etc/shadow: 此目录包含有关原始密码的信息。
/home: 此目录包含用户主目录的所有信息。每当用户登录系统时,UNIX 系统会自动将您放置到主目录。 例如 如果您使用登录名 demo 登录 UNIX 系统,您将进入一个可能具有路径名 /home/demo 的目录。 此目录由系统在您的帐户打开时创建。您可以随时使用 cd 命令更改您的主目录。要检查您当前正在工作的主目录,您可以使用 pwd 命令。 /tmp: 此目录包含 UNIX 或用户在 UNIX 系统中创建的所有临时文件的信息。 /var: UNIX 文件系统的可变目录包含打印作业以及出站和入站电子邮件的所有信息。文件系统的可变部分可以放置用于数据库存储的文件。 以下是 /var 目录的子目录 - /var/log: 此目录包含系统日志文件的信息。
- /var/mail: 此目录包含所有入站电子邮件存储位置的信息。
- /var/spool: 此目录也称为 spool 目录。它包含打印作业、邮件 spool 和其他排队任务的信息。
- /var/tmp: 此目录包含临时文件的信息。
/usr: 此目录包含与 UNIX 系统中的用户相关的所有信息。这意味着它包含所有用户帐户,例如 user1、user2 等。 以下是 /usr 目录的子目录 - /usr/bin: 此目录存储 UNIX 系统中所有用户二进制文件的信息。
- /usr/include: 此目录存储系统中所有开发头文件的信息。在 C/C++ 编程语言中,# 通常使用头文件 include 指令。
您对 UNIX 文件系统的内部结构有什么看法?文件系统是一组文件,其中包含有关文件和 inode 如何存储在磁盘上的信息。 UNIX 文件系统的内部视图显示在下图 上图定义了几个参数,例如 - Boot block: 它是 UNIX 文件系统的第一个块,包含一个小型引导程序,称为引导程序。它在启动时被加载到主内存中并执行。这个引导程序是从称为根文件系统的文件系统的引导块中获取的。
- Superblock: 它包含文件系统的静态参数,如总大小、数据块总数和文件系统状态、inode 数量、空闲和已用 inode,以及文件系统的块大小。超级块由内核在内存中维护。
文件系统组织将磁盘分区划分为一个或多个称为柱面组的区域。该组由磁盘上一个或多个连续的柱面组成。每个柱面由超级块的重复副本、inode 空间以及描述柱面组内数据块使用情况的汇总信息组成。 - Inodes: 代表索引节点。创建文件时,还会创建一个 inode 来保存有关该特定文件所有属性的信息。inode 的数量代表 UNIX 系统中文件的最大数量。
文件的 inode 负责存储文件的全部相关数据,除了文件名,文件名存储在其父目录的条目中。 当打开一个文件时,内核会将相应的文件 inode 从磁盘复制到主内存。inode 包括文件类型、文件的访问信息(即读、写或执行)、文件的链接数、以字节为单位的文件长度,以及拥有该文件的用户和组的表示。
 在上图的图中,仔细查看 inode 结构会发现寻址并不总是直截了当。在这里,正如下图所示,存在间接、双重甚至三重间接磁盘块地址的概念。
 在 UNIX 中,当创建一个文件时,它会被分配一个称为 inode 号的唯一数字。通过这种方式,UNIX 中的每个文件都有一个 inode 号。UNIX 将所有目录视为文件,因此它们也有一个 inode 号。 可以使用“ls- i”命令访问分配给文件的 inode 号,而“ls- l”命令将检索 inode 信息。 - Data blocks: 数据块从 inode 列表的末尾开始,包含文件数据。分配的数据块在 UNIX 系统中只能属于一个文件。磁盘磁头寻道以访问数据块,我们从同一柱面组分配块。如果单个文件不能占用柱面组中的所有块,并且文件超过一定大小,则进一步的块分配将重定向到不同的柱面组。
|