前言:

在现代操作系统中,文件系统的管理是核心功能之一,它负责处理文件的存储、访问和组织。文件系统不仅需要高效地管理磁盘空间,还要能够快速地定位和检索文件。本文将深入探讨文件系统的工作原理,包括磁盘的物理结构、逻辑存储方式以及操作系统如何管理文件和目录。通过理解这些概念,我们可以更好地理解操作系统如何与硬件交互,以及如何优化文件系统的使用。

进程打开文件!
系统中是不是所有的文件都被被打开了呢? 大部分文件是没有被打开的。
如果没有被打开呢? 在哪里保存?磁盘,SSD。OS 要不要管理一下磁盘文件呢? 如何让OS快速定位一个文件。

1. 磁盘机械结构

【Linux】操作系统中的文件系统管理:磁盘结构、逻辑存储与文件访问机制-LMLPHP

2. 磁盘物理结构

【Linux】操作系统中的文件系统管理:磁盘结构、逻辑存储与文件访问机制-LMLPHP
磁道/柱面:唯一的编号。
扇区:是磁盘IO的基本单位(512字节,4KB) ,但不一定是系统和磁盘IO的基本单位。
磁头、盘面:都有唯一的编号

如果我想访问磁盘中的一个扇区:
通过磁头定位:磁道/柱面(cylinder),使用哪一个磁头(head),哪一个扇区(sector)。(CHS定位法)
那么任何文件,不就是多个扇区承载的数据吗?

3. 磁盘的逻辑存储

【Linux】操作系统中的文件系统管理:磁盘结构、逻辑存储与文件访问机制-LMLPHP
Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的,

Linux 磁盘文件特性:文件 = 内容 + 属性 (内容和属性分开存储)
类容: 大小不确定,可能很大,可能很小。
属性:固定大小的。(属性的类别是一样的,只不过每个类别内容不一样)

struct inode // 128字节
{
	// inode编号 (识别唯一性)
	// 类型
	// 大小
	// 权限
	// 时间
	// ...
}

注意:文件名不属于文件属性!
系统中,标识一个文件不是用的文件名,而是 inode!

3. 1. 文件名呢?

  • 任何一个普通文件,一定在一个目录中。
  • 目录 是不是文件?
    是,inode(inode编号) + 目录内容(文件名:inode编号的映射关系)
  • 如果一个目录没有r , w , x 表现是什么?
    因为创建文件最终是要修改目录的内容的,所以没有就创建不了。

3.2 对文件的增删查改与 路径

对一个文件,进行增删查改,都和改文件所在的目录由关系!
查找一个文件,在内核中,都要逆向的递归得到 / ,从根目录进行路径解析。

访问一个文件,可以根据路径前缀,优先区分出文件在哪一个分区下!

  1. open、fopen,都需要我们提供文件路径的
  2. 进程的当前路径!

3.3. 文件

  1. 打开的文件
  2. 没有打开的文件

4. 软硬链接

4.1. 操作观察现象

  • 创建软链接
ln -s test.txt soft 

软连接本质是一个文件,有独立的 inode

  • 创建硬链接
ln hello.txt link.hard

硬链接本质不是一个独立的文件,因为它的 inode 编号和目标文件相同,写入道指定目录的数据块中。

4.2. 软硬链接的原理

  • 硬链接本质就是在指定的目录下,插入新的文件名和目标文件的映射关系,并让 inode 引用计数++
  • 软链接本质就是一个独立文件,软链接内容里面存放的目标文件的路径!软链接类似 windows 下的快捷方式。

4.3. 软硬链接的应用场景

硬链接:维护目录间映射的关系,一个目录下有多少个子目录:硬链接数 - 2 计算得到。

总结

本文详细介绍了文件系统的工作机制,从磁盘的物理结构到逻辑存储,再到操作系统如何管理文件和目录。我们了解到,尽管大部分文件在任何给定时间都是未被打开的,操作系统仍然需要有效地管理这些文件。磁盘的机械结构和物理结构决定了数据的存储方式,而文件系统的逻辑结构则决定了文件的组织和访问方式。

Linux文件系统,如ext2,通过使用块设备、块组、超级块、块位图和inode等概念来管理文件。每个文件都有其对应的inode,其中包含了文件的属性,而文件名则存储在目录中,目录本身也是一个文件。操作系统通过路径解析来查找文件,并可能需要跨多个分区进行搜索。

此外,我们还探讨了硬链接和软链接的概念及其应用场景。硬链接通过增加inode的引用计数来实现,而软链接则是一个包含目标文件路径的独立文件。硬链接常用于维护目录间的映射关系,而软链接则类似于Windows下的快捷方式。

通过理解这些概念,用户和开发者可以更有效地与文件系统交互,优化存储空间的使用,并提高文件访问的效率。操作系统的文件管理是一个复杂但至关重要的过程,它确保了数据的安全性、完整性和可访问性

06-07 17:30