Linux操作系统(六):文件系统组件

本文围绕Linux文件系统展开,介绍其基本组成,如索引节点、目录项等。阐述文件存储方式,包括目录存储及不同文件系统实现。还讲解磁盘空闲空间管理机制,如空闲表法、空闲链表法和位图法。此外,提及文件取别名方法及文件读写I/O的多种方式。

参考资料:阿秀的笔记

1. 文件系统的基本组成

Linux 「一切皆文件」不仅普通的文件和目录,就连块设备、管道、socket 等,也都是统一交给文件系统管理的。

在这里插入图片描述

如何唯一标识文件?索引节点 inode,记录了文件的元信息,比如 inode 编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置等等。存储在硬盘中占用磁盘空间

如何组织文件之间的关系?目录项directory entry,记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。通过多个目录项的关联就能形成目录结构。目录项是由内核维护的一个数据结构,不存放于磁盘,而是缓存在内存

注意,一个文件可以有多个别名,所以目录项和索引节点的关系是多对一,即多个目录项中的索引节点可以指向同一个文件。

Linux中目录和目录项关系是什么?目录是个文件,持久化存储在磁盘,而目录项是内核一个数据结构,缓存在内存。由于查询目录频繁从磁盘读效率低,所以内核会把已经读过的目录用目录项这个数据结构缓存在内存,下次再次读到相同的目录时,只需从内存读就可以,大大提高了文件系统的效率。目录项可以视为一个表示目录的数据结构。

文件系统如何把文件存储在磁盘?磁盘读写的最小单位是扇区 512B,文件系统把多个扇区组成了一个逻辑块。Linux 中的逻辑块大小为 4KB。

磁盘为什么要分为三个储存分区?便于数据组织和管理,磁盘进行格式化时分成三个存储区域,分别是超级块、索引节点区和数据块区:

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

超级块和索引节点区数据会在需要时加载到内存中:

  • 超级块:当文件系统挂载时进入内存;

  • 索引节点区:当文件被访问时进入内存

    文件系统的实现确实包含在内核中,但并不是所有文件系统信息都一开始就加载到内核空间中,而是根据需要进行加载和缓存,以提高性能和节省内存。文件系统首先要先挂载到某个目录才可以正常使用,比如 Linux 系统在启动时,会把文件系统挂载到根目录。

文件种类很多导致文件系统也很多,文件系统如何提供用户易用性?Linux系统会根据不同的需求和限制选择适合特定文件类型的文件系统,来更好地满足用户的需求,并提供更好的性能、可靠性和功能特性。

Linux 支持的文件系统也不少,根据存储位置的不同,可以把文件系统分为三类:

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

Linux为了对用户提供一个统一的接口,在用户层与文件系统层引入了中间层,虚拟文件系统(Virtual File System,VFS)。
在这里插入图片描述

2. 文件的使用

  VFS为不同的文件系统提供了一个抽象层次,隐藏了文件系统的具体实现细节。这使得内核可以支持多种不同的文件系统,而用户程序不需要关心文件系统的具体细节。VFS提供了文件描述符来进行读取、写入、关闭文件等操作。提供了虚拟的目录结构,用于管理所有已挂载的文件系统(Linux支持可插拔的文件系统模块,可以在运行时加载和卸载不同类型的文件系统,而不需要重新编译内核)。
  从用户角度来看文件的使用过程:
在这里插入图片描述

3.文件如何存储

请添加图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值