- 文件系统是以合理有效的层次结构组织的文件和目录的集合
- 一切皆是文件 是 Unix/Linux 的基本哲学之一
- 普通文件 、 目录 、 字符设备 、 块设备 、 套接字等在 Unix/Linux 中都是文件
- 类型不同的文件都是通过相同的 API 对其进行操作
- Unix/Linux 中允许不同的文件系统共存 如 ext 2 ext 3 ext 4 ,xfs,btrfs 等
- 通过统一的文件 I/O 系统调用 API 即可对系统中的任意文件进行操作而无需考虑其所在的具体文件系统格式
- 文件操作可以跨文件系统执行
linux系统和windows系统区别:
Linux 文件系统架构:
- 虚拟文件系统是 Linux 内核中的一个软件层 对内实现文件系统的抽象 允许不同的文件系统共存 对外向应用程序提供统一的文件系统接口
-
为了能够支持不同文件系统 VFS 定义了所有文件系统都支持的基本的 、 抽象的接口和数据结构
-
实际文件系统实现 VFS 定义的抽象接口和数据结构 将自身的诸如文件 、 目录等概念在
形式上与 VFS 的定义保持一致 在统一的接口和数据结构下隐藏了具体的实现细节
-
超级块 super block 用于存储文件系统的控制信息的数据结构 。 描述文件系统的
状态 、 文件系统类型 、 大小 、 区块数 、 索引节点数等 存放于磁盘的特定扇区中 。 -
索引节点 inode 用于存储文件的元数据 文件的基本信息 的一个数据结构 包
含诸如文件的大小 、 拥有者 、 创建时间 、 磁盘位置等信息 。 -
目录项 dentry 目录被用来容纳文件 目录可以包含子目录 层层嵌套以形成 文件路径 。
-
文件对象 file 一组在逻辑上具有完整意义的信息项的系列 。
VFS 中的数据结构 - 超级块用来描述整个文件系统的信息 。 每个具体的文件系统都有各自的超级块
-
VFS 超级块是各种具体文件系统在安装时建立的 并在卸载时被自动删除 其数据结构是 super_block
- 所有超级块对象以双向环形链表的形式链接在一起
- 文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构 inode 中
-
具体文件系统的索引节点是存放在磁盘上的 是一种静态结构, 要使用它, 必须调入内存,
填写 VFS 的索引节点,因此,也称 VFS 索引节点是动态节点 - 文件名可以随时更改, 但是索引节点对文件是唯一的并且随文件的存在而存在
- 每个 inode 节点的大小 一般是 128 字节或 256 字节
Linux 文件系统目录结构: