下一页 上一页 目录

7. 文件系统

在本节中,我将以两种不同的方式使用“文件系统”这个词。磁盘分区和其他设备上有文件系统,并且文件系统以 Linux 运行系统呈现给您的方式存在。在 Linux 中,您将磁盘文件系统“挂载”到系统的文件系统上。

在前一节中,我提到 init 脚本会检查和挂载文件系统。执行此操作的命令分别是 fsckmount

硬盘只是一个可以写入 1 和 0 的大空间。文件系统对它施加了一些结构,使其看起来像目录内的目录内的文件... 每个文件都由一个 inode 表示,inode 说明了文件所有者是谁,创建时间以及在哪里找到其内容。目录也由 inode 表示,但这些 inode 说明了在哪里找到目录中文件的 inode。如果系统想要读取 /home/greg/bigboobs.jpeg,它首先在“超级块”中找到根目录 / 的 inode,然后在 / 的内容中找到目录 home 的 inode,然后在 /home 的内容中找到目录 greg 的 inode,最后找到 bigboobs.jpeg 的 inode,这将告诉它要读取哪些磁盘块。

如果我们向文件末尾添加一些数据,可能会发生数据在 inode 更新以说明新块属于该文件之前写入,反之亦然。如果此时断电,文件系统将被破坏。fsck 尝试检测和修复的就是这种情况。

mount 命令接受设备上的文件系统,并将其添加到您使用系统时看到的层次结构中。通常,内核以只读方式挂载其根文件系统。在 fsck 检查确认文件系统正常后,使用 mount 命令将其重新挂载为读写。

Linux 也支持其他类型的文件系统:msdos、vfat、minix 等等。特定类型文件系统的细节由虚拟文件系统 (VFS) 抽象出来。我不会详细介绍这一点。在“Linux 内核”中有关于它的讨论(请参阅 Linux 内核 部分的 URL)。

一种完全不同的文件系统挂载在 /proc 上。它实际上是内核中事物的表示。那里有一个目录,对应于系统上运行的每个进程,目录名称为进程号。还有一些文件,例如 interruptsmeminfo,它们告诉您硬件的使用情况。您可以通过探索 /proc 学到很多东西。

7.1 配置

命令 mke2fs 有一些参数,用于创建 ext2 文件系统。这些参数控制块的大小、inode 的数量等等。请查看 mke2fs 的 man 手册页以了解详细信息。

文件系统中哪些内容挂载在哪里由 /etc/fstab 文件控制。它也有一个 man 手册页。

7.2 练习

创建一个非常小的文件系统,并使用十六进制查看器查看它。识别 inode、超级块和文件内容。

我相信有一些工具可以为您提供文件系统的图形视图。找一个,试用一下,并通过电子邮件将 URL 和评论发送给我!

查看内核中的 ext2 文件系统代码。

7.3 更多信息


下一页 上一页 目录