一切皆文件(文件系统)

Posted 一口Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一切皆文件(文件系统)相关的知识,希望对你有一定的参考价值。

摘要

  1. 文件系统的基本组成
  2. 虚拟文件系统

文件系统的基本组成

文件系统的作用是?

文件系统就是将用户的文件保存到磁盘中。

文件系统的基本数据单位是?

文件,在Linux中一切皆文件,普通的文件和目录、块设备、管道和Socket都是交给文件系统管理。

文件的数据结构是?

  • 索引节点(inode):记录文件的原信息,比如inode编号、文件大小、访问权限、创建时间、修改时间以及数据在磁盘中的位置等等。索引节点与文件一一对应,是文件的唯一标识,会被存储在磁盘中,为了加速访问,也会加载到内存中。
  • 目录项(dentry):记录文件的名字、索引节点的指针以及和其他目录项的层级关系。目录项是由内核维护的一个数据结构,只存放于内存中。

目录项和目录的区别是?

  • 目录是个文件,持久化存储在磁盘
  • 目录项是内核的一个数据结构,读过的目录用目录项缓存在内存中,下次读取到相同目录时可以直接从内存中获取

磁盘读写的单位是?

扇区,每个扇区的大小为512B。

逻辑块的作用?

文件系统将多个扇区组成一个逻辑块(读写的最小单位),Linux中每个逻辑块的大小为4KB,也就是一次性读写8个扇区,提高磁盘的读写效率。

磁盘的存储区域划分?

  • 超级块:存储文件系统的详细信息,比如块个数、块大小、空闲块等
  • 索引节点区:存储索引节点
  • 数据块区:用来存储文件或目录数据

为了加速文件的访问,超级块和索引节点区会被加载到内存,但只有在使用的时候才会将其加载到内存中:

  • 超级块:当文件系统挂载时进入内存
  • 索引节点区:当文件访问时进入内存

虚拟文件系统

为什么需要虚拟文件系统?

文件系统种类繁多,但操作系统希望对用户提供一个统一的接口,因此在用户层和文件系统层之间引入虚拟文件系统这个中间层。

文件系统的分类?

  • 磁盘的文件系统:直接把数据存储在磁盘中,比如Ext 2/3/4,XFS等
  • 内存的文件系统:这类文件系统的数据占用内存空间,比如/proc和/sys文件系统都属于这一类,读写这类文件,实际上是读写内核中的相关数据
  • 网络的文件系统:用来访问其他计算机数据的文件系统,比如NFS、SMB等

文件系统必须挂载到某个目录才可以正常使用,Linux系统在启动时,会把文件系统挂载到根目录下。

以上是关于一切皆文件(文件系统)的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理

Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理

Linux系统编程:基础IO 壹简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理

Linux系统编程:基础IO 上简单复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux下,一切皆文件 | 重定向原理

实例演绎Unix/Linux的"一切皆文件"思想

鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码 | v62.01